From 7321daf4f6f141efae218a34b2b69c482d1dfeed Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Fri, 18 Feb 2022 08:41:34 +0100 Subject: [PATCH 001/789] Update README with approximate pipeline outline --- README.md | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 8f33f2c..f57666d 100644 --- a/README.md +++ b/README.md @@ -17,7 +17,7 @@ ## Introduction -**nf-core/taxprofiler** is a bioinformatics best-practice analysis pipeline for Taxonomic profiling of shotgun metagenomic data. +**nf-core/taxprofiler** is a bioinformatics best-practice analysis pipeline for taxonomic profiling of shotgun metagenomic data. It allows for in-parallel profiling against multiple profiling tools and databases and produces standardised output tables. The pipeline is built using [Nextflow](https://www.nextflow.io), a workflow tool to run tasks across multiple compute infrastructures in a very portable manner. It uses Docker/Singularity containers making installation trivial and results highly reproducible. The [Nextflow DSL2](https://www.nextflow.io/docs/latest/dsl2.html) implementation of this pipeline uses one container per process which makes it much easier to maintain and update software dependencies. Where possible, these processes have been submitted to and installed from [nf-core/modules](https://github.com/nf-core/modules) in order to make them available to all nf-core pipelines, and to everyone within the Nextflow community! @@ -29,7 +29,23 @@ On release, automated continuous integration tests run the pipeline on a full-si 1. Read QC ([`FastQC`](https://www.bioinformatics.babraham.ac.uk/projects/fastqc/)) -2. Present QC for raw reads ([`MultiQC`](http://multiqc.info/)) +2. Performs optional read pre-processing + - Adapter clipping and merging + - Low complexity filtering + - Host read removal + - Run merging +3. Performs taxonomic profiling a choice of: + - Kraken2 + - MetaPhlAn3 + - MALT + - DIAMOND + - Centrifuge + - Kaiju + - mOTUs +4. Perform optional post-processing with: + - bracken +5. Standardises output tables +6. Present QC for raw reads ([`MultiQC`](http://multiqc.info/)) ## Quick Start From c68afbbf90c98e87716dc526d6c5a9631a341201 Mon Sep 17 00:00:00 2001 From: "James A. Fellows Yates" Date: Fri, 18 Feb 2022 08:45:06 +0100 Subject: [PATCH 002/789] Update nextflow.config --- nextflow.config | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/nextflow.config b/nextflow.config index c2d51b5..186979c 100644 --- a/nextflow.config +++ b/nextflow.config @@ -121,7 +121,7 @@ if (!params.igenomes_ignore) { } // Export these variables to prevent local Python/R libraries from conflicting with those in the container -// The JULIA depot path has been adjusted to a fixed path `/usr/local/share/julia` that needs to be used for packages in the container. +// The JULIA depot path has been adjusted to a fixed path `/usr/local/share/julia` that needs to be used for packages in the container. // See https://apeltzer.github.io/post/03-julia-lang-nextflow/ for details on that. Once we have a common agreement on where to keep Julia packages, this is adjustable. env { From f867c057a4e1f0c7f4fc23db44356ee120de261f Mon Sep 17 00:00:00 2001 From: maxibor Date: Fri, 18 Feb 2022 11:53:13 +0100 Subject: [PATCH 003/789] add more columns to samplesheet --- bin/check_samplesheet.py | 138 +++++++++++++++++++++++++++++++++------ 1 file changed, 118 insertions(+), 20 deletions(-) diff --git a/bin/check_samplesheet.py b/bin/check_samplesheet.py index 41dd9aa..eb6a7dc 100755 --- a/bin/check_samplesheet.py +++ b/bin/check_samplesheet.py @@ -3,6 +3,7 @@ # TODO nf-core: Update the script to check the samplesheet # This script is based on the example at: https://raw.githubusercontent.com/nf-core/test-datasets/viralrecon/samplesheet/samplesheet_test_illumina_amplicon.csv +from distutils import extension import os import sys import errno @@ -10,7 +11,9 @@ import argparse def parse_args(args=None): - Description = "Reformat nf-core/taxprofiler samplesheet file and check its contents." + Description = ( + "Reformat nf-core/taxprofiler samplesheet file and check its contents." + ) Epilog = "Example usage: python check_samplesheet.py " parser = argparse.ArgumentParser(description=Description, epilog=Epilog) @@ -43,25 +46,62 @@ def check_samplesheet(file_in, file_out): """ This function checks that the samplesheet follows the following structure: - sample,fastq_1,fastq_2 - SAMPLE_PE,SAMPLE_PE_RUN1_1.fastq.gz,SAMPLE_PE_RUN1_2.fastq.gz - SAMPLE_PE,SAMPLE_PE_RUN2_1.fastq.gz,SAMPLE_PE_RUN2_2.fastq.gz - SAMPLE_SE,SAMPLE_SE_RUN1_1.fastq.gz, + sample,run_accession,instrument_platform,fastq_1,fastq_2,fasta + 2611,ERR5766174,ILLUMINA,NA,NA,FA_EXTENSIONSERX5474930_ERR5766174_1.fa.gz + 2612,ERR5766176,ILLUMINA,ERX5474932_ERR5766176_1.fastq.gz,ERX5474932_ERR5766176_2.fastq.gz,NA + 2612,ERR5766174,ILLUMINA,ERX5474936_ERR5766180_1.fastq.gz,NA,NA + 2613,ERR5766181,ILLUMINA,ERX5474930_ERR5766174_1.fa.gz,ERX5474930_ERR5766174_2.fa.gz,NA For an example see: https://raw.githubusercontent.com/nf-core/test-datasets/viralrecon/samplesheet/samplesheet_test_illumina_amplicon.csv """ + FQ_EXTENSIONS = (".fq", ".fq.gz", ".fastq", ".fastq.gz") + FA_EXTENSIONS = ( + ".fa", + ".fa.gz", + ".fasta", + ".fasta.gz", + ".fna", + ".fna.gz", + ".fas", + ".fas.gz", + ) + INSTRUMENT_PLATFORMS = [ + "ABI_SOLID", + "BGISEQ", + "CAPILLARY", + "COMPLETE_GENOMICS", + "DNBSEQ", + "HELICOS", + "ILLUMINA", + "ION_TORRENT", + "LS454", + "OXFORD_NANOPORE", + "PACBIO_SMRT", + ] + sample_mapping_dict = {} with open(file_in, "r") as fin: ## Check header - MIN_COLS = 2 + MIN_COLS = 4 # TODO nf-core: Update the column names for the input samplesheet - HEADER = ["sample", "fastq_1", "fastq_2"] + HEADER = [ + "sample", + "run_accession", + "instrument_platform", + "fastq_1", + "fastq_2", + "fasta", + ] header = [x.strip('"') for x in fin.readline().strip().split(",")] if header[: len(HEADER)] != HEADER: - print("ERROR: Please check samplesheet header -> {} != {}".format(",".join(header), ",".join(HEADER))) + print( + "ERROR: Please check samplesheet header -> {} != {}".format( + ",".join(header), ",".join(HEADER) + ) + ) sys.exit(1) ## Check sample entries @@ -78,13 +118,22 @@ def check_samplesheet(file_in, file_out): num_cols = len([x for x in lspl if x]) if num_cols < MIN_COLS: print_error( - "Invalid number of populated columns (minimum = {})!".format(MIN_COLS), + "Invalid number of populated columns (minimum = {})!".format( + MIN_COLS + ), "Line", line, ) ## Check sample name entries - sample, fastq_1, fastq_2 = lspl[: len(HEADER)] + ( + sample, + run_accession, + instrument_platform, + fastq_1, + fastq_2, + fasta, + ) = lspl[: len(HEADER)] sample = sample.replace(" ", "_") if not sample: print_error("Sample entry has not been specified!", "Line", line) @@ -94,23 +143,55 @@ def check_samplesheet(file_in, file_out): if fastq: if fastq.find(" ") != -1: print_error("FastQ file contains spaces!", "Line", line) - if not fastq.endswith(".fastq.gz") and not fastq.endswith(".fq.gz"): + if not fastq.endswith(FQ_EXTENSIONS): print_error( - "FastQ file does not have extension '.fastq.gz' or '.fq.gz'!", + f"FastQ file does not have extension {' or '.join(list(FQ_EXTENSIONS))} !", "Line", line, ) + if fasta: + if fasta.find(" ") != -1: + print_error("FastA file contains spaces!", "Line", line) + if not fasta.endswith(FA_EXTENSIONS): + print_error( + f"FastA file does not have extension {' or '.join(list(FA_EXTENSIONS))}!", + "Line", + line, + ) + sample_info = [] + + # Check run_accession + if not run_accession: + print_error("Run accession has not been specified!", "Line", line) + else: + sample_info.append(run_accession) + + # Check instrument_platform + if not instrument_platform: + print_error("Instrument platform has not been specified!", "Line", line) + else: + if instrument_platform not in INSTRUMENT_PLATFORMS: + print_error( + f"Instrument platform {instrument_platform} is not supported!", + f"List of supported platforms {', '.join(INSTRUMENT_PLATFORMS)}", + "Line", + line, + ) + sample_info.append(instrument_platform) ## Auto-detect paired-end/single-end - sample_info = [] ## [single_end, fastq_1, fastq_2] if sample and fastq_1 and fastq_2: ## Paired-end short reads - sample_info = ["0", fastq_1, fastq_2] + sample_info.extend(["0", fastq_1, fastq_2, fasta]) elif sample and fastq_1 and not fastq_2: ## Single-end short reads - sample_info = ["1", fastq_1, fastq_2] + sample_info.extend(["1", fastq_1, fastq_2, fasta]) + elif ( + sample and fasta and not fastq_1 and not fastq_2 + ): ## Single-end long reads + sample_info.extend(["1", fastq_1, fastq_2, fasta]) else: print_error("Invalid combination of columns provided!", "Line", line) - ## Create sample mapping dictionary = { sample: [ single_end, fastq_1, fastq_2 ] } + ## Create sample mapping dictionary = { sample: [ single_end, fastq_1, fastq_2 , fasta, run_accession, instrument_platform] } if sample not in sample_mapping_dict: sample_mapping_dict[sample] = [sample_info] else: @@ -120,19 +201,36 @@ def check_samplesheet(file_in, file_out): sample_mapping_dict[sample].append(sample_info) ## Write validated samplesheet with appropriate columns + HEADER_OUT = [ + "sample", + "run_accession", + "instrument_platform", + "single_end", + "fastq_1", + "fastq_2", + "fasta", + ] if len(sample_mapping_dict) > 0: out_dir = os.path.dirname(file_out) make_dir(out_dir) with open(file_out, "w") as fout: - fout.write(",".join(["sample", "single_end", "fastq_1", "fastq_2"]) + "\n") + fout.write(",".join(HEADER_OUT) + "\n") for sample in sorted(sample_mapping_dict.keys()): ## Check that multiple runs of the same sample are of the same datatype - if not all(x[0] == sample_mapping_dict[sample][0][0] for x in sample_mapping_dict[sample]): - print_error("Multiple runs of a sample must be of the same datatype!", "Sample: {}".format(sample)) + if not all( + x[0] == sample_mapping_dict[sample][0][0] + for x in sample_mapping_dict[sample] + ): + print_error( + "Multiple runs of a sample must be of the same datatype!", + "Sample: {}".format(sample), + ) for idx, val in enumerate(sample_mapping_dict[sample]): - fout.write(",".join(["{}_T{}".format(sample, idx + 1)] + val) + "\n") + fout.write( + ",".join(["{}_T{}".format(sample, idx + 1)] + val) + "\n" + ) else: print_error("No entries to process!", "Samplesheet: {}".format(file_in)) From 54a1a4fd459afa7e9987c72e5e1d4b7ac67683d0 Mon Sep 17 00:00:00 2001 From: maxibor Date: Fri, 18 Feb 2022 13:11:18 +0100 Subject: [PATCH 004/789] update samplesheet specs --- bin/check_samplesheet.py | 27 ++++++--------------------- 1 file changed, 6 insertions(+), 21 deletions(-) diff --git a/bin/check_samplesheet.py b/bin/check_samplesheet.py index eb6a7dc..77a5107 100755 --- a/bin/check_samplesheet.py +++ b/bin/check_samplesheet.py @@ -47,13 +47,10 @@ def check_samplesheet(file_in, file_out): This function checks that the samplesheet follows the following structure: sample,run_accession,instrument_platform,fastq_1,fastq_2,fasta - 2611,ERR5766174,ILLUMINA,NA,NA,FA_EXTENSIONSERX5474930_ERR5766174_1.fa.gz - 2612,ERR5766176,ILLUMINA,ERX5474932_ERR5766176_1.fastq.gz,ERX5474932_ERR5766176_2.fastq.gz,NA - 2612,ERR5766174,ILLUMINA,ERX5474936_ERR5766180_1.fastq.gz,NA,NA - 2613,ERR5766181,ILLUMINA,ERX5474930_ERR5766174_1.fa.gz,ERX5474930_ERR5766174_2.fa.gz,NA - - For an example see: - https://raw.githubusercontent.com/nf-core/test-datasets/viralrecon/samplesheet/samplesheet_test_illumina_amplicon.csv + 2611,ERR5766174,ILLUMINA,,,ERX5474930_ERR5766174_1.fa.gz + 2612,ERR5766176,ILLUMINA,ERX5474932_ERR5766176_1.fastq.gz,ERX5474932_ERR5766176_2.fastq.gz, + 2612,ERR5766174,ILLUMINA,ERX5474936_ERR5766180_1.fastq.gz,, + 2613,ERR5766181,ILLUMINA,ERX5474937_ERR5766181_1.fastq.gz,ERX5474937_ERR5766181_2.fastq.gz, """ FQ_EXTENSIONS = (".fq", ".fq.gz", ".fastq", ".fastq.gz") @@ -216,21 +213,9 @@ def check_samplesheet(file_in, file_out): with open(file_out, "w") as fout: fout.write(",".join(HEADER_OUT) + "\n") for sample in sorted(sample_mapping_dict.keys()): - - ## Check that multiple runs of the same sample are of the same datatype - if not all( - x[0] == sample_mapping_dict[sample][0][0] - for x in sample_mapping_dict[sample] - ): - print_error( - "Multiple runs of a sample must be of the same datatype!", - "Sample: {}".format(sample), - ) - for idx, val in enumerate(sample_mapping_dict[sample]): - fout.write( - ",".join(["{}_T{}".format(sample, idx + 1)] + val) + "\n" - ) + fout.write(f"{sample},{','.join(val)}\n") + # fout.write(f",".join(["{}".format(sample)] + val) + "\n") else: print_error("No entries to process!", "Samplesheet: {}".format(file_in)) From a6cfa0a1ba3b9c0ad2263d8225bcbc05117f4bc3 Mon Sep 17 00:00:00 2001 From: maxibor Date: Fri, 18 Feb 2022 13:15:30 +0100 Subject: [PATCH 005/789] cleanup --- bin/check_samplesheet.py | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/bin/check_samplesheet.py b/bin/check_samplesheet.py index 77a5107..0f19523 100755 --- a/bin/check_samplesheet.py +++ b/bin/check_samplesheet.py @@ -1,8 +1,5 @@ #!/usr/bin/env python -# TODO nf-core: Update the script to check the samplesheet -# This script is based on the example at: https://raw.githubusercontent.com/nf-core/test-datasets/viralrecon/samplesheet/samplesheet_test_illumina_amplicon.csv - from distutils import extension import os import sys @@ -83,7 +80,6 @@ def check_samplesheet(file_in, file_out): ## Check header MIN_COLS = 4 - # TODO nf-core: Update the column names for the input samplesheet HEADER = [ "sample", "run_accession", @@ -188,7 +184,7 @@ def check_samplesheet(file_in, file_out): else: print_error("Invalid combination of columns provided!", "Line", line) - ## Create sample mapping dictionary = { sample: [ single_end, fastq_1, fastq_2 , fasta, run_accession, instrument_platform] } + ## Create sample mapping dictionary = { sample: [ run_accession, instrument_platform, single_end, fastq_1, fastq_2 , fasta ] } if sample not in sample_mapping_dict: sample_mapping_dict[sample] = [sample_info] else: @@ -215,7 +211,6 @@ def check_samplesheet(file_in, file_out): for sample in sorted(sample_mapping_dict.keys()): for idx, val in enumerate(sample_mapping_dict[sample]): fout.write(f"{sample},{','.join(val)}\n") - # fout.write(f",".join(["{}".format(sample)] + val) + "\n") else: print_error("No entries to process!", "Samplesheet: {}".format(file_in)) From 1b893cb039fee4544cef4d716668ef62c8551d17 Mon Sep 17 00:00:00 2001 From: maxibor Date: Fri, 18 Feb 2022 13:27:10 +0100 Subject: [PATCH 006/789] add check for fastq with fasta --- bin/check_samplesheet.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/bin/check_samplesheet.py b/bin/check_samplesheet.py index 0f19523..d6e7123 100755 --- a/bin/check_samplesheet.py +++ b/bin/check_samplesheet.py @@ -181,6 +181,12 @@ def check_samplesheet(file_in, file_out): sample and fasta and not fastq_1 and not fastq_2 ): ## Single-end long reads sample_info.extend(["1", fastq_1, fastq_2, fasta]) + elif fasta and (fastq_1 or fastq_2): + print_error( + "FastQ and FastA files cannot be specified together in the same library!", + "Line", + line, + ) else: print_error("Invalid combination of columns provided!", "Line", line) From cf55cc592cf41868f8cd480f53116525ab08f960 Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Fri, 18 Feb 2022 16:51:01 +0100 Subject: [PATCH 007/789] Get skeleton read processing to input for profiling --- README.md | 6 +- conf/modules.config | 39 +++++++++++ conf/test.config | 4 +- lib/WorkflowTaxprofiler.groovy | 9 +-- modules.json | 6 ++ modules/nf-core/modules/cat/fastq/main.nf | 51 ++++++++++++++ modules/nf-core/modules/cat/fastq/meta.yml | 39 +++++++++++ modules/nf-core/modules/fastp/main.nf | 75 ++++++++++++++++++++ modules/nf-core/modules/fastp/meta.yml | 68 ++++++++++++++++++ nextflow.config | 5 +- nextflow_schema.json | 9 --- subworkflows/local/input_check.nf | 43 ++++++++++-- workflows/taxprofiler.nf | 80 +++++++++++++++++++++- 13 files changed, 407 insertions(+), 27 deletions(-) create mode 100644 modules/nf-core/modules/cat/fastq/main.nf create mode 100644 modules/nf-core/modules/cat/fastq/meta.yml create mode 100644 modules/nf-core/modules/fastp/main.nf create mode 100644 modules/nf-core/modules/fastp/meta.yml diff --git a/README.md b/README.md index f57666d..5f00709 100644 --- a/README.md +++ b/README.md @@ -42,9 +42,9 @@ On release, automated continuous integration tests run the pipeline on a full-si - Centrifuge - Kaiju - mOTUs -4. Perform optional post-processing with: - - bracken -5. Standardises output tables +4. Perform optional post-processing with: + - bracken +5. Standardises output tables 6. Present QC for raw reads ([`MultiQC`](http://multiqc.info/)) ## Quick Start diff --git a/conf/modules.config b/conf/modules.config index a0506a4..2d533e9 100644 --- a/conf/modules.config +++ b/conf/modules.config @@ -28,8 +28,47 @@ process { withName: FASTQC { ext.args = '--quiet' + ext.prefix = { "${meta.id}_${meta.run_accession}_raw" } + publishDir = [ + path: { "${params.outdir}/fastqc/raw" }, + mode: 'copy', + pattern: '*.html' + ] + } + + withName: FASTP { + ext.prefix = { "${meta.id}_${meta.run_accession}" } + // TODO also include option to NOT merge + ext.args = [ + { ${meta.single_end} } == 0 ? "-m" : '', + params.fastp_exclude_unmerged ? '' : "--include_unmerged" + ].join(' ').trim() + publishDir = [ + path: { "${params.outdir}/fastp" }, + mode: 'copy', + pattern: '*.fastq.gz' + ] + } + + withName: FASTQC_POST { + ext.args = '--quiet' + ext.prefix = { "${meta.id}_${meta.run_accession}_processed" } + publishDir = [ + path: { "${params.outdir}/fastqc/processed" }, + mode: 'copy', + pattern: '*.html' + ] + } + + withName: CAT_FASTQ { + publishDir = [ + path: { "${params.outdir}/prepared_sequences" }, + mode: 'copy', + pattern: '*.fastq.gz' + ] } + withName: CUSTOM_DUMPSOFTWAREVERSIONS { publishDir = [ path: { "${params.outdir}/pipeline_info" }, diff --git a/conf/test.config b/conf/test.config index 45f87af..5db566a 100644 --- a/conf/test.config +++ b/conf/test.config @@ -22,8 +22,6 @@ params { // Input data // TODO nf-core: Specify the paths to your test data on nf-core/test-datasets // TODO nf-core: Give any required params for the test so that command line flags are not needed - input = 'https://raw.githubusercontent.com/nf-core/test-datasets/viralrecon/samplesheet/samplesheet_test_illumina_amplicon.csv' + input = 'https://raw.githubusercontent.com/nf-core/test-datasets/taxprofiler/samplesheet.csv' - // Genome references - genome = 'R64-1-1' } diff --git a/lib/WorkflowTaxprofiler.groovy b/lib/WorkflowTaxprofiler.groovy index 53482ac..57a95e3 100755 --- a/lib/WorkflowTaxprofiler.groovy +++ b/lib/WorkflowTaxprofiler.groovy @@ -10,10 +10,11 @@ class WorkflowTaxprofiler { public static void initialise(params, log) { genomeExistsError(params, log) - if (!params.fasta) { - log.error "Genome fasta file not specified with e.g. '--fasta genome.fa' or via a detectable config file." - System.exit(1) - } + // TODO update as necessary + //if (!params.fasta) { + // log.error "Genome fasta file not specified with e.g. '--fasta genome.fa' or via a detectable config file." + // System.exit(1) + //} } // diff --git a/modules.json b/modules.json index 939b85f..6cf2b3e 100644 --- a/modules.json +++ b/modules.json @@ -3,9 +3,15 @@ "homePage": "https://github.com/nf-core/taxprofiler", "repos": { "nf-core/modules": { + "cat/fastq": { + "git_sha": "e745e167c1020928ef20ea1397b6b4d230681b4d" + }, "custom/dumpsoftwareversions": { "git_sha": "20d8250d9f39ddb05dfb437603aaf99b5c0b2b41" }, + "fastp": { + "git_sha": "d0a1cbb703a130c19f6796c3fce24fbe7dfce789" + }, "fastqc": { "git_sha": "9d0cad583b9a71a6509b754fdf589cbfbed08961" }, diff --git a/modules/nf-core/modules/cat/fastq/main.nf b/modules/nf-core/modules/cat/fastq/main.nf new file mode 100644 index 0000000..bf0877c --- /dev/null +++ b/modules/nf-core/modules/cat/fastq/main.nf @@ -0,0 +1,51 @@ +process CAT_FASTQ { + tag "$meta.id" + label 'process_low' + + conda (params.enable_conda ? "conda-forge::sed=4.7" : null) + container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? + 'https://containers.biocontainers.pro/s3/SingImgsRepo/biocontainers/v1.2.0_cv1/biocontainers_v1.2.0_cv1.img' : + 'biocontainers/biocontainers:v1.2.0_cv1' }" + + input: + tuple val(meta), path(reads, stageAs: "input*/*") + + output: + tuple val(meta), path("*.merged.fastq.gz"), emit: reads + path "versions.yml" , emit: versions + + when: + task.ext.when == null || task.ext.when + + script: + def args = task.ext.args ?: '' + def prefix = task.ext.prefix ?: "${meta.id}" + def readList = reads.collect{ it.toString() } + if (meta.single_end) { + if (readList.size > 1) { + """ + cat ${readList.join(' ')} > ${prefix}.merged.fastq.gz + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + cat: \$(echo \$(cat --version 2>&1) | sed 's/^.*coreutils) //; s/ .*\$//') + END_VERSIONS + """ + } + } else { + if (readList.size > 2) { + def read1 = [] + def read2 = [] + readList.eachWithIndex{ v, ix -> ( ix & 1 ? read2 : read1 ) << v } + """ + cat ${read1.join(' ')} > ${prefix}_1.merged.fastq.gz + cat ${read2.join(' ')} > ${prefix}_2.merged.fastq.gz + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + cat: \$(echo \$(cat --version 2>&1) | sed 's/^.*coreutils) //; s/ .*\$//') + END_VERSIONS + """ + } + } +} diff --git a/modules/nf-core/modules/cat/fastq/meta.yml b/modules/nf-core/modules/cat/fastq/meta.yml new file mode 100644 index 0000000..c836598 --- /dev/null +++ b/modules/nf-core/modules/cat/fastq/meta.yml @@ -0,0 +1,39 @@ +name: cat_fastq +description: Concatenates fastq files +keywords: + - fastq + - concatenate +tools: + - cat: + description: | + The cat utility reads files sequentially, writing them to the standard output. + documentation: https://www.gnu.org/software/coreutils/manual/html_node/cat-invocation.html + licence: ["GPL-3.0-or-later"] +input: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - reads: + type: list + description: | + List of input FastQ files to be concatenated. +output: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - reads: + type: file + description: Merged fastq file + pattern: "*.{merged.fastq.gz}" + - versions: + type: file + description: File containing software versions + pattern: "versions.yml" + +authors: + - "@joseespinosa" + - "@drpatelh" diff --git a/modules/nf-core/modules/fastp/main.nf b/modules/nf-core/modules/fastp/main.nf new file mode 100644 index 0000000..5c9e3b8 --- /dev/null +++ b/modules/nf-core/modules/fastp/main.nf @@ -0,0 +1,75 @@ +process FASTP { + tag "$meta.id" + label 'process_medium' + + conda (params.enable_conda ? 'bioconda::fastp=0.23.2' : null) + container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? + 'https://depot.galaxyproject.org/singularity/fastp:0.23.2--h79da9fb_0' : + 'quay.io/biocontainers/fastp:0.23.2--h79da9fb_0' }" + + input: + tuple val(meta), path(reads) + val save_trimmed_fail + val save_merged + + output: + tuple val(meta), path('*.trim.fastq.gz') , optional:true, emit: reads + tuple val(meta), path('*.json') , emit: json + tuple val(meta), path('*.html') , emit: html + tuple val(meta), path('*.log') , emit: log + path "versions.yml" , emit: versions + tuple val(meta), path('*.fail.fastq.gz') , optional:true, emit: reads_fail + tuple val(meta), path('*.merged.fastq.gz'), optional:true, emit: reads_merged + + when: + task.ext.when == null || task.ext.when + + script: + def args = task.ext.args ?: '' + // Added soft-links to original fastqs for consistent naming in MultiQC + def prefix = task.ext.prefix ?: "${meta.id}" + if (meta.single_end) { + def fail_fastq = save_trimmed_fail ? "--failed_out ${prefix}.fail.fastq.gz" : '' + """ + [ ! -f ${prefix}.fastq.gz ] && ln -s $reads ${prefix}.fastq.gz + fastp \\ + --in1 ${prefix}.fastq.gz \\ + --out1 ${prefix}.trim.fastq.gz \\ + --thread $task.cpus \\ + --json ${prefix}.fastp.json \\ + --html ${prefix}.fastp.html \\ + $fail_fastq \\ + $args \\ + 2> ${prefix}.fastp.log + cat <<-END_VERSIONS > versions.yml + "${task.process}": + fastp: \$(fastp --version 2>&1 | sed -e "s/fastp //g") + END_VERSIONS + """ + } else { + def fail_fastq = save_trimmed_fail ? "--unpaired1 ${prefix}_1.fail.fastq.gz --unpaired2 ${prefix}_2.fail.fastq.gz" : '' + def merge_fastq = save_merged ? "-m --merged_out ${prefix}.merged.fastq.gz" : '' + """ + [ ! -f ${prefix}_1.fastq.gz ] && ln -s ${reads[0]} ${prefix}_1.fastq.gz + [ ! -f ${prefix}_2.fastq.gz ] && ln -s ${reads[1]} ${prefix}_2.fastq.gz + fastp \\ + --in1 ${prefix}_1.fastq.gz \\ + --in2 ${prefix}_2.fastq.gz \\ + --out1 ${prefix}_1.trim.fastq.gz \\ + --out2 ${prefix}_2.trim.fastq.gz \\ + --json ${prefix}.fastp.json \\ + --html ${prefix}.fastp.html \\ + $fail_fastq \\ + $merge_fastq \\ + --thread $task.cpus \\ + --detect_adapter_for_pe \\ + $args \\ + 2> ${prefix}.fastp.log + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + fastp: \$(fastp --version 2>&1 | sed -e "s/fastp //g") + END_VERSIONS + """ + } +} diff --git a/modules/nf-core/modules/fastp/meta.yml b/modules/nf-core/modules/fastp/meta.yml new file mode 100644 index 0000000..3274e41 --- /dev/null +++ b/modules/nf-core/modules/fastp/meta.yml @@ -0,0 +1,68 @@ +name: fastp +description: Perform adapter/quality trimming on sequencing reads +keywords: + - trimming + - quality control + - fastq +tools: + - fastp: + description: | + A tool designed to provide fast all-in-one preprocessing for FastQ files. This tool is developed in C++ with multithreading supported to afford high performance. + documentation: https://github.com/OpenGene/fastp + doi: https://doi.org/10.1093/bioinformatics/bty560 + licence: ["MIT"] +input: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - reads: + type: file + description: | + List of input FastQ files of size 1 and 2 for single-end and paired-end data, + respectively. + - save_trimmed_fail: + type: boolean + description: Specify true to save files that failed to pass trimming thresholds ending in `*.fail.fastq.gz` + - save_merged: + type: boolean + description: Specify true to save all merged reads to the a file ending in `*.merged.fastq.gz` + +output: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - reads: + type: file + description: The trimmed/modified/unmerged fastq reads + pattern: "*trim.fastq.gz" + - json: + type: file + description: Results in JSON format + pattern: "*.json" + - html: + type: file + description: Results in HTML format + pattern: "*.html" + - log: + type: file + description: fastq log file + pattern: "*.log" + - versions: + type: file + description: File containing software versions + pattern: "versions.yml" + - reads_fail: + type: file + description: Reads the failed the preprocessing + pattern: "*fail.fastq.gz" + - reads_merged: + type: file + description: Reads that were successfully merged + pattern: "*.{merged.fastq.gz}" +authors: + - "@drpatelh" + - "@kevinmenden" diff --git a/nextflow.config b/nextflow.config index 186979c..160dba7 100644 --- a/nextflow.config +++ b/nextflow.config @@ -33,7 +33,7 @@ params { help = false validate_params = true show_hidden_params = false - schema_ignore_params = 'genomes' + schema_ignore_params = 'genomes,fasta' enable_conda = false // Config options @@ -50,6 +50,9 @@ params { max_cpus = 16 max_time = '240.h' + // FASTQ preprocessing + fastp_clip_merge = false + fastp_exclude_unmerged = true } // Load base.config by default for all pipelines diff --git a/nextflow_schema.json b/nextflow_schema.json index 535e08d..cc43add 100644 --- a/nextflow_schema.json +++ b/nextflow_schema.json @@ -56,15 +56,6 @@ "fa_icon": "fas fa-book", "help_text": "If using a reference genome configured in the pipeline using iGenomes, use this parameter to give the ID for the reference. This is then used to build the full paths for all required reference genome files e.g. `--genome GRCh38`. \n\nSee the [nf-core website docs](https://nf-co.re/usage/reference_genomes) for more details." }, - "fasta": { - "type": "string", - "format": "file-path", - "mimetype": "text/plain", - "pattern": "^\\S+\\.fn?a(sta)?(\\.gz)?$", - "description": "Path to FASTA genome file.", - "help_text": "This parameter is *mandatory* if `--genome` is not specified. If you don't have a BWA index available this will be generated for you automatically. Combine with `--save_reference` to save BWA index for future runs.", - "fa_icon": "far fa-file-code" - }, "igenomes_base": { "type": "string", "format": "directory-path", diff --git a/subworkflows/local/input_check.nf b/subworkflows/local/input_check.nf index cddcbb3..241a8a7 100644 --- a/subworkflows/local/input_check.nf +++ b/subworkflows/local/input_check.nf @@ -9,22 +9,38 @@ workflow INPUT_CHECK { samplesheet // file: /path/to/samplesheet.csv main: - SAMPLESHEET_CHECK ( samplesheet ) + parsed_samplesheet = SAMPLESHEET_CHECK ( samplesheet ) .csv .splitCsv ( header:true, sep:',' ) + .dump(tag: "split_csv_out") + .branch { + fasta: it['fasta'] != '' + fastq: true + } + + parsed_samplesheet.fastq .map { create_fastq_channels(it) } - .set { reads } + .dump(tag: "fastq_channel_init") + .set { fastq } + + parsed_samplesheet.fasta + .map { create_fasta_channels(it) } + .dump(tag: "fasta_channel_init") + .set { fasta } emit: - reads // channel: [ val(meta), [ reads ] ] + fastq // channel: [ val(meta), [ reads ] ] + fasta // channel: [ val(meta), fasta ] versions = SAMPLESHEET_CHECK.out.versions // channel: [ versions.yml ] } // Function to get list of [ meta, [ fastq_1, fastq_2 ] ] def create_fastq_channels(LinkedHashMap row) { def meta = [:] - meta.id = row.sample - meta.single_end = row.single_end.toBoolean() + meta.id = row.sample + meta.run_accession = row.run_accession + meta.instrument_platform = row.instrument_platform + meta.single_end = row.single_end.toBoolean() def array = [] if (!file(row.fastq_1).exists()) { @@ -40,3 +56,20 @@ def create_fastq_channels(LinkedHashMap row) { } return array } + +// Function to get list of [ meta, fasta ] +def create_fasta_channels(LinkedHashMap row) { + def meta = [:] + meta.id = row.sample + meta.run_accession = row.run_accession + meta.instrument_platform = row.instrument_platform + meta.single_end = true + + def array = [] + if (!file(row.fasta).exists()) { + exit 1, "ERROR: Please check input samplesheet -> FastA file does not exist!\n${row.fasta}" + } + array = [ meta, [ file(row.fasta) ] ] + + return array +} diff --git a/workflows/taxprofiler.nf b/workflows/taxprofiler.nf index 56c532b..3f10a9d 100644 --- a/workflows/taxprofiler.nf +++ b/workflows/taxprofiler.nf @@ -11,7 +11,7 @@ WorkflowTaxprofiler.initialise(params, log) // TODO nf-core: Add all file path parameters for the pipeline to the list below // Check input path parameters to see if they exist -def checkPathParamList = [ params.input, params.multiqc_config, params.fasta ] +def checkPathParamList = [ params.input, params.multiqc_config ] for (param in checkPathParamList) { if (param) { file(param, checkIfExists: true) } } // Check mandatory parameters @@ -50,6 +50,11 @@ include { FASTQC } from '../modules/nf-core/modules/fastqc/ include { MULTIQC } from '../modules/nf-core/modules/multiqc/main' include { CUSTOM_DUMPSOFTWAREVERSIONS } from '../modules/nf-core/modules/custom/dumpsoftwareversions/main' +include { FASTP as FASTP_SINGLE } from '../modules/nf-core/modules/fastp/main' +include { FASTP as FASTP_PAIRED } from '../modules/nf-core/modules/fastp/main' +include { FASTQC as FASTQC_POST } from '../modules/nf-core/modules/fastqc/main' +include { CAT_FASTQ } from '../modules/nf-core/modules/cat/fastq/main' + /* ======================================================================================== RUN MAIN WORKFLOW @@ -75,7 +80,7 @@ workflow TAXPROFILER { // MODULE: Run FastQC // FASTQC ( - INPUT_CHECK.out.reads + INPUT_CHECK.out.fastq ) ch_versions = ch_versions.mix(FASTQC.out.versions.first()) @@ -83,6 +88,71 @@ workflow TAXPROFILER { ch_versions.unique().collectFile(name: 'collated_versions.yml') ) + // + // MODULE: Run Clip/Merge/Complexity + // + // TODO give option to clip only and retain pairs + // TODO give option to retain singletons (probably fastp option likely) + // TODO move to subworkflow + if ( params.fastp_clip_merge ) { + + ch_input_for_fastp = INPUT_CHECK.out.fastq + .dump(tag: "pre-fastp_branch") + .branch{ + single: it[0]['single_end'] == true + paired: it[0]['single_end'] == false + } + + ch_input_for_fastp.single.dump(tag: "input_fastp_single") + ch_input_for_fastp.paired.dump(tag: "input_fastp_paired") + + FASTP_SINGLE ( ch_input_for_fastp.single, false, false ) + FASTP_PAIRED ( ch_input_for_fastp.paired, false, true ) + + ch_fastp_reads_prepped = FASTP_PAIRED.out.reads_merged + .mix( FASTP_SINGLE.out.reads ) + .map { + meta, reads -> + def meta_new = meta.clone() + meta_new['single_end'] = 1 + [ meta_new, reads ] + } + + FASTQC_POST ( ch_fastp_reads_prepped ) + + ch_versions = ch_versions.mix(FASTP_SINGLE.out.versions.first()) + ch_versions = ch_versions.mix(FASTP_PAIRED.out.versions.first()) + + ch_processed_reads = ch_fastp_reads_prepped + + } else { + ch_processed_reads = INPUT_CHECK.out.fastq + } + + + // MODULE: Cat merge runs of same sample + ch_processed_for_combine = ch_processed_reads + .dump(tag: "prep_for_combine_grouping") + .map { + meta, reads -> + def meta_new = meta.clone() + meta_new['run_accession'] = 'combined' + [ meta_new, reads ] + } + .groupTuple ( by: 0 ) + .branch{ + combine: it[1].size() >= 2 + skip: it[1].size() < 2 + } + + CAT_FASTQ ( ch_processed_for_combine.combine ) + + // Ready for profiling! + ch_reads_for_profiling = ch_processed_for_combine.skip + .dump(tag: "skip_combine") + .mix( CAT_FASTQ.out.reads ) + .dump(tag: "files_for_profiling") + // // MODULE: MultiQC // @@ -95,6 +165,12 @@ workflow TAXPROFILER { ch_multiqc_files = ch_multiqc_files.mix(ch_workflow_summary.collectFile(name: 'workflow_summary_mqc.yaml')) ch_multiqc_files = ch_multiqc_files.mix(CUSTOM_DUMPSOFTWAREVERSIONS.out.mqc_yml.collect()) ch_multiqc_files = ch_multiqc_files.mix(FASTQC.out.zip.collect{it[1]}.ifEmpty([])) + if (params.fastp_clip_merge) { + ch_multiqc_files = ch_multiqc_files.mix(FASTP_SINGLE.out.json.collect{it[1]}.ifEmpty([])) + ch_multiqc_files = ch_multiqc_files.mix(FASTP_PAIRED.out.json.collect{it[1]}.ifEmpty([])) + ch_multiqc_files = ch_multiqc_files.mix(FASTQC_POST.out.zip.collect{it[1]}.ifEmpty([])) + } + MULTIQC ( ch_multiqc_files.collect() From 278f5605ca831338384b5045e34f500f0b5ca1a2 Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Sat, 19 Feb 2022 12:36:08 +0100 Subject: [PATCH 008/789] Added database preparation and final channel for profiling --- modules/local/database_check.nf | 25 ++++++++++ nextflow.config | 3 ++ subworkflows/local/db_check.nf | 40 ++++++++++++++++ subworkflows/local/input_check.nf | 2 +- subworkflows/local/preprocessing.nf | 73 +++++++++++++++++++++++++++++ workflows/taxprofiler.nf | 65 ++++++++----------------- 6 files changed, 161 insertions(+), 47 deletions(-) create mode 100644 modules/local/database_check.nf create mode 100644 subworkflows/local/db_check.nf create mode 100644 subworkflows/local/preprocessing.nf diff --git a/modules/local/database_check.nf b/modules/local/database_check.nf new file mode 100644 index 0000000..4da4313 --- /dev/null +++ b/modules/local/database_check.nf @@ -0,0 +1,25 @@ +process DATABASE_CHECK { + tag "$databasesheet" + + conda (params.enable_conda ? "conda-forge::python=3.8.3" : null) + container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? + 'https://depot.galaxyproject.org/singularity/python:3.8.3' : + 'quay.io/biocontainers/python:3.8.3' }" + + input: + path databasesheet + + output: + path '*.csv' , emit: csv + path "versions.yml", emit: versions + + script: // This script is bundled with the pipeline, in nf-core/taxprofiler/bin/ + """ + cat $databasesheet >> database_sheet.valid.csv + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + python: \$(python --version | sed 's/Python //g') + END_VERSIONS + """ +} diff --git a/nextflow.config b/nextflow.config index 160dba7..60b5a42 100644 --- a/nextflow.config +++ b/nextflow.config @@ -50,6 +50,9 @@ params { max_cpus = 16 max_time = '240.h' + // Databaess + databases = null + // FASTQ preprocessing fastp_clip_merge = false fastp_exclude_unmerged = true diff --git a/subworkflows/local/db_check.nf b/subworkflows/local/db_check.nf new file mode 100644 index 0000000..909d98f --- /dev/null +++ b/subworkflows/local/db_check.nf @@ -0,0 +1,40 @@ +// +// Check input samplesheet and get read channels +// + +include { DATABASE_CHECK } from '../../modules/local/database_check' + +workflow DB_CHECK { + take: + dbsheet // file: /path/to/dbsheet.csv + + main: + + // TODO: make database sheet check + parsed_samplesheet = DATABASE_CHECK ( dbsheet ) + .csv + .splitCsv ( header:true, sep:',' ) + .dump(tag: "db_split_csv_out") + .map { create_db_channels(it) } + .dump(tag: "db_channel_prepped") + .set{ dbs } + + emit: + dbs // channel: [ val(meta), [ db ] ] + versions = DATABASE_CHECK.out.versions // channel: [ versions.yml ] +} + +def create_db_channels(LinkedHashMap row) { + def meta = [:] + meta.tool = row.tool + meta.db_name = row.db_name + meta.db_params = row.db_params + + def array = [] + if (!file(row.db_path, type: 'dir').exists()) { + exit 1, "ERROR: Please check input samplesheet -> database could not be found!\n${row.db_path}" + } + array = [ meta, file(row.db_path) ] + + return array +} diff --git a/subworkflows/local/input_check.nf b/subworkflows/local/input_check.nf index 241a8a7..8497faa 100644 --- a/subworkflows/local/input_check.nf +++ b/subworkflows/local/input_check.nf @@ -12,7 +12,7 @@ workflow INPUT_CHECK { parsed_samplesheet = SAMPLESHEET_CHECK ( samplesheet ) .csv .splitCsv ( header:true, sep:',' ) - .dump(tag: "split_csv_out") + .dump(tag: "input_split_csv_out") .branch { fasta: it['fasta'] != '' fastq: true diff --git a/subworkflows/local/preprocessing.nf b/subworkflows/local/preprocessing.nf new file mode 100644 index 0000000..5832824 --- /dev/null +++ b/subworkflows/local/preprocessing.nf @@ -0,0 +1,73 @@ +// +// Check input samplesheet and get read channels +// + + +include { FASTP as FASTP_SINGLE } from '../../modules/nf-core/modules/fastp/main' +include { FASTP as FASTP_PAIRED } from '../../modules/nf-core/modules/fastp/main' +include { FASTQC as FASTQC_POST } from '../../modules/nf-core/modules/fastqc/main' + +workflow FASTQ_PREPROCESSING { + take: + reads // file: /path/to/samplesheet.csv + + main: + ch_versions = Channel.empty() + ch_multiqc_files = Channel.empty() + + // + // STEP: Read clipping and merging + // + // TODO give option to clip only and retain pairs + // TODO give option to retain singletons (probably fastp option likely) + // TODO move to subworkflow + + + if ( params.fastp_clip_merge ) { + + ch_input_for_fastp = reads + .dump(tag: "pre-fastp_branch") + .branch{ + single: it[0]['single_end'] == true + paired: it[0]['single_end'] == false + } + + ch_input_for_fastp.single.dump(tag: "input_fastp_single") + ch_input_for_fastp.paired.dump(tag: "input_fastp_paired") + + FASTP_SINGLE ( ch_input_for_fastp.single, false, false ) + FASTP_PAIRED ( ch_input_for_fastp.paired, false, true ) + + ch_fastp_reads_prepped = FASTP_PAIRED.out.reads_merged + .mix( FASTP_SINGLE.out.reads ) + .map { + meta, reads -> + def meta_new = meta.clone() + meta_new['single_end'] = 1 + [ meta_new, reads ] + } + + FASTQC_POST ( ch_fastp_reads_prepped ) + + ch_versions = ch_versions.mix(FASTP_SINGLE.out.versions.first()) + ch_versions = ch_versions.mix(FASTP_PAIRED.out.versions.first()) + + ch_processed_reads = ch_fastp_reads_prepped + + ch_multiqc_files = ch_multiqc_files.mix( FASTQC_POST.out.zip.collect{it[1]} ) + ch_multiqc_files = ch_multiqc_files.mix( FASTP_SINGLE.out.json.collect{it[1]} ) + ch_multiqc_files = ch_multiqc_files.mix( FASTP_PAIRED.out.json.collect{it[1]} ) + + ch_multiqc_files.dump(tag: "preprocessing_mqc_final") + + } else { + ch_processed_reads = reads + } + + + emit: + reads = ch_processed_reads // channel: [ val(meta), [ reads ] ] + versions = ch_versions // channel: [ versions.yml ] + mqc = ch_multiqc_files +} + diff --git a/workflows/taxprofiler.nf b/workflows/taxprofiler.nf index 3f10a9d..4a356a5 100644 --- a/workflows/taxprofiler.nf +++ b/workflows/taxprofiler.nf @@ -11,11 +11,12 @@ WorkflowTaxprofiler.initialise(params, log) // TODO nf-core: Add all file path parameters for the pipeline to the list below // Check input path parameters to see if they exist -def checkPathParamList = [ params.input, params.multiqc_config ] +def checkPathParamList = [ params.input, params.databases, params.multiqc_config ] for (param in checkPathParamList) { if (param) { file(param, checkIfExists: true) } } // Check mandatory parameters -if (params.input) { ch_input = file(params.input) } else { exit 1, 'Input samplesheet not specified!' } +if (params.input ) { ch_input = file(params.input) } else { exit 1, 'Input samplesheet not specified!' } +if (params.databases) { ch_databases = file(params.databases) } else { exit 1, 'Input database sheet not specified!' } /* ======================================================================================== @@ -35,7 +36,11 @@ ch_multiqc_custom_config = params.multiqc_config ? Channel.fromPath(params.multi // // SUBWORKFLOW: Consisting of a mix of local and nf-core/modules // -include { INPUT_CHECK } from '../subworkflows/local/input_check' +include { INPUT_CHECK } from '../subworkflows/local/input_check' + +include { DB_CHECK } from '../subworkflows/local/db_check' +include { FASTQ_PREPROCESSING } from '../subworkflows/local/preprocessing' + /* ======================================================================================== @@ -50,9 +55,6 @@ include { FASTQC } from '../modules/nf-core/modules/fastqc/ include { MULTIQC } from '../modules/nf-core/modules/multiqc/main' include { CUSTOM_DUMPSOFTWAREVERSIONS } from '../modules/nf-core/modules/custom/dumpsoftwareversions/main' -include { FASTP as FASTP_SINGLE } from '../modules/nf-core/modules/fastp/main' -include { FASTP as FASTP_PAIRED } from '../modules/nf-core/modules/fastp/main' -include { FASTQC as FASTQC_POST } from '../modules/nf-core/modules/fastqc/main' include { CAT_FASTQ } from '../modules/nf-core/modules/cat/fastq/main' /* @@ -76,6 +78,10 @@ workflow TAXPROFILER { ) ch_versions = ch_versions.mix(INPUT_CHECK.out.versions) + DB_CHECK ( + ch_databases + ) + // // MODULE: Run FastQC // @@ -91,47 +97,12 @@ workflow TAXPROFILER { // // MODULE: Run Clip/Merge/Complexity // - // TODO give option to clip only and retain pairs - // TODO give option to retain singletons (probably fastp option likely) - // TODO move to subworkflow if ( params.fastp_clip_merge ) { - - ch_input_for_fastp = INPUT_CHECK.out.fastq - .dump(tag: "pre-fastp_branch") - .branch{ - single: it[0]['single_end'] == true - paired: it[0]['single_end'] == false - } - - ch_input_for_fastp.single.dump(tag: "input_fastp_single") - ch_input_for_fastp.paired.dump(tag: "input_fastp_paired") - - FASTP_SINGLE ( ch_input_for_fastp.single, false, false ) - FASTP_PAIRED ( ch_input_for_fastp.paired, false, true ) - - ch_fastp_reads_prepped = FASTP_PAIRED.out.reads_merged - .mix( FASTP_SINGLE.out.reads ) - .map { - meta, reads -> - def meta_new = meta.clone() - meta_new['single_end'] = 1 - [ meta_new, reads ] - } - - FASTQC_POST ( ch_fastp_reads_prepped ) - - ch_versions = ch_versions.mix(FASTP_SINGLE.out.versions.first()) - ch_versions = ch_versions.mix(FASTP_PAIRED.out.versions.first()) - - ch_processed_reads = ch_fastp_reads_prepped - - } else { - ch_processed_reads = INPUT_CHECK.out.fastq + FASTQ_PREPROCESSING ( INPUT_CHECK.out.fastq ) } - // MODULE: Cat merge runs of same sample - ch_processed_for_combine = ch_processed_reads + ch_processed_for_combine = FASTQ_PREPROCESSING.out.reads .dump(tag: "prep_for_combine_grouping") .map { meta, reads -> @@ -153,6 +124,10 @@ workflow TAXPROFILER { .mix( CAT_FASTQ.out.reads ) .dump(tag: "files_for_profiling") + // Combine reads with possible databases + + ch_reads_for_profiling.combine(DB_CHECK.out.dbs).dump(tag: "reads_plus_db") + // // MODULE: MultiQC // @@ -166,9 +141,7 @@ workflow TAXPROFILER { ch_multiqc_files = ch_multiqc_files.mix(CUSTOM_DUMPSOFTWAREVERSIONS.out.mqc_yml.collect()) ch_multiqc_files = ch_multiqc_files.mix(FASTQC.out.zip.collect{it[1]}.ifEmpty([])) if (params.fastp_clip_merge) { - ch_multiqc_files = ch_multiqc_files.mix(FASTP_SINGLE.out.json.collect{it[1]}.ifEmpty([])) - ch_multiqc_files = ch_multiqc_files.mix(FASTP_PAIRED.out.json.collect{it[1]}.ifEmpty([])) - ch_multiqc_files = ch_multiqc_files.mix(FASTQC_POST.out.zip.collect{it[1]}.ifEmpty([])) + ch_multiqc_files = ch_multiqc_files.mix(FASTQ_PREPROCESSING.out.mqc) } From 2c183ed2edc61ab058580cb63441917d516eb564 Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Thu, 3 Mar 2022 17:42:02 +0100 Subject: [PATCH 009/789] Add Kraken2 and MALT/run as Proof of Concept (currnetly MQC issue) --- conf/modules.config | 20 ++++++ modules.json | 6 ++ .../nf-core/modules/kraken2/kraken2/main.nf | 49 +++++++++++++ .../nf-core/modules/kraken2/kraken2/meta.yml | 60 ++++++++++++++++ modules/nf-core/modules/malt/run/main.nf | 49 +++++++++++++ modules/nf-core/modules/malt/run/meta.yml | 58 ++++++++++++++++ nextflow.config | 11 ++- workflows/taxprofiler.nf | 69 +++++++++++++++++-- 8 files changed, 315 insertions(+), 7 deletions(-) create mode 100644 modules/nf-core/modules/kraken2/kraken2/main.nf create mode 100644 modules/nf-core/modules/kraken2/kraken2/meta.yml create mode 100644 modules/nf-core/modules/malt/run/main.nf create mode 100644 modules/nf-core/modules/malt/run/meta.yml diff --git a/conf/modules.config b/conf/modules.config index 2d533e9..dbc926c 100644 --- a/conf/modules.config +++ b/conf/modules.config @@ -68,6 +68,26 @@ process { ] } + withName: MALT_RUN { + publishDir = [ + path: { "${params.outdir}/malt/${meta.db_name}" }, + mode: 'copy', + pattern: '*.{rma6,tab,text,sam,log}' + ] + ext.args = { "${meta.db_params}" } + ext.when = params.run_malt + } + + withName: KRAKEN2_KRAKEN2 { + publishDir = [ + path: { "${params.outdir}/kraken2/${meta.db_name}" }, + mode: 'copy', + pattern: '.{fastq.gz,txt}' + ] + ext.args = { "${meta.db_params}" } + ext.when = params.run_kraken2 + ext.prefix = { "${meta.id}-${meta.db_name}" } + } withName: CUSTOM_DUMPSOFTWAREVERSIONS { publishDir = [ diff --git a/modules.json b/modules.json index 6cf2b3e..844b33a 100644 --- a/modules.json +++ b/modules.json @@ -15,6 +15,12 @@ "fastqc": { "git_sha": "9d0cad583b9a71a6509b754fdf589cbfbed08961" }, + "kraken2/kraken2": { + "git_sha": "e745e167c1020928ef20ea1397b6b4d230681b4d" + }, + "malt/run": { + "git_sha": "76cdd46f3f8a77fb5023fb5a39c4ab99925b8b56" + }, "multiqc": { "git_sha": "20d8250d9f39ddb05dfb437603aaf99b5c0b2b41" } diff --git a/modules/nf-core/modules/kraken2/kraken2/main.nf b/modules/nf-core/modules/kraken2/kraken2/main.nf new file mode 100644 index 0000000..3ec5df5 --- /dev/null +++ b/modules/nf-core/modules/kraken2/kraken2/main.nf @@ -0,0 +1,49 @@ +process KRAKEN2_KRAKEN2 { + tag "$meta.id" + label 'process_high' + + conda (params.enable_conda ? 'bioconda::kraken2=2.1.2 conda-forge::pigz=2.6' : null) + container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? + 'https://depot.galaxyproject.org/singularity/mulled-v2-5799ab18b5fc681e75923b2450abaa969907ec98:87fc08d11968d081f3e8a37131c1f1f6715b6542-0' : + 'quay.io/biocontainers/mulled-v2-5799ab18b5fc681e75923b2450abaa969907ec98:87fc08d11968d081f3e8a37131c1f1f6715b6542-0' }" + + input: + tuple val(meta), path(reads) + path db + + output: + tuple val(meta), path('*classified*') , emit: classified + tuple val(meta), path('*unclassified*'), emit: unclassified + tuple val(meta), path('*report.txt') , emit: txt + path "versions.yml" , emit: versions + + when: + task.ext.when == null || task.ext.when + + script: + def args = task.ext.args ?: '' + def prefix = task.ext.prefix ?: "${meta.id}" + 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" + """ + kraken2 \\ + --db $db \\ + --threads $task.cpus \\ + --unclassified-out $unclassified \\ + --classified-out $classified \\ + --report ${prefix}.kraken2.report.txt \\ + --gzip-compressed \\ + $paired \\ + $args \\ + $reads + + pigz -p $task.cpus *.fastq + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + kraken2: \$(echo \$(kraken2 --version 2>&1) | sed 's/^.*Kraken version //; s/ .*\$//') + pigz: \$( pigz --version 2>&1 | sed 's/pigz //g' ) + END_VERSIONS + """ +} diff --git a/modules/nf-core/modules/kraken2/kraken2/meta.yml b/modules/nf-core/modules/kraken2/kraken2/meta.yml new file mode 100644 index 0000000..9d6a385 --- /dev/null +++ b/modules/nf-core/modules/kraken2/kraken2/meta.yml @@ -0,0 +1,60 @@ +name: kraken2_kraken2 +description: Classifies metagenomic sequence data +keywords: + - classify + - metagenomics + - fastq + - db +tools: + - kraken2: + description: | + Kraken2 is a taxonomic sequence classifier that assigns taxonomic labels to sequence reads + homepage: https://ccb.jhu.edu/software/kraken2/ + documentation: https://github.com/DerrickWood/kraken2/wiki/Manual + doi: 10.1186/s13059-019-1891-0 + licence: ["MIT"] +input: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - reads: + type: file + description: | + List of input FastQ files of size 1 and 2 for single-end and paired-end data, + respectively. + - db: + type: directory + description: Kraken2 database +output: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - classified: + type: file + description: | + Reads classified to belong to any of the taxa + on the Kraken2 database. + pattern: "*{fastq.gz}" + - unclassified: + type: file + description: | + Reads not classified to belong to any of the taxa + on the Kraken2 database. + pattern: "*{fastq.gz}" + - txt: + type: file + description: | + Kraken2 report containing stats about classified + and not classifed reads. + pattern: "*.{report.txt}" + - versions: + type: file + description: File containing software versions + pattern: "versions.yml" +authors: + - "@joseespinosa" + - "@drpatelh" diff --git a/modules/nf-core/modules/malt/run/main.nf b/modules/nf-core/modules/malt/run/main.nf new file mode 100644 index 0000000..61c02ec --- /dev/null +++ b/modules/nf-core/modules/malt/run/main.nf @@ -0,0 +1,49 @@ +process MALT_RUN { + tag "$meta.id" + label 'process_high' + + conda (params.enable_conda ? "bioconda::malt=0.53" : null) + container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? + 'https://depot.galaxyproject.org/singularity/malt:0.53--hdfd78af_0' : + 'quay.io/biocontainers/malt:0.53--hdfd78af_0' }" + + input: + tuple val(meta), path(fastqs) + val mode + path index + + output: + tuple val(meta), path("*.rma6") , emit: rma6 + tuple val(meta), path("*.{tab,text,sam}"), optional:true, emit: alignments + tuple val(meta), path("*.log") , emit: log + path "versions.yml" , emit: versions + + when: + task.ext.when == null || task.ext.when + + script: + def args = task.ext.args ?: '' + def avail_mem = 6 + if (!task.memory) { + log.info '[MALT_RUN] Available memory not known - defaulting to 6GB. Specify process memory requirements to change this.' + } else { + avail_mem = task.memory.giga + } + + """ + malt-run \\ + -J-Xmx${avail_mem}g \\ + -t $task.cpus \\ + -v \\ + -o . \\ + $args \\ + --inFile ${fastqs.join(' ')} \\ + -m $mode \\ + --index $index/ |&tee malt-run.log + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + malt: \$(malt-run --help 2>&1 | grep -o 'version.* ' | cut -f 1 -d ',' | cut -f2 -d ' ') + END_VERSIONS + """ +} diff --git a/modules/nf-core/modules/malt/run/meta.yml b/modules/nf-core/modules/malt/run/meta.yml new file mode 100644 index 0000000..ae4277a --- /dev/null +++ b/modules/nf-core/modules/malt/run/meta.yml @@ -0,0 +1,58 @@ +name: malt_run +description: MALT, an acronym for MEGAN alignment tool, is a sequence alignment and analysis tool designed for processing high-throughput sequencing data, especially in the context of metagenomics. +keywords: + - malt + - alignment + - metagenomics + - ancient DNA + - aDNA + - palaeogenomics + - archaeogenomics + - microbiome +tools: + - malt: + description: A tool for mapping metagenomic data + homepage: https://www.wsi.uni-tuebingen.de/lehrstuehle/algorithms-in-bioinformatics/software/malt/ + documentation: https://software-ab.informatik.uni-tuebingen.de/download/malt/manual.pdf + tool_dev_url: None + doi: "10.1038/s41559-017-0446-6" + licence: ["GPL v3"] + +input: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - fastqs: + type: file + description: Input FASTQ files + pattern: "*.{fastq.gz,fq.gz}" + - mode: + type: string + description: Program mode + pattern: "Unknown|BlastN|BlastP|BlastX|Classifier" + - index: + type: directory + description: Index/database directory from malt-build + pattern: "*/" +output: + - versions: + type: file + description: File containing software versions + pattern: "versions.yml" + - rma6: + type: file + description: MEGAN6 RMA6 file + pattern: "*.rma6" + - sam: + type: file + description: Alignment files in Tab, Text or MEGAN-compatible SAM format + pattern: "*.{tab,txt,sam}" + - log: + type: file + description: Log of verbose MALT stdout + pattern: "malt-run.log" + +authors: + - "@jfy133" diff --git a/nextflow.config b/nextflow.config index 60b5a42..7991bdf 100644 --- a/nextflow.config +++ b/nextflow.config @@ -54,8 +54,15 @@ params { databases = null // FASTQ preprocessing - fastp_clip_merge = false - fastp_exclude_unmerged = true + fastp_clip_merge = false + fastp_exclude_unmerged = true + + // MALT + run_malt = false + malt_mode = 'BlastN' + + // kraken2 + run_kraken2 = false } // Load base.config by default for all pipelines diff --git a/workflows/taxprofiler.nf b/workflows/taxprofiler.nf index 4a356a5..bd25563 100644 --- a/workflows/taxprofiler.nf +++ b/workflows/taxprofiler.nf @@ -56,6 +56,9 @@ include { MULTIQC } from '../modules/nf-core/modules/multiqc include { CUSTOM_DUMPSOFTWAREVERSIONS } from '../modules/nf-core/modules/custom/dumpsoftwareversions/main' include { CAT_FASTQ } from '../modules/nf-core/modules/cat/fastq/main' +include { MALT_RUN } from '../modules/nf-core/modules/malt/run/main' +include { KRAKEN2_KRAKEN2 } from '../modules/nf-core/modules/kraken2/kraken2/main' + /* ======================================================================================== @@ -95,13 +98,15 @@ workflow TAXPROFILER { ) // - // MODULE: Run Clip/Merge/Complexity + // PERFORM PREPROCESSING // if ( params.fastp_clip_merge ) { FASTQ_PREPROCESSING ( INPUT_CHECK.out.fastq ) } - // MODULE: Cat merge runs of same sample + // + // PERFORM RUN MERGING + // ch_processed_for_combine = FASTQ_PREPROCESSING.out.reads .dump(tag: "prep_for_combine_grouping") .map { @@ -118,15 +123,61 @@ workflow TAXPROFILER { CAT_FASTQ ( ch_processed_for_combine.combine ) - // Ready for profiling! ch_reads_for_profiling = ch_processed_for_combine.skip .dump(tag: "skip_combine") .mix( CAT_FASTQ.out.reads ) .dump(tag: "files_for_profiling") - // Combine reads with possible databases + // + // COMBINE READS WITH POSSIBLE DATABASES + // + + // output [DUMP: reads_plus_db] [['id':'2612', 'run_accession':'combined', 'instrument_platform':'ILLUMINA', 'single_end':1], /2612.merged.fastq.gz, ['tool':'malt', 'db_name':'mal95', 'db_params':'"-id 90"'], /malt90] + ch_input_for_profiling = ch_reads_for_profiling + .combine(DB_CHECK.out.dbs) + .dump(tag: "reads_plus_db") + .branch { + malt: it[2]['tool'] == 'malt' + kraken2: it[2]['tool'] == 'kraken2' + unknown: true + } + + // + // PREP PROFILER INPUT CHANNELS ON PER TOOL BASIS + // + + // We groupTuple to have all samples in one channel for MALT as database + // loading takes a long time, so we only want to run it once per database + ch_input_for_malt = ch_input_for_profiling.malt + .map { + it -> + def temp_meta = [ id: it[2]['db_name']] + it[2] + def db = it[3] + [ temp_meta, it[1], db ] + } + .groupTuple(by: [0,2]) + .dump(tag: "input for malt") + .multiMap { + it -> + reads: [ it[0], it[1].flatten() ] + db: it[2] + } + + // We can run Kraken2 one-by-one sample-wise + ch_input_for_kraken2 = ch_input_for_profiling.kraken2 + .dump(tag: "input for kraken") + .multiMap { + it -> + reads: [ it[0] + it[2], it[1] ] + db: it[3] + } + + // + // RUN PROFILING + // + MALT_RUN ( ch_input_for_malt.reads, params.malt_mode, ch_input_for_malt.db ) + KRAKEN2_KRAKEN2 ( ch_input_for_kraken2.reads, ch_input_for_kraken2.db ) - ch_reads_for_profiling.combine(DB_CHECK.out.dbs).dump(tag: "reads_plus_db") // // MODULE: MultiQC @@ -143,6 +194,14 @@ workflow TAXPROFILER { if (params.fastp_clip_merge) { ch_multiqc_files = ch_multiqc_files.mix(FASTQ_PREPROCESSING.out.mqc) } + if (params.run_kraken2) { + ch_multiqc_files = ch_multiqc_files.mix(KRAKEN2_KRAKEN2.out.txt.collect{it[1]}.ifEmpty([])) + ch_versions = ch_versions.mix(KRAKEN2_KRAKEN2.out.versions.first()) + } + if (params.run_malt) { + ch_multiqc_files = ch_multiqc_files.mix(MALT_RUN.out.log.collect{it[1]}.ifEmpty([])) + ch_versions = ch_versions.mix(MALT_RUN.out.versions.first()) + } MULTIQC ( From e39c6a8ccb337b5889271df4f1e57bcbd3dd2c74 Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Thu, 3 Mar 2022 18:04:03 +0100 Subject: [PATCH 010/789] Fix MALT multiqc report clash --- modules.json | 2 +- modules/nf-core/modules/malt/run/main.nf | 3 ++- modules/nf-core/modules/malt/run/meta.yml | 2 +- workflows/taxprofiler.nf | 3 ++- 4 files changed, 6 insertions(+), 4 deletions(-) diff --git a/modules.json b/modules.json index 844b33a..6a785b8 100644 --- a/modules.json +++ b/modules.json @@ -19,7 +19,7 @@ "git_sha": "e745e167c1020928ef20ea1397b6b4d230681b4d" }, "malt/run": { - "git_sha": "76cdd46f3f8a77fb5023fb5a39c4ab99925b8b56" + "git_sha": "72b96f4e504eef673f2b5c13560a9d90b669129b" }, "multiqc": { "git_sha": "20d8250d9f39ddb05dfb437603aaf99b5c0b2b41" diff --git a/modules/nf-core/modules/malt/run/main.nf b/modules/nf-core/modules/malt/run/main.nf index 61c02ec..4e2e50c 100644 --- a/modules/nf-core/modules/malt/run/main.nf +++ b/modules/nf-core/modules/malt/run/main.nf @@ -23,6 +23,7 @@ process MALT_RUN { script: def args = task.ext.args ?: '' + def prefix = task.ext.prefix ?: "${meta.id}" def avail_mem = 6 if (!task.memory) { log.info '[MALT_RUN] Available memory not known - defaulting to 6GB. Specify process memory requirements to change this.' @@ -39,7 +40,7 @@ process MALT_RUN { $args \\ --inFile ${fastqs.join(' ')} \\ -m $mode \\ - --index $index/ |&tee malt-run.log + --index $index/ |&tee ${prefix}-malt-run.log cat <<-END_VERSIONS > versions.yml "${task.process}": diff --git a/modules/nf-core/modules/malt/run/meta.yml b/modules/nf-core/modules/malt/run/meta.yml index ae4277a..66f2d7a 100644 --- a/modules/nf-core/modules/malt/run/meta.yml +++ b/modules/nf-core/modules/malt/run/meta.yml @@ -52,7 +52,7 @@ output: - log: type: file description: Log of verbose MALT stdout - pattern: "malt-run.log" + pattern: "*-malt-run.log" authors: - "@jfy133" diff --git a/workflows/taxprofiler.nf b/workflows/taxprofiler.nf index bd25563..bf3e6ee 100644 --- a/workflows/taxprofiler.nf +++ b/workflows/taxprofiler.nf @@ -203,7 +203,8 @@ workflow TAXPROFILER { ch_versions = ch_versions.mix(MALT_RUN.out.versions.first()) } - + // TODO MALT results overwriting per database? + // TODO Versions for Karken/MALT not report? MULTIQC ( ch_multiqc_files.collect() ) From 424f11f5ed0898a0e0524a7386b35164f58beccb Mon Sep 17 00:00:00 2001 From: "James A. Fellows Yates" Date: Thu, 17 Mar 2022 13:16:16 +0100 Subject: [PATCH 011/789] Update README.md --- README.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 60baf67..5d0c74b 100644 --- a/README.md +++ b/README.md @@ -61,10 +61,10 @@ On release, automated continuous integration tests run the pipeline on a full-si Note that some form of configuration will be needed so that Nextflow knows how to fetch the required software. This is usually done in the form of a config profile (`YOURPROFILE` in the example command above). You can chain multiple config profiles in a comma-separated string. - > * The pipeline comes with config profiles called `docker`, `singularity`, `podman`, `shifter`, `charliecloud` and `conda` which instruct the pipeline to use the named tool for software management. For example, `-profile test,docker`. - > * Please check [nf-core/configs](https://github.com/nf-core/configs#documentation) to see if a custom config file to run nf-core pipelines already exists for your Institute. If so, you can simply use `-profile ` in your command. This will enable either `docker` or `singularity` and set the appropriate execution settings for your local compute environment. - > * If you are using `singularity`, please use the [`nf-core download`](https://nf-co.re/tools/#downloading-pipelines-for-offline-use) command to download images first, before running the pipeline. Setting the [`NXF_SINGULARITY_CACHEDIR` or `singularity.cacheDir`](https://www.nextflow.io/docs/latest/singularity.html?#singularity-docker-hub) Nextflow options enables you to store and re-use the images from a central location for future pipeline runs. - > * If you are using `conda`, it is highly recommended to use the [`NXF_CONDA_CACHEDIR` or `conda.cacheDir`](https://www.nextflow.io/docs/latest/conda.html) settings to store the environments in a central location for future pipeline runs. + > - The pipeline comes with config profiles called `docker`, `singularity`, `podman`, `shifter`, `charliecloud` and `conda` which instruct the pipeline to use the named tool for software management. For example, `-profile test,docker`. + > - Please check [nf-core/configs](https://github.com/nf-core/configs#documentation) to see if a custom config file to run nf-core pipelines already exists for your Institute. If so, you can simply use `-profile ` in your command. This will enable either `docker` or `singularity` and set the appropriate execution settings for your local compute environment. + > - If you are using `singularity`, please use the [`nf-core download`](https://nf-co.re/tools/#downloading-pipelines-for-offline-use) command to download images first, before running the pipeline. Setting the [`NXF_SINGULARITY_CACHEDIR` or `singularity.cacheDir`](https://www.nextflow.io/docs/latest/singularity.html?#singularity-docker-hub) Nextflow options enables you to store and re-use the images from a central location for future pipeline runs. + > - If you are using `conda`, it is highly recommended to use the [`NXF_CONDA_CACHEDIR` or `conda.cacheDir`](https://www.nextflow.io/docs/latest/conda.html) settings to store the environments in a central location for future pipeline runs. 4. Start running your own analysis! From 0f0ed6cd4698df3bea9d4168c056085a820eb056 Mon Sep 17 00:00:00 2001 From: ljmesi <37740329+ljmesi@users.noreply.github.com> Date: Fri, 18 Mar 2022 10:45:06 +0100 Subject: [PATCH 012/789] Fix function name --- subworkflows/local/input_check.nf | 1 + 1 file changed, 1 insertion(+) diff --git a/subworkflows/local/input_check.nf b/subworkflows/local/input_check.nf index d66fb3a..481028f 100644 --- a/subworkflows/local/input_check.nf +++ b/subworkflows/local/input_check.nf @@ -15,6 +15,7 @@ workflow INPUT_CHECK { .dump(tag: "input_split_csv_out") .branch { fasta: it['fasta'] != '' + nanopore: it['instrument_platform'] == 'OXFORD_NANOPORE' fastq: true } From 41b3d8db822caab916ec82fe4b4f581f17ab1ca5 Mon Sep 17 00:00:00 2001 From: ljmesi <37740329+ljmesi@users.noreply.github.com> Date: Fri, 18 Mar 2022 10:47:41 +0100 Subject: [PATCH 013/789] Add nanopore channel --- subworkflows/local/input_check.nf | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/subworkflows/local/input_check.nf b/subworkflows/local/input_check.nf index 481028f..2e30bcc 100644 --- a/subworkflows/local/input_check.nf +++ b/subworkflows/local/input_check.nf @@ -20,10 +20,15 @@ workflow INPUT_CHECK { } parsed_samplesheet.fastq - .map { create_fastq_channels(it) } + .map { create_fastq_channel(it) } .dump(tag: "fastq_channel_init") .set { fastq } + parsed_samplesheet.nanopore + .map { create_fastq_channel(it) } + .dump(tag: "fastq_nanopore_channel_init") + .set { nanopore } + parsed_samplesheet.fasta .map { create_fasta_channels(it) } .dump(tag: "fasta_channel_init") @@ -31,6 +36,7 @@ workflow INPUT_CHECK { emit: fastq // channel: [ val(meta), [ reads ] ] + nanopore // channel: [ val(meta), [ reads ] ] fasta // channel: [ val(meta), fasta ] versions = SAMPLESHEET_CHECK.out.versions // channel: [ versions.yml ] } @@ -52,10 +58,17 @@ def create_fastq_channel(LinkedHashMap row) { if (meta.single_end) { fastq_meta = [ meta, [ file(row.fastq_1) ] ] } else { - if (!file(row.fastq_2).exists()) { - exit 1, "ERROR: Please check input samplesheet -> Read 2 FastQ file does not exist!\n${row.fastq_2}" + if (meta.instrument_platform == 'OXFORD_NANOPORE') { + if (row.fastq_2 != '') { + exit 1, "ERROR: Please check input samplesheet -> For Oxford Nanopore reads Read 2 FastQ should be empty!\n${row.fastq_2}" + } + fastq_meta = [ meta, [ file(row.fastq_1) ] ] + } else { + if (!file(row.fastq_2).exists()) { + exit 1, "ERROR: Please check input samplesheet -> Read 2 FastQ file does not exist!\n${row.fastq_2}" + } + fastq_meta = [ meta, [ file(row.fastq_1), file(row.fastq_2) ] ] } - fastq_meta = [ meta, [ file(row.fastq_1), file(row.fastq_2) ] ] } return fastq_meta } From 7f7ddc9f14237f1616918963a002cbc64fea2687 Mon Sep 17 00:00:00 2001 From: ljmesi <37740329+ljmesi@users.noreply.github.com> Date: Fri, 18 Mar 2022 10:48:06 +0100 Subject: [PATCH 014/789] Update comment --- bin/check_samplesheet.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bin/check_samplesheet.py b/bin/check_samplesheet.py index 16e668b..d10ee90 100755 --- a/bin/check_samplesheet.py +++ b/bin/check_samplesheet.py @@ -173,7 +173,7 @@ def check_samplesheet(file_in, file_out): ## Auto-detect paired-end/single-end if sample and fastq_1 and fastq_2: ## Paired-end short reads sample_info.extend(["0", fastq_1, fastq_2, fasta]) - elif sample and fastq_1 and not fastq_2: ## Single-end short reads + elif sample and fastq_1 and not fastq_2: ## Single-end short/long fastq reads sample_info.extend(["1", fastq_1, fastq_2, fasta]) elif ( sample and fasta and not fastq_1 and not fastq_2 From 2e1b6c5d0a3b7c455bba5cb4d20dbbceac43dffe Mon Sep 17 00:00:00 2001 From: ljmesi <37740329+ljmesi@users.noreply.github.com> Date: Fri, 18 Mar 2022 11:00:36 +0100 Subject: [PATCH 015/789] Add info on Nanopore reads to fastq_1 column --- docs/usage.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/docs/usage.md b/docs/usage.md index a8b0448..38c063e 100644 --- a/docs/usage.md +++ b/docs/usage.md @@ -44,11 +44,11 @@ TREATMENT_REP3,AEG588A6_S6_L003_R1_001.fastq.gz, TREATMENT_REP3,AEG588A6_S6_L004_R1_001.fastq.gz, ``` -| Column | Description | -|----------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| `sample` | Custom sample name. This entry will be identical for multiple sequencing libraries/runs from the same sample. Spaces in sample names are automatically converted to underscores (`_`). | -| `fastq_1` | Full path to FastQ file for Illumina short reads 1. File has to be gzipped and have the extension ".fastq.gz" or ".fq.gz". | -| `fastq_2` | Full path to FastQ file for Illumina short reads 2. File has to be gzipped and have the extension ".fastq.gz" or ".fq.gz". | +| Column | Description | +| --------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `sample` | Custom sample name. This entry will be identical for multiple sequencing libraries/runs from the same sample. Spaces in sample names are automatically converted to underscores (`_`). | +| `fastq_1` | Full path to FastQ file for Illumina short reads 1 or Nanopore reads. File has to be gzipped and have the extension ".fastq.gz" or ".fq.gz". | +| `fastq_2` | Full path to FastQ file for Illumina short reads 2. File has to be gzipped and have the extension ".fastq.gz" or ".fq.gz". | An [example samplesheet](../assets/samplesheet.csv) has been provided with the pipeline. From c8e49c56f4f6b26dde209acfd474fc5c4f43caf7 Mon Sep 17 00:00:00 2001 From: ljmesi <37740329+ljmesi@users.noreply.github.com> Date: Fri, 18 Mar 2022 13:47:44 +0100 Subject: [PATCH 016/789] Perform fastqc on nanopore reads before trimming --- workflows/taxprofiler.nf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/workflows/taxprofiler.nf b/workflows/taxprofiler.nf index f740324..c3d3eb6 100644 --- a/workflows/taxprofiler.nf +++ b/workflows/taxprofiler.nf @@ -89,7 +89,7 @@ workflow TAXPROFILER { // MODULE: Run FastQC // FASTQC ( - INPUT_CHECK.out.fastq + INPUT_CHECK.out.fastq.concat( INPUT_CHECK.out.nanopore ) ) ch_versions = ch_versions.mix(FASTQC.out.versions.first()) From 0936b9b28e52986576d9bb62473373f209565d6d Mon Sep 17 00:00:00 2001 From: Lauri Mesilaakso Date: Fri, 18 Mar 2022 14:18:38 +0100 Subject: [PATCH 017/789] Update workflows/taxprofiler.nf Co-authored-by: James A. Fellows Yates --- workflows/taxprofiler.nf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/workflows/taxprofiler.nf b/workflows/taxprofiler.nf index c3d3eb6..f48cff6 100644 --- a/workflows/taxprofiler.nf +++ b/workflows/taxprofiler.nf @@ -89,7 +89,7 @@ workflow TAXPROFILER { // MODULE: Run FastQC // FASTQC ( - INPUT_CHECK.out.fastq.concat( INPUT_CHECK.out.nanopore ) + INPUT_CHECK.out.fastq.mix( INPUT_CHECK.out.nanopore ) ) ch_versions = ch_versions.mix(FASTQC.out.versions.first()) From 16be676d72f9964038a52fb0ddc58c9bdafd4f9b Mon Sep 17 00:00:00 2001 From: ljmesi <37740329+ljmesi@users.noreply.github.com> Date: Fri, 18 Mar 2022 14:34:10 +0100 Subject: [PATCH 018/789] Add Porechop module --- conf/modules.config | 9 ++++ modules.json | 3 ++ modules/nf-core/modules/porechop/main.nf | 35 ++++++++++++++++ modules/nf-core/modules/porechop/meta.yml | 50 +++++++++++++++++++++++ 4 files changed, 97 insertions(+) create mode 100644 modules/nf-core/modules/porechop/main.nf create mode 100644 modules/nf-core/modules/porechop/meta.yml diff --git a/conf/modules.config b/conf/modules.config index 9e334bc..050772e 100644 --- a/conf/modules.config +++ b/conf/modules.config @@ -50,6 +50,15 @@ process { ] } + withName: PORECHOP { + ext.prefix = { "${meta.id}_${meta.run_accession}" } + publishDir = [ + path: { "${params.outdir}/porechop" }, + mode: 'copy', + pattern: '*.fastq.gz' + ] + } + withName: FASTQC_POST { ext.args = '--quiet' ext.prefix = { "${meta.id}_${meta.run_accession}_processed" } diff --git a/modules.json b/modules.json index 6a785b8..284cf13 100644 --- a/modules.json +++ b/modules.json @@ -23,6 +23,9 @@ }, "multiqc": { "git_sha": "20d8250d9f39ddb05dfb437603aaf99b5c0b2b41" + }, + "porechop": { + "git_sha": "e20e57f90b6787ac9a010a980cf6ea98bd990046" } } } diff --git a/modules/nf-core/modules/porechop/main.nf b/modules/nf-core/modules/porechop/main.nf new file mode 100644 index 0000000..65982b8 --- /dev/null +++ b/modules/nf-core/modules/porechop/main.nf @@ -0,0 +1,35 @@ +process PORECHOP { + tag "$meta.id" + label 'process_medium' + + conda (params.enable_conda ? "bioconda::porechop=0.2.4" : null) + container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? + 'https://depot.galaxyproject.org/singularity/porechop:0.2.4--py39h7cff6ad_2' : + 'quay.io/biocontainers/porechop:0.2.4--py39h7cff6ad_2' }" + + input: + tuple val(meta), path(reads) + + output: + tuple val(meta), path("*.fastq.gz"), emit: reads + path "versions.yml" , emit: versions + + when: + task.ext.when == null || task.ext.when + + script: + def args = task.ext.args ?: '' + def prefix = task.ext.prefix ?: "${meta.id}" + """ + porechop \\ + -i $reads \\ + -t $task.cpus \\ + $args \\ + -o ${prefix}.fastq.gz + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + porechop: \$( porechop --version ) + END_VERSIONS + """ +} diff --git a/modules/nf-core/modules/porechop/meta.yml b/modules/nf-core/modules/porechop/meta.yml new file mode 100644 index 0000000..81399d2 --- /dev/null +++ b/modules/nf-core/modules/porechop/meta.yml @@ -0,0 +1,50 @@ +name: porechop +description: Adapter removal and demultiplexing of Oxford Nanopore reads +keywords: + - adapter + - nanopore + - demultiplexing +tools: + - porechop: + description: Adapter removal and demultiplexing of Oxford Nanopore reads + homepage: "https://github.com/rrwick/Porechop" + documentation: "https://github.com/rrwick/Porechop" + tool_dev_url: "https://github.com/rrwick/Porechop" + doi: "10.1099/mgen.0.000132" + licence: ["GPL v3"] + +input: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - reads: + type: file + description: fastq/fastq.gz file + pattern: "*.{fastq,fastq.gz,fq,fq.gz}" + +output: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - versions: + type: file + description: File containing software versions + pattern: "versions.yml" + - reads: + type: file + description: Demultiplexed and/or adapter-trimmed fastq.gz file + pattern: "*.{fastq.gz}" + +authors: + - "@ggabernet" + - "@jasmezz" + - "@d4straub" + - "@LaurenceKuhl" + - "@SusiJo" + - "@jonasscheid" + - "@jonoave" + - "@GokceOGUZ" From 1e42f1d9f295e909cc75d10b6306cce2d1f4bf22 Mon Sep 17 00:00:00 2001 From: ljmesi <37740329+ljmesi@users.noreply.github.com> Date: Fri, 18 Mar 2022 15:10:44 +0100 Subject: [PATCH 019/789] Add long read preprocessing subworkflow --- subworkflows/local/longread_preprocessing.nf | 34 ++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 subworkflows/local/longread_preprocessing.nf diff --git a/subworkflows/local/longread_preprocessing.nf b/subworkflows/local/longread_preprocessing.nf new file mode 100644 index 0000000..da1049a --- /dev/null +++ b/subworkflows/local/longread_preprocessing.nf @@ -0,0 +1,34 @@ + +include { FASTQC as FASTQC_POST } from '../../modules/nf-core/modules/fastqc/main' +include { PORECHOP } from '../../modules/nf-core/modules/porechop/main' + +workflow LONGREAD_PREPROCESSING { + take: + reads + + main: + ch_versions = Channel.empty() + ch_multiqc_files = Channel.empty() + + PORECHOP ( reads ) + + ch_processed_reads = PORECHOP.out.reads + .dump(tag: "pre_fastqc_check") + .map { + meta, reads -> + def meta_new = meta.clone() + meta_new['single_end'] = 1 + [ meta_new, reads ] + } + + FASTQC_POST ( PORECHOP.out.reads ) + ch_versions = ch_versions.mix(PORECHOP.out.versions.first()) + ch_multiqc_files = ch_multiqc_files.mix( FASTQC_POST.out.zip.collect{it[1]} ) + + + emit: + reads = ch_processed_reads // channel: [ val(meta), [ reads ] ] + versions = ch_versions // channel: [ versions.yml ] + mqc = ch_multiqc_files +} + From 582aaa105fff0328f8df314d88ab84fe6c8e528b Mon Sep 17 00:00:00 2001 From: ljmesi <37740329+ljmesi@users.noreply.github.com> Date: Fri, 18 Mar 2022 15:12:07 +0100 Subject: [PATCH 020/789] Include long reads preprocessing subworkflow --- workflows/taxprofiler.nf | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/workflows/taxprofiler.nf b/workflows/taxprofiler.nf index f48cff6..9e52b59 100644 --- a/workflows/taxprofiler.nf +++ b/workflows/taxprofiler.nf @@ -40,7 +40,7 @@ include { INPUT_CHECK } from '../subworkflows/local/input_check' include { DB_CHECK } from '../subworkflows/local/db_check' include { FASTQ_PREPROCESSING } from '../subworkflows/local/preprocessing' - +include { LONGREAD_PREPROCESSING } from '../subworkflows/local/longread_preprocessing' /* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -104,6 +104,10 @@ workflow TAXPROFILER { FASTQ_PREPROCESSING ( INPUT_CHECK.out.fastq ) } + LONGREAD_PREPROCESSING ( INPUT_CHECK.out.nanopore ) + + ch_versions = ch_versions.mix(LONGREAD_PREPROCESSING.out.versions.first()) + // // PERFORM RUN MERGING // @@ -191,6 +195,7 @@ workflow TAXPROFILER { ch_multiqc_files = ch_multiqc_files.mix(ch_workflow_summary.collectFile(name: 'workflow_summary_mqc.yaml')) ch_multiqc_files = ch_multiqc_files.mix(CUSTOM_DUMPSOFTWAREVERSIONS.out.mqc_yml.collect()) ch_multiqc_files = ch_multiqc_files.mix(FASTQC.out.zip.collect{it[1]}.ifEmpty([])) + ch_multiqc_files = ch_multiqc_files.mix(LONGREAD_PREPROCESSING.out.mqc) if (params.fastp_clip_merge) { ch_multiqc_files = ch_multiqc_files.mix(FASTQ_PREPROCESSING.out.mqc) } From d09a3c170edac3afb7e6932cbcca824d6b77e202 Mon Sep 17 00:00:00 2001 From: ljmesi <37740329+ljmesi@users.noreply.github.com> Date: Fri, 18 Mar 2022 15:46:03 +0100 Subject: [PATCH 021/789] Add Porechop --- CITATIONS.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CITATIONS.md b/CITATIONS.md index 192b2f4..53c53c3 100644 --- a/CITATIONS.md +++ b/CITATIONS.md @@ -15,6 +15,8 @@ * [MultiQC](https://pubmed.ncbi.nlm.nih.gov/27312411/) > Ewels P, Magnusson M, Lundin S, Käller M. MultiQC: summarize analysis results for multiple tools and samples in a single report. Bioinformatics. 2016 Oct 1;32(19):3047-8. doi: 10.1093/bioinformatics/btw354. Epub 2016 Jun 16. PubMed PMID: 27312411; PubMed Central PMCID: PMC5039924. +* [Porechop](https://github.com/rrwick/Porechop) + ## Software packaging/containerisation tools * [Anaconda](https://anaconda.com) From 24a01529f5053c51a0f548ad04790f9bd5e3df9d Mon Sep 17 00:00:00 2001 From: ljmesi <37740329+ljmesi@users.noreply.github.com> Date: Fri, 18 Mar 2022 15:47:46 +0100 Subject: [PATCH 022/789] Add mentioning about Nanopore reads pre-processing --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 5d0c74b..622b8de 100644 --- a/README.md +++ b/README.md @@ -34,6 +34,7 @@ On release, automated continuous integration tests run the pipeline on a full-si - Low complexity filtering - Host read removal - Run merging + - Adapter and quality trimming of Nanopore reads 3. Performs taxonomic profiling a choice of: - Kraken2 - MetaPhlAn3 From c7f022008c561e70e2ed4a875c17ea1ece109f43 Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Mon, 21 Mar 2022 15:07:59 +0100 Subject: [PATCH 023/789] Start getting database prep ready --- modules.json | 3 +++ modules/nf-core/modules/untar/main.nf | 36 ++++++++++++++++++++++++++ modules/nf-core/modules/untar/meta.yml | 28 ++++++++++++++++++++ subworkflows/local/db_check.nf | 14 +++++++++- subworkflows/local/input_check.nf | 2 +- 5 files changed, 81 insertions(+), 2 deletions(-) create mode 100644 modules/nf-core/modules/untar/main.nf create mode 100644 modules/nf-core/modules/untar/meta.yml diff --git a/modules.json b/modules.json index 6a785b8..9a7f1df 100644 --- a/modules.json +++ b/modules.json @@ -23,6 +23,9 @@ }, "multiqc": { "git_sha": "20d8250d9f39ddb05dfb437603aaf99b5c0b2b41" + }, + "untar": { + "git_sha": "7ec09d0ef4df89617baacc9b2dafcddb7cd4b05a" } } } diff --git a/modules/nf-core/modules/untar/main.nf b/modules/nf-core/modules/untar/main.nf new file mode 100644 index 0000000..bbae948 --- /dev/null +++ b/modules/nf-core/modules/untar/main.nf @@ -0,0 +1,36 @@ +process UNTAR { + tag "$archive" + label 'process_low' + + conda (params.enable_conda ? "conda-forge::tar=1.32" : null) + container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? + 'https://containers.biocontainers.pro/s3/SingImgsRepo/biocontainers/v1.2.0_cv1/biocontainers_v1.2.0_cv1.img' : + 'biocontainers/biocontainers:v1.2.0_cv1' }" + + input: + path archive + + output: + path "$untar" , emit: untar + path "versions.yml", emit: versions + + when: + task.ext.when == null || task.ext.when + + script: + def args = task.ext.args ?: '' + def args2 = task.ext.args2 ?: '' + untar = archive.toString() - '.tar.gz' + """ + tar \\ + -xzvf \\ + $args \\ + $archive \\ + $args2 \\ + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + untar: \$(echo \$(tar --version 2>&1) | sed 's/^.*(GNU tar) //; s/ Copyright.*\$//') + END_VERSIONS + """ +} diff --git a/modules/nf-core/modules/untar/meta.yml b/modules/nf-core/modules/untar/meta.yml new file mode 100644 index 0000000..e877a97 --- /dev/null +++ b/modules/nf-core/modules/untar/meta.yml @@ -0,0 +1,28 @@ +name: untar +description: Extract files. +keywords: + - untar + - uncompress +tools: + - untar: + description: | + Extract tar.gz files. + documentation: https://www.gnu.org/software/tar/manual/ + licence: ["GPL-3.0-or-later"] +input: + - archive: + type: file + description: File to be untar + pattern: "*.{tar}.{gz}" +output: + - untar: + type: file + description: + pattern: "*.*" + - versions: + type: file + description: File containing software versions + pattern: "versions.yml" +authors: + - "@joseespinosa" + - "@drpatelh" diff --git a/subworkflows/local/db_check.nf b/subworkflows/local/db_check.nf index 909d98f..6f061d7 100644 --- a/subworkflows/local/db_check.nf +++ b/subworkflows/local/db_check.nf @@ -19,8 +19,20 @@ workflow DB_CHECK { .dump(tag: "db_channel_prepped") .set{ dbs } + + parsed_samplesheet + .branch { + untar: it[0]['db_path'].toString().endsWith(".tar.gz") + skip: true + } + .set{ ch_dbs_for_untar } + + UNTAR ( ch_dbs_for_untar.untar ) + + ch_final_dbs = ch_dbs_for_untar.skip.mix( ch_dbs_untarred ) + emit: - dbs // channel: [ val(meta), [ db ] ] + dbs = ch_final_dbs // channel: [ val(meta), [ db ] ] versions = DATABASE_CHECK.out.versions // channel: [ versions.yml ] } diff --git a/subworkflows/local/input_check.nf b/subworkflows/local/input_check.nf index d66fb3a..938c87f 100644 --- a/subworkflows/local/input_check.nf +++ b/subworkflows/local/input_check.nf @@ -35,7 +35,7 @@ workflow INPUT_CHECK { } // Function to get list of [ meta, [ fastq_1, fastq_2 ] ] -def create_fastq_channel(LinkedHashMap row) { +def create_fastq_channels(LinkedHashMap row) { // create meta map def meta = [:] meta.id = row.sample From 631c115e1003fc7cb9b0c893bf7cde761f4287ef Mon Sep 17 00:00:00 2001 From: "James A. Fellows Yates" Date: Mon, 21 Mar 2022 14:58:19 +0000 Subject: [PATCH 024/789] Adds PoC of untarring system --- conf/modules.config | 2 +- modules.json | 2 +- modules/nf-core/modules/untar/main.nf | 10 +++++----- modules/nf-core/modules/untar/meta.yml | 10 ++++++++++ subworkflows/local/db_check.nf | 9 +++++---- 5 files changed, 22 insertions(+), 11 deletions(-) diff --git a/conf/modules.config b/conf/modules.config index 9e334bc..620ae1d 100644 --- a/conf/modules.config +++ b/conf/modules.config @@ -82,7 +82,7 @@ process { publishDir = [ path: { "${params.outdir}/kraken2/${meta.db_name}" }, mode: 'copy', - pattern: '.{fastq.gz,txt}' + pattern: '*.{fastq.gz,txt}' ] ext.args = { "${meta.db_params}" } ext.when = params.run_kraken2 diff --git a/modules.json b/modules.json index 9a7f1df..96a43d8 100644 --- a/modules.json +++ b/modules.json @@ -25,7 +25,7 @@ "git_sha": "20d8250d9f39ddb05dfb437603aaf99b5c0b2b41" }, "untar": { - "git_sha": "7ec09d0ef4df89617baacc9b2dafcddb7cd4b05a" + "git_sha": "e080f4c8acf5760039ed12ec1f206170f3f9a918" } } } diff --git a/modules/nf-core/modules/untar/main.nf b/modules/nf-core/modules/untar/main.nf index bbae948..dc43fb7 100644 --- a/modules/nf-core/modules/untar/main.nf +++ b/modules/nf-core/modules/untar/main.nf @@ -8,19 +8,19 @@ process UNTAR { 'biocontainers/biocontainers:v1.2.0_cv1' }" input: - path archive + tuple val(meta), path(archive) output: - path "$untar" , emit: untar - path "versions.yml", emit: versions + tuple val(meta), path("$untar"), emit: untar + path "versions.yml" , emit: versions when: task.ext.when == null || task.ext.when script: - def args = task.ext.args ?: '' + def args = task.ext.args ?: '' def args2 = task.ext.args2 ?: '' - untar = archive.toString() - '.tar.gz' + untar = archive.toString() - '.tar.gz' """ tar \\ -xzvf \\ diff --git a/modules/nf-core/modules/untar/meta.yml b/modules/nf-core/modules/untar/meta.yml index e877a97..d426919 100644 --- a/modules/nf-core/modules/untar/meta.yml +++ b/modules/nf-core/modules/untar/meta.yml @@ -10,11 +10,21 @@ tools: documentation: https://www.gnu.org/software/tar/manual/ licence: ["GPL-3.0-or-later"] input: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] - archive: type: file description: File to be untar pattern: "*.{tar}.{gz}" output: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] - untar: type: file description: diff --git a/subworkflows/local/db_check.nf b/subworkflows/local/db_check.nf index 6f061d7..641108d 100644 --- a/subworkflows/local/db_check.nf +++ b/subworkflows/local/db_check.nf @@ -3,6 +3,7 @@ // include { DATABASE_CHECK } from '../../modules/local/database_check' +include { UNTAR } from '../../modules/nf-core/modules/untar/main' workflow DB_CHECK { take: @@ -17,19 +18,19 @@ workflow DB_CHECK { .dump(tag: "db_split_csv_out") .map { create_db_channels(it) } .dump(tag: "db_channel_prepped") - .set{ dbs } - parsed_samplesheet .branch { - untar: it[0]['db_path'].toString().endsWith(".tar.gz") + untar: it[1].toString().endsWith(".tar.gz") skip: true } .set{ ch_dbs_for_untar } + // TODO Filter to only run UNTAR on DBs of tools actually using? + // TODO make optional whether to save UNTAR ( ch_dbs_for_untar.untar ) - ch_final_dbs = ch_dbs_for_untar.skip.mix( ch_dbs_untarred ) + ch_final_dbs = ch_dbs_for_untar.skip.mix( UNTAR.out.untar ) emit: dbs = ch_final_dbs // channel: [ val(meta), [ db ] ] From c97de32434d03fdc97c0a5dc9c75cf328b027193 Mon Sep 17 00:00:00 2001 From: ljmesi <37740329+ljmesi@users.noreply.github.com> Date: Mon, 21 Mar 2022 18:17:08 +0100 Subject: [PATCH 025/789] Make adapter and quality trimming optional --- nextflow.config | 1 + workflows/taxprofiler.nf | 12 +++++++++--- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/nextflow.config b/nextflow.config index 7b897ab..4a3a56d 100644 --- a/nextflow.config +++ b/nextflow.config @@ -57,6 +57,7 @@ params { // FASTQ preprocessing fastp_clip_merge = false fastp_exclude_unmerged = true + remove_adapters = false // MALT run_malt = false diff --git a/workflows/taxprofiler.nf b/workflows/taxprofiler.nf index 9e52b59..0e144f3 100644 --- a/workflows/taxprofiler.nf +++ b/workflows/taxprofiler.nf @@ -104,9 +104,16 @@ workflow TAXPROFILER { FASTQ_PREPROCESSING ( INPUT_CHECK.out.fastq ) } - LONGREAD_PREPROCESSING ( INPUT_CHECK.out.nanopore ) + ch_multiqc_files = Channel.empty() + if ( params.remove_adapters ) { + ch_longreads_preprocessed = LONGREAD_PREPROCESSING ( INPUT_CHECK.out.nanopore ).reads + .map { it -> [ it[0], [it[1]] ] } ch_versions = ch_versions.mix(LONGREAD_PREPROCESSING.out.versions.first()) + ch_multiqc_files = ch_multiqc_files.mix(LONGREAD_PREPROCESSING.out.mqc) + } else { + ch_longreads_preprocessed = INPUT_CHECK.out.nanopore + } // // PERFORM RUN MERGING @@ -138,6 +145,7 @@ workflow TAXPROFILER { // output [DUMP: reads_plus_db] [['id':'2612', 'run_accession':'combined', 'instrument_platform':'ILLUMINA', 'single_end':1], /2612.merged.fastq.gz, ['tool':'malt', 'db_name':'mal95', 'db_params':'"-id 90"'], /malt90] ch_input_for_profiling = ch_reads_for_profiling + .mix( ch_longreads_preprocessed ) .combine(DB_CHECK.out.dbs) .dump(tag: "reads_plus_db") .branch { @@ -189,13 +197,11 @@ workflow TAXPROFILER { workflow_summary = WorkflowTaxprofiler.paramsSummaryMultiqc(workflow, summary_params) ch_workflow_summary = Channel.value(workflow_summary) - ch_multiqc_files = Channel.empty() ch_multiqc_files = ch_multiqc_files.mix(Channel.from(ch_multiqc_config)) ch_multiqc_files = ch_multiqc_files.mix(ch_multiqc_custom_config.collect().ifEmpty([])) ch_multiqc_files = ch_multiqc_files.mix(ch_workflow_summary.collectFile(name: 'workflow_summary_mqc.yaml')) ch_multiqc_files = ch_multiqc_files.mix(CUSTOM_DUMPSOFTWAREVERSIONS.out.mqc_yml.collect()) ch_multiqc_files = ch_multiqc_files.mix(FASTQC.out.zip.collect{it[1]}.ifEmpty([])) - ch_multiqc_files = ch_multiqc_files.mix(LONGREAD_PREPROCESSING.out.mqc) if (params.fastp_clip_merge) { ch_multiqc_files = ch_multiqc_files.mix(FASTQ_PREPROCESSING.out.mqc) } From f6fe26de466446379f49ba00dd80eb995bafd0bb Mon Sep 17 00:00:00 2001 From: ljmesi <37740329+ljmesi@users.noreply.github.com> Date: Mon, 21 Mar 2022 18:25:56 +0100 Subject: [PATCH 026/789] Rename shortread subworkflow to be more consistent --- .../{preprocessing.nf => shortread_preprocessing.nf} | 0 workflows/taxprofiler.nf | 8 ++++---- 2 files changed, 4 insertions(+), 4 deletions(-) rename subworkflows/local/{preprocessing.nf => shortread_preprocessing.nf} (100%) diff --git a/subworkflows/local/preprocessing.nf b/subworkflows/local/shortread_preprocessing.nf similarity index 100% rename from subworkflows/local/preprocessing.nf rename to subworkflows/local/shortread_preprocessing.nf diff --git a/workflows/taxprofiler.nf b/workflows/taxprofiler.nf index 0e144f3..22c7518 100644 --- a/workflows/taxprofiler.nf +++ b/workflows/taxprofiler.nf @@ -39,7 +39,7 @@ ch_multiqc_custom_config = params.multiqc_config ? Channel.fromPath(params.multi include { INPUT_CHECK } from '../subworkflows/local/input_check' include { DB_CHECK } from '../subworkflows/local/db_check' -include { FASTQ_PREPROCESSING } from '../subworkflows/local/preprocessing' +include { SHORTREAD_PREPROCESSING } from '../subworkflows/local/shortread_preprocessing' include { LONGREAD_PREPROCESSING } from '../subworkflows/local/longread_preprocessing' /* @@ -101,7 +101,7 @@ workflow TAXPROFILER { // PERFORM PREPROCESSING // if ( params.fastp_clip_merge ) { - FASTQ_PREPROCESSING ( INPUT_CHECK.out.fastq ) + SHORTREAD_PREPROCESSING ( INPUT_CHECK.out.fastq ) } ch_multiqc_files = Channel.empty() @@ -118,7 +118,7 @@ workflow TAXPROFILER { // // PERFORM RUN MERGING // - ch_processed_for_combine = FASTQ_PREPROCESSING.out.reads + ch_processed_for_combine = SHORTREAD_PREPROCESSING.out.reads .dump(tag: "prep_for_combine_grouping") .map { meta, reads -> @@ -203,7 +203,7 @@ workflow TAXPROFILER { ch_multiqc_files = ch_multiqc_files.mix(CUSTOM_DUMPSOFTWAREVERSIONS.out.mqc_yml.collect()) ch_multiqc_files = ch_multiqc_files.mix(FASTQC.out.zip.collect{it[1]}.ifEmpty([])) if (params.fastp_clip_merge) { - ch_multiqc_files = ch_multiqc_files.mix(FASTQ_PREPROCESSING.out.mqc) + ch_multiqc_files = ch_multiqc_files.mix(SHORTREAD_PREPROCESSING.out.mqc) } if (params.run_kraken2) { ch_multiqc_files = ch_multiqc_files.mix(KRAKEN2_KRAKEN2.out.txt.collect{it[1]}.ifEmpty([])) From 4940ec57ffee76378b9bfe8dcff1d73f3097846e Mon Sep 17 00:00:00 2001 From: ljmesi <37740329+ljmesi@users.noreply.github.com> Date: Mon, 21 Mar 2022 18:26:26 +0100 Subject: [PATCH 027/789] Remove unnecessary extra point --- README.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/README.md b/README.md index 622b8de..d454a9b 100644 --- a/README.md +++ b/README.md @@ -30,11 +30,10 @@ On release, automated continuous integration tests run the pipeline on a full-si 1. Read QC ([`FastQC`](https://www.bioinformatics.babraham.ac.uk/projects/fastqc/)) 2. Performs optional read pre-processing - - Adapter clipping and merging + - Adapter clipping and merging (short, and nanopore reads) - Low complexity filtering - Host read removal - Run merging - - Adapter and quality trimming of Nanopore reads 3. Performs taxonomic profiling a choice of: - Kraken2 - MetaPhlAn3 From 5b1b48e59e17d271d03450daca083dd8cec502af Mon Sep 17 00:00:00 2001 From: ljmesi <37740329+ljmesi@users.noreply.github.com> Date: Mon, 21 Mar 2022 18:29:47 +0100 Subject: [PATCH 028/789] Update subworkflow name to be more consistent --- subworkflows/local/shortread_preprocessing.nf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/subworkflows/local/shortread_preprocessing.nf b/subworkflows/local/shortread_preprocessing.nf index 5832824..406c198 100644 --- a/subworkflows/local/shortread_preprocessing.nf +++ b/subworkflows/local/shortread_preprocessing.nf @@ -7,7 +7,7 @@ include { FASTP as FASTP_SINGLE } from '../../modules/nf-core/modules/fast include { FASTP as FASTP_PAIRED } from '../../modules/nf-core/modules/fastp/main' include { FASTQC as FASTQC_POST } from '../../modules/nf-core/modules/fastqc/main' -workflow FASTQ_PREPROCESSING { +workflow SHORTREAD_PREPROCESSING { take: reads // file: /path/to/samplesheet.csv From 80129985424b214ee22213a8db7cc139e2793ff5 Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Mon, 21 Mar 2022 19:52:50 +0100 Subject: [PATCH 029/789] Make parameter naming more consistent for clipmerge --- conf/modules.config | 5 ++--- nextflow.config | 6 ++--- subworkflows/local/shortread_preprocessing.nf | 2 +- workflows/taxprofiler.nf | 22 ++++++++++++------- 4 files changed, 20 insertions(+), 15 deletions(-) diff --git a/conf/modules.config b/conf/modules.config index 050772e..c09a011 100644 --- a/conf/modules.config +++ b/conf/modules.config @@ -41,7 +41,7 @@ process { // TODO also include option to NOT merge ext.args = [ { ${meta.single_end} } == 0 ? "-m" : '', - params.fastp_exclude_unmerged ? '' : "--include_unmerged" + params.shortread_excludeunmerged ? '' : "--include_unmerged" ].join(' ').trim() publishDir = [ path: { "${params.outdir}/fastp" }, @@ -84,7 +84,7 @@ process { pattern: '*.{rma6,tab,text,sam,log}' ] ext.args = { "${meta.db_params}" } - ext.when = params.run_malt + ext.prefix = { "${meta.id}-${meta.db_name}" } } withName: KRAKEN2_KRAKEN2 { @@ -94,7 +94,6 @@ process { pattern: '.{fastq.gz,txt}' ] ext.args = { "${meta.db_params}" } - ext.when = params.run_kraken2 ext.prefix = { "${meta.id}-${meta.db_name}" } } diff --git a/nextflow.config b/nextflow.config index 4a3a56d..5f7aec6 100644 --- a/nextflow.config +++ b/nextflow.config @@ -55,9 +55,9 @@ params { databases = null // FASTQ preprocessing - fastp_clip_merge = false - fastp_exclude_unmerged = true - remove_adapters = false + shortread_clipmerge = false + shortread_excludeunmerged = true + longread_clip = false // MALT run_malt = false diff --git a/subworkflows/local/shortread_preprocessing.nf b/subworkflows/local/shortread_preprocessing.nf index 406c198..d996a76 100644 --- a/subworkflows/local/shortread_preprocessing.nf +++ b/subworkflows/local/shortread_preprocessing.nf @@ -23,7 +23,7 @@ workflow SHORTREAD_PREPROCESSING { // TODO move to subworkflow - if ( params.fastp_clip_merge ) { + if ( params.shortread_clipmerge ) { ch_input_for_fastp = reads .dump(tag: "pre-fastp_branch") diff --git a/workflows/taxprofiler.nf b/workflows/taxprofiler.nf index 22c7518..4aa0684 100644 --- a/workflows/taxprofiler.nf +++ b/workflows/taxprofiler.nf @@ -100,17 +100,14 @@ workflow TAXPROFILER { // // PERFORM PREPROCESSING // - if ( params.fastp_clip_merge ) { + if ( params.shortread_clipmerge ) { SHORTREAD_PREPROCESSING ( INPUT_CHECK.out.fastq ) } - ch_multiqc_files = Channel.empty() - - if ( params.remove_adapters ) { + if ( params.longread_clip ) { ch_longreads_preprocessed = LONGREAD_PREPROCESSING ( INPUT_CHECK.out.nanopore ).reads .map { it -> [ it[0], [it[1]] ] } ch_versions = ch_versions.mix(LONGREAD_PREPROCESSING.out.versions.first()) - ch_multiqc_files = ch_multiqc_files.mix(LONGREAD_PREPROCESSING.out.mqc) } else { ch_longreads_preprocessed = INPUT_CHECK.out.nanopore } @@ -187,9 +184,13 @@ workflow TAXPROFILER { // // RUN PROFILING // - MALT_RUN ( ch_input_for_malt.reads, params.malt_mode, ch_input_for_malt.db ) - KRAKEN2_KRAKEN2 ( ch_input_for_kraken2.reads, ch_input_for_kraken2.db ) + if ( params.run_malt ) { + MALT_RUN ( ch_input_for_malt.reads, params.malt_mode, ch_input_for_malt.db ) + } + if ( params.run_kraken2 ) { + KRAKEN2_KRAKEN2 ( ch_input_for_kraken2.reads, ch_input_for_kraken2.db ) + } // // MODULE: MultiQC @@ -197,14 +198,19 @@ workflow TAXPROFILER { workflow_summary = WorkflowTaxprofiler.paramsSummaryMultiqc(workflow, summary_params) ch_workflow_summary = Channel.value(workflow_summary) + ch_multiqc_files = Channel.empty() ch_multiqc_files = ch_multiqc_files.mix(Channel.from(ch_multiqc_config)) ch_multiqc_files = ch_multiqc_files.mix(ch_multiqc_custom_config.collect().ifEmpty([])) ch_multiqc_files = ch_multiqc_files.mix(ch_workflow_summary.collectFile(name: 'workflow_summary_mqc.yaml')) ch_multiqc_files = ch_multiqc_files.mix(CUSTOM_DUMPSOFTWAREVERSIONS.out.mqc_yml.collect()) ch_multiqc_files = ch_multiqc_files.mix(FASTQC.out.zip.collect{it[1]}.ifEmpty([])) - if (params.fastp_clip_merge) { + + if (params.shortread_clipmerge) { ch_multiqc_files = ch_multiqc_files.mix(SHORTREAD_PREPROCESSING.out.mqc) } + if (params.longread_clip) { + ch_multiqc_files = ch_multiqc_files.mix(LONGREAD_PREPROCESSING.out.mqc) + } if (params.run_kraken2) { ch_multiqc_files = ch_multiqc_files.mix(KRAKEN2_KRAKEN2.out.txt.collect{it[1]}.ifEmpty([])) ch_versions = ch_versions.mix(KRAKEN2_KRAKEN2.out.versions.first()) From 07eed435c628ae0518246aa31e87d81fb02c69ad Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Mon, 21 Mar 2022 19:54:51 +0100 Subject: [PATCH 030/789] Replace set with explicity assignment --- subworkflows/local/db_check.nf | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/subworkflows/local/db_check.nf b/subworkflows/local/db_check.nf index 641108d..890e373 100644 --- a/subworkflows/local/db_check.nf +++ b/subworkflows/local/db_check.nf @@ -19,12 +19,11 @@ workflow DB_CHECK { .map { create_db_channels(it) } .dump(tag: "db_channel_prepped") - parsed_samplesheet + ch_dbs_for_untar = parsed_samplesheet .branch { untar: it[1].toString().endsWith(".tar.gz") skip: true } - .set{ ch_dbs_for_untar } // TODO Filter to only run UNTAR on DBs of tools actually using? // TODO make optional whether to save From 81bfb629cadfa76ac6f639f320f3bd0fb0ae4dfd Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Mon, 21 Mar 2022 20:28:09 +0100 Subject: [PATCH 031/789] Add working basic test to begin --- .github/workflows/ci.yml | 1 + conf/modules.config | 16 ++++++++++++++++ conf/test.config | 8 +++++++- subworkflows/local/input_check.nf | 6 +++--- workflows/taxprofiler.nf | 13 ++++++++----- 5 files changed, 35 insertions(+), 9 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 033eb63..5fe2777 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -48,3 +48,4 @@ jobs: # Remember that you can parallelise this by using strategy.matrix run: | nextflow run ${GITHUB_WORKSPACE} -profile test,docker --outdir ./results + # TODO Add test that runs with pre-downloaded and decompressed databases diff --git a/conf/modules.config b/conf/modules.config index ab8f021..b9c1008 100644 --- a/conf/modules.config +++ b/conf/modules.config @@ -26,6 +26,22 @@ process { ] } + withName: DATABASE_CHECK { + publishDir = [ + path: { "${params.outdir}/pipeline_info" }, + mode: params.publish_dir_mode, + saveAs: { filename -> filename.equals('versions.yml') ? null : filename } + ] + } + + withName: UNTAR { + publishDir = [ + path: { "${params.outdir}/databases" }, + mode: params.publish_dir_mode, + saveAs: { filename -> filename.equals('versions.yml') ? null : filename } + ] + } + withName: FASTQC { ext.args = '--quiet' ext.prefix = { "${meta.id}_${meta.run_accession}_raw" } diff --git a/conf/test.config b/conf/test.config index 51f3bb6..42d8de6 100644 --- a/conf/test.config +++ b/conf/test.config @@ -22,6 +22,12 @@ params { // Input data // TODO nf-core: Specify the paths to your test data on nf-core/test-datasets // TODO nf-core: Give any required params for the test so that command line flags are not needed - input = 'https://raw.githubusercontent.com/nf-core/test-datasets/taxprofiler/samplesheet.csv' + input = 'https://raw.githubusercontent.com/nf-core/test-datasets/taxprofiler/samplesheet.csv' + outdir = "./results" + // TODO replace with official once ready + databases = 'https://raw.githubusercontent.com/jfy133/nf-core-test-datasets/taxprofiler/database.csv' + run_kraken2 = true + run_malt = true + shortread_clipmerge = true } diff --git a/subworkflows/local/input_check.nf b/subworkflows/local/input_check.nf index 67dadc2..4501386 100644 --- a/subworkflows/local/input_check.nf +++ b/subworkflows/local/input_check.nf @@ -30,7 +30,7 @@ workflow INPUT_CHECK { .set { nanopore } parsed_samplesheet.fasta - .map { create_fasta_channels(it) } + .map { create_fasta_channel(it) } .dump(tag: "fasta_channel_init") .set { fasta } @@ -42,7 +42,7 @@ workflow INPUT_CHECK { } // Function to get list of [ meta, [ fastq_1, fastq_2 ] ] -def create_fastq_channels(LinkedHashMap row) { +def create_fastq_channel(LinkedHashMap row) { // create meta map def meta = [:] meta.id = row.sample @@ -74,7 +74,7 @@ def create_fastq_channels(LinkedHashMap row) { } // Function to get list of [ meta, fasta ] -def create_fasta_channels(LinkedHashMap row) { +def create_fasta_channel(LinkedHashMap row) { def meta = [:] meta.id = row.sample meta.run_accession = row.run_accession diff --git a/workflows/taxprofiler.nf b/workflows/taxprofiler.nf index 4aa0684..6fc5450 100644 --- a/workflows/taxprofiler.nf +++ b/workflows/taxprofiler.nf @@ -101,7 +101,9 @@ workflow TAXPROFILER { // PERFORM PREPROCESSING // if ( params.shortread_clipmerge ) { - SHORTREAD_PREPROCESSING ( INPUT_CHECK.out.fastq ) + ch_shortreads_preprocessed = SHORTREAD_PREPROCESSING ( INPUT_CHECK.out.fastq ).reads + } else { + ch_shortreads_preprocessed = INPUT_CHECK.out.fastq } if ( params.longread_clip ) { @@ -113,9 +115,10 @@ workflow TAXPROFILER { } // - // PERFORM RUN MERGING + // PERFORM SHORT READ RUN MERGING + // TODO: Check not necessary for long reads too? // - ch_processed_for_combine = SHORTREAD_PREPROCESSING.out.reads + ch_processed_for_combine = ch_shortreads_preprocessed .dump(tag: "prep_for_combine_grouping") .map { meta, reads -> @@ -140,7 +143,7 @@ workflow TAXPROFILER { // COMBINE READS WITH POSSIBLE DATABASES // - // output [DUMP: reads_plus_db] [['id':'2612', 'run_accession':'combined', 'instrument_platform':'ILLUMINA', 'single_end':1], /2612.merged.fastq.gz, ['tool':'malt', 'db_name':'mal95', 'db_params':'"-id 90"'], /malt90] + // e.g. output [DUMP: reads_plus_db] [['id':'2612', 'run_accession':'combined', 'instrument_platform':'ILLUMINA', 'single_end':1], /2612.merged.fastq.gz, ['tool':'malt', 'db_name':'mal95', 'db_params':'"-id 90"'], /malt90] ch_input_for_profiling = ch_reads_for_profiling .mix( ch_longreads_preprocessed ) .combine(DB_CHECK.out.dbs) @@ -152,7 +155,7 @@ workflow TAXPROFILER { } // - // PREP PROFILER INPUT CHANNELS ON PER TOOL BASIS + // PREPARE PROFILER INPUT CHANNELS // // We groupTuple to have all samples in one channel for MALT as database From 358b89a4c6d18f195c7aae3115e28080cfa32b3e Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Mon, 21 Mar 2022 20:30:29 +0100 Subject: [PATCH 032/789] Linting --- conf/modules.config | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/conf/modules.config b/conf/modules.config index b9c1008..29a5135 100644 --- a/conf/modules.config +++ b/conf/modules.config @@ -35,7 +35,7 @@ process { } withName: UNTAR { - publishDir = [ + publishDir = [ path: { "${params.outdir}/databases" }, mode: params.publish_dir_mode, saveAs: { filename -> filename.equals('versions.yml') ? null : filename } From 48b6ef508dbb0d0a35b91aa8e670616f640b36ae Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Wed, 23 Mar 2022 10:06:01 +0100 Subject: [PATCH 033/789] Update path to samplesheet --- conf/test.config | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/conf/test.config b/conf/test.config index 42d8de6..2e08499 100644 --- a/conf/test.config +++ b/conf/test.config @@ -24,8 +24,7 @@ params { // TODO nf-core: Give any required params for the test so that command line flags are not needed input = 'https://raw.githubusercontent.com/nf-core/test-datasets/taxprofiler/samplesheet.csv' outdir = "./results" - // TODO replace with official once ready - databases = 'https://raw.githubusercontent.com/jfy133/nf-core-test-datasets/taxprofiler/database.csv' + databases = 'https://raw.githubusercontent.com/nf-core/nf-core-test-datasets/taxprofiler/database.csv' run_kraken2 = true run_malt = true shortread_clipmerge = true From 038a8d106a3e027d48c781ab15197270ec38e7a5 Mon Sep 17 00:00:00 2001 From: "James A. Fellows Yates" Date: Wed, 23 Mar 2022 11:25:47 +0100 Subject: [PATCH 034/789] Fix test with correct URL --- conf/test.config | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/conf/test.config b/conf/test.config index 2e08499..5924d7a 100644 --- a/conf/test.config +++ b/conf/test.config @@ -24,7 +24,7 @@ params { // TODO nf-core: Give any required params for the test so that command line flags are not needed input = 'https://raw.githubusercontent.com/nf-core/test-datasets/taxprofiler/samplesheet.csv' outdir = "./results" - databases = 'https://raw.githubusercontent.com/nf-core/nf-core-test-datasets/taxprofiler/database.csv' + databases = 'https://raw.githubusercontent.com/nf-core/test-datasets/taxprofiler/database.csv' run_kraken2 = true run_malt = true shortread_clipmerge = true From 3ff54e620e9b9212a3bad5c687769b8c37e5b89d Mon Sep 17 00:00:00 2001 From: sofstam Date: Thu, 24 Mar 2022 12:51:45 +0100 Subject: [PATCH 035/789] Add centrifuge classification --- conf/modules.config | 10 +++ conf/test.config | 1 + modules.json | 5 +- modules/nf-core/modules/centrifuge/main.nf | 63 ++++++++++++++++++ modules/nf-core/modules/centrifuge/meta.yml | 73 +++++++++++++++++++++ nextflow.config | 8 ++- subworkflows/local/db_check.nf | 2 +- subworkflows/local/input_check.nf | 3 +- workflows/taxprofiler.nf | 22 +++++-- 9 files changed, 179 insertions(+), 8 deletions(-) create mode 100644 modules/nf-core/modules/centrifuge/main.nf create mode 100644 modules/nf-core/modules/centrifuge/meta.yml diff --git a/conf/modules.config b/conf/modules.config index 29a5135..20e6bba 100644 --- a/conf/modules.config +++ b/conf/modules.config @@ -121,4 +121,14 @@ process { ] } + withName: CENTRIFUGE { + publishDir = [ + path: { "${params.outdir}/centrifuge/${meta.db_name}" }, + mode: 'copy', + pattern: '*.{fastq.gz,txt}' + ] + ext.args = { "${meta.db_params}" } + ext.prefix = { "${meta.id}-${meta.db_name}" } + } + } diff --git a/conf/test.config b/conf/test.config index 42d8de6..6fca9c0 100644 --- a/conf/test.config +++ b/conf/test.config @@ -29,5 +29,6 @@ params { run_kraken2 = true run_malt = true shortread_clipmerge = true + run_centrifuge = true } diff --git a/modules.json b/modules.json index 673a69b..b9dfc87 100644 --- a/modules.json +++ b/modules.json @@ -29,6 +29,9 @@ "porechop": { "git_sha": "e20e57f90b6787ac9a010a980cf6ea98bd990046" } + "centrifuge": { + "git_sha": "ea41a8a6f761b9993d857570e872abaae3fea555" + } } } -} \ No newline at end of file +} diff --git a/modules/nf-core/modules/centrifuge/main.nf b/modules/nf-core/modules/centrifuge/main.nf new file mode 100644 index 0000000..7eb566d --- /dev/null +++ b/modules/nf-core/modules/centrifuge/main.nf @@ -0,0 +1,63 @@ +process CENTRIFUGE { + tag "$meta.id" + label 'process_high' + + conda (params.enable_conda ? "bioconda::centrifuge=1.0.4_beta" : null) + container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? + 'https://depot.galaxyproject.org/singularity/centrifuge:1.0.4_beta--h9a82719_6' : + 'quay.io/biocontainers/centrifuge:1.0.4_beta--h9a82719_6' }" + + input: + tuple val(meta), path(reads) + path db + val save_unaligned + val save_aligned + val sam_format + + output: + tuple val(meta), path('*report.txt') , emit: report + tuple val(meta), path('*results.txt') , emit: results + tuple val(meta), path('*kreport.txt') , emit: kreport + tuple val(meta), path('*.sam') , optional: true, emit: sam + tuple val(meta), path('*.mapped.fastq{,.1,.2}.gz') , optional: true, emit: fastq_mapped + tuple val(meta), path('*.unmapped.fastq{,.1,.2}.gz') , optional: true, emit: fastq_unmapped + path "versions.yml" , emit: versions + + when: + task.ext.when == null || task.ext.when + + script: + def args = task.ext.args ?: '' + def prefix = task.ext.prefix ?: "${meta.id}" + def paired = meta.single_end ? "-U ${reads}" : "-1 ${reads[0]} -2 ${reads[1]}" + def db_name = db.toString().replace(".tar.gz","") + def unaligned = '' + def aligned = '' + if (meta.single_end) { + unaligned = save_unaligned ? "--un-gz ${prefix}.unmapped.fastq.gz" : '' + aligned = save_aligned ? "--al-gz ${prefix}.mapped.fastq.gz" : '' + } else { + unaligned = save_unaligned ? "--un-conc-gz ${prefix}.unmapped.fastq.gz" : '' + aligned = save_aligned ? "--al-conc-gz ${prefix}.mapped.fastq.gz" : '' + } + def sam_output = sam_format ? "--out-fmt 'sam'" : '' + """ + tar -xf $db + centrifuge \\ + -x $db_name \\ + -p $task.cpus \\ + $paired \\ + --report-file ${prefix}.report.txt \\ + -S ${prefix}.results.txt \\ + $unaligned \\ + $aligned \\ + $sam_output \\ + $args + centrifuge-kreport -x $db_name ${prefix}.results.txt > ${prefix}.kreport.txt + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + centrifuge: \$( centrifuge --version | sed -n 1p | sed 's/^.*centrifuge-class version //') + END_VERSIONS + """ +} diff --git a/modules/nf-core/modules/centrifuge/meta.yml b/modules/nf-core/modules/centrifuge/meta.yml new file mode 100644 index 0000000..3adf0e2 --- /dev/null +++ b/modules/nf-core/modules/centrifuge/meta.yml @@ -0,0 +1,73 @@ +name: centrifuge +description: Classifies metagenomic sequence data +keywords: + - classify + - metagenomics + - fastq + - db +tools: + - centrifuge: + description: Centrifuge is a classifier for metagenomic sequences. + homepage: https://ccb.jhu.edu/software/centrifuge/ + documentation: https://ccb.jhu.edu/software/centrifuge/manual.shtml + doi: 10.1101/gr.210641.116 + licence: ["GPL v3"] +input: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - reads: + type: file + description: | + List of input FastQ files of size 1 and 2 for single-end and paired-end data, + respectively. + - db: + type: directory + description: Centrifuge database in .tar.gz format + pattern: "*.tar.gz" + - save_unaligned: + type: value + description: If true unmapped fastq files are saved + - save_aligned: + type: value + description: If true mapped fastq files are saved +output: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - report: + type: file + description: | + File containing a classification summary + pattern: "*.{report.txt}" + - results: + type: file + description: | + File containing classification results + pattern: "*.{results.txt}" + - kreport: + type: file + description: | + File containing kraken-style report from centrifuge + out files. + pattern: "*.{kreport.txt}" + - fastq_unmapped: + type: file + description: Unmapped fastq files + pattern: "*.unmapped.fastq.gz" + - fastq_mapped: + type: file + description: Mapped fastq files + pattern: "*.mapped.fastq.gz" + - versions: + type: file + description: File containing software versions + pattern: "versions.yml" +authors: + - "@sofstam" + - "@jfy133" + - "@sateeshperi" diff --git a/nextflow.config b/nextflow.config index 5f7aec6..5bd8f39 100644 --- a/nextflow.config +++ b/nextflow.config @@ -56,7 +56,7 @@ params { // FASTQ preprocessing shortread_clipmerge = false - shortread_excludeunmerged = true + shortread_excludeunmerged = true longread_clip = false // MALT @@ -65,6 +65,12 @@ params { // kraken2 run_kraken2 = false + + // centrifuge + run_centrifuge = false + save_unaligned = false + save_aligned = false + sam_format = false } // Load base.config by default for all pipelines diff --git a/subworkflows/local/db_check.nf b/subworkflows/local/db_check.nf index 890e373..28268c3 100644 --- a/subworkflows/local/db_check.nf +++ b/subworkflows/local/db_check.nf @@ -21,7 +21,7 @@ workflow DB_CHECK { ch_dbs_for_untar = parsed_samplesheet .branch { - untar: it[1].toString().endsWith(".tar.gz") + untar: it[1].toString().endsWith(".tar.gz") && it[0]['tool']!="centrifuge" skip: true } diff --git a/subworkflows/local/input_check.nf b/subworkflows/local/input_check.nf index 4501386..b64e31e 100644 --- a/subworkflows/local/input_check.nf +++ b/subworkflows/local/input_check.nf @@ -67,8 +67,9 @@ def create_fastq_channel(LinkedHashMap row) { if (!file(row.fastq_2).exists()) { exit 1, "ERROR: Please check input samplesheet -> Read 2 FastQ file does not exist!\n${row.fastq_2}" } - fastq_meta = [ meta, [ file(row.fastq_1), file(row.fastq_2) ] ] + fastq_meta = [ meta, [ file(row.fastq_1), file(row.fastq_2) ] ] } + } return fastq_meta } diff --git a/workflows/taxprofiler.nf b/workflows/taxprofiler.nf index 6fc5450..ea3ef18 100644 --- a/workflows/taxprofiler.nf +++ b/workflows/taxprofiler.nf @@ -58,7 +58,7 @@ include { CUSTOM_DUMPSOFTWAREVERSIONS } from '../modules/nf-core/modules/custom/ include { CAT_FASTQ } from '../modules/nf-core/modules/cat/fastq/main' include { MALT_RUN } from '../modules/nf-core/modules/malt/run/main' include { KRAKEN2_KRAKEN2 } from '../modules/nf-core/modules/kraken2/kraken2/main' - +include { CENTRIFUGE } from '../modules/nf-core/modules/centrifuge/main' /* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -149,9 +149,10 @@ workflow TAXPROFILER { .combine(DB_CHECK.out.dbs) .dump(tag: "reads_plus_db") .branch { - malt: it[2]['tool'] == 'malt' - kraken2: it[2]['tool'] == 'kraken2' - unknown: true + malt: it[2]['tool'] == 'malt' + kraken2: it[2]['tool'] == 'kraken2' + centrifuge: it[2]['tool'] == 'centrifuge' + unknown: true } // @@ -184,6 +185,15 @@ workflow TAXPROFILER { db: it[3] } + // We can run centrifuge one-by-one sample-wise + ch_input_for_centrifuge = ch_input_for_profiling.centrifuge + .dump(tag: "input for centrifuge") + .multiMap { + it -> + reads: [ it[0] + it[2], it[1] ] + db: it[3] + } + // // RUN PROFILING // @@ -195,6 +205,10 @@ workflow TAXPROFILER { KRAKEN2_KRAKEN2 ( ch_input_for_kraken2.reads, ch_input_for_kraken2.db ) } + if ( params.run_centrifuge ) { + CENTRIFUGE ( ch_input_for_centrifuge.reads, ch_input_for_centrifuge.db, params.save_unaligned, params.save_aligned, params.sam_format ) + } + // // MODULE: MultiQC // From e3be393f16025f76cb8bc2389ccb2eb841b569f5 Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Thu, 24 Mar 2022 14:18:15 +0100 Subject: [PATCH 036/789] Fix broken json --- modules.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/modules.json b/modules.json index c24ff6a..b78ba31 100644 --- a/modules.json +++ b/modules.json @@ -26,9 +26,10 @@ }, "untar": { "git_sha": "e080f4c8acf5760039ed12ec1f206170f3f9a918" + }, "porechop": { "git_sha": "e20e57f90b6787ac9a010a980cf6ea98bd990046" } } } -} +} \ No newline at end of file From 203cd2e7d39936dec20d75901fe6afc94b7f8a6f Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Thu, 24 Mar 2022 14:31:53 +0100 Subject: [PATCH 037/789] Prettier --- README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index ea659bb..0c1d3c7 100644 --- a/README.md +++ b/README.md @@ -17,6 +17,7 @@ ## Introduction + **nf-core/taxprofiler** is a bioinformatics best-practice analysis pipeline for taxonomic profiling of shotgun metagenomic data. It allows for in-parallel profiling against multiple profiling tools and databases and produces standardised output tables. The pipeline is built using [Nextflow](https://www.nextflow.io), a workflow tool to run tasks across multiple compute infrastructures in a very portable manner. It uses Docker/Singularity containers making installation trivial and results highly reproducible. The [Nextflow DSL2](https://www.nextflow.io/docs/latest/dsl2.html) implementation of this pipeline uses one container per process which makes it much easier to maintain and update software dependencies. Where possible, these processes have been submitted to and installed from [nf-core/modules](https://github.com/nf-core/modules) in order to make them available to all nf-core pipelines, and to everyone within the Nextflow community! @@ -44,7 +45,7 @@ On release, automated continuous integration tests run the pipeline on a full-si - Kaiju - mOTUs 4. Perform optional post-processing with: - - bracken + - bracken 5. Standardises output tables 6. Present QC for raw reads ([`MultiQC`](http://multiqc.info/)) From cc9368ee527243fc1809f891154ae0eb569887f3 Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Thu, 24 Mar 2022 15:35:09 +0100 Subject: [PATCH 038/789] Prettier linting and update schema --- nextflow.config | 2 +- nextflow_schema.json | 48 ++++++++++++++++++++++++++++++++++++---- workflows/taxprofiler.nf | 3 ++- 3 files changed, 47 insertions(+), 6 deletions(-) diff --git a/nextflow.config b/nextflow.config index 5f7aec6..cc77a99 100644 --- a/nextflow.config +++ b/nextflow.config @@ -56,7 +56,7 @@ params { // FASTQ preprocessing shortread_clipmerge = false - shortread_excludeunmerged = true + shortread_excludeunmerged = true longread_clip = false // MALT diff --git a/nextflow_schema.json b/nextflow_schema.json index de1e515..03910e9 100644 --- a/nextflow_schema.json +++ b/nextflow_schema.json @@ -10,7 +10,10 @@ "type": "object", "fa_icon": "fas fa-terminal", "description": "Define where the pipeline should find input data and save output data.", - "required": ["input", "outdir"], + "required": [ + "input", + "outdir" + ], "properties": { "input": { "type": "string", @@ -173,7 +176,14 @@ "description": "Method used to save pipeline results to output directory.", "help_text": "The Nextflow `publishDir` option specifies which intermediate files should be saved to the output directory. This option tells the pipeline what method should be used to move these files. See [Nextflow docs](https://www.nextflow.io/docs/latest/process.html#publishdir) for details.", "fa_icon": "fas fa-copy", - "enum": ["symlink", "rellink", "link", "copy", "copyNoFollow", "move"], + "enum": [ + "symlink", + "rellink", + "link", + "copy", + "copyNoFollow", + "move" + ], "hidden": true }, "email_on_fail": { @@ -256,5 +266,35 @@ { "$ref": "#/definitions/generic_options" } - ] -} + ], + "properties": { + "databases": { + "type": "string", + "default": null + }, + "shortread_clipmerge": { + "type": "string", + "default": "false" + }, + "shortread_excludeunmerged": { + "type": "string", + "default": "true" + }, + "longread_clip": { + "type": "string", + "default": "false" + }, + "run_malt": { + "type": "string", + "default": "false" + }, + "malt_mode": { + "type": "string", + "default": "BlastN" + }, + "run_kraken2": { + "type": "string", + "default": "false" + } + } +} \ No newline at end of file diff --git a/workflows/taxprofiler.nf b/workflows/taxprofiler.nf index 7320922..29058e6 100644 --- a/workflows/taxprofiler.nf +++ b/workflows/taxprofiler.nf @@ -88,8 +88,9 @@ workflow TAXPROFILER { // // MODULE: Run FastQC // + ch_input_for_fastqc = INPUT_CHECK.out.fastq.mix( INPUT_CHECK.out.nanopore ).dump(tag: "input_to_fastq") FASTQC ( - INPUT_CHECK.out.fastq.mix( INPUT_CHECK.out.nanopore ) + ch_input_for_fastqc ) ch_versions = ch_versions.mix(FASTQC.out.versions.first()) From 494c641fb8ade3f6f6e73c537f699df182b16b9d Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Thu, 24 Mar 2022 15:37:42 +0100 Subject: [PATCH 039/789] Prettier --- .prettierignore | 2 ++ modules.json | 2 +- nextflow_schema.json | 16 +++------------- 3 files changed, 6 insertions(+), 14 deletions(-) create mode 100644 .prettierignore diff --git a/.prettierignore b/.prettierignore new file mode 100644 index 0000000..c037321 --- /dev/null +++ b/.prettierignore @@ -0,0 +1,2 @@ +testing/ +tests/ diff --git a/modules.json b/modules.json index b78ba31..9e6428a 100644 --- a/modules.json +++ b/modules.json @@ -32,4 +32,4 @@ } } } -} \ No newline at end of file +} diff --git a/nextflow_schema.json b/nextflow_schema.json index 03910e9..7bb03c3 100644 --- a/nextflow_schema.json +++ b/nextflow_schema.json @@ -10,10 +10,7 @@ "type": "object", "fa_icon": "fas fa-terminal", "description": "Define where the pipeline should find input data and save output data.", - "required": [ - "input", - "outdir" - ], + "required": ["input", "outdir"], "properties": { "input": { "type": "string", @@ -176,14 +173,7 @@ "description": "Method used to save pipeline results to output directory.", "help_text": "The Nextflow `publishDir` option specifies which intermediate files should be saved to the output directory. This option tells the pipeline what method should be used to move these files. See [Nextflow docs](https://www.nextflow.io/docs/latest/process.html#publishdir) for details.", "fa_icon": "fas fa-copy", - "enum": [ - "symlink", - "rellink", - "link", - "copy", - "copyNoFollow", - "move" - ], + "enum": ["symlink", "rellink", "link", "copy", "copyNoFollow", "move"], "hidden": true }, "email_on_fail": { @@ -297,4 +287,4 @@ "default": "false" } } -} \ No newline at end of file +} From 92a3c8ec8d6e6698f748f154b0dfeaf92fd9d52b Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Thu, 24 Mar 2022 15:40:14 +0100 Subject: [PATCH 040/789] Prettier --- nextflow_schema.json | 18 +++++++----------- 1 file changed, 7 insertions(+), 11 deletions(-) diff --git a/nextflow_schema.json b/nextflow_schema.json index 7bb03c3..9527da4 100644 --- a/nextflow_schema.json +++ b/nextflow_schema.json @@ -260,31 +260,27 @@ "properties": { "databases": { "type": "string", - "default": null + "default": "None" }, "shortread_clipmerge": { - "type": "string", - "default": "false" + "type": "boolean" }, "shortread_excludeunmerged": { - "type": "string", - "default": "true" + "type": "boolean", + "default": true }, "longread_clip": { - "type": "string", - "default": "false" + "type": "boolean" }, "run_malt": { - "type": "string", - "default": "false" + "type": "boolean" }, "malt_mode": { "type": "string", "default": "BlastN" }, "run_kraken2": { - "type": "string", - "default": "false" + "type": "boolean" } } } From fafb7e0f6fce56a57f6d375976b3cffe37ebe14b Mon Sep 17 00:00:00 2001 From: "James A. Fellows Yates" Date: Thu, 24 Mar 2022 16:59:12 +0100 Subject: [PATCH 041/789] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 0c1d3c7..e976f73 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# ![nf-core/taxprofiler](docs/images/nf-core/taxprofiler_logo_light.png#gh-light-mode-only) ![nf-core/taxprofiler](docs/images/nf-core/taxprofiler_logo_dark.png#gh-dark-mode-only) +# ![nf-core/taxprofiler](docs/images/nf-core-taxprofiler_logo_light.png#gh-light-mode-only) ![nf-core/taxprofiler](docs/images/nf-core-taxprofiler_logo_dark.png#gh-dark-mode-only) [![GitHub Actions CI Status](https://github.com/nf-core/taxprofiler/workflows/nf-core%20CI/badge.svg)](https://github.com/nf-core/taxprofiler/actions?query=workflow%3A%22nf-core+CI%22) [![GitHub Actions Linting Status](https://github.com/nf-core/taxprofiler/workflows/nf-core%20linting/badge.svg)](https://github.com/nf-core/taxprofiler/actions?query=workflow%3A%22nf-core+linting%22) From 4e93abc7c06b35eae584af4338c8aeaa60b8fcf8 Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Fri, 25 Mar 2022 14:58:06 +0100 Subject: [PATCH 042/789] Add read improved read preprocessing --- conf/modules.config | 21 +++++- nextflow.config | 12 +++- nextflow_schema.json | 2 +- subworkflows/local/shortread_fastp.nf | 65 +++++++++++++++++++ subworkflows/local/shortread_preprocessing.nf | 55 ++++------------ workflows/taxprofiler.nf | 2 + 6 files changed, 107 insertions(+), 50 deletions(-) create mode 100644 subworkflows/local/shortread_fastp.nf diff --git a/conf/modules.config b/conf/modules.config index 29a5135..36bc626 100644 --- a/conf/modules.config +++ b/conf/modules.config @@ -52,12 +52,27 @@ process { ] } + withName: FASTQC_PROCESSED { + ext.args = '--quiet' + ext.prefix = { "${meta.id}_${meta.run_accession}_processed" } + publishDir = [ + path: { "${params.outdir}/fastqc/processed" }, + mode: 'copy', + pattern: '*.html' + ] + } + withName: FASTP { ext.prefix = { "${meta.id}_${meta.run_accession}" } - // TODO also include option to NOT merge ext.args = [ - { ${meta.single_end} } == 0 ? "-m" : '', - params.shortread_excludeunmerged ? '' : "--include_unmerged" + // collapsing options + params.shortread_clipmerge_excludeunmerged ? '' : "--include_unmerged", + // trimming options + params.shortread_clipmerge_skiptrim ? "--disable_adapter_trimming" : "", + params.shortread_adapter1 ? "--adapter_sequence ${params.shortread_adapter1}" : "", + !{ ${meta.single_end} } && params.shortread_adapter2 ? "--adapter_sequence_r2 ${params.shortread_adapter2}" : !{ ${meta.single_end} } ? "--detect_adapter_for_pe" : "" + // filtering options + "--length_required ${params.shortread_clipmerge_minlength}" ].join(' ').trim() publishDir = [ path: { "${params.outdir}/fastp" }, diff --git a/nextflow.config b/nextflow.config index cc77a99..a312d0c 100644 --- a/nextflow.config +++ b/nextflow.config @@ -55,9 +55,15 @@ params { databases = null // FASTQ preprocessing - shortread_clipmerge = false - shortread_excludeunmerged = true - longread_clip = false + shortread_clipmerge = false + shortread_clipmerge_tool = 'fastp' + shortread_clipmerge_skiptrim = false + shortread_clipmerge_mergepairs = false + shortread_clipmerge_excludeunmerged = true + shortread_clipmerge_adapter1 = null + shortread_clipmerge_adapter2 = null + shortread_clipmerge_minlength = 15 + longread_clip = false // MALT run_malt = false diff --git a/nextflow_schema.json b/nextflow_schema.json index 9527da4..0fa217f 100644 --- a/nextflow_schema.json +++ b/nextflow_schema.json @@ -265,7 +265,7 @@ "shortread_clipmerge": { "type": "boolean" }, - "shortread_excludeunmerged": { + "shortread_clipmerge_excludeunmerged": { "type": "boolean", "default": true }, diff --git a/subworkflows/local/shortread_fastp.nf b/subworkflows/local/shortread_fastp.nf new file mode 100644 index 0000000..87aba25 --- /dev/null +++ b/subworkflows/local/shortread_fastp.nf @@ -0,0 +1,65 @@ +// +// Check input samplesheet and get read channels +// + + +include { FASTP as FASTP_SINGLE } from '../../modules/nf-core/modules/fastp/main' +include { FASTP as FASTP_PAIRED } from '../../modules/nf-core/modules/fastp/main' + +workflow SHORTREAD_FASTP { + take: + reads // file: /path/to/samplesheet.csv + + main: + ch_versions = Channel.empty() + ch_multiqc_files = Channel.empty() + + // + // STEP: Read clipping and merging + // + // TODO give option to retain singletons (probably fastp option likely) + // TODO move to subworkflow + + ch_input_for_fastp = reads + .dump(tag: "pre-fastp_branch") + .branch{ + single: it[0]['single_end'] == true + paired: it[0]['single_end'] == false + } + + ch_input_for_fastp.single.dump(tag: "input_fastp_single") + ch_input_for_fastp.paired.dump(tag: "input_fastp_paired") + + FASTP_SINGLE ( ch_input_for_fastp.single, false, false ) + FASTP_PAIRED ( ch_input_for_fastp.paired, false, params.shortread_clipmerge_mergepairs ) + + if ( params.shortread_clipmerge_mergepairs ) { + ch_fastp_reads_prepped = FASTP_PAIRED.out.reads_merged + .mix( FASTP_SINGLE.out.reads ) + .map { + meta, reads -> + def meta_new = meta.clone() + meta_new['single_end'] = 1 + [ meta_new, reads ] + } + } else { + ch_fastp_reads_prepped = FASTP_PAIRED.out.reads + .mix( FASTP_SINGLE.out.reads ) + } + + ch_versions = ch_versions.mix(FASTP_SINGLE.out.versions.first()) + ch_versions = ch_versions.mix(FASTP_PAIRED.out.versions.first()) + + ch_processed_reads = ch_fastp_reads_prepped.dump(tag: "ch_fastp_reads_prepped") + + ch_multiqc_files = ch_multiqc_files.mix( FASTP_SINGLE.out.json.collect{it[1]} ) + ch_multiqc_files = ch_multiqc_files.mix( FASTP_PAIRED.out.json.collect{it[1]} ) + + ch_multiqc_files.dump(tag: "preprocessing_fastp_mqc_final") + + emit: + reads = ch_processed_reads // channel: [ val(meta), [ reads ] ] + versions = ch_versions // channel: [ versions.yml ] + mqc = ch_multiqc_files +} + diff --git a/subworkflows/local/shortread_preprocessing.nf b/subworkflows/local/shortread_preprocessing.nf index d996a76..c31289d 100644 --- a/subworkflows/local/shortread_preprocessing.nf +++ b/subworkflows/local/shortread_preprocessing.nf @@ -3,17 +3,16 @@ // -include { FASTP as FASTP_SINGLE } from '../../modules/nf-core/modules/fastp/main' -include { FASTP as FASTP_PAIRED } from '../../modules/nf-core/modules/fastp/main' -include { FASTQC as FASTQC_POST } from '../../modules/nf-core/modules/fastqc/main' +include { SHORTREAD_FASTP } from './shortread_fastp' +include { FASTQC as FASTQC_PROCESSED } from '../../modules/nf-core/modules/fastqc/main' workflow SHORTREAD_PREPROCESSING { take: reads // file: /path/to/samplesheet.csv main: - ch_versions = Channel.empty() - ch_multiqc_files = Channel.empty() + ch_versions = Channel.empty() + ch_multiqc_files = Channel.empty() // // STEP: Read clipping and merging @@ -22,50 +21,20 @@ workflow SHORTREAD_PREPROCESSING { // TODO give option to retain singletons (probably fastp option likely) // TODO move to subworkflow - - if ( params.shortread_clipmerge ) { - - ch_input_for_fastp = reads - .dump(tag: "pre-fastp_branch") - .branch{ - single: it[0]['single_end'] == true - paired: it[0]['single_end'] == false - } - - ch_input_for_fastp.single.dump(tag: "input_fastp_single") - ch_input_for_fastp.paired.dump(tag: "input_fastp_paired") - - FASTP_SINGLE ( ch_input_for_fastp.single, false, false ) - FASTP_PAIRED ( ch_input_for_fastp.paired, false, true ) - - ch_fastp_reads_prepped = FASTP_PAIRED.out.reads_merged - .mix( FASTP_SINGLE.out.reads ) - .map { - meta, reads -> - def meta_new = meta.clone() - meta_new['single_end'] = 1 - [ meta_new, reads ] - } - - FASTQC_POST ( ch_fastp_reads_prepped ) - - ch_versions = ch_versions.mix(FASTP_SINGLE.out.versions.first()) - ch_versions = ch_versions.mix(FASTP_PAIRED.out.versions.first()) - - ch_processed_reads = ch_fastp_reads_prepped - - ch_multiqc_files = ch_multiqc_files.mix( FASTQC_POST.out.zip.collect{it[1]} ) - ch_multiqc_files = ch_multiqc_files.mix( FASTP_SINGLE.out.json.collect{it[1]} ) - ch_multiqc_files = ch_multiqc_files.mix( FASTP_PAIRED.out.json.collect{it[1]} ) - - ch_multiqc_files.dump(tag: "preprocessing_mqc_final") - + if ( params.shortread_clipmerge_tool == "fastp" ) { + ch_processed_reads = SHORTREAD_FASTP ( reads ).reads + ch_versions = ch_versions.mix( SHORTREAD_FASTP.out.versions ) + ch_multiqc_files = ch_multiqc_files.mix( SHORTREAD_FASTP.out.mqc ) } else { ch_processed_reads = reads } + //FASTQC_PROCESSED ( ch_processed_reads ) + //ch_versions = ch_versions.mix( FASTQC_PROCESSED.out.versions ) + //ch_multiqc_files = ch_multiqc_files.mix( FASTQC_PROCESSED.out.zip.collect{it[1]} ) emit: + // TODO: problem, this is being exported as a multi-channel output? This is why FASTQC is broken reads = ch_processed_reads // channel: [ val(meta), [ reads ] ] versions = ch_versions // channel: [ versions.yml ] mqc = ch_multiqc_files diff --git a/workflows/taxprofiler.nf b/workflows/taxprofiler.nf index 29058e6..0a907bf 100644 --- a/workflows/taxprofiler.nf +++ b/workflows/taxprofiler.nf @@ -17,6 +17,7 @@ for (param in checkPathParamList) { if (param) { file(param, checkIfExists: true // Check mandatory parameters if (params.input ) { ch_input = file(params.input) } else { exit 1, 'Input samplesheet not specified!' } if (params.databases) { ch_databases = file(params.databases) } else { exit 1, 'Input database sheet not specified!' } +if (params.shortread_clipmerge_mergepairs && params.run_malt ) log.warn "[nf-core/taxprofiler] warning: MALT does not except uncollapsed paired-reads. Pairs will be profiled as separate files." /* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -135,6 +136,7 @@ workflow TAXPROFILER { CAT_FASTQ ( ch_processed_for_combine.combine ) + // TODO May need to flatten reads? ch_reads_for_profiling = ch_processed_for_combine.skip .dump(tag: "skip_combine") .mix( CAT_FASTQ.out.reads ) From ff1f28f4f0b8e88898e0f568f83e2da90ff81bc6 Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Fri, 25 Mar 2022 15:01:25 +0100 Subject: [PATCH 043/789] Update schema --- conf/modules.config | 4 ++-- nextflow_schema.json | 38 +++++++++++++++++++++++++++++++++++--- 2 files changed, 37 insertions(+), 5 deletions(-) diff --git a/conf/modules.config b/conf/modules.config index 36bc626..1052bed 100644 --- a/conf/modules.config +++ b/conf/modules.config @@ -69,8 +69,8 @@ process { params.shortread_clipmerge_excludeunmerged ? '' : "--include_unmerged", // trimming options params.shortread_clipmerge_skiptrim ? "--disable_adapter_trimming" : "", - params.shortread_adapter1 ? "--adapter_sequence ${params.shortread_adapter1}" : "", - !{ ${meta.single_end} } && params.shortread_adapter2 ? "--adapter_sequence_r2 ${params.shortread_adapter2}" : !{ ${meta.single_end} } ? "--detect_adapter_for_pe" : "" + params.shortread_clipmerge_adapter1 ? "--adapter_sequence ${params.shortread_clipmerge_adapter1}" : "", + !{ ${meta.single_end} } && params.shortread_clipmerge_adapter2 ? "--adapter_sequence_r2 ${params.shortread_clipmerge_adapter2}" : !{ ${meta.single_end} } ? "--detect_adapter_for_pe" : "", // filtering options "--length_required ${params.shortread_clipmerge_minlength}" ].join(' ').trim() diff --git a/nextflow_schema.json b/nextflow_schema.json index 0fa217f..42307e9 100644 --- a/nextflow_schema.json +++ b/nextflow_schema.json @@ -10,7 +10,10 @@ "type": "object", "fa_icon": "fas fa-terminal", "description": "Define where the pipeline should find input data and save output data.", - "required": ["input", "outdir"], + "required": [ + "input", + "outdir" + ], "properties": { "input": { "type": "string", @@ -173,7 +176,14 @@ "description": "Method used to save pipeline results to output directory.", "help_text": "The Nextflow `publishDir` option specifies which intermediate files should be saved to the output directory. This option tells the pipeline what method should be used to move these files. See [Nextflow docs](https://www.nextflow.io/docs/latest/process.html#publishdir) for details.", "fa_icon": "fas fa-copy", - "enum": ["symlink", "rellink", "link", "copy", "copyNoFollow", "move"], + "enum": [ + "symlink", + "rellink", + "link", + "copy", + "copyNoFollow", + "move" + ], "hidden": true }, "email_on_fail": { @@ -281,6 +291,28 @@ }, "run_kraken2": { "type": "boolean" + }, + "shortread_clipmerge_tool": { + "type": "string", + "default": "fastp" + }, + "shortread_clipmerge_skiptrim": { + "type": "boolean" + }, + "shortread_clipmerge_mergepairs": { + "type": "boolean" + }, + "shortread_clipmerge_adapter1": { + "type": "string", + "default": null + }, + "shortread_clipmerge_adapter2": { + "type": "string", + "default": null + }, + "shortread_clipmerge_minlength": { + "type": "integer", + "default": 15 } } -} +} \ No newline at end of file From dfcf8f7b1ae183a233d8a1c94f39a1f27084a966 Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Fri, 25 Mar 2022 15:10:52 +0100 Subject: [PATCH 044/789] Prettier --- conf/test.config | 1 - nextflow_schema.json | 16 +++------------- 2 files changed, 3 insertions(+), 14 deletions(-) diff --git a/conf/test.config b/conf/test.config index 5924d7a..92a10e4 100644 --- a/conf/test.config +++ b/conf/test.config @@ -23,7 +23,6 @@ params { // TODO nf-core: Specify the paths to your test data on nf-core/test-datasets // TODO nf-core: Give any required params for the test so that command line flags are not needed input = 'https://raw.githubusercontent.com/nf-core/test-datasets/taxprofiler/samplesheet.csv' - outdir = "./results" databases = 'https://raw.githubusercontent.com/nf-core/test-datasets/taxprofiler/database.csv' run_kraken2 = true run_malt = true diff --git a/nextflow_schema.json b/nextflow_schema.json index 42307e9..545f990 100644 --- a/nextflow_schema.json +++ b/nextflow_schema.json @@ -10,10 +10,7 @@ "type": "object", "fa_icon": "fas fa-terminal", "description": "Define where the pipeline should find input data and save output data.", - "required": [ - "input", - "outdir" - ], + "required": ["input", "outdir"], "properties": { "input": { "type": "string", @@ -176,14 +173,7 @@ "description": "Method used to save pipeline results to output directory.", "help_text": "The Nextflow `publishDir` option specifies which intermediate files should be saved to the output directory. This option tells the pipeline what method should be used to move these files. See [Nextflow docs](https://www.nextflow.io/docs/latest/process.html#publishdir) for details.", "fa_icon": "fas fa-copy", - "enum": [ - "symlink", - "rellink", - "link", - "copy", - "copyNoFollow", - "move" - ], + "enum": ["symlink", "rellink", "link", "copy", "copyNoFollow", "move"], "hidden": true }, "email_on_fail": { @@ -315,4 +305,4 @@ "default": 15 } } -} \ No newline at end of file +} From b5f5c755046b3ae1af9648e879dfa48519385891 Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Fri, 25 Mar 2022 15:21:52 +0100 Subject: [PATCH 045/789] Fix file header descriptions --- subworkflows/local/longread_preprocessing.nf | 9 ++++++--- subworkflows/local/shortread_fastp.nf | 10 +++------- 2 files changed, 9 insertions(+), 10 deletions(-) diff --git a/subworkflows/local/longread_preprocessing.nf b/subworkflows/local/longread_preprocessing.nf index da1049a..58968e8 100644 --- a/subworkflows/local/longread_preprocessing.nf +++ b/subworkflows/local/longread_preprocessing.nf @@ -1,6 +1,9 @@ +/* +Process long raw reads with porechop +*/ -include { FASTQC as FASTQC_POST } from '../../modules/nf-core/modules/fastqc/main' -include { PORECHOP } from '../../modules/nf-core/modules/porechop/main' +include { FASTQC as FASTQC_PROCESSED } from '../../modules/nf-core/modules/fastqc/main' +include { PORECHOP } from '../../modules/nf-core/modules/porechop/main' workflow LONGREAD_PREPROCESSING { take: @@ -23,7 +26,7 @@ workflow LONGREAD_PREPROCESSING { FASTQC_POST ( PORECHOP.out.reads ) ch_versions = ch_versions.mix(PORECHOP.out.versions.first()) - ch_multiqc_files = ch_multiqc_files.mix( FASTQC_POST.out.zip.collect{it[1]} ) + ch_multiqc_files = ch_multiqc_files.mix( FASTQC_PROCESSED.out.zip.collect{it[1]} ) emit: diff --git a/subworkflows/local/shortread_fastp.nf b/subworkflows/local/shortread_fastp.nf index 87aba25..f457cf3 100644 --- a/subworkflows/local/shortread_fastp.nf +++ b/subworkflows/local/shortread_fastp.nf @@ -1,7 +1,6 @@ -// -// Check input samplesheet and get read channels -// - +/* +Process short raw reads with FastP +*/ include { FASTP as FASTP_SINGLE } from '../../modules/nf-core/modules/fastp/main' include { FASTP as FASTP_PAIRED } from '../../modules/nf-core/modules/fastp/main' @@ -17,9 +16,6 @@ workflow SHORTREAD_FASTP { // // STEP: Read clipping and merging // - // TODO give option to retain singletons (probably fastp option likely) - // TODO move to subworkflow - ch_input_for_fastp = reads .dump(tag: "pre-fastp_branch") .branch{ From 7ddcb09a85ed8c50f5d661b398f0e0a5e113add8 Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Fri, 25 Mar 2022 15:22:41 +0100 Subject: [PATCH 046/789] Some more cleanup --- .../local/shortread_adapterremoval.nf | 64 +++++++++++++++++++ 1 file changed, 64 insertions(+) create mode 100644 subworkflows/local/shortread_adapterremoval.nf diff --git a/subworkflows/local/shortread_adapterremoval.nf b/subworkflows/local/shortread_adapterremoval.nf new file mode 100644 index 0000000..e15d2ef --- /dev/null +++ b/subworkflows/local/shortread_adapterremoval.nf @@ -0,0 +1,64 @@ +/* +Process raw reads with AdapterRemoval +*/ + +include { FASTP as FASTP_SINGLE } from '../../modules/nf-core/modules/fastp/main' +include { FASTP as FASTP_PAIRED } from '../../modules/nf-core/modules/fastp/main' + +workflow SHORTREAD_FASTP { + take: + reads // file: /path/to/samplesheet.csv + + main: + ch_versions = Channel.empty() + ch_multiqc_files = Channel.empty() + + // + // STEP: Read clipping and merging + // + // TODO give option to retain singletons (probably fastp option likely) + // TODO move to subworkflow + + ch_input_for_fastp = reads + .dump(tag: "pre-fastp_branch") + .branch{ + single: it[0]['single_end'] == true + paired: it[0]['single_end'] == false + } + + ch_input_for_fastp.single.dump(tag: "input_fastp_single") + ch_input_for_fastp.paired.dump(tag: "input_fastp_paired") + + FASTP_SINGLE ( ch_input_for_fastp.single, false, false ) + FASTP_PAIRED ( ch_input_for_fastp.paired, false, params.shortread_clipmerge_mergepairs ) + + if ( params.shortread_clipmerge_mergepairs ) { + ch_fastp_reads_prepped = FASTP_PAIRED.out.reads_merged + .mix( FASTP_SINGLE.out.reads ) + .map { + meta, reads -> + def meta_new = meta.clone() + meta_new['single_end'] = 1 + [ meta_new, reads ] + } + } else { + ch_fastp_reads_prepped = FASTP_PAIRED.out.reads + .mix( FASTP_SINGLE.out.reads ) + } + + ch_versions = ch_versions.mix(FASTP_SINGLE.out.versions.first()) + ch_versions = ch_versions.mix(FASTP_PAIRED.out.versions.first()) + + ch_processed_reads = ch_fastp_reads_prepped.dump(tag: "ch_fastp_reads_prepped") + + ch_multiqc_files = ch_multiqc_files.mix( FASTP_SINGLE.out.json.collect{it[1]} ) + ch_multiqc_files = ch_multiqc_files.mix( FASTP_PAIRED.out.json.collect{it[1]} ) + + ch_multiqc_files.dump(tag: "preprocessing_fastp_mqc_final") + + emit: + reads = ch_processed_reads // channel: [ val(meta), [ reads ] ] + versions = ch_versions // channel: [ versions.yml ] + mqc = ch_multiqc_files +} + From 0e6f7e2ca137fbb8306b733ab3abc3b6d8ad83f7 Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Fri, 25 Mar 2022 15:24:10 +0100 Subject: [PATCH 047/789] Revert "Some more cleanup" This reverts commit 7ddcb09a85ed8c50f5d661b398f0e0a5e113add8. --- .../local/shortread_adapterremoval.nf | 64 ------------------- 1 file changed, 64 deletions(-) delete mode 100644 subworkflows/local/shortread_adapterremoval.nf diff --git a/subworkflows/local/shortread_adapterremoval.nf b/subworkflows/local/shortread_adapterremoval.nf deleted file mode 100644 index e15d2ef..0000000 --- a/subworkflows/local/shortread_adapterremoval.nf +++ /dev/null @@ -1,64 +0,0 @@ -/* -Process raw reads with AdapterRemoval -*/ - -include { FASTP as FASTP_SINGLE } from '../../modules/nf-core/modules/fastp/main' -include { FASTP as FASTP_PAIRED } from '../../modules/nf-core/modules/fastp/main' - -workflow SHORTREAD_FASTP { - take: - reads // file: /path/to/samplesheet.csv - - main: - ch_versions = Channel.empty() - ch_multiqc_files = Channel.empty() - - // - // STEP: Read clipping and merging - // - // TODO give option to retain singletons (probably fastp option likely) - // TODO move to subworkflow - - ch_input_for_fastp = reads - .dump(tag: "pre-fastp_branch") - .branch{ - single: it[0]['single_end'] == true - paired: it[0]['single_end'] == false - } - - ch_input_for_fastp.single.dump(tag: "input_fastp_single") - ch_input_for_fastp.paired.dump(tag: "input_fastp_paired") - - FASTP_SINGLE ( ch_input_for_fastp.single, false, false ) - FASTP_PAIRED ( ch_input_for_fastp.paired, false, params.shortread_clipmerge_mergepairs ) - - if ( params.shortread_clipmerge_mergepairs ) { - ch_fastp_reads_prepped = FASTP_PAIRED.out.reads_merged - .mix( FASTP_SINGLE.out.reads ) - .map { - meta, reads -> - def meta_new = meta.clone() - meta_new['single_end'] = 1 - [ meta_new, reads ] - } - } else { - ch_fastp_reads_prepped = FASTP_PAIRED.out.reads - .mix( FASTP_SINGLE.out.reads ) - } - - ch_versions = ch_versions.mix(FASTP_SINGLE.out.versions.first()) - ch_versions = ch_versions.mix(FASTP_PAIRED.out.versions.first()) - - ch_processed_reads = ch_fastp_reads_prepped.dump(tag: "ch_fastp_reads_prepped") - - ch_multiqc_files = ch_multiqc_files.mix( FASTP_SINGLE.out.json.collect{it[1]} ) - ch_multiqc_files = ch_multiqc_files.mix( FASTP_PAIRED.out.json.collect{it[1]} ) - - ch_multiqc_files.dump(tag: "preprocessing_fastp_mqc_final") - - emit: - reads = ch_processed_reads // channel: [ val(meta), [ reads ] ] - versions = ch_versions // channel: [ versions.yml ] - mqc = ch_multiqc_files -} - From b763bfa2c0a7dabe4ad8c4216cf852a3938a49b6 Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Fri, 25 Mar 2022 15:26:57 +0100 Subject: [PATCH 048/789] More cleanup --- subworkflows/local/shortread_fastp.nf | 3 --- 1 file changed, 3 deletions(-) diff --git a/subworkflows/local/shortread_fastp.nf b/subworkflows/local/shortread_fastp.nf index f457cf3..57ce2a6 100644 --- a/subworkflows/local/shortread_fastp.nf +++ b/subworkflows/local/shortread_fastp.nf @@ -13,9 +13,6 @@ workflow SHORTREAD_FASTP { ch_versions = Channel.empty() ch_multiqc_files = Channel.empty() - // - // STEP: Read clipping and merging - // ch_input_for_fastp = reads .dump(tag: "pre-fastp_branch") .branch{ From ede362dbf91df9f5118f0122f8bfc09d888cb141 Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Fri, 25 Mar 2022 15:28:30 +0100 Subject: [PATCH 049/789] Remove duplicate config and sync longread fastqc --- conf/modules.config | 10 ---------- subworkflows/local/longread_preprocessing.nf | 2 +- 2 files changed, 1 insertion(+), 11 deletions(-) diff --git a/conf/modules.config b/conf/modules.config index 1052bed..7d50174 100644 --- a/conf/modules.config +++ b/conf/modules.config @@ -90,16 +90,6 @@ process { ] } - withName: FASTQC_POST { - ext.args = '--quiet' - ext.prefix = { "${meta.id}_${meta.run_accession}_processed" } - publishDir = [ - path: { "${params.outdir}/fastqc/processed" }, - mode: 'copy', - pattern: '*.html' - ] - } - withName: CAT_FASTQ { publishDir = [ path: { "${params.outdir}/prepared_sequences" }, diff --git a/subworkflows/local/longread_preprocessing.nf b/subworkflows/local/longread_preprocessing.nf index 58968e8..7c7c24b 100644 --- a/subworkflows/local/longread_preprocessing.nf +++ b/subworkflows/local/longread_preprocessing.nf @@ -24,7 +24,7 @@ workflow LONGREAD_PREPROCESSING { [ meta_new, reads ] } - FASTQC_POST ( PORECHOP.out.reads ) + FASTQC_PROCESSED ( PORECHOP.out.reads ) ch_versions = ch_versions.mix(PORECHOP.out.versions.first()) ch_multiqc_files = ch_multiqc_files.mix( FASTQC_PROCESSED.out.zip.collect{it[1]} ) From 000f129dab1b139cec6e9194670addf8d9e6173a Mon Sep 17 00:00:00 2001 From: "James A. Fellows Yates" Date: Fri, 25 Mar 2022 15:32:56 +0100 Subject: [PATCH 050/789] Apply suggestions from code review --- subworkflows/local/shortread_preprocessing.nf | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/subworkflows/local/shortread_preprocessing.nf b/subworkflows/local/shortread_preprocessing.nf index c31289d..c82536f 100644 --- a/subworkflows/local/shortread_preprocessing.nf +++ b/subworkflows/local/shortread_preprocessing.nf @@ -29,12 +29,11 @@ workflow SHORTREAD_PREPROCESSING { ch_processed_reads = reads } - //FASTQC_PROCESSED ( ch_processed_reads ) - //ch_versions = ch_versions.mix( FASTQC_PROCESSED.out.versions ) - //ch_multiqc_files = ch_multiqc_files.mix( FASTQC_PROCESSED.out.zip.collect{it[1]} ) + FASTQC_PROCESSED ( ch_processed_reads ) + ch_versions = ch_versions.mix( FASTQC_PROCESSED.out.versions ) + ch_multiqc_files = ch_multiqc_files.mix( FASTQC_PROCESSED.out.zip.collect{it[1]} ) emit: - // TODO: problem, this is being exported as a multi-channel output? This is why FASTQC is broken reads = ch_processed_reads // channel: [ val(meta), [ reads ] ] versions = ch_versions // channel: [ versions.yml ] mqc = ch_multiqc_files From 16bdc79cc08750e8df36acc8c14aa90e8c522f76 Mon Sep 17 00:00:00 2001 From: sofstam Date: Fri, 25 Mar 2022 16:30:26 +0100 Subject: [PATCH 051/789] Apply prettier --- modules.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules.json b/modules.json index 2dbde56..ffaff90 100644 --- a/modules.json +++ b/modules.json @@ -29,7 +29,7 @@ }, "porechop": { "git_sha": "e20e57f90b6787ac9a010a980cf6ea98bd990046" - } + }, "centrifuge": { "git_sha": "ea41a8a6f761b9993d857570e872abaae3fea555" } From 59d3f18a753bf5b06ab495c98f96df77a84513d5 Mon Sep 17 00:00:00 2001 From: sofstam Date: Fri, 25 Mar 2022 17:18:04 +0100 Subject: [PATCH 052/789] Update nextflow_schema.json --- nextflow_schema.json | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) diff --git a/nextflow_schema.json b/nextflow_schema.json index b8d5a1d..b4b3e07 100644 --- a/nextflow_schema.json +++ b/nextflow_schema.json @@ -293,20 +293,16 @@ "type": "boolean" }, "run_centrifuge": { - "type": "string", - "default": "false" + "type": "boolean" }, "centrifuge_save_unaligned": { - "type": "string", - "default": "false" + "type": "boolean" }, "centrifuge_save_aligned": { - "type": "string", - "default": "false" + "type": "boolean" }, "centrifuge_sam_format": { - "type": "string", - "default": "false" + "type": "boolean" } } -} \ No newline at end of file +} From 120382f51d184bed0375ab8c642f6bdab77a617f Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Sat, 26 Mar 2022 06:45:16 +0100 Subject: [PATCH 053/789] Fix input channels to kraken2 --- workflows/taxprofiler.nf | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/workflows/taxprofiler.nf b/workflows/taxprofiler.nf index 0a907bf..c1d7f34 100644 --- a/workflows/taxprofiler.nf +++ b/workflows/taxprofiler.nf @@ -37,11 +37,11 @@ ch_multiqc_custom_config = params.multiqc_config ? Channel.fromPath(params.multi // // SUBWORKFLOW: Consisting of a mix of local and nf-core/modules // -include { INPUT_CHECK } from '../subworkflows/local/input_check' +include { INPUT_CHECK } from '../subworkflows/local/input_check' -include { DB_CHECK } from '../subworkflows/local/db_check' +include { DB_CHECK } from '../subworkflows/local/db_check' include { SHORTREAD_PREPROCESSING } from '../subworkflows/local/shortread_preprocessing' -include { LONGREAD_PREPROCESSING } from '../subworkflows/local/longread_preprocessing' +include { LONGREAD_PREPROCESSING } from '../subworkflows/local/longread_preprocessing' /* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -171,7 +171,7 @@ workflow TAXPROFILER { [ temp_meta, it[1], db ] } .groupTuple(by: [0,2]) - .dump(tag: "input for malt") + .dump(tag: "input_for_malt") .multiMap { it -> reads: [ it[0], it[1].flatten() ] @@ -180,10 +180,10 @@ workflow TAXPROFILER { // We can run Kraken2 one-by-one sample-wise ch_input_for_kraken2 = ch_input_for_profiling.kraken2 - .dump(tag: "input for kraken") + .dump(tag: "input_for_kraken") .multiMap { it -> - reads: [ it[0] + it[2], it[1] ] + reads: [ it[0] + it[2], it[1].flatten() ] db: it[3] } From 622fafedc88489026d4c8cd5eb62319e736d1375 Mon Sep 17 00:00:00 2001 From: "James A. Fellows Yates" Date: Sat, 26 Mar 2022 20:22:35 +0000 Subject: [PATCH 054/789] Prempt centrifuge database untar crash --- subworkflows/local/db_check.nf | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/subworkflows/local/db_check.nf b/subworkflows/local/db_check.nf index 890e373..96f815a 100644 --- a/subworkflows/local/db_check.nf +++ b/subworkflows/local/db_check.nf @@ -12,6 +12,9 @@ workflow DB_CHECK { main: // TODO: make database sheet check + // Checks: + // 1) no duplicates, + // 2) dbs with no special arguments does not have quotes, e.g. just `,,` and NOT `,"",` parsed_samplesheet = DATABASE_CHECK ( dbsheet ) .csv .splitCsv ( header:true, sep:',' ) @@ -21,7 +24,7 @@ workflow DB_CHECK { ch_dbs_for_untar = parsed_samplesheet .branch { - untar: it[1].toString().endsWith(".tar.gz") + untar: it[1].toString().endsWith(".tar.gz") && it[0]['tool'] != 'centrifuge' skip: true } From e6e8ed7cc9904973ce6236c98eb74f8246c3ec09 Mon Sep 17 00:00:00 2001 From: "James A. Fellows Yates" Date: Sat, 26 Mar 2022 20:54:50 +0000 Subject: [PATCH 055/789] Add some debugging notes --- conf/modules.config | 4 +-- workflows/taxprofiler.nf | 60 +++++++++++++++++++++------------------- 2 files changed, 34 insertions(+), 30 deletions(-) diff --git a/conf/modules.config b/conf/modules.config index 7d50174..5823d3f 100644 --- a/conf/modules.config +++ b/conf/modules.config @@ -105,7 +105,7 @@ process { pattern: '*.{rma6,tab,text,sam,log}' ] ext.args = { "${meta.db_params}" } - ext.prefix = { "${meta.id}-${meta.db_name}" } + ext.prefix = { "${meta.id}-${meta.run_accession}-${meta.db_name}" } } withName: KRAKEN2_KRAKEN2 { @@ -115,7 +115,7 @@ process { pattern: '*.{fastq.gz,txt}' ] ext.args = { "${meta.db_params}" } - ext.prefix = { "${meta.id}-${meta.db_name}" } + ext.prefix = { "${meta.id}-${meta.run_accession}-${meta.db_name}" } } withName: CUSTOM_DUMPSOFTWAREVERSIONS { diff --git a/workflows/taxprofiler.nf b/workflows/taxprofiler.nf index c1d7f34..ee921ea 100644 --- a/workflows/taxprofiler.nf +++ b/workflows/taxprofiler.nf @@ -74,9 +74,9 @@ workflow TAXPROFILER { ch_versions = Channel.empty() - // - // SUBWORKFLOW: Read in samplesheet, validate and stage input files - // + /* + SUBWORKFLOW: Read in samplesheet, validate and stage input files + */ INPUT_CHECK ( ch_input ) @@ -86,9 +86,9 @@ workflow TAXPROFILER { ch_databases ) - // - // MODULE: Run FastQC - // + /* + MODULE: Run FastQC + */ ch_input_for_fastqc = INPUT_CHECK.out.fastq.mix( INPUT_CHECK.out.nanopore ).dump(tag: "input_to_fastq") FASTQC ( ch_input_for_fastqc @@ -99,9 +99,9 @@ workflow TAXPROFILER { ch_versions.unique().collectFile(name: 'collated_versions.yml') ) - // - // PERFORM PREPROCESSING - // + /* + SUBWORKFLOW: PERFORM PREPROCESSING + */ if ( params.shortread_clipmerge ) { ch_shortreads_preprocessed = SHORTREAD_PREPROCESSING ( INPUT_CHECK.out.fastq ).reads } else { @@ -116,16 +116,19 @@ workflow TAXPROFILER { ch_longreads_preprocessed = INPUT_CHECK.out.nanopore } - // - // PERFORM SHORT READ RUN MERGING + /* + MODULE: PERFORM SHORT READ RUN MERGING + */ + // TODO: Check not necessary for long reads too? - // + // TODO: source of clash - combined should only occur when + // files ARE to be combined. SE/unmerged (see not below) ch_processed_for_combine = ch_shortreads_preprocessed .dump(tag: "prep_for_combine_grouping") .map { meta, reads -> def meta_new = meta.clone() - meta_new['run_accession'] = 'combined' + //meta_new['run_accession'] = 'combined' [ meta_new, reads ] } .groupTuple ( by: 0 ) @@ -134,17 +137,18 @@ workflow TAXPROFILER { skip: it[1].size() < 2 } + // NOTE: this does not allow CATing of SE & PE runs of same sample + // when --shortread_clipmerge_mergepairs is false CAT_FASTQ ( ch_processed_for_combine.combine ) - // TODO May need to flatten reads? ch_reads_for_profiling = ch_processed_for_combine.skip .dump(tag: "skip_combine") .mix( CAT_FASTQ.out.reads ) .dump(tag: "files_for_profiling") - // - // COMBINE READS WITH POSSIBLE DATABASES - // + /* + COMBINE READS WITH POSSIBLE DATABASES + */ // e.g. output [DUMP: reads_plus_db] [['id':'2612', 'run_accession':'combined', 'instrument_platform':'ILLUMINA', 'single_end':1], /2612.merged.fastq.gz, ['tool':'malt', 'db_name':'mal95', 'db_params':'"-id 90"'], /malt90] ch_input_for_profiling = ch_reads_for_profiling @@ -157,9 +161,9 @@ workflow TAXPROFILER { unknown: true } - // - // PREPARE PROFILER INPUT CHANNELS - // + /* + PREPARE PROFILER INPUT CHANNELS + */ // We groupTuple to have all samples in one channel for MALT as database // loading takes a long time, so we only want to run it once per database @@ -171,7 +175,7 @@ workflow TAXPROFILER { [ temp_meta, it[1], db ] } .groupTuple(by: [0,2]) - .dump(tag: "input_for_malt") + .dump(tag: "input_to_malt") .multiMap { it -> reads: [ it[0], it[1].flatten() ] @@ -180,16 +184,16 @@ workflow TAXPROFILER { // We can run Kraken2 one-by-one sample-wise ch_input_for_kraken2 = ch_input_for_profiling.kraken2 - .dump(tag: "input_for_kraken") + .dump(tag: "input_to_kraken") .multiMap { it -> reads: [ it[0] + it[2], it[1].flatten() ] db: it[3] } - // - // RUN PROFILING - // + /* + MODULE: RUN PROFILING + */ if ( params.run_malt ) { MALT_RUN ( ch_input_for_malt.reads, params.malt_mode, ch_input_for_malt.db ) } @@ -198,9 +202,9 @@ workflow TAXPROFILER { KRAKEN2_KRAKEN2 ( ch_input_for_kraken2.reads, ch_input_for_kraken2.db ) } - // - // MODULE: MultiQC - // + /* + MODULE: MultiQC + */ workflow_summary = WorkflowTaxprofiler.paramsSummaryMultiqc(workflow, summary_params) ch_workflow_summary = Channel.value(workflow_summary) From 8dc9e583add80f51111dc6c796a2ea1413e8731b Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Sun, 27 Mar 2022 09:30:23 +0200 Subject: [PATCH 056/789] Debugging run merging --- conf/modules.config | 6 ++--- .../nf-core/modules/kraken2/kraken2/main.nf | 3 ++- subworkflows/local/shortread_fastp.nf | 10 ++++--- subworkflows/local/shortread_preprocessing.nf | 7 ----- workflows/taxprofiler.nf | 27 ++++++++++++++----- 5 files changed, 32 insertions(+), 21 deletions(-) diff --git a/conf/modules.config b/conf/modules.config index 5823d3f..41f471f 100644 --- a/conf/modules.config +++ b/conf/modules.config @@ -65,7 +65,7 @@ process { withName: FASTP { ext.prefix = { "${meta.id}_${meta.run_accession}" } ext.args = [ - // collapsing options + // collapsing options - option to retain singletons params.shortread_clipmerge_excludeunmerged ? '' : "--include_unmerged", // trimming options params.shortread_clipmerge_skiptrim ? "--disable_adapter_trimming" : "", @@ -105,7 +105,7 @@ process { pattern: '*.{rma6,tab,text,sam,log}' ] ext.args = { "${meta.db_params}" } - ext.prefix = { "${meta.id}-${meta.run_accession}-${meta.db_name}" } + ext.prefix = { "${meta.id}-${meta.db_name}" } } withName: KRAKEN2_KRAKEN2 { @@ -115,7 +115,7 @@ process { pattern: '*.{fastq.gz,txt}' ] ext.args = { "${meta.db_params}" } - ext.prefix = { "${meta.id}-${meta.run_accession}-${meta.db_name}" } + ext.prefix = { "${meta.id}-${meta.db_name}" } } withName: CUSTOM_DUMPSOFTWAREVERSIONS { diff --git a/modules/nf-core/modules/kraken2/kraken2/main.nf b/modules/nf-core/modules/kraken2/kraken2/main.nf index 3ec5df5..52351f5 100644 --- a/modules/nf-core/modules/kraken2/kraken2/main.nf +++ b/modules/nf-core/modules/kraken2/kraken2/main.nf @@ -32,11 +32,12 @@ process KRAKEN2_KRAKEN2 { --threads $task.cpus \\ --unclassified-out $unclassified \\ --classified-out $classified \\ + $args \\ --report ${prefix}.kraken2.report.txt \\ --gzip-compressed \\ $paired \\ - $args \\ $reads + pigz -p $task.cpus *.fastq diff --git a/subworkflows/local/shortread_fastp.nf b/subworkflows/local/shortread_fastp.nf index 57ce2a6..d4d706e 100644 --- a/subworkflows/local/shortread_fastp.nf +++ b/subworkflows/local/shortread_fastp.nf @@ -7,7 +7,7 @@ include { FASTP as FASTP_PAIRED } from '../../modules/nf-core/modules/fast workflow SHORTREAD_FASTP { take: - reads // file: /path/to/samplesheet.csv + reads // [[meta], [reads]] main: ch_versions = Channel.empty() @@ -24,16 +24,18 @@ workflow SHORTREAD_FASTP { ch_input_for_fastp.paired.dump(tag: "input_fastp_paired") FASTP_SINGLE ( ch_input_for_fastp.single, false, false ) + // Last parameter here turns on merging of PE data FASTP_PAIRED ( ch_input_for_fastp.paired, false, params.shortread_clipmerge_mergepairs ) if ( params.shortread_clipmerge_mergepairs ) { + // TODO update to replace meta suffix ch_fastp_reads_prepped = FASTP_PAIRED.out.reads_merged .mix( FASTP_SINGLE.out.reads ) .map { meta, reads -> - def meta_new = meta.clone() - meta_new['single_end'] = 1 - [ meta_new, reads ] + def meta_new = meta.clone() + meta_new['single_end'] = 1 + [ meta_new, reads ] } } else { ch_fastp_reads_prepped = FASTP_PAIRED.out.reads diff --git a/subworkflows/local/shortread_preprocessing.nf b/subworkflows/local/shortread_preprocessing.nf index c82536f..7fba0c0 100644 --- a/subworkflows/local/shortread_preprocessing.nf +++ b/subworkflows/local/shortread_preprocessing.nf @@ -14,13 +14,6 @@ workflow SHORTREAD_PREPROCESSING { ch_versions = Channel.empty() ch_multiqc_files = Channel.empty() - // - // STEP: Read clipping and merging - // - // TODO give option to clip only and retain pairs - // TODO give option to retain singletons (probably fastp option likely) - // TODO move to subworkflow - if ( params.shortread_clipmerge_tool == "fastp" ) { ch_processed_reads = SHORTREAD_FASTP ( reads ).reads ch_versions = ch_versions.mix( SHORTREAD_FASTP.out.versions ) diff --git a/workflows/taxprofiler.nf b/workflows/taxprofiler.nf index ee921ea..87f7a30 100644 --- a/workflows/taxprofiler.nf +++ b/workflows/taxprofiler.nf @@ -120,25 +120,40 @@ workflow TAXPROFILER { MODULE: PERFORM SHORT READ RUN MERGING */ - // TODO: Check not necessary for long reads too? - // TODO: source of clash - combined should only occur when - // files ARE to be combined. SE/unmerged (see not below) + // Remove run accession to allow grouping by sample. Will only merge + // if pairment type is the same. + + // TODO Current Branch system currently problematic - when single file not in a list, splits at + // `/` so makes list >= 2, so tries to merge, but then breaks kraken downstream + // e.g. `home jfellows Documents git nf-core taxprofiler testing work 68 9a2c8362add37832a776058d280bb7 2612_se.merged.fastq.gz` + // So theoretically need to force this into a list, (but results the can't access meta.id error as incorrect input format) + // But second issue >= 2 is MAYBE sufficient because what if merging two paired-end files? Need to chcek if the input channel formatted correctly for this? Need to check... ch_processed_for_combine = ch_shortreads_preprocessed .dump(tag: "prep_for_combine_grouping") .map { meta, reads -> def meta_new = meta.clone() - //meta_new['run_accession'] = 'combined' + + // remove run accession to allow group by sample + meta_new.remove('run_accession') + + // update id to prevent file name clashes when unable to group + // unmerged PE and SE runs of same sample + def type = meta_new['single_end'] ? "_se" : "_pe" + meta_new['id'] = meta['id'] + type + [ meta_new, reads ] } .groupTuple ( by: 0 ) + .dump(tag: "files_for_cat_fastq_branch") .branch{ - combine: it[1].size() >= 2 - skip: it[1].size() < 2 + combine: it[1] && it[1].size() > 1 + skip: true } // NOTE: this does not allow CATing of SE & PE runs of same sample // when --shortread_clipmerge_mergepairs is false + ch_processed_for_combine.combine.dump(tag: "input_into_cat_fastq") CAT_FASTQ ( ch_processed_for_combine.combine ) ch_reads_for_profiling = ch_processed_for_combine.skip From ee53283696261fa2687fa55402e3cfa3da164509 Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Mon, 28 Mar 2022 09:13:05 +0200 Subject: [PATCH 057/789] Debugging comment --- workflows/taxprofiler.nf | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/workflows/taxprofiler.nf b/workflows/taxprofiler.nf index 87f7a30..8a05720 100644 --- a/workflows/taxprofiler.nf +++ b/workflows/taxprofiler.nf @@ -118,7 +118,6 @@ workflow TAXPROFILER { /* MODULE: PERFORM SHORT READ RUN MERGING - */ // Remove run accession to allow grouping by sample. Will only merge // if pairment type is the same. @@ -128,6 +127,7 @@ workflow TAXPROFILER { // e.g. `home jfellows Documents git nf-core taxprofiler testing work 68 9a2c8362add37832a776058d280bb7 2612_se.merged.fastq.gz` // So theoretically need to force this into a list, (but results the can't access meta.id error as incorrect input format) // But second issue >= 2 is MAYBE sufficient because what if merging two paired-end files? Need to chcek if the input channel formatted correctly for this? Need to check... + ch_processed_for_combine = ch_shortreads_preprocessed .dump(tag: "prep_for_combine_grouping") .map { @@ -160,6 +160,9 @@ workflow TAXPROFILER { .dump(tag: "skip_combine") .mix( CAT_FASTQ.out.reads ) .dump(tag: "files_for_profiling") + */ + + ch_reads_for_profiling = ch_shortreads_preprocessed /* COMBINE READS WITH POSSIBLE DATABASES @@ -198,6 +201,7 @@ workflow TAXPROFILER { } // We can run Kraken2 one-by-one sample-wise + // TODO Only flatten when paired-end! Causing issue commented out above! ch_input_for_kraken2 = ch_input_for_profiling.kraken2 .dump(tag: "input_to_kraken") .multiMap { From 0e0e8128e868df6ea8a4f4c22d7841f518d84c9f Mon Sep 17 00:00:00 2001 From: sofstam Date: Mon, 28 Mar 2022 13:43:32 +0200 Subject: [PATCH 058/789] Prettier format --- nextflow_schema.json | 563 +++++++++++++++++++++---------------------- 1 file changed, 280 insertions(+), 283 deletions(-) diff --git a/nextflow_schema.json b/nextflow_schema.json index b4b3e07..b61a50e 100644 --- a/nextflow_schema.json +++ b/nextflow_schema.json @@ -1,308 +1,305 @@ { - "$schema": "http://json-schema.org/draft-07/schema", - "$id": "https://raw.githubusercontent.com/nf-core/taxprofiler/master/nextflow_schema.json", - "title": "nf-core/taxprofiler pipeline parameters", - "description": "Taxonomic profiling of shotgun metagenomic data", - "type": "object", - "definitions": { - "input_output_options": { - "title": "Input/output options", - "type": "object", - "fa_icon": "fas fa-terminal", - "description": "Define where the pipeline should find input data and save output data.", - "required": [ - "input", - "outdir" - ], - "properties": { - "input": { - "type": "string", - "format": "file-path", - "mimetype": "text/csv", - "pattern": "^\\S+\\.csv$", - "schema": "assets/schema_input.json", - "description": "Path to comma-separated file containing information about the samples in the experiment.", - "help_text": "You will need to create a design file with information about the samples in your experiment before running the pipeline. Use this parameter to specify its location. It has to be a comma-separated file with 3 columns, and a header row. See [usage docs](https://nf-co.re/taxprofiler/usage#samplesheet-input).", - "fa_icon": "fas fa-file-csv" - }, - "outdir": { - "type": "string", - "format": "directory-path", - "description": "The output directory where the results will be saved. You have to use absolute paths to storage on Cloud infrastructure.", - "fa_icon": "fas fa-folder-open" - }, - "email": { - "type": "string", - "description": "Email address for completion summary.", - "fa_icon": "fas fa-envelope", - "help_text": "Set this parameter to your e-mail address to get a summary e-mail with details of the run sent to you when the workflow exits. If set in your user config file (`~/.nextflow/config`) then you don't need to specify this on the command line for every run.", - "pattern": "^([a-zA-Z0-9_\\-\\.]+)@([a-zA-Z0-9_\\-\\.]+)\\.([a-zA-Z]{2,5})$" - }, - "multiqc_title": { - "type": "string", - "description": "MultiQC report title. Printed as page header, used for filename if not otherwise specified.", - "fa_icon": "fas fa-file-signature" - } - } + "$schema": "http://json-schema.org/draft-07/schema", + "$id": "https://raw.githubusercontent.com/nf-core/taxprofiler/master/nextflow_schema.json", + "title": "nf-core/taxprofiler pipeline parameters", + "description": "Taxonomic profiling of shotgun metagenomic data", + "type": "object", + "definitions": { + "input_output_options": { + "title": "Input/output options", + "type": "object", + "fa_icon": "fas fa-terminal", + "description": "Define where the pipeline should find input data and save output data.", + "required": ["input", "outdir"], + "properties": { + "input": { + "type": "string", + "format": "file-path", + "mimetype": "text/csv", + "pattern": "^\\S+\\.csv$", + "schema": "assets/schema_input.json", + "description": "Path to comma-separated file containing information about the samples in the experiment.", + "help_text": "You will need to create a design file with information about the samples in your experiment before running the pipeline. Use this parameter to specify its location. It has to be a comma-separated file with 3 columns, and a header row. See [usage docs](https://nf-co.re/taxprofiler/usage#samplesheet-input).", + "fa_icon": "fas fa-file-csv" }, - "reference_genome_options": { - "title": "Reference genome options", - "type": "object", - "fa_icon": "fas fa-dna", - "description": "Reference genome related files and options required for the workflow.", - "properties": { - "genome": { - "type": "string", - "description": "Name of iGenomes reference.", - "fa_icon": "fas fa-book", - "help_text": "If using a reference genome configured in the pipeline using iGenomes, use this parameter to give the ID for the reference. This is then used to build the full paths for all required reference genome files e.g. `--genome GRCh38`. \n\nSee the [nf-core website docs](https://nf-co.re/usage/reference_genomes) for more details." - }, - "igenomes_base": { - "type": "string", - "format": "directory-path", - "description": "Directory / URL base for iGenomes references.", - "default": "s3://ngi-igenomes/igenomes", - "fa_icon": "fas fa-cloud-download-alt", - "hidden": true - }, - "igenomes_ignore": { - "type": "boolean", - "description": "Do not load the iGenomes reference config.", - "fa_icon": "fas fa-ban", - "hidden": true, - "help_text": "Do not load `igenomes.config` when running the pipeline. You may choose this option if you observe clashes between custom parameters and those supplied in `igenomes.config`." - } - } + "outdir": { + "type": "string", + "format": "directory-path", + "description": "The output directory where the results will be saved. You have to use absolute paths to storage on Cloud infrastructure.", + "fa_icon": "fas fa-folder-open" }, - "institutional_config_options": { - "title": "Institutional config options", - "type": "object", - "fa_icon": "fas fa-university", - "description": "Parameters used to describe centralised config profiles. These should not be edited.", - "help_text": "The centralised nf-core configuration profiles use a handful of pipeline parameters to describe themselves. This information is then printed to the Nextflow log when you run a pipeline. You should not need to change these values when you run a pipeline.", - "properties": { - "custom_config_version": { - "type": "string", - "description": "Git commit id for Institutional configs.", - "default": "master", - "hidden": true, - "fa_icon": "fas fa-users-cog" - }, - "custom_config_base": { - "type": "string", - "description": "Base directory for Institutional configs.", - "default": "https://raw.githubusercontent.com/nf-core/configs/master", - "hidden": true, - "help_text": "If you're running offline, Nextflow will not be able to fetch the institutional config files from the internet. If you don't need them, then this is not a problem. If you do need them, you should download the files from the repo and tell Nextflow where to find them with this parameter.", - "fa_icon": "fas fa-users-cog" - }, - "config_profile_name": { - "type": "string", - "description": "Institutional config name.", - "hidden": true, - "fa_icon": "fas fa-users-cog" - }, - "config_profile_description": { - "type": "string", - "description": "Institutional config description.", - "hidden": true, - "fa_icon": "fas fa-users-cog" - }, - "config_profile_contact": { - "type": "string", - "description": "Institutional config contact information.", - "hidden": true, - "fa_icon": "fas fa-users-cog" - }, - "config_profile_url": { - "type": "string", - "description": "Institutional config URL link.", - "hidden": true, - "fa_icon": "fas fa-users-cog" - } - } + "email": { + "type": "string", + "description": "Email address for completion summary.", + "fa_icon": "fas fa-envelope", + "help_text": "Set this parameter to your e-mail address to get a summary e-mail with details of the run sent to you when the workflow exits. If set in your user config file (`~/.nextflow/config`) then you don't need to specify this on the command line for every run.", + "pattern": "^([a-zA-Z0-9_\\-\\.]+)@([a-zA-Z0-9_\\-\\.]+)\\.([a-zA-Z]{2,5})$" }, - "max_job_request_options": { - "title": "Max job request options", - "type": "object", - "fa_icon": "fab fa-acquisitions-incorporated", - "description": "Set the top limit for requested resources for any single job.", - "help_text": "If you are running on a smaller system, a pipeline step requesting more resources than are available may cause the Nextflow to stop the run with an error. These options allow you to cap the maximum resources requested by any single job so that the pipeline will run on your system.\n\nNote that you can not _increase_ the resources requested by any job using these options. For that you will need your own configuration file. See [the nf-core website](https://nf-co.re/usage/configuration) for details.", - "properties": { - "max_cpus": { - "type": "integer", - "description": "Maximum number of CPUs that can be requested for any single job.", - "default": 16, - "fa_icon": "fas fa-microchip", - "hidden": true, - "help_text": "Use to set an upper-limit for the CPU requirement for each process. Should be an integer e.g. `--max_cpus 1`" - }, - "max_memory": { - "type": "string", - "description": "Maximum amount of memory that can be requested for any single job.", - "default": "128.GB", - "fa_icon": "fas fa-memory", - "pattern": "^\\d+(\\.\\d+)?\\.?\\s*(K|M|G|T)?B$", - "hidden": true, - "help_text": "Use to set an upper-limit for the memory requirement for each process. Should be a string in the format integer-unit e.g. `--max_memory '8.GB'`" - }, - "max_time": { - "type": "string", - "description": "Maximum amount of time that can be requested for any single job.", - "default": "240.h", - "fa_icon": "far fa-clock", - "pattern": "^(\\d+\\.?\\s*(s|m|h|day)\\s*)+$", - "hidden": true, - "help_text": "Use to set an upper-limit for the time requirement for each process. Should be a string in the format integer-unit e.g. `--max_time '2.h'`" - } - } + "multiqc_title": { + "type": "string", + "description": "MultiQC report title. Printed as page header, used for filename if not otherwise specified.", + "fa_icon": "fas fa-file-signature" + } + } + }, + "reference_genome_options": { + "title": "Reference genome options", + "type": "object", + "fa_icon": "fas fa-dna", + "description": "Reference genome related files and options required for the workflow.", + "properties": { + "genome": { + "type": "string", + "description": "Name of iGenomes reference.", + "fa_icon": "fas fa-book", + "help_text": "If using a reference genome configured in the pipeline using iGenomes, use this parameter to give the ID for the reference. This is then used to build the full paths for all required reference genome files e.g. `--genome GRCh38`. \n\nSee the [nf-core website docs](https://nf-co.re/usage/reference_genomes) for more details." }, - "generic_options": { - "title": "Generic options", - "type": "object", - "fa_icon": "fas fa-file-import", - "description": "Less common options for the pipeline, typically set in a config file.", - "help_text": "These options are common to all nf-core pipelines and allow you to customise some of the core preferences for how the pipeline runs.\n\nTypically these options would be set in a Nextflow config file loaded for all pipeline runs, such as `~/.nextflow/config`.", - "properties": { - "help": { - "type": "boolean", - "description": "Display help text.", - "fa_icon": "fas fa-question-circle", - "hidden": true - }, - "publish_dir_mode": { - "type": "string", - "default": "copy", - "description": "Method used to save pipeline results to output directory.", - "help_text": "The Nextflow `publishDir` option specifies which intermediate files should be saved to the output directory. This option tells the pipeline what method should be used to move these files. See [Nextflow docs](https://www.nextflow.io/docs/latest/process.html#publishdir) for details.", - "fa_icon": "fas fa-copy", - "enum": [ - "symlink", - "rellink", - "link", - "copy", - "copyNoFollow", - "move" - ], - "hidden": true - }, - "email_on_fail": { - "type": "string", - "description": "Email address for completion summary, only when pipeline fails.", - "fa_icon": "fas fa-exclamation-triangle", - "pattern": "^([a-zA-Z0-9_\\-\\.]+)@([a-zA-Z0-9_\\-\\.]+)\\.([a-zA-Z]{2,5})$", - "help_text": "An email address to send a summary email to when the pipeline is completed - ONLY sent if the pipeline does not exit successfully.", - "hidden": true - }, - "plaintext_email": { - "type": "boolean", - "description": "Send plain-text email instead of HTML.", - "fa_icon": "fas fa-remove-format", - "hidden": true - }, - "max_multiqc_email_size": { - "type": "string", - "description": "File size limit when attaching MultiQC reports to summary emails.", - "pattern": "^\\d+(\\.\\d+)?\\.?\\s*(K|M|G|T)?B$", - "default": "25.MB", - "fa_icon": "fas fa-file-upload", - "hidden": true - }, - "monochrome_logs": { - "type": "boolean", - "description": "Do not use coloured log outputs.", - "fa_icon": "fas fa-palette", - "hidden": true - }, - "multiqc_config": { - "type": "string", - "description": "Custom config file to supply to MultiQC.", - "fa_icon": "fas fa-cog", - "hidden": true - }, - "tracedir": { - "type": "string", - "description": "Directory to keep pipeline Nextflow logs and reports.", - "default": "${params.outdir}/pipeline_info", - "fa_icon": "fas fa-cogs", - "hidden": true - }, - "validate_params": { - "type": "boolean", - "description": "Boolean whether to validate parameters against the schema at runtime", - "default": true, - "fa_icon": "fas fa-check-square", - "hidden": true - }, - "show_hidden_params": { - "type": "boolean", - "fa_icon": "far fa-eye-slash", - "description": "Show all params when using `--help`", - "hidden": true, - "help_text": "By default, parameters set as _hidden_ in the schema are not shown on the command line when a user runs with `--help`. Specifying this option will tell the pipeline to show all parameters." - }, - "enable_conda": { - "type": "boolean", - "description": "Run this workflow with Conda. You can also use '-profile conda' instead of providing this parameter.", - "hidden": true, - "fa_icon": "fas fa-bacon" - } - } + "igenomes_base": { + "type": "string", + "format": "directory-path", + "description": "Directory / URL base for iGenomes references.", + "default": "s3://ngi-igenomes/igenomes", + "fa_icon": "fas fa-cloud-download-alt", + "hidden": true + }, + "igenomes_ignore": { + "type": "boolean", + "description": "Do not load the iGenomes reference config.", + "fa_icon": "fas fa-ban", + "hidden": true, + "help_text": "Do not load `igenomes.config` when running the pipeline. You may choose this option if you observe clashes between custom parameters and those supplied in `igenomes.config`." } + } }, - "allOf": [ - { - "$ref": "#/definitions/input_output_options" + "institutional_config_options": { + "title": "Institutional config options", + "type": "object", + "fa_icon": "fas fa-university", + "description": "Parameters used to describe centralised config profiles. These should not be edited.", + "help_text": "The centralised nf-core configuration profiles use a handful of pipeline parameters to describe themselves. This information is then printed to the Nextflow log when you run a pipeline. You should not need to change these values when you run a pipeline.", + "properties": { + "custom_config_version": { + "type": "string", + "description": "Git commit id for Institutional configs.", + "default": "master", + "hidden": true, + "fa_icon": "fas fa-users-cog" + }, + "custom_config_base": { + "type": "string", + "description": "Base directory for Institutional configs.", + "default": "https://raw.githubusercontent.com/nf-core/configs/master", + "hidden": true, + "help_text": "If you're running offline, Nextflow will not be able to fetch the institutional config files from the internet. If you don't need them, then this is not a problem. If you do need them, you should download the files from the repo and tell Nextflow where to find them with this parameter.", + "fa_icon": "fas fa-users-cog" }, - { - "$ref": "#/definitions/reference_genome_options" + "config_profile_name": { + "type": "string", + "description": "Institutional config name.", + "hidden": true, + "fa_icon": "fas fa-users-cog" }, - { - "$ref": "#/definitions/institutional_config_options" + "config_profile_description": { + "type": "string", + "description": "Institutional config description.", + "hidden": true, + "fa_icon": "fas fa-users-cog" }, - { - "$ref": "#/definitions/max_job_request_options" + "config_profile_contact": { + "type": "string", + "description": "Institutional config contact information.", + "hidden": true, + "fa_icon": "fas fa-users-cog" }, - { - "$ref": "#/definitions/generic_options" + "config_profile_url": { + "type": "string", + "description": "Institutional config URL link.", + "hidden": true, + "fa_icon": "fas fa-users-cog" } - ], - "properties": { - "databases": { - "type": "string", - "default": "None" + } + }, + "max_job_request_options": { + "title": "Max job request options", + "type": "object", + "fa_icon": "fab fa-acquisitions-incorporated", + "description": "Set the top limit for requested resources for any single job.", + "help_text": "If you are running on a smaller system, a pipeline step requesting more resources than are available may cause the Nextflow to stop the run with an error. These options allow you to cap the maximum resources requested by any single job so that the pipeline will run on your system.\n\nNote that you can not _increase_ the resources requested by any job using these options. For that you will need your own configuration file. See [the nf-core website](https://nf-co.re/usage/configuration) for details.", + "properties": { + "max_cpus": { + "type": "integer", + "description": "Maximum number of CPUs that can be requested for any single job.", + "default": 16, + "fa_icon": "fas fa-microchip", + "hidden": true, + "help_text": "Use to set an upper-limit for the CPU requirement for each process. Should be an integer e.g. `--max_cpus 1`" }, - "shortread_clipmerge": { - "type": "boolean" + "max_memory": { + "type": "string", + "description": "Maximum amount of memory that can be requested for any single job.", + "default": "128.GB", + "fa_icon": "fas fa-memory", + "pattern": "^\\d+(\\.\\d+)?\\.?\\s*(K|M|G|T)?B$", + "hidden": true, + "help_text": "Use to set an upper-limit for the memory requirement for each process. Should be a string in the format integer-unit e.g. `--max_memory '8.GB'`" }, - "shortread_excludeunmerged": { - "type": "boolean", - "default": true + "max_time": { + "type": "string", + "description": "Maximum amount of time that can be requested for any single job.", + "default": "240.h", + "fa_icon": "far fa-clock", + "pattern": "^(\\d+\\.?\\s*(s|m|h|day)\\s*)+$", + "hidden": true, + "help_text": "Use to set an upper-limit for the time requirement for each process. Should be a string in the format integer-unit e.g. `--max_time '2.h'`" + } + } + }, + "generic_options": { + "title": "Generic options", + "type": "object", + "fa_icon": "fas fa-file-import", + "description": "Less common options for the pipeline, typically set in a config file.", + "help_text": "These options are common to all nf-core pipelines and allow you to customise some of the core preferences for how the pipeline runs.\n\nTypically these options would be set in a Nextflow config file loaded for all pipeline runs, such as `~/.nextflow/config`.", + "properties": { + "help": { + "type": "boolean", + "description": "Display help text.", + "fa_icon": "fas fa-question-circle", + "hidden": true }, - "longread_clip": { - "type": "boolean" + "publish_dir_mode": { + "type": "string", + "default": "copy", + "description": "Method used to save pipeline results to output directory.", + "help_text": "The Nextflow `publishDir` option specifies which intermediate files should be saved to the output directory. This option tells the pipeline what method should be used to move these files. See [Nextflow docs](https://www.nextflow.io/docs/latest/process.html#publishdir) for details.", + "fa_icon": "fas fa-copy", + "enum": [ + "symlink", + "rellink", + "link", + "copy", + "copyNoFollow", + "move" + ], + "hidden": true }, - "run_malt": { - "type": "boolean" + "email_on_fail": { + "type": "string", + "description": "Email address for completion summary, only when pipeline fails.", + "fa_icon": "fas fa-exclamation-triangle", + "pattern": "^([a-zA-Z0-9_\\-\\.]+)@([a-zA-Z0-9_\\-\\.]+)\\.([a-zA-Z]{2,5})$", + "help_text": "An email address to send a summary email to when the pipeline is completed - ONLY sent if the pipeline does not exit successfully.", + "hidden": true }, - "malt_mode": { - "type": "string", - "default": "BlastN" + "plaintext_email": { + "type": "boolean", + "description": "Send plain-text email instead of HTML.", + "fa_icon": "fas fa-remove-format", + "hidden": true }, - "run_kraken2": { - "type": "boolean" + "max_multiqc_email_size": { + "type": "string", + "description": "File size limit when attaching MultiQC reports to summary emails.", + "pattern": "^\\d+(\\.\\d+)?\\.?\\s*(K|M|G|T)?B$", + "default": "25.MB", + "fa_icon": "fas fa-file-upload", + "hidden": true }, - "run_centrifuge": { - "type": "boolean" + "monochrome_logs": { + "type": "boolean", + "description": "Do not use coloured log outputs.", + "fa_icon": "fas fa-palette", + "hidden": true }, - "centrifuge_save_unaligned": { - "type": "boolean" + "multiqc_config": { + "type": "string", + "description": "Custom config file to supply to MultiQC.", + "fa_icon": "fas fa-cog", + "hidden": true }, - "centrifuge_save_aligned": { - "type": "boolean" + "tracedir": { + "type": "string", + "description": "Directory to keep pipeline Nextflow logs and reports.", + "default": "${params.outdir}/pipeline_info", + "fa_icon": "fas fa-cogs", + "hidden": true }, - "centrifuge_sam_format": { - "type": "boolean" + "validate_params": { + "type": "boolean", + "description": "Boolean whether to validate parameters against the schema at runtime", + "default": true, + "fa_icon": "fas fa-check-square", + "hidden": true + }, + "show_hidden_params": { + "type": "boolean", + "fa_icon": "far fa-eye-slash", + "description": "Show all params when using `--help`", + "hidden": true, + "help_text": "By default, parameters set as _hidden_ in the schema are not shown on the command line when a user runs with `--help`. Specifying this option will tell the pipeline to show all parameters." + }, + "enable_conda": { + "type": "boolean", + "description": "Run this workflow with Conda. You can also use '-profile conda' instead of providing this parameter.", + "hidden": true, + "fa_icon": "fas fa-bacon" } + } + } + }, + "allOf": [ + { + "$ref": "#/definitions/input_output_options" + }, + { + "$ref": "#/definitions/reference_genome_options" + }, + { + "$ref": "#/definitions/institutional_config_options" + }, + { + "$ref": "#/definitions/max_job_request_options" + }, + { + "$ref": "#/definitions/generic_options" + } + ], + "properties": { + "databases": { + "type": "string", + "default": "None" + }, + "shortread_clipmerge": { + "type": "boolean" + }, + "shortread_excludeunmerged": { + "type": "boolean", + "default": true + }, + "longread_clip": { + "type": "boolean" + }, + "run_malt": { + "type": "boolean" + }, + "malt_mode": { + "type": "string", + "default": "BlastN" + }, + "run_kraken2": { + "type": "boolean" + }, + "run_centrifuge": { + "type": "boolean" + }, + "centrifuge_save_unaligned": { + "type": "boolean" + }, + "centrifuge_save_aligned": { + "type": "boolean" + }, + "centrifuge_sam_format": { + "type": "boolean" } + } } From 231253227c7e59c1c108cf4cf4953cb89c4f6f5f Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Mon, 28 Mar 2022 16:38:10 +0200 Subject: [PATCH 059/789] Remove run merging for now due to complexity --- conf/modules.config | 4 +- subworkflows/local/shortread_fastp.nf | 17 +++++---- workflows/taxprofiler.nf | 55 ++------------------------- 3 files changed, 14 insertions(+), 62 deletions(-) diff --git a/conf/modules.config b/conf/modules.config index 41f471f..a9bc3a1 100644 --- a/conf/modules.config +++ b/conf/modules.config @@ -105,7 +105,7 @@ process { pattern: '*.{rma6,tab,text,sam,log}' ] ext.args = { "${meta.db_params}" } - ext.prefix = { "${meta.id}-${meta.db_name}" } + ext.prefix = { "${meta.id}-${meta.run_accession}-${meta.db_name}" } } withName: KRAKEN2_KRAKEN2 { @@ -115,7 +115,7 @@ process { pattern: '*.{fastq.gz,txt}' ] ext.args = { "${meta.db_params}" } - ext.prefix = { "${meta.id}-${meta.db_name}" } + ext.prefix = { "${meta.id}-${meta.run_accession}-${meta.db_name}" } } withName: CUSTOM_DUMPSOFTWAREVERSIONS { diff --git a/subworkflows/local/shortread_fastp.nf b/subworkflows/local/shortread_fastp.nf index d4d706e..c2e435c 100644 --- a/subworkflows/local/shortread_fastp.nf +++ b/subworkflows/local/shortread_fastp.nf @@ -28,15 +28,16 @@ workflow SHORTREAD_FASTP { FASTP_PAIRED ( ch_input_for_fastp.paired, false, params.shortread_clipmerge_mergepairs ) if ( params.shortread_clipmerge_mergepairs ) { - // TODO update to replace meta suffix - ch_fastp_reads_prepped = FASTP_PAIRED.out.reads_merged - .mix( FASTP_SINGLE.out.reads ) - .map { - meta, reads -> - def meta_new = meta.clone() - meta_new['single_end'] = 1 - [ meta_new, reads ] + ch_fastp_reads_prepped_pe = FASTP_PAIRED.out.reads_merged + .map { + meta, reads -> + def meta_new = meta.clone() + meta_new['single_end'] = 1 + [ meta_new, reads ] } + + ch_fastp_reads_prepped = ch_fastp_reads_prepped_pe.mix( FASTP_SINGLE.out.reads ) + } else { ch_fastp_reads_prepped = FASTP_PAIRED.out.reads .mix( FASTP_SINGLE.out.reads ) diff --git a/workflows/taxprofiler.nf b/workflows/taxprofiler.nf index 8a05720..e73d94d 100644 --- a/workflows/taxprofiler.nf +++ b/workflows/taxprofiler.nf @@ -116,63 +116,15 @@ workflow TAXPROFILER { ch_longreads_preprocessed = INPUT_CHECK.out.nanopore } - /* - MODULE: PERFORM SHORT READ RUN MERGING - - // Remove run accession to allow grouping by sample. Will only merge - // if pairment type is the same. - - // TODO Current Branch system currently problematic - when single file not in a list, splits at - // `/` so makes list >= 2, so tries to merge, but then breaks kraken downstream - // e.g. `home jfellows Documents git nf-core taxprofiler testing work 68 9a2c8362add37832a776058d280bb7 2612_se.merged.fastq.gz` - // So theoretically need to force this into a list, (but results the can't access meta.id error as incorrect input format) - // But second issue >= 2 is MAYBE sufficient because what if merging two paired-end files? Need to chcek if the input channel formatted correctly for this? Need to check... - - ch_processed_for_combine = ch_shortreads_preprocessed - .dump(tag: "prep_for_combine_grouping") - .map { - meta, reads -> - def meta_new = meta.clone() - - // remove run accession to allow group by sample - meta_new.remove('run_accession') - - // update id to prevent file name clashes when unable to group - // unmerged PE and SE runs of same sample - def type = meta_new['single_end'] ? "_se" : "_pe" - meta_new['id'] = meta['id'] + type - - [ meta_new, reads ] - } - .groupTuple ( by: 0 ) - .dump(tag: "files_for_cat_fastq_branch") - .branch{ - combine: it[1] && it[1].size() > 1 - skip: true - } - - // NOTE: this does not allow CATing of SE & PE runs of same sample - // when --shortread_clipmerge_mergepairs is false - ch_processed_for_combine.combine.dump(tag: "input_into_cat_fastq") - CAT_FASTQ ( ch_processed_for_combine.combine ) - - ch_reads_for_profiling = ch_processed_for_combine.skip - .dump(tag: "skip_combine") - .mix( CAT_FASTQ.out.reads ) - .dump(tag: "files_for_profiling") - */ - - ch_reads_for_profiling = ch_shortreads_preprocessed - /* COMBINE READS WITH POSSIBLE DATABASES */ // e.g. output [DUMP: reads_plus_db] [['id':'2612', 'run_accession':'combined', 'instrument_platform':'ILLUMINA', 'single_end':1], /2612.merged.fastq.gz, ['tool':'malt', 'db_name':'mal95', 'db_params':'"-id 90"'], /malt90] - ch_input_for_profiling = ch_reads_for_profiling + ch_input_for_profiling = ch_shortreads_preprocessed .mix( ch_longreads_preprocessed ) .combine(DB_CHECK.out.dbs) - .dump(tag: "reads_plus_db") + .dump(tag: "reads_plus_db_clean") .branch { malt: it[2]['tool'] == 'malt' kraken2: it[2]['tool'] == 'kraken2' @@ -201,12 +153,11 @@ workflow TAXPROFILER { } // We can run Kraken2 one-by-one sample-wise - // TODO Only flatten when paired-end! Causing issue commented out above! ch_input_for_kraken2 = ch_input_for_profiling.kraken2 .dump(tag: "input_to_kraken") .multiMap { it -> - reads: [ it[0] + it[2], it[1].flatten() ] + reads: [ it[0] + it[2], it[1] ] db: it[3] } From 98dc8014a526209b24bdd55e321c10b2dc007a88 Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Mon, 28 Mar 2022 16:46:45 +0200 Subject: [PATCH 060/789] Fix kraken2 module --- modules.json | 8 ++++---- modules/nf-core/modules/kraken2/kraken2/main.nf | 3 +-- 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/modules.json b/modules.json index 9e6428a..2494fc1 100644 --- a/modules.json +++ b/modules.json @@ -24,12 +24,12 @@ "multiqc": { "git_sha": "e745e167c1020928ef20ea1397b6b4d230681b4d" }, - "untar": { - "git_sha": "e080f4c8acf5760039ed12ec1f206170f3f9a918" - }, "porechop": { "git_sha": "e20e57f90b6787ac9a010a980cf6ea98bd990046" + }, + "untar": { + "git_sha": "e080f4c8acf5760039ed12ec1f206170f3f9a918" } } } -} +} \ No newline at end of file diff --git a/modules/nf-core/modules/kraken2/kraken2/main.nf b/modules/nf-core/modules/kraken2/kraken2/main.nf index 52351f5..3ec5df5 100644 --- a/modules/nf-core/modules/kraken2/kraken2/main.nf +++ b/modules/nf-core/modules/kraken2/kraken2/main.nf @@ -32,12 +32,11 @@ process KRAKEN2_KRAKEN2 { --threads $task.cpus \\ --unclassified-out $unclassified \\ --classified-out $classified \\ - $args \\ --report ${prefix}.kraken2.report.txt \\ --gzip-compressed \\ $paired \\ + $args \\ $reads - pigz -p $task.cpus *.fastq From eada201eb28f3572af5481a6d69e4f87407a352d Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Mon, 28 Mar 2022 16:47:37 +0200 Subject: [PATCH 061/789] Prettier --- modules.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules.json b/modules.json index 2494fc1..34ef9f1 100644 --- a/modules.json +++ b/modules.json @@ -32,4 +32,4 @@ } } } -} \ No newline at end of file +} From 94e5cfef4aa7c2dd69e72e7b1b12439110ed1a09 Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Mon, 28 Mar 2022 18:20:10 +0200 Subject: [PATCH 062/789] Filter long reads for MALT, bump cpus for FastQC for minigut to pass --- conf/base.config | 2 +- conf/test.config | 15 ++++++++++++++- subworkflows/local/db_check.nf | 2 +- workflows/taxprofiler.nf | 6 ++++++ 4 files changed, 22 insertions(+), 3 deletions(-) diff --git a/conf/base.config b/conf/base.config index 0c65574..2f0f97f 100644 --- a/conf/base.config +++ b/conf/base.config @@ -27,7 +27,7 @@ process { // TODO nf-core: Customise requirements for specific processes. // See https://www.nextflow.io/docs/latest/config.html#config-process-selectors withLabel:process_low { - cpus = { check_max( 2 * task.attempt, 'cpus' ) } + cpus = { check_max( 4 * task.attempt, 'cpus' ) } memory = { check_max( 12.GB * task.attempt, 'memory' ) } time = { check_max( 4.h * task.attempt, 'time' ) } } diff --git a/conf/test.config b/conf/test.config index 92a10e4..26972df 100644 --- a/conf/test.config +++ b/conf/test.config @@ -15,7 +15,7 @@ params { config_profile_description = 'Minimal test dataset to check pipeline function' // Limit resources so that this can run on GitHub Actions - max_cpus = 2 + max_cpus = 8 max_memory = '6.GB' max_time = '6.h' @@ -29,3 +29,16 @@ params { shortread_clipmerge = true } + +process { + withName: FASTQC { + cpus = { check_max( 8 * task.attempt, 'cpus' ) } + memory = { check_max( 6.GB * task.attempt, 'memory' ) } + time = { check_max( 6.h * task.attempt, 'time' ) } + } + withName: FASTQC_PROCESSED { + cpus = { check_max( 8 * task.attempt, 'cpus' ) } + memory = { check_max( 6.GB * task.attempt, 'memory' ) } + time = { check_max( 6.h * task.attempt, 'time' ) } + } +} diff --git a/subworkflows/local/db_check.nf b/subworkflows/local/db_check.nf index 96f815a..bda5cfe 100644 --- a/subworkflows/local/db_check.nf +++ b/subworkflows/local/db_check.nf @@ -14,7 +14,7 @@ workflow DB_CHECK { // TODO: make database sheet check // Checks: // 1) no duplicates, - // 2) dbs with no special arguments does not have quotes, e.g. just `,,` and NOT `,"",` + // 2) args do not have quotes, e.g. just `,,` and NOT `,"",` parsed_samplesheet = DATABASE_CHECK ( dbsheet ) .csv .splitCsv ( header:true, sep:',' ) diff --git a/workflows/taxprofiler.nf b/workflows/taxprofiler.nf index e73d94d..af5c54d 100644 --- a/workflows/taxprofiler.nf +++ b/workflows/taxprofiler.nf @@ -90,9 +90,11 @@ workflow TAXPROFILER { MODULE: Run FastQC */ ch_input_for_fastqc = INPUT_CHECK.out.fastq.mix( INPUT_CHECK.out.nanopore ).dump(tag: "input_to_fastq") + FASTQC ( ch_input_for_fastqc ) + ch_versions = ch_versions.mix(FASTQC.out.versions.first()) CUSTOM_DUMPSOFTWAREVERSIONS ( @@ -137,7 +139,11 @@ workflow TAXPROFILER { // We groupTuple to have all samples in one channel for MALT as database // loading takes a long time, so we only want to run it once per database + // TODO document somewhere we only accept illumina short reads for MALT? ch_input_for_malt = ch_input_for_profiling.malt + .dump(tag: "input_to_malt_prefilter") + .filter { it[0]['instrument_platform'] == 'ILLUMINA' } + .dump(tag: "input_to_malt_postfilter") .map { it -> def temp_meta = [ id: it[2]['db_name']] + it[2] From 04fb6f412752811ac8fc621c8730d418986a1d08 Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Mon, 28 Mar 2022 20:38:16 +0200 Subject: [PATCH 063/789] Use new resources for test data --- conf/test.config | 15 +-------------- 1 file changed, 1 insertion(+), 14 deletions(-) diff --git a/conf/test.config b/conf/test.config index 26972df..92a10e4 100644 --- a/conf/test.config +++ b/conf/test.config @@ -15,7 +15,7 @@ params { config_profile_description = 'Minimal test dataset to check pipeline function' // Limit resources so that this can run on GitHub Actions - max_cpus = 8 + max_cpus = 2 max_memory = '6.GB' max_time = '6.h' @@ -29,16 +29,3 @@ params { shortread_clipmerge = true } - -process { - withName: FASTQC { - cpus = { check_max( 8 * task.attempt, 'cpus' ) } - memory = { check_max( 6.GB * task.attempt, 'memory' ) } - time = { check_max( 6.h * task.attempt, 'time' ) } - } - withName: FASTQC_PROCESSED { - cpus = { check_max( 8 * task.attempt, 'cpus' ) } - memory = { check_max( 6.GB * task.attempt, 'memory' ) } - time = { check_max( 6.h * task.attempt, 'time' ) } - } -} From d25f97c5061ef7759196f04017ec2b7710075e48 Mon Sep 17 00:00:00 2001 From: sofstam Date: Mon, 28 Mar 2022 22:08:05 +0200 Subject: [PATCH 064/789] Prettier format --- nextflow_schema.json | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/nextflow_schema.json b/nextflow_schema.json index b61a50e..f1b1de0 100644 --- a/nextflow_schema.json +++ b/nextflow_schema.json @@ -10,7 +10,10 @@ "type": "object", "fa_icon": "fas fa-terminal", "description": "Define where the pipeline should find input data and save output data.", - "required": ["input", "outdir"], + "required": [ + "input", + "outdir" + ], "properties": { "input": { "type": "string", From c552819c725a51fe2f04af981ebd90c311b33c30 Mon Sep 17 00:00:00 2001 From: Sofia Stamouli Date: Mon, 28 Mar 2022 22:15:31 +0200 Subject: [PATCH 065/789] Apply prettier again --- nextflow_schema.json | 556 +++++++++++++++++++++---------------------- 1 file changed, 273 insertions(+), 283 deletions(-) diff --git a/nextflow_schema.json b/nextflow_schema.json index f1b1de0..0e52ee5 100644 --- a/nextflow_schema.json +++ b/nextflow_schema.json @@ -1,308 +1,298 @@ { - "$schema": "http://json-schema.org/draft-07/schema", - "$id": "https://raw.githubusercontent.com/nf-core/taxprofiler/master/nextflow_schema.json", - "title": "nf-core/taxprofiler pipeline parameters", - "description": "Taxonomic profiling of shotgun metagenomic data", - "type": "object", - "definitions": { - "input_output_options": { - "title": "Input/output options", - "type": "object", - "fa_icon": "fas fa-terminal", - "description": "Define where the pipeline should find input data and save output data.", - "required": [ - "input", - "outdir" - ], - "properties": { - "input": { - "type": "string", - "format": "file-path", - "mimetype": "text/csv", - "pattern": "^\\S+\\.csv$", - "schema": "assets/schema_input.json", - "description": "Path to comma-separated file containing information about the samples in the experiment.", - "help_text": "You will need to create a design file with information about the samples in your experiment before running the pipeline. Use this parameter to specify its location. It has to be a comma-separated file with 3 columns, and a header row. See [usage docs](https://nf-co.re/taxprofiler/usage#samplesheet-input).", - "fa_icon": "fas fa-file-csv" + "$schema": "http://json-schema.org/draft-07/schema", + "$id": "https://raw.githubusercontent.com/nf-core/taxprofiler/master/nextflow_schema.json", + "title": "nf-core/taxprofiler pipeline parameters", + "description": "Taxonomic profiling of shotgun metagenomic data", + "type": "object", + "definitions": { + "input_output_options": { + "title": "Input/output options", + "type": "object", + "fa_icon": "fas fa-terminal", + "description": "Define where the pipeline should find input data and save output data.", + "required": ["input", "outdir"], + "properties": { + "input": { + "type": "string", + "format": "file-path", + "mimetype": "text/csv", + "pattern": "^\\S+\\.csv$", + "schema": "assets/schema_input.json", + "description": "Path to comma-separated file containing information about the samples in the experiment.", + "help_text": "You will need to create a design file with information about the samples in your experiment before running the pipeline. Use this parameter to specify its location. It has to be a comma-separated file with 3 columns, and a header row. See [usage docs](https://nf-co.re/taxprofiler/usage#samplesheet-input).", + "fa_icon": "fas fa-file-csv" + }, + "outdir": { + "type": "string", + "format": "directory-path", + "description": "The output directory where the results will be saved. You have to use absolute paths to storage on Cloud infrastructure.", + "fa_icon": "fas fa-folder-open" + }, + "email": { + "type": "string", + "description": "Email address for completion summary.", + "fa_icon": "fas fa-envelope", + "help_text": "Set this parameter to your e-mail address to get a summary e-mail with details of the run sent to you when the workflow exits. If set in your user config file (`~/.nextflow/config`) then you don't need to specify this on the command line for every run.", + "pattern": "^([a-zA-Z0-9_\\-\\.]+)@([a-zA-Z0-9_\\-\\.]+)\\.([a-zA-Z]{2,5})$" + }, + "multiqc_title": { + "type": "string", + "description": "MultiQC report title. Printed as page header, used for filename if not otherwise specified.", + "fa_icon": "fas fa-file-signature" + } + } }, - "outdir": { - "type": "string", - "format": "directory-path", - "description": "The output directory where the results will be saved. You have to use absolute paths to storage on Cloud infrastructure.", - "fa_icon": "fas fa-folder-open" + "reference_genome_options": { + "title": "Reference genome options", + "type": "object", + "fa_icon": "fas fa-dna", + "description": "Reference genome related files and options required for the workflow.", + "properties": { + "genome": { + "type": "string", + "description": "Name of iGenomes reference.", + "fa_icon": "fas fa-book", + "help_text": "If using a reference genome configured in the pipeline using iGenomes, use this parameter to give the ID for the reference. This is then used to build the full paths for all required reference genome files e.g. `--genome GRCh38`. \n\nSee the [nf-core website docs](https://nf-co.re/usage/reference_genomes) for more details." + }, + "igenomes_base": { + "type": "string", + "format": "directory-path", + "description": "Directory / URL base for iGenomes references.", + "default": "s3://ngi-igenomes/igenomes", + "fa_icon": "fas fa-cloud-download-alt", + "hidden": true + }, + "igenomes_ignore": { + "type": "boolean", + "description": "Do not load the iGenomes reference config.", + "fa_icon": "fas fa-ban", + "hidden": true, + "help_text": "Do not load `igenomes.config` when running the pipeline. You may choose this option if you observe clashes between custom parameters and those supplied in `igenomes.config`." + } + } }, - "email": { - "type": "string", - "description": "Email address for completion summary.", - "fa_icon": "fas fa-envelope", - "help_text": "Set this parameter to your e-mail address to get a summary e-mail with details of the run sent to you when the workflow exits. If set in your user config file (`~/.nextflow/config`) then you don't need to specify this on the command line for every run.", - "pattern": "^([a-zA-Z0-9_\\-\\.]+)@([a-zA-Z0-9_\\-\\.]+)\\.([a-zA-Z]{2,5})$" + "institutional_config_options": { + "title": "Institutional config options", + "type": "object", + "fa_icon": "fas fa-university", + "description": "Parameters used to describe centralised config profiles. These should not be edited.", + "help_text": "The centralised nf-core configuration profiles use a handful of pipeline parameters to describe themselves. This information is then printed to the Nextflow log when you run a pipeline. You should not need to change these values when you run a pipeline.", + "properties": { + "custom_config_version": { + "type": "string", + "description": "Git commit id for Institutional configs.", + "default": "master", + "hidden": true, + "fa_icon": "fas fa-users-cog" + }, + "custom_config_base": { + "type": "string", + "description": "Base directory for Institutional configs.", + "default": "https://raw.githubusercontent.com/nf-core/configs/master", + "hidden": true, + "help_text": "If you're running offline, Nextflow will not be able to fetch the institutional config files from the internet. If you don't need them, then this is not a problem. If you do need them, you should download the files from the repo and tell Nextflow where to find them with this parameter.", + "fa_icon": "fas fa-users-cog" + }, + "config_profile_name": { + "type": "string", + "description": "Institutional config name.", + "hidden": true, + "fa_icon": "fas fa-users-cog" + }, + "config_profile_description": { + "type": "string", + "description": "Institutional config description.", + "hidden": true, + "fa_icon": "fas fa-users-cog" + }, + "config_profile_contact": { + "type": "string", + "description": "Institutional config contact information.", + "hidden": true, + "fa_icon": "fas fa-users-cog" + }, + "config_profile_url": { + "type": "string", + "description": "Institutional config URL link.", + "hidden": true, + "fa_icon": "fas fa-users-cog" + } + } }, - "multiqc_title": { - "type": "string", - "description": "MultiQC report title. Printed as page header, used for filename if not otherwise specified.", - "fa_icon": "fas fa-file-signature" - } - } - }, - "reference_genome_options": { - "title": "Reference genome options", - "type": "object", - "fa_icon": "fas fa-dna", - "description": "Reference genome related files and options required for the workflow.", - "properties": { - "genome": { - "type": "string", - "description": "Name of iGenomes reference.", - "fa_icon": "fas fa-book", - "help_text": "If using a reference genome configured in the pipeline using iGenomes, use this parameter to give the ID for the reference. This is then used to build the full paths for all required reference genome files e.g. `--genome GRCh38`. \n\nSee the [nf-core website docs](https://nf-co.re/usage/reference_genomes) for more details." + "max_job_request_options": { + "title": "Max job request options", + "type": "object", + "fa_icon": "fab fa-acquisitions-incorporated", + "description": "Set the top limit for requested resources for any single job.", + "help_text": "If you are running on a smaller system, a pipeline step requesting more resources than are available may cause the Nextflow to stop the run with an error. These options allow you to cap the maximum resources requested by any single job so that the pipeline will run on your system.\n\nNote that you can not _increase_ the resources requested by any job using these options. For that you will need your own configuration file. See [the nf-core website](https://nf-co.re/usage/configuration) for details.", + "properties": { + "max_cpus": { + "type": "integer", + "description": "Maximum number of CPUs that can be requested for any single job.", + "default": 16, + "fa_icon": "fas fa-microchip", + "hidden": true, + "help_text": "Use to set an upper-limit for the CPU requirement for each process. Should be an integer e.g. `--max_cpus 1`" + }, + "max_memory": { + "type": "string", + "description": "Maximum amount of memory that can be requested for any single job.", + "default": "128.GB", + "fa_icon": "fas fa-memory", + "pattern": "^\\d+(\\.\\d+)?\\.?\\s*(K|M|G|T)?B$", + "hidden": true, + "help_text": "Use to set an upper-limit for the memory requirement for each process. Should be a string in the format integer-unit e.g. `--max_memory '8.GB'`" + }, + "max_time": { + "type": "string", + "description": "Maximum amount of time that can be requested for any single job.", + "default": "240.h", + "fa_icon": "far fa-clock", + "pattern": "^(\\d+\\.?\\s*(s|m|h|day)\\s*)+$", + "hidden": true, + "help_text": "Use to set an upper-limit for the time requirement for each process. Should be a string in the format integer-unit e.g. `--max_time '2.h'`" + } + } }, - "igenomes_base": { - "type": "string", - "format": "directory-path", - "description": "Directory / URL base for iGenomes references.", - "default": "s3://ngi-igenomes/igenomes", - "fa_icon": "fas fa-cloud-download-alt", - "hidden": true - }, - "igenomes_ignore": { - "type": "boolean", - "description": "Do not load the iGenomes reference config.", - "fa_icon": "fas fa-ban", - "hidden": true, - "help_text": "Do not load `igenomes.config` when running the pipeline. You may choose this option if you observe clashes between custom parameters and those supplied in `igenomes.config`." + "generic_options": { + "title": "Generic options", + "type": "object", + "fa_icon": "fas fa-file-import", + "description": "Less common options for the pipeline, typically set in a config file.", + "help_text": "These options are common to all nf-core pipelines and allow you to customise some of the core preferences for how the pipeline runs.\n\nTypically these options would be set in a Nextflow config file loaded for all pipeline runs, such as `~/.nextflow/config`.", + "properties": { + "help": { + "type": "boolean", + "description": "Display help text.", + "fa_icon": "fas fa-question-circle", + "hidden": true + }, + "publish_dir_mode": { + "type": "string", + "default": "copy", + "description": "Method used to save pipeline results to output directory.", + "help_text": "The Nextflow `publishDir` option specifies which intermediate files should be saved to the output directory. This option tells the pipeline what method should be used to move these files. See [Nextflow docs](https://www.nextflow.io/docs/latest/process.html#publishdir) for details.", + "fa_icon": "fas fa-copy", + "enum": ["symlink", "rellink", "link", "copy", "copyNoFollow", "move"], + "hidden": true + }, + "email_on_fail": { + "type": "string", + "description": "Email address for completion summary, only when pipeline fails.", + "fa_icon": "fas fa-exclamation-triangle", + "pattern": "^([a-zA-Z0-9_\\-\\.]+)@([a-zA-Z0-9_\\-\\.]+)\\.([a-zA-Z]{2,5})$", + "help_text": "An email address to send a summary email to when the pipeline is completed - ONLY sent if the pipeline does not exit successfully.", + "hidden": true + }, + "plaintext_email": { + "type": "boolean", + "description": "Send plain-text email instead of HTML.", + "fa_icon": "fas fa-remove-format", + "hidden": true + }, + "max_multiqc_email_size": { + "type": "string", + "description": "File size limit when attaching MultiQC reports to summary emails.", + "pattern": "^\\d+(\\.\\d+)?\\.?\\s*(K|M|G|T)?B$", + "default": "25.MB", + "fa_icon": "fas fa-file-upload", + "hidden": true + }, + "monochrome_logs": { + "type": "boolean", + "description": "Do not use coloured log outputs.", + "fa_icon": "fas fa-palette", + "hidden": true + }, + "multiqc_config": { + "type": "string", + "description": "Custom config file to supply to MultiQC.", + "fa_icon": "fas fa-cog", + "hidden": true + }, + "tracedir": { + "type": "string", + "description": "Directory to keep pipeline Nextflow logs and reports.", + "default": "${params.outdir}/pipeline_info", + "fa_icon": "fas fa-cogs", + "hidden": true + }, + "validate_params": { + "type": "boolean", + "description": "Boolean whether to validate parameters against the schema at runtime", + "default": true, + "fa_icon": "fas fa-check-square", + "hidden": true + }, + "show_hidden_params": { + "type": "boolean", + "fa_icon": "far fa-eye-slash", + "description": "Show all params when using `--help`", + "hidden": true, + "help_text": "By default, parameters set as _hidden_ in the schema are not shown on the command line when a user runs with `--help`. Specifying this option will tell the pipeline to show all parameters." + }, + "enable_conda": { + "type": "boolean", + "description": "Run this workflow with Conda. You can also use '-profile conda' instead of providing this parameter.", + "hidden": true, + "fa_icon": "fas fa-bacon" + } + } } - } }, - "institutional_config_options": { - "title": "Institutional config options", - "type": "object", - "fa_icon": "fas fa-university", - "description": "Parameters used to describe centralised config profiles. These should not be edited.", - "help_text": "The centralised nf-core configuration profiles use a handful of pipeline parameters to describe themselves. This information is then printed to the Nextflow log when you run a pipeline. You should not need to change these values when you run a pipeline.", - "properties": { - "custom_config_version": { - "type": "string", - "description": "Git commit id for Institutional configs.", - "default": "master", - "hidden": true, - "fa_icon": "fas fa-users-cog" - }, - "custom_config_base": { - "type": "string", - "description": "Base directory for Institutional configs.", - "default": "https://raw.githubusercontent.com/nf-core/configs/master", - "hidden": true, - "help_text": "If you're running offline, Nextflow will not be able to fetch the institutional config files from the internet. If you don't need them, then this is not a problem. If you do need them, you should download the files from the repo and tell Nextflow where to find them with this parameter.", - "fa_icon": "fas fa-users-cog" + "allOf": [ + { + "$ref": "#/definitions/input_output_options" }, - "config_profile_name": { - "type": "string", - "description": "Institutional config name.", - "hidden": true, - "fa_icon": "fas fa-users-cog" + { + "$ref": "#/definitions/reference_genome_options" }, - "config_profile_description": { - "type": "string", - "description": "Institutional config description.", - "hidden": true, - "fa_icon": "fas fa-users-cog" + { + "$ref": "#/definitions/institutional_config_options" }, - "config_profile_contact": { - "type": "string", - "description": "Institutional config contact information.", - "hidden": true, - "fa_icon": "fas fa-users-cog" + { + "$ref": "#/definitions/max_job_request_options" }, - "config_profile_url": { - "type": "string", - "description": "Institutional config URL link.", - "hidden": true, - "fa_icon": "fas fa-users-cog" + { + "$ref": "#/definitions/generic_options" } - } - }, - "max_job_request_options": { - "title": "Max job request options", - "type": "object", - "fa_icon": "fab fa-acquisitions-incorporated", - "description": "Set the top limit for requested resources for any single job.", - "help_text": "If you are running on a smaller system, a pipeline step requesting more resources than are available may cause the Nextflow to stop the run with an error. These options allow you to cap the maximum resources requested by any single job so that the pipeline will run on your system.\n\nNote that you can not _increase_ the resources requested by any job using these options. For that you will need your own configuration file. See [the nf-core website](https://nf-co.re/usage/configuration) for details.", - "properties": { - "max_cpus": { - "type": "integer", - "description": "Maximum number of CPUs that can be requested for any single job.", - "default": 16, - "fa_icon": "fas fa-microchip", - "hidden": true, - "help_text": "Use to set an upper-limit for the CPU requirement for each process. Should be an integer e.g. `--max_cpus 1`" + ], + "properties": { + "databases": { + "type": "string", + "default": "None" }, - "max_memory": { - "type": "string", - "description": "Maximum amount of memory that can be requested for any single job.", - "default": "128.GB", - "fa_icon": "fas fa-memory", - "pattern": "^\\d+(\\.\\d+)?\\.?\\s*(K|M|G|T)?B$", - "hidden": true, - "help_text": "Use to set an upper-limit for the memory requirement for each process. Should be a string in the format integer-unit e.g. `--max_memory '8.GB'`" + "shortread_clipmerge": { + "type": "boolean" }, - "max_time": { - "type": "string", - "description": "Maximum amount of time that can be requested for any single job.", - "default": "240.h", - "fa_icon": "far fa-clock", - "pattern": "^(\\d+\\.?\\s*(s|m|h|day)\\s*)+$", - "hidden": true, - "help_text": "Use to set an upper-limit for the time requirement for each process. Should be a string in the format integer-unit e.g. `--max_time '2.h'`" - } - } - }, - "generic_options": { - "title": "Generic options", - "type": "object", - "fa_icon": "fas fa-file-import", - "description": "Less common options for the pipeline, typically set in a config file.", - "help_text": "These options are common to all nf-core pipelines and allow you to customise some of the core preferences for how the pipeline runs.\n\nTypically these options would be set in a Nextflow config file loaded for all pipeline runs, such as `~/.nextflow/config`.", - "properties": { - "help": { - "type": "boolean", - "description": "Display help text.", - "fa_icon": "fas fa-question-circle", - "hidden": true + "shortread_excludeunmerged": { + "type": "boolean", + "default": true }, - "publish_dir_mode": { - "type": "string", - "default": "copy", - "description": "Method used to save pipeline results to output directory.", - "help_text": "The Nextflow `publishDir` option specifies which intermediate files should be saved to the output directory. This option tells the pipeline what method should be used to move these files. See [Nextflow docs](https://www.nextflow.io/docs/latest/process.html#publishdir) for details.", - "fa_icon": "fas fa-copy", - "enum": [ - "symlink", - "rellink", - "link", - "copy", - "copyNoFollow", - "move" - ], - "hidden": true + "longread_clip": { + "type": "boolean" }, - "email_on_fail": { - "type": "string", - "description": "Email address for completion summary, only when pipeline fails.", - "fa_icon": "fas fa-exclamation-triangle", - "pattern": "^([a-zA-Z0-9_\\-\\.]+)@([a-zA-Z0-9_\\-\\.]+)\\.([a-zA-Z]{2,5})$", - "help_text": "An email address to send a summary email to when the pipeline is completed - ONLY sent if the pipeline does not exit successfully.", - "hidden": true + "run_malt": { + "type": "boolean" }, - "plaintext_email": { - "type": "boolean", - "description": "Send plain-text email instead of HTML.", - "fa_icon": "fas fa-remove-format", - "hidden": true + "malt_mode": { + "type": "string", + "default": "BlastN" }, - "max_multiqc_email_size": { - "type": "string", - "description": "File size limit when attaching MultiQC reports to summary emails.", - "pattern": "^\\d+(\\.\\d+)?\\.?\\s*(K|M|G|T)?B$", - "default": "25.MB", - "fa_icon": "fas fa-file-upload", - "hidden": true + "run_kraken2": { + "type": "boolean" }, - "monochrome_logs": { - "type": "boolean", - "description": "Do not use coloured log outputs.", - "fa_icon": "fas fa-palette", - "hidden": true + "run_centrifuge": { + "type": "boolean" }, - "multiqc_config": { - "type": "string", - "description": "Custom config file to supply to MultiQC.", - "fa_icon": "fas fa-cog", - "hidden": true + "centrifuge_save_unaligned": { + "type": "boolean" }, - "tracedir": { - "type": "string", - "description": "Directory to keep pipeline Nextflow logs and reports.", - "default": "${params.outdir}/pipeline_info", - "fa_icon": "fas fa-cogs", - "hidden": true + "centrifuge_save_aligned": { + "type": "boolean" }, - "validate_params": { - "type": "boolean", - "description": "Boolean whether to validate parameters against the schema at runtime", - "default": true, - "fa_icon": "fas fa-check-square", - "hidden": true - }, - "show_hidden_params": { - "type": "boolean", - "fa_icon": "far fa-eye-slash", - "description": "Show all params when using `--help`", - "hidden": true, - "help_text": "By default, parameters set as _hidden_ in the schema are not shown on the command line when a user runs with `--help`. Specifying this option will tell the pipeline to show all parameters." - }, - "enable_conda": { - "type": "boolean", - "description": "Run this workflow with Conda. You can also use '-profile conda' instead of providing this parameter.", - "hidden": true, - "fa_icon": "fas fa-bacon" + "centrifuge_sam_format": { + "type": "boolean" } - } - } - }, - "allOf": [ - { - "$ref": "#/definitions/input_output_options" - }, - { - "$ref": "#/definitions/reference_genome_options" - }, - { - "$ref": "#/definitions/institutional_config_options" - }, - { - "$ref": "#/definitions/max_job_request_options" - }, - { - "$ref": "#/definitions/generic_options" - } - ], - "properties": { - "databases": { - "type": "string", - "default": "None" - }, - "shortread_clipmerge": { - "type": "boolean" - }, - "shortread_excludeunmerged": { - "type": "boolean", - "default": true - }, - "longread_clip": { - "type": "boolean" - }, - "run_malt": { - "type": "boolean" - }, - "malt_mode": { - "type": "string", - "default": "BlastN" - }, - "run_kraken2": { - "type": "boolean" - }, - "run_centrifuge": { - "type": "boolean" - }, - "centrifuge_save_unaligned": { - "type": "boolean" - }, - "centrifuge_save_aligned": { - "type": "boolean" - }, - "centrifuge_sam_format": { - "type": "boolean" } - } } From 98a9688329e66814764746a9219580e841e84477 Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Tue, 29 Mar 2022 15:18:06 +0200 Subject: [PATCH 066/789] Change CPUs back to template, update skiptrim fiag --- conf/base.config | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/conf/base.config b/conf/base.config index 2f0f97f..0c65574 100644 --- a/conf/base.config +++ b/conf/base.config @@ -27,7 +27,7 @@ process { // TODO nf-core: Customise requirements for specific processes. // See https://www.nextflow.io/docs/latest/config.html#config-process-selectors withLabel:process_low { - cpus = { check_max( 4 * task.attempt, 'cpus' ) } + cpus = { check_max( 2 * task.attempt, 'cpus' ) } memory = { check_max( 12.GB * task.attempt, 'memory' ) } time = { check_max( 4.h * task.attempt, 'time' ) } } From 76e9624e3f04e573a56c1443884b2ca385488319 Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Wed, 30 Mar 2022 11:31:37 +0200 Subject: [PATCH 067/789] NOW commit the adapte rtrim flag --- conf/modules.config | 2 +- nextflow.config | 2 +- nextflow_schema.json | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/conf/modules.config b/conf/modules.config index a9bc3a1..71eaa75 100644 --- a/conf/modules.config +++ b/conf/modules.config @@ -68,7 +68,7 @@ process { // collapsing options - option to retain singletons params.shortread_clipmerge_excludeunmerged ? '' : "--include_unmerged", // trimming options - params.shortread_clipmerge_skiptrim ? "--disable_adapter_trimming" : "", + params.shortread_clipmerge_skipadaptertrim ? "--disable_adapter_trimming" : "", params.shortread_clipmerge_adapter1 ? "--adapter_sequence ${params.shortread_clipmerge_adapter1}" : "", !{ ${meta.single_end} } && params.shortread_clipmerge_adapter2 ? "--adapter_sequence_r2 ${params.shortread_clipmerge_adapter2}" : !{ ${meta.single_end} } ? "--detect_adapter_for_pe" : "", // filtering options diff --git a/nextflow.config b/nextflow.config index a312d0c..6fde513 100644 --- a/nextflow.config +++ b/nextflow.config @@ -57,7 +57,7 @@ params { // FASTQ preprocessing shortread_clipmerge = false shortread_clipmerge_tool = 'fastp' - shortread_clipmerge_skiptrim = false + shortread_clipmerge_skipadaptertrim = false shortread_clipmerge_mergepairs = false shortread_clipmerge_excludeunmerged = true shortread_clipmerge_adapter1 = null diff --git a/nextflow_schema.json b/nextflow_schema.json index 545f990..adc5a73 100644 --- a/nextflow_schema.json +++ b/nextflow_schema.json @@ -286,7 +286,7 @@ "type": "string", "default": "fastp" }, - "shortread_clipmerge_skiptrim": { + "shortread_clipmerge_skipadaptertrim": { "type": "boolean" }, "shortread_clipmerge_mergepairs": { From c4c93bd59d5390c7970dea72575ff9bf8fe1707b Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Thu, 31 Mar 2022 15:31:45 +0200 Subject: [PATCH 068/789] Start working on adding adapterremoval --- modules.json | 5 +- .../nf-core/modules/adapterremoval/main.nf | 70 ++++++++++++++ .../nf-core/modules/adapterremoval/meta.yml | 90 ++++++++++++++++++ nextflow_schema.json | 26 ++++-- .../local/shortread_adapterremoval.nf | 91 +++++++++++++++++++ subworkflows/local/shortread_fastp.nf | 8 +- subworkflows/local/shortread_preprocessing.nf | 5 + 7 files changed, 281 insertions(+), 14 deletions(-) create mode 100644 modules/nf-core/modules/adapterremoval/main.nf create mode 100644 modules/nf-core/modules/adapterremoval/meta.yml create mode 100644 subworkflows/local/shortread_adapterremoval.nf diff --git a/modules.json b/modules.json index 34ef9f1..c4b2f12 100644 --- a/modules.json +++ b/modules.json @@ -3,6 +3,9 @@ "homePage": "https://github.com/nf-core/taxprofiler", "repos": { "nf-core/modules": { + "adapterremoval": { + "git_sha": "f0800157544a82ae222931764483331a81812012" + }, "cat/fastq": { "git_sha": "e745e167c1020928ef20ea1397b6b4d230681b4d" }, @@ -32,4 +35,4 @@ } } } -} +} \ No newline at end of file diff --git a/modules/nf-core/modules/adapterremoval/main.nf b/modules/nf-core/modules/adapterremoval/main.nf new file mode 100644 index 0000000..9d16b9c --- /dev/null +++ b/modules/nf-core/modules/adapterremoval/main.nf @@ -0,0 +1,70 @@ +process ADAPTERREMOVAL { + tag "$meta.id" + label 'process_medium' + + conda (params.enable_conda ? "bioconda::adapterremoval=2.3.2" : null) + container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? + 'https://depot.galaxyproject.org/singularity/adapterremoval:2.3.2--hb7ba0dd_0' : + 'quay.io/biocontainers/adapterremoval:2.3.2--hb7ba0dd_0' }" + + input: + tuple val(meta), path(reads) + path(adapterlist) + + output: + tuple val(meta), path("${prefix}.truncated.gz") , optional: true, emit: singles_truncated + tuple val(meta), path("${prefix}.discarded.gz") , optional: true, emit: discarded + tuple val(meta), path("${prefix}.pair1.truncated.gz") , optional: true, emit: pair1_truncated + tuple val(meta), path("${prefix}.pair2.truncated.gz") , optional: true, emit: pair2_truncated + tuple val(meta), path("${prefix}.collapsed.gz") , optional: true, emit: collapsed + tuple val(meta), path("${prefix}.collapsed.truncated.gz") , optional: true, emit: collapsed_truncated + tuple val(meta), path("${prefix}.paired.gz") , optional: true, emit: paired_interleaved + tuple val(meta), path('*.log') , emit: log + path "versions.yml" , emit: versions + + when: + task.ext.when == null || task.ext.when + + script: + def args = task.ext.args ?: '' + def list = adapterlist ? "--adapter-list ${adapterlist}" : "" + prefix = task.ext.prefix ?: "${meta.id}" + + if (meta.single_end) { + """ + AdapterRemoval \\ + --file1 $reads \\ + $args \\ + $adapterlist \\ + --basename ${prefix} \\ + --threads ${task.cpus} \\ + --settings ${prefix}.log \\ + --seed 42 \\ + --gzip + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + adapterremoval: \$(AdapterRemoval --version 2>&1 | sed -e "s/AdapterRemoval ver. //g") + END_VERSIONS + """ + } else { + """ + AdapterRemoval \\ + --file1 ${reads[0]} \\ + --file2 ${reads[1]} \\ + $args \\ + $adapterlist \\ + --basename ${prefix} \\ + --threads $task.cpus \\ + --settings ${prefix}.log \\ + --seed 42 \\ + --gzip + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + adapterremoval: \$(AdapterRemoval --version 2>&1 | sed -e "s/AdapterRemoval ver. //g") + END_VERSIONS + """ + } + +} diff --git a/modules/nf-core/modules/adapterremoval/meta.yml b/modules/nf-core/modules/adapterremoval/meta.yml new file mode 100644 index 0000000..5faad04 --- /dev/null +++ b/modules/nf-core/modules/adapterremoval/meta.yml @@ -0,0 +1,90 @@ +name: adapterremoval +description: Trim sequencing adapters and collapse overlapping reads +keywords: + - trimming + - adapters + - merging + - fastq +tools: + - adapterremoval: + description: The AdapterRemoval v2 tool for merging and clipping reads. + homepage: https://github.com/MikkelSchubert/adapterremoval + documentation: https://adapterremoval.readthedocs.io + licence: ["GPL v3"] + +input: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - reads: + type: file + description: | + List of input FastQ files of size 1 and 2 for single-end and paired-end data, + respectively. + pattern: "*.{fq,fastq,fq.gz,fastq.gz}" + - adapterlist: + type: file + description: Optional text file containing list of adapters to look for for removal + with one adapter per line. Otherwise will look for default adapters (see + AdapterRemoval man page), or can be modified to remove user-specified + adapters via ext.args. + +output: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - singles_truncated: + type: file + description: | + Adapter trimmed FastQ files of either single-end reads, or singleton + 'orphaned' reads from merging of paired-end data (i.e., one of the pair + was lost due to filtering thresholds). + pattern: "*.truncated.gz" + - discarded: + type: file + description: | + Adapter trimmed FastQ files of reads that did not pass filtering + thresholds. + pattern: "*.discarded.gz" + - pair1_truncated: + type: file + description: | + Adapter trimmed R1 FastQ files of paired-end reads that did not merge + with their respective R2 pair due to long templates. The respective pair + is stored in 'pair2_truncated'. + pattern: "*.pair1.truncated.gz" + - pair2_truncated: + type: file + description: | + Adapter trimmed R2 FastQ files of paired-end reads that did not merge + with their respective R1 pair due to long templates. The respective pair + is stored in 'pair1_truncated'. + pattern: "*.pair2.truncated.gz" + - collapsed: + type: file + description: | + Collapsed FastQ of paired-end reads that successfully merged with their + respective R1 pair but were not trimmed. + pattern: "*.collapsed.gz" + - collapsed_truncated: + type: file + description: | + Collapsed FastQ of paired-end reads that successfully merged with their + respective R1 pair and were trimmed of adapter due to sufficient overlap. + pattern: "*.collapsed.truncated.gz" + - log: + type: file + description: AdapterRemoval log file + pattern: "*.log" + - versions: + type: file + description: File containing software versions + pattern: "versions.yml" + +authors: + - "@maxibor" + - "@jfy133" diff --git a/nextflow_schema.json b/nextflow_schema.json index adc5a73..ebb748a 100644 --- a/nextflow_schema.json +++ b/nextflow_schema.json @@ -10,7 +10,10 @@ "type": "object", "fa_icon": "fas fa-terminal", "description": "Define where the pipeline should find input data and save output data.", - "required": ["input", "outdir"], + "required": [ + "input", + "outdir" + ], "properties": { "input": { "type": "string", @@ -173,7 +176,14 @@ "description": "Method used to save pipeline results to output directory.", "help_text": "The Nextflow `publishDir` option specifies which intermediate files should be saved to the output directory. This option tells the pipeline what method should be used to move these files. See [Nextflow docs](https://www.nextflow.io/docs/latest/process.html#publishdir) for details.", "fa_icon": "fas fa-copy", - "enum": ["symlink", "rellink", "link", "copy", "copyNoFollow", "move"], + "enum": [ + "symlink", + "rellink", + "link", + "copy", + "copyNoFollow", + "move" + ], "hidden": true }, "email_on_fail": { @@ -284,7 +294,11 @@ }, "shortread_clipmerge_tool": { "type": "string", - "default": "fastp" + "default": "fastp", + "enum": [ + "fastp", + "adapterremoval" + ] }, "shortread_clipmerge_skipadaptertrim": { "type": "boolean" @@ -294,15 +308,15 @@ }, "shortread_clipmerge_adapter1": { "type": "string", - "default": null + "default": "None" }, "shortread_clipmerge_adapter2": { "type": "string", - "default": null + "default": "None" }, "shortread_clipmerge_minlength": { "type": "integer", "default": 15 } } -} +} \ No newline at end of file diff --git a/subworkflows/local/shortread_adapterremoval.nf b/subworkflows/local/shortread_adapterremoval.nf new file mode 100644 index 0000000..b09356a --- /dev/null +++ b/subworkflows/local/shortread_adapterremoval.nf @@ -0,0 +1,91 @@ +/* +Process short raw reads with AdapterRemoval +*/ + +include { ADAPTERREMOVAL as ADAPTERREMOVAL_SINGLE } from '../../modules/nf-core/modules/adapterremoval/main' +include { ADAPTERREMOVAL as ADAPTERREMOVAL_PAIRED } from '../../modules/nf-core/modules/adapterremoval/main' +include { CAT_FASTQ } from '../../modules/nf-core/modules/cat/fastq/main' + +workflow SHORTREAD_ADAPTERREMOVAL { + + take: + reads // [[meta], [reads]] + + main: + ch_versions = Channel.empty() + ch_multiqc_files = Channel.empty() + + ch_input_for_adapterremoval = reads + .dump(tag: "pre_adapterremoval_branch") + .branch{ + single: it[0]['single_end'] == true + paired: it[0]['single_end'] == false + } + + ADAPTERREMOVAL_SINGLE ( ch_input_for_adapterremoval.single, [] ) + ADAPTERREMOVAL_PAIRED ( ch_input_for_adapterremoval.paired, [] ) + + if ( params.shortread_clipmerge_mergepairs && !params.shortread_clipmerge_excludeunmerged ) { + ch_adapterremoval_for_cat = ADAPTERREMOVAL_PAIRED.out.collapsed + .mix( + ADAPTERREMOVAL_PAIRED.out.collapsed_truncated, + ADAPTERREMOVAL_PAIRED.out.singles_truncated, + ADAPTERREMOVAL_PAIRED.out.pair1_truncated, + ADAPTERREMOVAL_PAIRED.out.pair2_truncated + ) + .map { + meta, reads -> + def meta_new = meta.clone() + meta_new['single_end'] = 1 + + [ meta_new, reads ] + } + .groupTuple(by: 0) + ch_adapterremoval_reads_prepped_pe = CAT_FASTQ ( ch_adapterremoval_for_cat ).reads + + ch_adapterremoval_reads_prepped = ch_adapterremoval_reads_prepped_pe.mix( ADAPTERREMOVAL_SINGLE.out.singles_truncated ) + + } else if ( params.shortread_clipmerge_mergepairs && params.shortread_clipmerge_excludeunmerged ) { + ch_adapterremoval_for_cat = ADAPTERREMOVAL_PAIRED.out.collapsed + .mix( ADAPTERREMOVAL_PAIRED.out.collapsed_truncated ) + .map { + meta, reads -> + def meta_new = meta.clone() + meta_new['single_end'] = 1 + + [ meta_new, reads ] + } + .groupTuple(by: 0) + + ch_adapterremoval_reads_prepped_pe = CAT_FASTQ ( ch_adapterremoval_for_cat ).reads + + ch_adapterremoval_reads_prepped = ch_adapterremoval_reads_prepped_pe.mix( ADAPTERREMOVAL_SINGLE.out.singles_truncated ) + + } else { + + ch_adapterremoval_reads_prepped_pe = ADAPTERREMOVAL_PAIRED.out.pair1_truncated + .join( ADAPTERREMOVAL_PAIRED.out.pair2_truncated ) + .dump(tag: "pre-group") + .groupTuple(by: 0) + .dump(tag: "post-group") + .map { meta, pair1, pair2 -> + [ meta, [ pair1, pair2 ].flatten() ] + } + .dump(tag: "post-map") + + + ch_adapterremoval_reads_prepped = ch_adapterremoval_reads_prepped_pe + .mix( ADAPTERREMOVAL_SINGLE.out.singles_truncated ) + } + + ch_processed_reads = ch_adapterremoval_reads_prepped + + ch_versions = ch_versions.mix( ADAPTERREMOVAL_SINGLE.out.versions.first() ) + ch_versions = ch_versions.mix( ADAPTERREMOVAL_PAIRED.out.versions.first() ) + ch_multiqc_files = ch_multiqc_files.mix( ADAPTERREMOVAL_PAIRED.out.log.collect{it[1]}, ADAPTERREMOVAL_SINGLE.out.log.collect{it[1]} ) + + emit: + reads = ch_processed_reads // channel: [ val(meta), [ reads ] ] + versions = ch_versions // channel: [ versions.yml ] + mqc = ch_multiqc_files +} diff --git a/subworkflows/local/shortread_fastp.nf b/subworkflows/local/shortread_fastp.nf index c2e435c..48817db 100644 --- a/subworkflows/local/shortread_fastp.nf +++ b/subworkflows/local/shortread_fastp.nf @@ -14,15 +14,11 @@ workflow SHORTREAD_FASTP { ch_multiqc_files = Channel.empty() ch_input_for_fastp = reads - .dump(tag: "pre-fastp_branch") .branch{ single: it[0]['single_end'] == true paired: it[0]['single_end'] == false } - ch_input_for_fastp.single.dump(tag: "input_fastp_single") - ch_input_for_fastp.paired.dump(tag: "input_fastp_paired") - FASTP_SINGLE ( ch_input_for_fastp.single, false, false ) // Last parameter here turns on merging of PE data FASTP_PAIRED ( ch_input_for_fastp.paired, false, params.shortread_clipmerge_mergepairs ) @@ -46,13 +42,11 @@ workflow SHORTREAD_FASTP { ch_versions = ch_versions.mix(FASTP_SINGLE.out.versions.first()) ch_versions = ch_versions.mix(FASTP_PAIRED.out.versions.first()) - ch_processed_reads = ch_fastp_reads_prepped.dump(tag: "ch_fastp_reads_prepped") + ch_processed_reads = ch_fastp_reads_prepped ch_multiqc_files = ch_multiqc_files.mix( FASTP_SINGLE.out.json.collect{it[1]} ) ch_multiqc_files = ch_multiqc_files.mix( FASTP_PAIRED.out.json.collect{it[1]} ) - ch_multiqc_files.dump(tag: "preprocessing_fastp_mqc_final") - emit: reads = ch_processed_reads // channel: [ val(meta), [ reads ] ] versions = ch_versions // channel: [ versions.yml ] diff --git a/subworkflows/local/shortread_preprocessing.nf b/subworkflows/local/shortread_preprocessing.nf index 7fba0c0..f0a1ed4 100644 --- a/subworkflows/local/shortread_preprocessing.nf +++ b/subworkflows/local/shortread_preprocessing.nf @@ -4,6 +4,7 @@ include { SHORTREAD_FASTP } from './shortread_fastp' +include { SHORTREAD_ADAPTERREMOVAL } from './shortread_adapterremoval' include { FASTQC as FASTQC_PROCESSED } from '../../modules/nf-core/modules/fastqc/main' workflow SHORTREAD_PREPROCESSING { @@ -18,6 +19,10 @@ workflow SHORTREAD_PREPROCESSING { ch_processed_reads = SHORTREAD_FASTP ( reads ).reads ch_versions = ch_versions.mix( SHORTREAD_FASTP.out.versions ) ch_multiqc_files = ch_multiqc_files.mix( SHORTREAD_FASTP.out.mqc ) + } else if ( params.shortread_clipmerge_tool == "adapterremoval" ) { + ch_processed_reads = SHORTREAD_ADAPTERREMOVAL ( reads ).reads + ch_versions = ch_versions.mix( SHORTREAD_ADAPTERREMOVAL.out.versions ) + ch_multiqc_files = ch_multiqc_files.mix( SHORTREAD_ADAPTERREMOVAL.out.mqc ) } else { ch_processed_reads = reads } From dcda815bfb03697b69f219f26af69708bd2d28b5 Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Fri, 1 Apr 2022 09:50:08 +0200 Subject: [PATCH 069/789] Add final adapterremoval options to match fastp functionality --- conf/modules.config | 64 +++++++++++++++++-- nextflow.config | 2 +- nextflow_schema.json | 23 ++----- .../local/shortread_adapterremoval.nf | 10 ++- 4 files changed, 68 insertions(+), 31 deletions(-) diff --git a/conf/modules.config b/conf/modules.config index 71eaa75..dc8b138 100644 --- a/conf/modules.config +++ b/conf/modules.config @@ -62,18 +62,34 @@ process { ] } - withName: FASTP { + withName: FASTP_SINGLE { + ext.args = [ + // trimming options + params.shortread_clipmerge_skipadaptertrim ? "--disable_adapter_trimming" : "", + params.shortread_clipmerge_adapter1 ? "--adapter_sequence ${params.shortread_clipmerge_adapter1}" : "", + // filtering options + "--length_required ${params.shortread_clipmerge_minlength}" + ].join(' ').trim() ext.prefix = { "${meta.id}_${meta.run_accession}" } + publishDir = [ + path: { "${params.outdir}/fastp" }, + mode: 'copy', + pattern: '*.fastq.gz' + ] + } + + withName: FASTP_PAIRED { ext.args = [ // collapsing options - option to retain singletons params.shortread_clipmerge_excludeunmerged ? '' : "--include_unmerged", // trimming options params.shortread_clipmerge_skipadaptertrim ? "--disable_adapter_trimming" : "", params.shortread_clipmerge_adapter1 ? "--adapter_sequence ${params.shortread_clipmerge_adapter1}" : "", - !{ ${meta.single_end} } && params.shortread_clipmerge_adapter2 ? "--adapter_sequence_r2 ${params.shortread_clipmerge_adapter2}" : !{ ${meta.single_end} } ? "--detect_adapter_for_pe" : "", + params.shortread_clipmerge_adapter2 ? "--adapter_sequence_r2 ${params.shortread_clipmerge_adapter2}" : "--detect_adapter_for_pe", // filtering options "--length_required ${params.shortread_clipmerge_minlength}" ].join(' ').trim() + ext.prefix = { "${meta.id}_${meta.run_accession}" } publishDir = [ path: { "${params.outdir}/fastp" }, mode: 'copy', @@ -81,6 +97,42 @@ process { ] } + withName: ADAPTERREMOVAL_SINGLE { + ext.args = [ + // trimming options + params.shortread_clipmerge_skipadaptertrim ? "--adapter1 '' --adapter2 ''" : "", + params.shortread_clipmerge_adapter1 ? "--adapter1 ${params.shortread_clipmerge_adapter1}" : "", + // filtering options + "--minlength ${params.shortread_clipmerge_minlength}" + ].join(' ').trim() + ext.prefix = { "${meta.id}_${meta.run_accession}" } + publishDir = [ + path: { "${params.outdir}/adapterremoval" }, + mode: 'copy', + pattern: '*.fastq.gz' + ] + } + + withName: ADAPTERREMOVAL_PAIRED { + ext.args = [ + // collapsing options + params.shortread_clipmerge_mergepairs ? "--collapse" : "", + // trimming options + params.shortread_clipmerge_skipadaptertrim ? "--adapter1 '' --adapter2 ''" : "", + params.shortread_clipmerge_adapter1 ? "--adapter1 ${params.shortread_clipmerge_adapter1}" : "", + params.shortread_clipmerge_adapter2 ? "--adapter2 ${params.shortread_clipmerge_adapter2}" : "", + // filtering options + "--minlength ${params.shortread_clipmerge_minlength}" + ].join(' ').trim() + ext.prefix = { "${meta.id}_${meta.run_accession}" } + publishDir = [ + path: { "${params.outdir}/adapterremoval" }, + mode: 'copy', + pattern: '*.fastq.gz' + ] + } + + withName: PORECHOP { ext.prefix = { "${meta.id}_${meta.run_accession}" } publishDir = [ @@ -99,23 +151,23 @@ process { } withName: MALT_RUN { + ext.args = { "${meta.db_params}" } + ext.prefix = { "${meta.id}-${meta.run_accession}-${meta.db_name}" } publishDir = [ path: { "${params.outdir}/malt/${meta.db_name}" }, mode: 'copy', pattern: '*.{rma6,tab,text,sam,log}' ] - ext.args = { "${meta.db_params}" } - ext.prefix = { "${meta.id}-${meta.run_accession}-${meta.db_name}" } } withName: KRAKEN2_KRAKEN2 { + ext.args = { "${meta.db_params}" } + ext.prefix = { "${meta.id}-${meta.run_accession}-${meta.db_name}" } publishDir = [ path: { "${params.outdir}/kraken2/${meta.db_name}" }, mode: 'copy', pattern: '*.{fastq.gz,txt}' ] - ext.args = { "${meta.db_params}" } - ext.prefix = { "${meta.id}-${meta.run_accession}-${meta.db_name}" } } withName: CUSTOM_DUMPSOFTWAREVERSIONS { diff --git a/nextflow.config b/nextflow.config index 6fde513..7be36a6 100644 --- a/nextflow.config +++ b/nextflow.config @@ -59,7 +59,7 @@ params { shortread_clipmerge_tool = 'fastp' shortread_clipmerge_skipadaptertrim = false shortread_clipmerge_mergepairs = false - shortread_clipmerge_excludeunmerged = true + shortread_clipmerge_excludeunmerged = false shortread_clipmerge_adapter1 = null shortread_clipmerge_adapter2 = null shortread_clipmerge_minlength = 15 diff --git a/nextflow_schema.json b/nextflow_schema.json index ebb748a..fb2ca31 100644 --- a/nextflow_schema.json +++ b/nextflow_schema.json @@ -10,10 +10,7 @@ "type": "object", "fa_icon": "fas fa-terminal", "description": "Define where the pipeline should find input data and save output data.", - "required": [ - "input", - "outdir" - ], + "required": ["input", "outdir"], "properties": { "input": { "type": "string", @@ -176,14 +173,7 @@ "description": "Method used to save pipeline results to output directory.", "help_text": "The Nextflow `publishDir` option specifies which intermediate files should be saved to the output directory. This option tells the pipeline what method should be used to move these files. See [Nextflow docs](https://www.nextflow.io/docs/latest/process.html#publishdir) for details.", "fa_icon": "fas fa-copy", - "enum": [ - "symlink", - "rellink", - "link", - "copy", - "copyNoFollow", - "move" - ], + "enum": ["symlink", "rellink", "link", "copy", "copyNoFollow", "move"], "hidden": true }, "email_on_fail": { @@ -277,7 +267,7 @@ }, "shortread_clipmerge_excludeunmerged": { "type": "boolean", - "default": true + "default": false }, "longread_clip": { "type": "boolean" @@ -295,10 +285,7 @@ "shortread_clipmerge_tool": { "type": "string", "default": "fastp", - "enum": [ - "fastp", - "adapterremoval" - ] + "enum": ["fastp", "adapterremoval"] }, "shortread_clipmerge_skipadaptertrim": { "type": "boolean" @@ -319,4 +306,4 @@ "default": 15 } } -} \ No newline at end of file +} diff --git a/subworkflows/local/shortread_adapterremoval.nf b/subworkflows/local/shortread_adapterremoval.nf index b09356a..b467a64 100644 --- a/subworkflows/local/shortread_adapterremoval.nf +++ b/subworkflows/local/shortread_adapterremoval.nf @@ -16,7 +16,6 @@ workflow SHORTREAD_ADAPTERREMOVAL { ch_multiqc_files = Channel.empty() ch_input_for_adapterremoval = reads - .dump(tag: "pre_adapterremoval_branch") .branch{ single: it[0]['single_end'] == true paired: it[0]['single_end'] == false @@ -36,11 +35,13 @@ workflow SHORTREAD_ADAPTERREMOVAL { .map { meta, reads -> def meta_new = meta.clone() - meta_new['single_end'] = 1 + meta_new['single_end'] = true [ meta_new, reads ] } .groupTuple(by: 0) + + ch_adapterremoval_reads_prepped_pe = CAT_FASTQ ( ch_adapterremoval_for_cat ).reads ch_adapterremoval_reads_prepped = ch_adapterremoval_reads_prepped_pe.mix( ADAPTERREMOVAL_SINGLE.out.singles_truncated ) @@ -51,7 +52,7 @@ workflow SHORTREAD_ADAPTERREMOVAL { .map { meta, reads -> def meta_new = meta.clone() - meta_new['single_end'] = 1 + meta_new['single_end'] = true [ meta_new, reads ] } @@ -65,13 +66,10 @@ workflow SHORTREAD_ADAPTERREMOVAL { ch_adapterremoval_reads_prepped_pe = ADAPTERREMOVAL_PAIRED.out.pair1_truncated .join( ADAPTERREMOVAL_PAIRED.out.pair2_truncated ) - .dump(tag: "pre-group") .groupTuple(by: 0) - .dump(tag: "post-group") .map { meta, pair1, pair2 -> [ meta, [ pair1, pair2 ].flatten() ] } - .dump(tag: "post-map") ch_adapterremoval_reads_prepped = ch_adapterremoval_reads_prepped_pe From b04cfec2c2ad651e498bf8b0a21108ccb51a1a0a Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Fri, 1 Apr 2022 11:13:36 +0200 Subject: [PATCH 070/789] Prettier linting --- CITATIONS.md | 18 +++++++++++++++++- modules.json | 2 +- 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/CITATIONS.md b/CITATIONS.md index 1018ccd..6e43999 100644 --- a/CITATIONS.md +++ b/CITATIONS.md @@ -13,9 +13,25 @@ - [FastQC](https://www.bioinformatics.babraham.ac.uk/projects/fastqc/) - [MultiQC](https://pubmed.ncbi.nlm.nih.gov/27312411/) + > Ewels P, Magnusson M, Lundin S, Käller M. MultiQC: summarize analysis results for multiple tools and samples in a single report. Bioinformatics. 2016 Oct 1;32(19):3047-8. doi: 10.1093/bioinformatics/btw354. Epub 2016 Jun 16. PubMed PMID: 27312411; PubMed Central PMCID: PMC5039924. -* [Porechop](https://github.com/rrwick/Porechop) +- [fastp](https://doi.org/10.1093/bioinformatics/bty560) + + > Chen, Shifu, Yanqing Zhou, Yaru Chen, and Jia Gu. 2018. “Fastp: An Ultra-Fast All-in-One FASTQ Preprocessor.” Bioinformatics 34 (17): i884-90. 10.1093/bioinformatics/bty560. + +- [AdapterRemoval2](https://doi.org/10.1186/s13104-016-1900-2) + + > Schubert, Mikkel, Stinus Lindgreen, and Ludovic Orlando. 2016. “AdapterRemoval v2: Rapid Adapter Trimming, Identification, and Read Merging.” BMC Research Notes 9 (February): 88. doi:10.1186/s13104-016-1900-2. + +- [Porechop](https://github.com/rrwick/Porechop) + +- [Kraken2](https://doi.org/10.1186/s13059-019-1891-0) + + > Wood, Derrick E., Jennifer Lu, and Ben Langmead. 2019. “Improved Metagenomic Analysis with Kraken 2.” Genome Biology 20 (1): 257. doi: 10.1186/s13059-019-1891-0. + +- [MALT](https://doi.org/10.1038/s41559-017-0446-6) + > Vågene, Åshild J., Alexander Herbig, Michael G. Campana, Nelly M. Robles García, Christina Warinner, Susanna Sabin, Maria A. Spyrou, et al. 2018. “Salmonella Enterica Genomes from Victims of a Major Sixteenth-Century Epidemic in Mexico.” Nature Ecology & Evolution 2 (3): 520-28. doi: 10.1038/s41559-017-0446-6. ## Software packaging/containerisation tools diff --git a/modules.json b/modules.json index c4b2f12..dcfbd3f 100644 --- a/modules.json +++ b/modules.json @@ -35,4 +35,4 @@ } } } -} \ No newline at end of file +} From df4f13319fde9e29d1ed5f0780d60aedccde04e5 Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Fri, 1 Apr 2022 11:13:57 +0200 Subject: [PATCH 071/789] More linting --- CITATIONS.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CITATIONS.md b/CITATIONS.md index 6e43999..8f286b0 100644 --- a/CITATIONS.md +++ b/CITATIONS.md @@ -31,6 +31,7 @@ > Wood, Derrick E., Jennifer Lu, and Ben Langmead. 2019. “Improved Metagenomic Analysis with Kraken 2.” Genome Biology 20 (1): 257. doi: 10.1186/s13059-019-1891-0. - [MALT](https://doi.org/10.1038/s41559-017-0446-6) + > Vågene, Åshild J., Alexander Herbig, Michael G. Campana, Nelly M. Robles García, Christina Warinner, Susanna Sabin, Maria A. Spyrou, et al. 2018. “Salmonella Enterica Genomes from Victims of a Major Sixteenth-Century Epidemic in Mexico.” Nature Ecology & Evolution 2 (3): 520-28. doi: 10.1038/s41559-017-0446-6. ## Software packaging/containerisation tools From 0d0b377dfb00b8ccd48b47be55b9bcba3dcbd582 Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Fri, 1 Apr 2022 11:19:00 +0200 Subject: [PATCH 072/789] Add additional test --- .github/workflows/ci.yml | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index fb6de77..a8078e5 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -28,6 +28,10 @@ jobs: # Test latest edge release of Nextflow - NXF_VER: "" NXF_EDGE: "1" + parameters: + - "--shortread_clipmerge_tool fastp" + - "--shortread_clipmerge_tool adapterremoval" + steps: - name: Check out pipeline code uses: actions/checkout@v2 @@ -47,6 +51,6 @@ jobs: # For example: adding multiple test runs with different parameters # Remember that you can parallelise this by using strategy.matrix run: | - nextflow run ${GITHUB_WORKSPACE} -profile test,docker --outdir ./results + nextflow run ${GITHUB_WORKSPACE} -profile test,docker --outdir ./results ${{ matrix.parameters }} # From 14f2b7bd84956a2dadb6c2f69d39baf1c6f3e027 Mon Sep 17 00:00:00 2001 From: "James A. Fellows Yates" Date: Fri, 1 Apr 2022 15:34:05 +0200 Subject: [PATCH 073/789] Apply suggestions from code review Co-authored-by: Moritz E. Beber --- subworkflows/local/shortread_adapterremoval.nf | 18 ++++++++---------- subworkflows/local/shortread_preprocessing.nf | 4 ++-- 2 files changed, 10 insertions(+), 12 deletions(-) diff --git a/subworkflows/local/shortread_adapterremoval.nf b/subworkflows/local/shortread_adapterremoval.nf index b467a64..3701f7e 100644 --- a/subworkflows/local/shortread_adapterremoval.nf +++ b/subworkflows/local/shortread_adapterremoval.nf @@ -17,14 +17,16 @@ workflow SHORTREAD_ADAPTERREMOVAL { ch_input_for_adapterremoval = reads .branch{ - single: it[0]['single_end'] == true - paired: it[0]['single_end'] == false + single: it[0].single_end + paired: !it[0].single_end } ADAPTERREMOVAL_SINGLE ( ch_input_for_adapterremoval.single, [] ) ADAPTERREMOVAL_PAIRED ( ch_input_for_adapterremoval.paired, [] ) if ( params.shortread_clipmerge_mergepairs && !params.shortread_clipmerge_excludeunmerged ) { + // due to the slightly ugly output implementation of the current AdapterRemoval2 module, each file + // has to be exported in a separate channel, and we must manually recombine when necessary ch_adapterremoval_for_cat = ADAPTERREMOVAL_PAIRED.out.collapsed .mix( ADAPTERREMOVAL_PAIRED.out.collapsed_truncated, @@ -35,16 +37,14 @@ workflow SHORTREAD_ADAPTERREMOVAL { .map { meta, reads -> def meta_new = meta.clone() - meta_new['single_end'] = true + meta_new.single_end = true [ meta_new, reads ] } - .groupTuple(by: 0) + .groupTuple() - ch_adapterremoval_reads_prepped_pe = CAT_FASTQ ( ch_adapterremoval_for_cat ).reads - - ch_adapterremoval_reads_prepped = ch_adapterremoval_reads_prepped_pe.mix( ADAPTERREMOVAL_SINGLE.out.singles_truncated ) + ch_adapterremoval_reads_prepped = CAT_FASTQ ( ch_adapterremoval_for_cat ).reads.mix( ADAPTERREMOVAL_SINGLE.out.singles_truncated ) } else if ( params.shortread_clipmerge_mergepairs && params.shortread_clipmerge_excludeunmerged ) { ch_adapterremoval_for_cat = ADAPTERREMOVAL_PAIRED.out.collapsed @@ -58,9 +58,7 @@ workflow SHORTREAD_ADAPTERREMOVAL { } .groupTuple(by: 0) - ch_adapterremoval_reads_prepped_pe = CAT_FASTQ ( ch_adapterremoval_for_cat ).reads - - ch_adapterremoval_reads_prepped = ch_adapterremoval_reads_prepped_pe.mix( ADAPTERREMOVAL_SINGLE.out.singles_truncated ) + ch_adapterremoval_reads_prepped = CAT_FASTQ ( ch_adapterremoval_for_cat ).reads.mix( ADAPTERREMOVAL_SINGLE.out.singles_truncated ) } else { diff --git a/subworkflows/local/shortread_preprocessing.nf b/subworkflows/local/shortread_preprocessing.nf index f0a1ed4..1d0caac 100644 --- a/subworkflows/local/shortread_preprocessing.nf +++ b/subworkflows/local/shortread_preprocessing.nf @@ -21,8 +21,8 @@ workflow SHORTREAD_PREPROCESSING { ch_multiqc_files = ch_multiqc_files.mix( SHORTREAD_FASTP.out.mqc ) } else if ( params.shortread_clipmerge_tool == "adapterremoval" ) { ch_processed_reads = SHORTREAD_ADAPTERREMOVAL ( reads ).reads - ch_versions = ch_versions.mix( SHORTREAD_ADAPTERREMOVAL.out.versions ) - ch_multiqc_files = ch_multiqc_files.mix( SHORTREAD_ADAPTERREMOVAL.out.mqc ) + ch_versions = ch_versions.mix( SHORTREAD_ADAPTERREMOVAL.out.versions ) + ch_multiqc_files = ch_multiqc_files.mix( SHORTREAD_ADAPTERREMOVAL.out.mqc ) } else { ch_processed_reads = reads } From 03e832954f89e43a641033dcae059c1870c08b2e Mon Sep 17 00:00:00 2001 From: "James A. Fellows Yates" Date: Fri, 1 Apr 2022 20:55:33 +0200 Subject: [PATCH 074/789] Update subworkflows/local/shortread_adapterremoval.nf Co-authored-by: Moritz E. Beber --- subworkflows/local/shortread_adapterremoval.nf | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/subworkflows/local/shortread_adapterremoval.nf b/subworkflows/local/shortread_adapterremoval.nf index 3701f7e..ac8ff0f 100644 --- a/subworkflows/local/shortread_adapterremoval.nf +++ b/subworkflows/local/shortread_adapterremoval.nf @@ -62,15 +62,12 @@ workflow SHORTREAD_ADAPTERREMOVAL { } else { - ch_adapterremoval_reads_prepped_pe = ADAPTERREMOVAL_PAIRED.out.pair1_truncated + ch_adapterremoval_reads_prepped = ADAPTERREMOVAL_PAIRED.out.pair1_truncated .join( ADAPTERREMOVAL_PAIRED.out.pair2_truncated ) - .groupTuple(by: 0) + .groupTuple() .map { meta, pair1, pair2 -> [ meta, [ pair1, pair2 ].flatten() ] } - - - ch_adapterremoval_reads_prepped = ch_adapterremoval_reads_prepped_pe .mix( ADAPTERREMOVAL_SINGLE.out.singles_truncated ) } From 93aaa9eeacbf6211646853be0f4e18a94574e2f1 Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Fri, 1 Apr 2022 21:36:22 +0200 Subject: [PATCH 075/789] Clean up AdapterRemoval and remove all debugging dumps --- subworkflows/local/db_check.nf | 2 -- subworkflows/local/input_check.nf | 4 --- subworkflows/local/longread_preprocessing.nf | 1 - .../local/shortread_adapterremoval.nf | 32 ++++++++++--------- workflows/taxprofiler.nf | 6 +--- 5 files changed, 18 insertions(+), 27 deletions(-) diff --git a/subworkflows/local/db_check.nf b/subworkflows/local/db_check.nf index bda5cfe..356915a 100644 --- a/subworkflows/local/db_check.nf +++ b/subworkflows/local/db_check.nf @@ -18,9 +18,7 @@ workflow DB_CHECK { parsed_samplesheet = DATABASE_CHECK ( dbsheet ) .csv .splitCsv ( header:true, sep:',' ) - .dump(tag: "db_split_csv_out") .map { create_db_channels(it) } - .dump(tag: "db_channel_prepped") ch_dbs_for_untar = parsed_samplesheet .branch { diff --git a/subworkflows/local/input_check.nf b/subworkflows/local/input_check.nf index 4501386..ec404c2 100644 --- a/subworkflows/local/input_check.nf +++ b/subworkflows/local/input_check.nf @@ -12,7 +12,6 @@ workflow INPUT_CHECK { parsed_samplesheet = SAMPLESHEET_CHECK ( samplesheet ) .csv .splitCsv ( header:true, sep:',' ) - .dump(tag: "input_split_csv_out") .branch { fasta: it['fasta'] != '' nanopore: it['instrument_platform'] == 'OXFORD_NANOPORE' @@ -21,17 +20,14 @@ workflow INPUT_CHECK { parsed_samplesheet.fastq .map { create_fastq_channel(it) } - .dump(tag: "fastq_channel_init") .set { fastq } parsed_samplesheet.nanopore .map { create_fastq_channel(it) } - .dump(tag: "fastq_nanopore_channel_init") .set { nanopore } parsed_samplesheet.fasta .map { create_fasta_channel(it) } - .dump(tag: "fasta_channel_init") .set { fasta } emit: diff --git a/subworkflows/local/longread_preprocessing.nf b/subworkflows/local/longread_preprocessing.nf index 7c7c24b..a1515c7 100644 --- a/subworkflows/local/longread_preprocessing.nf +++ b/subworkflows/local/longread_preprocessing.nf @@ -16,7 +16,6 @@ workflow LONGREAD_PREPROCESSING { PORECHOP ( reads ) ch_processed_reads = PORECHOP.out.reads - .dump(tag: "pre_fastqc_check") .map { meta, reads -> def meta_new = meta.clone() diff --git a/subworkflows/local/shortread_adapterremoval.nf b/subworkflows/local/shortread_adapterremoval.nf index ac8ff0f..5e005db 100644 --- a/subworkflows/local/shortread_adapterremoval.nf +++ b/subworkflows/local/shortread_adapterremoval.nf @@ -24,9 +24,10 @@ workflow SHORTREAD_ADAPTERREMOVAL { ADAPTERREMOVAL_SINGLE ( ch_input_for_adapterremoval.single, [] ) ADAPTERREMOVAL_PAIRED ( ch_input_for_adapterremoval.paired, [] ) + // due to the slightly ugly output implementation of the current AdapterRemoval2 version, each file + // has to be exported in a separate channel, and we must manually recombine when necessary + if ( params.shortread_clipmerge_mergepairs && !params.shortread_clipmerge_excludeunmerged ) { - // due to the slightly ugly output implementation of the current AdapterRemoval2 module, each file - // has to be exported in a separate channel, and we must manually recombine when necessary ch_adapterremoval_for_cat = ADAPTERREMOVAL_PAIRED.out.collapsed .mix( ADAPTERREMOVAL_PAIRED.out.collapsed_truncated, @@ -43,22 +44,23 @@ workflow SHORTREAD_ADAPTERREMOVAL { } .groupTuple() - - ch_adapterremoval_reads_prepped = CAT_FASTQ ( ch_adapterremoval_for_cat ).reads.mix( ADAPTERREMOVAL_SINGLE.out.singles_truncated ) + ch_adapterremoval_reads_prepped = CAT_FASTQ ( ch_adapterremoval_for_cat ).reads + .mix( ADAPTERREMOVAL_SINGLE.out.singles_truncated ) } else if ( params.shortread_clipmerge_mergepairs && params.shortread_clipmerge_excludeunmerged ) { - ch_adapterremoval_for_cat = ADAPTERREMOVAL_PAIRED.out.collapsed - .mix( ADAPTERREMOVAL_PAIRED.out.collapsed_truncated ) - .map { - meta, reads -> - def meta_new = meta.clone() - meta_new['single_end'] = true + ch_adapterremoval_for_cat = ADAPTERREMOVAL_PAIRED.out.collapsed + .mix( ADAPTERREMOVAL_PAIRED.out.collapsed_truncated ) + .map { + meta, reads -> + def meta_new = meta.clone() + meta_new['single_end'] = true - [ meta_new, reads ] - } - .groupTuple(by: 0) + [ meta_new, reads ] + } + .groupTuple(by: 0) - ch_adapterremoval_reads_prepped = CAT_FASTQ ( ch_adapterremoval_for_cat ).reads.mix( ADAPTERREMOVAL_SINGLE.out.singles_truncated ) + ch_adapterremoval_reads_prepped = CAT_FASTQ ( ch_adapterremoval_for_cat ).reads + .mix( ADAPTERREMOVAL_SINGLE.out.singles_truncated ) } else { @@ -68,7 +70,7 @@ workflow SHORTREAD_ADAPTERREMOVAL { .map { meta, pair1, pair2 -> [ meta, [ pair1, pair2 ].flatten() ] } - .mix( ADAPTERREMOVAL_SINGLE.out.singles_truncated ) + .mix( ADAPTERREMOVAL_SINGLE.out.singles_truncated ) } ch_processed_reads = ch_adapterremoval_reads_prepped diff --git a/workflows/taxprofiler.nf b/workflows/taxprofiler.nf index af5c54d..ce89a91 100644 --- a/workflows/taxprofiler.nf +++ b/workflows/taxprofiler.nf @@ -18,6 +18,7 @@ for (param in checkPathParamList) { if (param) { file(param, checkIfExists: true if (params.input ) { ch_input = file(params.input) } else { exit 1, 'Input samplesheet not specified!' } if (params.databases) { ch_databases = file(params.databases) } else { exit 1, 'Input database sheet not specified!' } if (params.shortread_clipmerge_mergepairs && params.run_malt ) log.warn "[nf-core/taxprofiler] warning: MALT does not except uncollapsed paired-reads. Pairs will be profiled as separate files." +if (params.shortread_clipmerge_excludeunmerged && !params.shortread_clipmerge_mergepairs) exit 1, "[nf-core/taxprofiler] error: cannot include unmerged reads when merging not turned on. Please specify --shortread_clipmerge_mergepairs" /* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -126,7 +127,6 @@ workflow TAXPROFILER { ch_input_for_profiling = ch_shortreads_preprocessed .mix( ch_longreads_preprocessed ) .combine(DB_CHECK.out.dbs) - .dump(tag: "reads_plus_db_clean") .branch { malt: it[2]['tool'] == 'malt' kraken2: it[2]['tool'] == 'kraken2' @@ -141,9 +141,7 @@ workflow TAXPROFILER { // loading takes a long time, so we only want to run it once per database // TODO document somewhere we only accept illumina short reads for MALT? ch_input_for_malt = ch_input_for_profiling.malt - .dump(tag: "input_to_malt_prefilter") .filter { it[0]['instrument_platform'] == 'ILLUMINA' } - .dump(tag: "input_to_malt_postfilter") .map { it -> def temp_meta = [ id: it[2]['db_name']] + it[2] @@ -151,7 +149,6 @@ workflow TAXPROFILER { [ temp_meta, it[1], db ] } .groupTuple(by: [0,2]) - .dump(tag: "input_to_malt") .multiMap { it -> reads: [ it[0], it[1].flatten() ] @@ -160,7 +157,6 @@ workflow TAXPROFILER { // We can run Kraken2 one-by-one sample-wise ch_input_for_kraken2 = ch_input_for_profiling.kraken2 - .dump(tag: "input_to_kraken") .multiMap { it -> reads: [ it[0] + it[2], it[1] ] From 4d2960c06fedfb052ce38b70c90197ea8ae8f9fc Mon Sep 17 00:00:00 2001 From: "Moritz E. Beber" Date: Fri, 18 Mar 2022 15:38:19 +0100 Subject: [PATCH 076/789] chore: add metaphlan3 module --- modules.json | 3 ++ modules/nf-core/modules/metaphlan3/main.nf | 45 ++++++++++++++++++ modules/nf-core/modules/metaphlan3/meta.yml | 52 +++++++++++++++++++++ 3 files changed, 100 insertions(+) create mode 100644 modules/nf-core/modules/metaphlan3/main.nf create mode 100644 modules/nf-core/modules/metaphlan3/meta.yml diff --git a/modules.json b/modules.json index dcfbd3f..9953edb 100644 --- a/modules.json +++ b/modules.json @@ -24,6 +24,9 @@ "malt/run": { "git_sha": "72b96f4e504eef673f2b5c13560a9d90b669129b" }, + "metaphlan3": { + "git_sha": "e745e167c1020928ef20ea1397b6b4d230681b4d" + }, "multiqc": { "git_sha": "e745e167c1020928ef20ea1397b6b4d230681b4d" }, diff --git a/modules/nf-core/modules/metaphlan3/main.nf b/modules/nf-core/modules/metaphlan3/main.nf new file mode 100644 index 0000000..3fc6b27 --- /dev/null +++ b/modules/nf-core/modules/metaphlan3/main.nf @@ -0,0 +1,45 @@ +process METAPHLAN3 { + tag "$meta.id" + label 'process_high' + + conda (params.enable_conda ? 'bioconda::metaphlan=3.0.12' : null) + container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? + 'https://depot.galaxyproject.org/singularity/metaphlan:3.0.12--pyhb7b1952_0' : + 'quay.io/biocontainers/metaphlan:3.0.12--pyhb7b1952_0' }" + + input: + tuple val(meta), path(input) + path metaphlan_db + + output: + tuple val(meta), path("*_profile.txt") , emit: profile + tuple val(meta), path("*.biom") , emit: biom + tuple val(meta), path('*.bowtie2out.txt'), optional:true, emit: bt2out + path "versions.yml" , emit: versions + + when: + task.ext.when == null || task.ext.when + + script: + def args = task.ext.args ?: '' + def prefix = task.ext.prefix ?: "${meta.id}" + def input_type = ("$input".endsWith(".fastq.gz")) ? "--input_type fastq" : ("$input".contains(".fasta")) ? "--input_type fasta" : ("$input".endsWith(".bowtie2out.txt")) ? "--input_type bowtie2out" : "--input_type sam" + def input_data = ("$input_type".contains("fastq")) && !meta.single_end ? "${input[0]},${input[1]}" : "$input" + def bowtie2_out = "$input_type" == "--input_type bowtie2out" || "$input_type" == "--input_type sam" ? '' : "--bowtie2out ${prefix}.bowtie2out.txt" + + """ + metaphlan \\ + --nproc $task.cpus \\ + $input_type \\ + $input_data \\ + $args \\ + $bowtie2_out \\ + --bowtie2db ${metaphlan_db} \\ + --biom ${prefix}.biom \\ + --output_file ${prefix}_profile.txt + cat <<-END_VERSIONS > versions.yml + "${task.process}": + metaphlan3: \$(metaphlan --version 2>&1 | awk '{print \$3}') + END_VERSIONS + """ +} diff --git a/modules/nf-core/modules/metaphlan3/meta.yml b/modules/nf-core/modules/metaphlan3/meta.yml new file mode 100644 index 0000000..d10a27d --- /dev/null +++ b/modules/nf-core/modules/metaphlan3/meta.yml @@ -0,0 +1,52 @@ +name: metaphlan3 +description: MetaPhlAn is a tool for profiling the composition of microbial communities from metagenomic shotgun sequencing data. +keywords: + - metagenomics + - classification + - fastq + - bam + - fasta +tools: + - metaphlan3: + description: Identify clades (phyla to species) present in the metagenome obtained from a microbiome sample and their relative abundance + homepage: https://huttenhower.sph.harvard.edu/metaphlan/ + documentation: https://github.com/biobakery/MetaPhlAn + doi: "10.7554/eLife.65088" + licence: ["MIT License"] + +input: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - input: + type: file + description: Metaphlan 3.0 can classify the metagenome from a variety of input data types, including FASTQ files (single-end and paired-end), FASTA, bowtie2-produced SAM files (produced from alignments to the MetaPHlAn marker database) and intermediate bowtie2 alignment files (bowtie2out) + pattern: "*.{fastq.gz, fasta, fasta.gz, sam, bowtie2out.txt}" + +output: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - versions: + type: file + description: File containing software versions + pattern: "versions.yml" + - profile: + type: file + description: Tab-separated output file of the predicted taxon relative abundances + pattern: "*.{txt}" + - biom: + type: file + description: General-use format for representing biological sample by observation contingency tables + pattern: "*.{biom}" + - bowtie2out: + type: file + description: Intermediate Bowtie2 output produced from mapping the metagenome against the MetaPHlAn marker database ( not compatible with `bowtie2out` files generated with MetaPhlAn versions below 3 ) + pattern: "*.{bowtie2out.txt}" + +authors: + - "@MGordon09" From 69db9206108c7926a25b45aba7401e406e36b4c3 Mon Sep 17 00:00:00 2001 From: "Moritz E. Beber" Date: Fri, 18 Mar 2022 16:01:33 +0100 Subject: [PATCH 077/789] feat: include metaphlan3 in workflow --- workflows/taxprofiler.nf | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/workflows/taxprofiler.nf b/workflows/taxprofiler.nf index ce89a91..a61580c 100644 --- a/workflows/taxprofiler.nf +++ b/workflows/taxprofiler.nf @@ -60,7 +60,7 @@ include { CUSTOM_DUMPSOFTWAREVERSIONS } from '../modules/nf-core/modules/custom/ include { CAT_FASTQ } from '../modules/nf-core/modules/cat/fastq/main' include { MALT_RUN } from '../modules/nf-core/modules/malt/run/main' include { KRAKEN2_KRAKEN2 } from '../modules/nf-core/modules/kraken2/kraken2/main' - +include { METAPHLAN3 } from '../modules/nf-core/modules/metaphlan3/main' /* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -130,6 +130,7 @@ workflow TAXPROFILER { .branch { malt: it[2]['tool'] == 'malt' kraken2: it[2]['tool'] == 'kraken2' + metaphlan3: it[2]['tool'] == 'metaphlan3' unknown: true } @@ -163,6 +164,13 @@ workflow TAXPROFILER { db: it[3] } + ch_input_for_metaphlan3 = ch_input_for_profiling.metaphlan3 + .multiMap { + it -> + reads: [ it[0] + it[2], it[1] ] + db: it[3] + } + /* MODULE: RUN PROFILING */ @@ -174,6 +182,10 @@ workflow TAXPROFILER { KRAKEN2_KRAKEN2 ( ch_input_for_kraken2.reads, ch_input_for_kraken2.db ) } + if ( params.run_metaphlan3 ) { + METAPHLAN3 ( ch_input_for_metaphlan3.reads, ch_input_for_metaphlan3.db ) + } + /* MODULE: MultiQC */ From a425a322f294f49f0588123a555533e292bacfc7 Mon Sep 17 00:00:00 2001 From: "Moritz E. Beber" Date: Fri, 18 Mar 2022 20:50:18 +0100 Subject: [PATCH 078/789] refactor: make metaphlan3 run in workflow --- nextflow.config | 3 +++ subworkflows/local/input_check.nf | 6 +++--- workflows/taxprofiler.nf | 3 ++- 3 files changed, 8 insertions(+), 4 deletions(-) diff --git a/nextflow.config b/nextflow.config index 7be36a6..9f3b103 100644 --- a/nextflow.config +++ b/nextflow.config @@ -71,6 +71,9 @@ params { // kraken2 run_kraken2 = false + + // metaphlan3 + run_metaphlan3 = false } // Load base.config by default for all pipelines diff --git a/subworkflows/local/input_check.nf b/subworkflows/local/input_check.nf index ec404c2..e8669b3 100644 --- a/subworkflows/local/input_check.nf +++ b/subworkflows/local/input_check.nf @@ -31,9 +31,9 @@ workflow INPUT_CHECK { .set { fasta } emit: - fastq // channel: [ val(meta), [ reads ] ] - nanopore // channel: [ val(meta), [ reads ] ] - fasta // channel: [ val(meta), fasta ] + fastq = fastq ?: [] // channel: [ val(meta), [ reads ] ] + nanopore = nanopore ?: [] // channel: [ val(meta), [ reads ] ] + fasta = fasta ?: [] // channel: [ val(meta), fasta ] versions = SAMPLESHEET_CHECK.out.versions // channel: [ versions.yml ] } diff --git a/workflows/taxprofiler.nf b/workflows/taxprofiler.nf index a61580c..99a1685 100644 --- a/workflows/taxprofiler.nf +++ b/workflows/taxprofiler.nf @@ -165,9 +165,10 @@ workflow TAXPROFILER { } ch_input_for_metaphlan3 = ch_input_for_profiling.metaphlan3 + .dump(tag: "input_metaphlan3") .multiMap { it -> - reads: [ it[0] + it[2], it[1] ] + reads: [it[0] + it[2], it[1][0]] db: it[3] } From fb9afa013afa33c08554a740b73bd18ee6a1d57e Mon Sep 17 00:00:00 2001 From: "Moritz E. Beber" Date: Fri, 1 Apr 2022 16:33:22 +0200 Subject: [PATCH 079/789] fix: add metaphlan parameter to schema --- nextflow_schema.json | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/nextflow_schema.json b/nextflow_schema.json index fb2ca31..358ba64 100644 --- a/nextflow_schema.json +++ b/nextflow_schema.json @@ -10,7 +10,10 @@ "type": "object", "fa_icon": "fas fa-terminal", "description": "Define where the pipeline should find input data and save output data.", - "required": ["input", "outdir"], + "required": [ + "input", + "outdir" + ], "properties": { "input": { "type": "string", @@ -173,7 +176,14 @@ "description": "Method used to save pipeline results to output directory.", "help_text": "The Nextflow `publishDir` option specifies which intermediate files should be saved to the output directory. This option tells the pipeline what method should be used to move these files. See [Nextflow docs](https://www.nextflow.io/docs/latest/process.html#publishdir) for details.", "fa_icon": "fas fa-copy", - "enum": ["symlink", "rellink", "link", "copy", "copyNoFollow", "move"], + "enum": [ + "symlink", + "rellink", + "link", + "copy", + "copyNoFollow", + "move" + ], "hidden": true }, "email_on_fail": { @@ -282,6 +292,10 @@ "run_kraken2": { "type": "boolean" }, + "run_metaphlan3": { + "type": "boolean", + "description": "Enable MetaPhlAn for taxonomic profiling" + }, "shortread_clipmerge_tool": { "type": "string", "default": "fastp", @@ -306,4 +320,4 @@ "default": 15 } } -} +} \ No newline at end of file From e579f9f5f33899336ea449eea41302ec0e8657f0 Mon Sep 17 00:00:00 2001 From: "Moritz E. Beber" Date: Sat, 2 Apr 2022 00:28:54 +0200 Subject: [PATCH 080/789] style: apply prettier --- nextflow_schema.json | 16 +++------------- 1 file changed, 3 insertions(+), 13 deletions(-) diff --git a/nextflow_schema.json b/nextflow_schema.json index 358ba64..1efdea8 100644 --- a/nextflow_schema.json +++ b/nextflow_schema.json @@ -10,10 +10,7 @@ "type": "object", "fa_icon": "fas fa-terminal", "description": "Define where the pipeline should find input data and save output data.", - "required": [ - "input", - "outdir" - ], + "required": ["input", "outdir"], "properties": { "input": { "type": "string", @@ -176,14 +173,7 @@ "description": "Method used to save pipeline results to output directory.", "help_text": "The Nextflow `publishDir` option specifies which intermediate files should be saved to the output directory. This option tells the pipeline what method should be used to move these files. See [Nextflow docs](https://www.nextflow.io/docs/latest/process.html#publishdir) for details.", "fa_icon": "fas fa-copy", - "enum": [ - "symlink", - "rellink", - "link", - "copy", - "copyNoFollow", - "move" - ], + "enum": ["symlink", "rellink", "link", "copy", "copyNoFollow", "move"], "hidden": true }, "email_on_fail": { @@ -320,4 +310,4 @@ "default": 15 } } -} \ No newline at end of file +} From 95ed86516b445b42e1703cd2c7c020c45fabbfb3 Mon Sep 17 00:00:00 2001 From: "Moritz E. Beber" Date: Sat, 2 Apr 2022 13:59:10 +0200 Subject: [PATCH 081/789] chore: add citation --- CITATIONS.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/CITATIONS.md b/CITATIONS.md index 8f286b0..0b35cce 100644 --- a/CITATIONS.md +++ b/CITATIONS.md @@ -34,6 +34,12 @@ > Vågene, Åshild J., Alexander Herbig, Michael G. Campana, Nelly M. Robles García, Christina Warinner, Susanna Sabin, Maria A. Spyrou, et al. 2018. “Salmonella Enterica Genomes from Victims of a Major Sixteenth-Century Epidemic in Mexico.” Nature Ecology & Evolution 2 (3): 520-28. doi: 10.1038/s41559-017-0446-6. +- [Porechop](https://github.com/rrwick/Porechop) + +- [MetaPhlAn3](https://doi.org/10.7554/eLife.65088) + + > Beghini, Francesco, Lauren J McIver, Aitor Blanco-Míguez, Leonard Dubois, Francesco Asnicar, Sagun Maharjan, Ana Mailyan, et al. 2021. “Integrating Taxonomic, Functional, and Strain-Level Profiling of Diverse Microbial Communities with BioBakery 3.” Edited by Peter Turnbaugh, Eduardo Franco, and C Titus Brown. ELife 10 (May): e65088. + ## Software packaging/containerisation tools - [Anaconda](https://anaconda.com) From b0b5936fe847fd416d4f223f9f1051425fddac73 Mon Sep 17 00:00:00 2001 From: "Moritz E. Beber" Date: Sat, 2 Apr 2022 14:44:27 +0200 Subject: [PATCH 082/789] chore: configure output for metaphlan3 --- conf/modules.config | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/conf/modules.config b/conf/modules.config index dc8b138..5dfaa82 100644 --- a/conf/modules.config +++ b/conf/modules.config @@ -170,6 +170,15 @@ process { ] } + withName: METAPHLAN3 { + publishDir = [ + path: { "${params.outdir}/metaphlan3/${metaphlan_db.simpleName}" }, + mode: params.publish_dir_mode, + pattern: '*.{biom,txt}' + ] + ext.prefix = { "${meta.id}-${meta.run_accession}-${metaphlan_db.simpleName}" } + } + withName: CUSTOM_DUMPSOFTWAREVERSIONS { publishDir = [ path: { "${params.outdir}/pipeline_info" }, From 996b3f49126b68e273dbc94dd46302f0490a8168 Mon Sep 17 00:00:00 2001 From: "Moritz E. Beber" Date: Sat, 2 Apr 2022 14:44:48 +0200 Subject: [PATCH 083/789] fix: correct the input shape to metaphlan3 --- workflows/taxprofiler.nf | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/workflows/taxprofiler.nf b/workflows/taxprofiler.nf index 99a1685..54ede13 100644 --- a/workflows/taxprofiler.nf +++ b/workflows/taxprofiler.nf @@ -168,7 +168,7 @@ workflow TAXPROFILER { .dump(tag: "input_metaphlan3") .multiMap { it -> - reads: [it[0] + it[2], it[1][0]] + reads: [it[0] + it[2], it[1]] db: it[3] } @@ -217,6 +217,7 @@ workflow TAXPROFILER { // TODO MALT results overwriting per database? // TODO Versions for Karken/MALT not report? + // TODO create multiQC module for metaphlan MULTIQC ( ch_multiqc_files.collect() ) From 817678d870389a5b88b99bcf4dc7290c71dd416b Mon Sep 17 00:00:00 2001 From: "Moritz E. Beber" Date: Sat, 2 Apr 2022 14:45:07 +0200 Subject: [PATCH 084/789] chore: add metaphlan3 run to test profile --- conf/test.config | 1 + 1 file changed, 1 insertion(+) diff --git a/conf/test.config b/conf/test.config index 92a10e4..b8cd47c 100644 --- a/conf/test.config +++ b/conf/test.config @@ -26,6 +26,7 @@ params { databases = 'https://raw.githubusercontent.com/nf-core/test-datasets/taxprofiler/database.csv' run_kraken2 = true run_malt = true + run_metaphlan3 = true shortread_clipmerge = true } From 70862570e0334e0af3a039fe790158f57c88b86d Mon Sep 17 00:00:00 2001 From: "Moritz E. Beber" Date: Sat, 2 Apr 2022 14:58:07 +0200 Subject: [PATCH 085/789] fix: use same naming scheme --- conf/modules.config | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/conf/modules.config b/conf/modules.config index 5dfaa82..37b1f2f 100644 --- a/conf/modules.config +++ b/conf/modules.config @@ -172,11 +172,11 @@ process { withName: METAPHLAN3 { publishDir = [ - path: { "${params.outdir}/metaphlan3/${metaphlan_db.simpleName}" }, + path: { "${params.outdir}/metaphlan3/${meta.db_name}" }, mode: params.publish_dir_mode, pattern: '*.{biom,txt}' ] - ext.prefix = { "${meta.id}-${meta.run_accession}-${metaphlan_db.simpleName}" } + ext.prefix = { "${meta.id}-${meta.run_accession}-${meta.db_name}" } } withName: CUSTOM_DUMPSOFTWAREVERSIONS { From 562fa426962da46946bf9411ac3b6f68b4ae8d96 Mon Sep 17 00:00:00 2001 From: "Moritz E. Beber" Date: Sat, 2 Apr 2022 15:00:55 +0200 Subject: [PATCH 086/789] fix: remove duplicate porechop entry --- CITATIONS.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/CITATIONS.md b/CITATIONS.md index 0b35cce..b18f841 100644 --- a/CITATIONS.md +++ b/CITATIONS.md @@ -34,8 +34,6 @@ > Vågene, Åshild J., Alexander Herbig, Michael G. Campana, Nelly M. Robles García, Christina Warinner, Susanna Sabin, Maria A. Spyrou, et al. 2018. “Salmonella Enterica Genomes from Victims of a Major Sixteenth-Century Epidemic in Mexico.” Nature Ecology & Evolution 2 (3): 520-28. doi: 10.1038/s41559-017-0446-6. -- [Porechop](https://github.com/rrwick/Porechop) - - [MetaPhlAn3](https://doi.org/10.7554/eLife.65088) > Beghini, Francesco, Lauren J McIver, Aitor Blanco-Míguez, Leonard Dubois, Francesco Asnicar, Sagun Maharjan, Ana Mailyan, et al. 2021. “Integrating Taxonomic, Functional, and Strain-Level Profiling of Diverse Microbial Communities with BioBakery 3.” Edited by Peter Turnbaugh, Eduardo Franco, and C Titus Brown. ELife 10 (May): e65088. From 4e22bc961084688ce9a0c6f8d1d564b70b7af912 Mon Sep 17 00:00:00 2001 From: "Moritz E. Beber" Date: Sat, 2 Apr 2022 15:20:36 +0200 Subject: [PATCH 087/789] fix: force UTF-8 in different locale? --- nextflow.config | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/nextflow.config b/nextflow.config index 9f3b103..588c0cf 100644 --- a/nextflow.config +++ b/nextflow.config @@ -158,7 +158,8 @@ if (!params.igenomes_ignore) { // See https://apeltzer.github.io/post/03-julia-lang-nextflow/ for details on that. Once we have a common agreement on where to keep Julia packages, this is adjustable. env { - PYTHONNOUSERSITE = 1 + PYTHONNOUSERSITE = '1' + PYTHONUTF8 = '1' // MetaPhlAn3 may fail with a UnicodeDecodeError if the locale is not set appropriately. R_PROFILE_USER = "/.Rprofile" R_ENVIRON_USER = "/.Renviron" JULIA_DEPOT_PATH = "/usr/local/share/julia" From 41526e8a64bdbf40cc28a941e1aaa2430aa66a5d Mon Sep 17 00:00:00 2001 From: "Moritz E. Beber" Date: Sat, 2 Apr 2022 15:44:39 +0200 Subject: [PATCH 088/789] try to fix locale --- .github/workflows/ci.yml | 8 ++++++++ nextflow.config | 2 +- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index a8078e5..b8975b5 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -46,6 +46,14 @@ jobs: wget -qO- get.nextflow.io | bash sudo mv nextflow /usr/local/bin/ + - name: Show current locale + run: locale + + - name: Set UTF-8 enabled locale + run: | + sudo locale-gen en_US.UTF-8 + sudo update-locale LANG=en_US.UTF-8 + - name: Run pipeline with test data # TODO nf-core: You can customise CI pipeline run tests as required # For example: adding multiple test runs with different parameters diff --git a/nextflow.config b/nextflow.config index 588c0cf..cd6de9c 100644 --- a/nextflow.config +++ b/nextflow.config @@ -159,7 +159,7 @@ if (!params.igenomes_ignore) { env { PYTHONNOUSERSITE = '1' - PYTHONUTF8 = '1' // MetaPhlAn3 may fail with a UnicodeDecodeError if the locale is not set appropriately. + // PYTHONUTF8 = '1' // MetaPhlAn3 may fail with a UnicodeDecodeError if the locale is not set appropriately. R_PROFILE_USER = "/.Rprofile" R_ENVIRON_USER = "/.Renviron" JULIA_DEPOT_PATH = "/usr/local/share/julia" From b055df5ea076e2d82071eba9e3e692ce9d43e976 Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Sat, 2 Apr 2022 17:02:05 +0200 Subject: [PATCH 089/789] Add bbduk complexity (entropy-based) filtering --- CITATIONS.md | 2 + conf/modules.config | 15 ++++-- modules.json | 3 ++ modules/nf-core/modules/bbmap/bbduk/main.nf | 43 +++++++++++++++ modules/nf-core/modules/bbmap/bbduk/meta.yml | 52 ++++++++++++++++++ nextflow.config | 7 +++ nextflow_schema.json | 21 +++++++- subworkflows/local/longread_preprocessing.nf | 8 +-- .../local/shortread_adapterremoval.nf | 6 +-- .../local/shortread_complexityfiltering.nf | 28 ++++++++++ subworkflows/local/shortread_fastp.nf | 10 ++-- subworkflows/local/shortread_preprocessing.nf | 6 +-- workflows/taxprofiler.nf | 54 +++++++++++++------ 13 files changed, 216 insertions(+), 39 deletions(-) create mode 100644 modules/nf-core/modules/bbmap/bbduk/main.nf create mode 100644 modules/nf-core/modules/bbmap/bbduk/meta.yml create mode 100644 subworkflows/local/shortread_complexityfiltering.nf diff --git a/CITATIONS.md b/CITATIONS.md index 8f286b0..0eb8141 100644 --- a/CITATIONS.md +++ b/CITATIONS.md @@ -26,6 +26,8 @@ - [Porechop](https://github.com/rrwick/Porechop) +- [BBTools](http://sourceforge.net/projects/bbmap/) + - [Kraken2](https://doi.org/10.1186/s13059-019-1891-0) > Wood, Derrick E., Jennifer Lu, and Ben Langmead. 2019. “Improved Metagenomic Analysis with Kraken 2.” Genome Biology 20 (1): 257. doi: 10.1186/s13059-019-1891-0. diff --git a/conf/modules.config b/conf/modules.config index dc8b138..601f915 100644 --- a/conf/modules.config +++ b/conf/modules.config @@ -132,7 +132,6 @@ process { ] } - withName: PORECHOP { ext.prefix = { "${meta.id}_${meta.run_accession}" } publishDir = [ @@ -142,11 +141,17 @@ process { ] } - withName: CAT_FASTQ { + withName: BBMAP_BBDUK { + ext.args = [ + "entropy=${params.shortread_complexityfilter_bbduk_entropy}", + "entropywindow=${params.shortread_complexityfilter_bbduk_windowsize}", + params.shortread_complexityfilter_bbduk_mask ? "entropymask=t" : "entropymask=f" + ].join(' ').trim() + ext.prefix = { "${meta.id}-${meta.run_accession}" } publishDir = [ - path: { "${params.outdir}/prepared_sequences" }, - mode: 'copy', - pattern: '*.fastq.gz' + path: { "${params.outdir}/bbduk/" }, + mode: params.publish_dir_mode, + pattern: '*.{fastq.gz,log}' ] } diff --git a/modules.json b/modules.json index dcfbd3f..64e6c3c 100644 --- a/modules.json +++ b/modules.json @@ -6,6 +6,9 @@ "adapterremoval": { "git_sha": "f0800157544a82ae222931764483331a81812012" }, + "bbmap/bbduk": { + "git_sha": "e745e167c1020928ef20ea1397b6b4d230681b4d" + }, "cat/fastq": { "git_sha": "e745e167c1020928ef20ea1397b6b4d230681b4d" }, diff --git a/modules/nf-core/modules/bbmap/bbduk/main.nf b/modules/nf-core/modules/bbmap/bbduk/main.nf new file mode 100644 index 0000000..0ae005e --- /dev/null +++ b/modules/nf-core/modules/bbmap/bbduk/main.nf @@ -0,0 +1,43 @@ +process BBMAP_BBDUK { + tag "$meta.id" + label 'process_medium' + + conda (params.enable_conda ? "bioconda::bbmap=38.90" : null) + container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? + 'https://depot.galaxyproject.org/singularity/bbmap:38.90--he522d1c_1' : + 'quay.io/biocontainers/bbmap:38.90--he522d1c_1' }" + + input: + tuple val(meta), path(reads) + path contaminants + + output: + tuple val(meta), path('*.fastq.gz'), emit: reads + tuple val(meta), path('*.log') , emit: log + path "versions.yml" , emit: versions + + when: + task.ext.when == null || task.ext.when + + script: + def args = task.ext.args ?: '' + def prefix = task.ext.prefix ?: "${meta.id}" + def raw = meta.single_end ? "in=${reads[0]}" : "in1=${reads[0]} in2=${reads[1]}" + def trimmed = meta.single_end ? "out=${prefix}.fastq.gz" : "out1=${prefix}_1.fastq.gz out2=${prefix}_2.fastq.gz" + def contaminants_fa = contaminants ? "ref=$contaminants" : '' + """ + maxmem=\$(echo \"$task.memory\"| sed 's/ GB/g/g') + bbduk.sh \\ + -Xmx\$maxmem \\ + $raw \\ + $trimmed \\ + threads=$task.cpus \\ + $args \\ + $contaminants_fa \\ + &> ${prefix}.bbduk.log + cat <<-END_VERSIONS > versions.yml + "${task.process}": + bbmap: \$(bbversion.sh) + END_VERSIONS + """ +} diff --git a/modules/nf-core/modules/bbmap/bbduk/meta.yml b/modules/nf-core/modules/bbmap/bbduk/meta.yml new file mode 100644 index 0000000..6abd3d9 --- /dev/null +++ b/modules/nf-core/modules/bbmap/bbduk/meta.yml @@ -0,0 +1,52 @@ +name: bbmap_bbduk +description: Adapter and quality trimming of sequencing reads +keywords: + - trimming + - adapter trimming + - quality trimming +tools: + - bbmap: + description: BBMap is a short read aligner, as well as various other bioinformatic tools. + homepage: https://jgi.doe.gov/data-and-tools/bbtools/bb-tools-user-guide/ + documentation: https://jgi.doe.gov/data-and-tools/bbtools/bb-tools-user-guide/ + tool_dev_url: None + doi: "" + licence: ["UC-LBL license (see package)"] + +input: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - reads: + type: file + description: | + List of input FastQ files of size 1 and 2 for single-end and paired-end data, + respectively. + - contaminants: + type: file + description: | + Reference files containing adapter and/or contaminant sequences for sequence kmer matching + +output: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - reads: + type: file + description: The trimmed/modified fastq reads + pattern: "*fastq.gz" + - versions: + type: file + description: File containing software versions + pattern: "versions.yml" + - log: + type: file + description: Bbduk log file + pattern: "*bbduk.log" + +authors: + - "@MGordon09" diff --git a/nextflow.config b/nextflow.config index 7be36a6..d57743a 100644 --- a/nextflow.config +++ b/nextflow.config @@ -65,6 +65,13 @@ params { shortread_clipmerge_minlength = 15 longread_clip = false + // Complexity filtering + shortread_complexityfilter = false + shortread_complexityfilter_tool = 'bbduk' + shortread_complexityfilter_bbduk_entropy = 0.3 + shortread_complexityfilter_bbduk_windowsize = 50 + shortread_complexityfilter_bbduk_mask = false + // MALT run_malt = false malt_mode = 'BlastN' diff --git a/nextflow_schema.json b/nextflow_schema.json index fb2ca31..bd8b438 100644 --- a/nextflow_schema.json +++ b/nextflow_schema.json @@ -266,8 +266,7 @@ "type": "boolean" }, "shortread_clipmerge_excludeunmerged": { - "type": "boolean", - "default": false + "type": "boolean" }, "longread_clip": { "type": "boolean" @@ -304,6 +303,24 @@ "shortread_clipmerge_minlength": { "type": "integer", "default": 15 + }, + "shortread_complexityfilter_tool": { + "type": "string", + "default": "bbduk" + }, + "shortread_complexityfilter_bbduk_entropy": { + "type": "number", + "default": 0.3 + }, + "shortread_complexityfilter_bbduk_windowsize": { + "type": "integer", + "default": 50 + }, + "shortread_complexityfilter_bbduk_mask": { + "type": "boolean" + }, + "shortread_complexityfilter": { + "type": "boolean" } } } diff --git a/subworkflows/local/longread_preprocessing.nf b/subworkflows/local/longread_preprocessing.nf index a1515c7..2fa5f3b 100644 --- a/subworkflows/local/longread_preprocessing.nf +++ b/subworkflows/local/longread_preprocessing.nf @@ -1,6 +1,6 @@ -/* -Process long raw reads with porechop -*/ +// +// Process long raw reads with porechop +// include { FASTQC as FASTQC_PROCESSED } from '../../modules/nf-core/modules/fastqc/main' include { PORECHOP } from '../../modules/nf-core/modules/porechop/main' @@ -25,7 +25,7 @@ workflow LONGREAD_PREPROCESSING { FASTQC_PROCESSED ( PORECHOP.out.reads ) ch_versions = ch_versions.mix(PORECHOP.out.versions.first()) - ch_multiqc_files = ch_multiqc_files.mix( FASTQC_PROCESSED.out.zip.collect{it[1]} ) + ch_multiqc_files = ch_multiqc_files.mix( FASTQC_PROCESSED.out.zip ) emit: diff --git a/subworkflows/local/shortread_adapterremoval.nf b/subworkflows/local/shortread_adapterremoval.nf index 5e005db..b173e4c 100644 --- a/subworkflows/local/shortread_adapterremoval.nf +++ b/subworkflows/local/shortread_adapterremoval.nf @@ -1,6 +1,6 @@ -/* -Process short raw reads with AdapterRemoval -*/ +// +// Process short raw reads with AdapterRemoval +// include { ADAPTERREMOVAL as ADAPTERREMOVAL_SINGLE } from '../../modules/nf-core/modules/adapterremoval/main' include { ADAPTERREMOVAL as ADAPTERREMOVAL_PAIRED } from '../../modules/nf-core/modules/adapterremoval/main' diff --git a/subworkflows/local/shortread_complexityfiltering.nf b/subworkflows/local/shortread_complexityfiltering.nf new file mode 100644 index 0000000..3d69ed6 --- /dev/null +++ b/subworkflows/local/shortread_complexityfiltering.nf @@ -0,0 +1,28 @@ +// +// Check input samplesheet and get read channels +// + +include { BBMAP_BBDUK } from '../../modules/nf-core/modules/bbmap/bbduk/main' + +workflow SHORTREAD_COMPLEXITYFILTERING { + take: + reads // [ [ meta ], [ reads ] ] + + main: + ch_versions = Channel.empty() + ch_multiqc_files = Channel.empty() + + if ( params.shortread_complexityfilter_tool == 'bbduk' ) { + ch_filtered_reads = BBMAP_BBDUK ( reads, [] ).reads + ch_versions = ch_versions.mix( BBMAP_BBDUK.out.versions.first() ) + ch_multiqc_files = ch_multiqc_files.mix( BBMAP_BBDUK.out.log ) + } else { + ch_filtered_reads = reads + } + + emit: + reads = ch_filtered_reads // channel: [ val(meta), [ reads ] ] + versions = ch_versions // channel: [ versions.yml ] + mqc = ch_multiqc_files +} + diff --git a/subworkflows/local/shortread_fastp.nf b/subworkflows/local/shortread_fastp.nf index 48817db..18baf17 100644 --- a/subworkflows/local/shortread_fastp.nf +++ b/subworkflows/local/shortread_fastp.nf @@ -1,6 +1,6 @@ -/* -Process short raw reads with FastP -*/ +// +// Process short raw reads with FastP +// include { FASTP as FASTP_SINGLE } from '../../modules/nf-core/modules/fastp/main' include { FASTP as FASTP_PAIRED } from '../../modules/nf-core/modules/fastp/main' @@ -44,8 +44,8 @@ workflow SHORTREAD_FASTP { ch_processed_reads = ch_fastp_reads_prepped - ch_multiqc_files = ch_multiqc_files.mix( FASTP_SINGLE.out.json.collect{it[1]} ) - ch_multiqc_files = ch_multiqc_files.mix( FASTP_PAIRED.out.json.collect{it[1]} ) + ch_multiqc_files = ch_multiqc_files.mix( FASTP_SINGLE.out.json ) + ch_multiqc_files = ch_multiqc_files.mix( FASTP_PAIRED.out.json ) emit: reads = ch_processed_reads // channel: [ val(meta), [ reads ] ] diff --git a/subworkflows/local/shortread_preprocessing.nf b/subworkflows/local/shortread_preprocessing.nf index 1d0caac..b0ac25e 100644 --- a/subworkflows/local/shortread_preprocessing.nf +++ b/subworkflows/local/shortread_preprocessing.nf @@ -1,5 +1,5 @@ // -// Check input samplesheet and get read channels +// Perform read trimming and merging // @@ -9,7 +9,7 @@ include { FASTQC as FASTQC_PROCESSED } from '../../modules/nf-core/modules workflow SHORTREAD_PREPROCESSING { take: - reads // file: /path/to/samplesheet.csv + reads // [ [ meta ], [ reads ] ] main: ch_versions = Channel.empty() @@ -29,7 +29,7 @@ workflow SHORTREAD_PREPROCESSING { FASTQC_PROCESSED ( ch_processed_reads ) ch_versions = ch_versions.mix( FASTQC_PROCESSED.out.versions ) - ch_multiqc_files = ch_multiqc_files.mix( FASTQC_PROCESSED.out.zip.collect{it[1]} ) + ch_multiqc_files = ch_multiqc_files.mix( FASTQC_PROCESSED.out.zip ) emit: reads = ch_processed_reads // channel: [ val(meta), [ reads ] ] diff --git a/workflows/taxprofiler.nf b/workflows/taxprofiler.nf index ce89a91..a403589 100644 --- a/workflows/taxprofiler.nf +++ b/workflows/taxprofiler.nf @@ -40,9 +40,10 @@ ch_multiqc_custom_config = params.multiqc_config ? Channel.fromPath(params.multi // include { INPUT_CHECK } from '../subworkflows/local/input_check' -include { DB_CHECK } from '../subworkflows/local/db_check' -include { SHORTREAD_PREPROCESSING } from '../subworkflows/local/shortread_preprocessing' -include { LONGREAD_PREPROCESSING } from '../subworkflows/local/longread_preprocessing' +include { DB_CHECK } from '../subworkflows/local/db_check' +include { SHORTREAD_PREPROCESSING } from '../subworkflows/local/shortread_preprocessing' +include { LONGREAD_PREPROCESSING } from '../subworkflows/local/longread_preprocessing' +include { SHORTREAD_COMPLEXITYFILTERING } from '../subworkflows/local/shortread_complexityfiltering' /* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -61,7 +62,6 @@ include { CAT_FASTQ } from '../modules/nf-core/modules/cat/fas include { MALT_RUN } from '../modules/nf-core/modules/malt/run/main' include { KRAKEN2_KRAKEN2 } from '../modules/nf-core/modules/kraken2/kraken2/main' - /* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ RUN MAIN WORKFLOW @@ -98,10 +98,6 @@ workflow TAXPROFILER { ch_versions = ch_versions.mix(FASTQC.out.versions.first()) - CUSTOM_DUMPSOFTWAREVERSIONS ( - ch_versions.unique().collectFile(name: 'collated_versions.yml') - ) - /* SUBWORKFLOW: PERFORM PREPROCESSING */ @@ -114,17 +110,26 @@ workflow TAXPROFILER { if ( params.longread_clip ) { ch_longreads_preprocessed = LONGREAD_PREPROCESSING ( INPUT_CHECK.out.nanopore ).reads .map { it -> [ it[0], [it[1]] ] } - ch_versions = ch_versions.mix(LONGREAD_PREPROCESSING.out.versions.first()) } else { ch_longreads_preprocessed = INPUT_CHECK.out.nanopore } + /* + SUBWORKFLOW: COMPLEXITY FILTERING + */ + + if ( params.shortread_complexityfilter ) { + ch_shortreads_filtered = SHORTREAD_COMPLEXITYFILTERING ( ch_shortreads_preprocessed ).reads + } else { + ch_shortreads_filtered = ch_shortreads_preprocessed + } + /* COMBINE READS WITH POSSIBLE DATABASES */ // e.g. output [DUMP: reads_plus_db] [['id':'2612', 'run_accession':'combined', 'instrument_platform':'ILLUMINA', 'single_end':1], /2612.merged.fastq.gz, ['tool':'malt', 'db_name':'mal95', 'db_params':'"-id 90"'], /malt90] - ch_input_for_profiling = ch_shortreads_preprocessed + ch_input_for_profiling = ch_shortreads_filtered .mix( ch_longreads_preprocessed ) .combine(DB_CHECK.out.dbs) .branch { @@ -177,6 +182,12 @@ workflow TAXPROFILER { /* MODULE: MultiQC */ + + CUSTOM_DUMPSOFTWAREVERSIONS ( + ch_versions.unique().collectFile(name: 'collated_versions.yml') + ) + + workflow_summary = WorkflowTaxprofiler.paramsSummaryMultiqc(workflow, summary_params) ch_workflow_summary = Channel.value(workflow_summary) @@ -188,21 +199,30 @@ workflow TAXPROFILER { ch_multiqc_files = ch_multiqc_files.mix(FASTQC.out.zip.collect{it[1]}.ifEmpty([])) if (params.shortread_clipmerge) { - ch_multiqc_files = ch_multiqc_files.mix(SHORTREAD_PREPROCESSING.out.mqc) + ch_multiqc_files = ch_multiqc_files.mix( SHORTREAD_PREPROCESSING.out.mqc.collect{it[1]}.ifEmpty([]) ).dump(tag: "mqc_shortclipmerge") + ch_versions = ch_versions.mix( SHORTREAD_PREPROCESSING.out.versions ) } + if (params.longread_clip) { - ch_multiqc_files = ch_multiqc_files.mix(LONGREAD_PREPROCESSING.out.mqc) + ch_multiqc_files = ch_multiqc_files.mix( LONGREAD_PREPROCESSING.out.mqc.collect{it[1]}.ifEmpty([]) ).dump(tag: "mqc_longclipmerge") + ch_versions = ch_versions.mix( LONGREAD_PREPROCESSING.out.versions ) + } + + if (params.shortread_complexityfilter){ + ch_multiqc_files = ch_multiqc_files.mix( SHORTREAD_COMPLEXITYFILTERING.out.mqc.collect{it[1]}.ifEmpty([]) ).dump(tag: "mqc_compelxity") + ch_versions = ch_versions.mix( SHORTREAD_COMPLEXITYFILTERING.out.versions ) } + if (params.run_kraken2) { - ch_multiqc_files = ch_multiqc_files.mix(KRAKEN2_KRAKEN2.out.txt.collect{it[1]}.ifEmpty([])) - ch_versions = ch_versions.mix(KRAKEN2_KRAKEN2.out.versions.first()) + ch_multiqc_files = ch_multiqc_files.mix( KRAKEN2_KRAKEN2.out.txt.collect{it[1]}.ifEmpty([]) ).dump(tag: "mqc_kraken") + ch_versions = ch_versions.mix( KRAKEN2_KRAKEN2.out.versions.first() ) } + if (params.run_malt) { - ch_multiqc_files = ch_multiqc_files.mix(MALT_RUN.out.log.collect{it[1]}.ifEmpty([])) - ch_versions = ch_versions.mix(MALT_RUN.out.versions.first()) + ch_multiqc_files = ch_multiqc_files.mix( MALT_RUN.out.log.collect{it[1]}.ifEmpty([]) ).dump(tag: "mqc_malt") + ch_versions = ch_versions.mix( MALT_RUN.out.versions.first() ) } - // TODO MALT results overwriting per database? // TODO Versions for Karken/MALT not report? MULTIQC ( ch_multiqc_files.collect() From 4eab257d68a36b333bc1c5e087e6a79721b5b87e Mon Sep 17 00:00:00 2001 From: "Moritz E. Beber" Date: Sat, 2 Apr 2022 17:05:46 +0200 Subject: [PATCH 090/789] style: prettify comment --- subworkflows/local/shortread_adapterremoval.nf | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/subworkflows/local/shortread_adapterremoval.nf b/subworkflows/local/shortread_adapterremoval.nf index 5e005db..3598e3e 100644 --- a/subworkflows/local/shortread_adapterremoval.nf +++ b/subworkflows/local/shortread_adapterremoval.nf @@ -24,8 +24,10 @@ workflow SHORTREAD_ADAPTERREMOVAL { ADAPTERREMOVAL_SINGLE ( ch_input_for_adapterremoval.single, [] ) ADAPTERREMOVAL_PAIRED ( ch_input_for_adapterremoval.paired, [] ) - // due to the slightly ugly output implementation of the current AdapterRemoval2 version, each file - // has to be exported in a separate channel, and we must manually recombine when necessary + /* + * Due to the ~slightly~ very ugly output implementation of the current AdapterRemoval2 version, each file + * has to be exported in a separate channel and we must manually recombine when necessary. + */ if ( params.shortread_clipmerge_mergepairs && !params.shortread_clipmerge_excludeunmerged ) { ch_adapterremoval_for_cat = ADAPTERREMOVAL_PAIRED.out.collapsed From 7f1a7fb4e7be661e3a01ab0ffb0a61fe5de314ae Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Sat, 2 Apr 2022 17:05:54 +0200 Subject: [PATCH 091/789] Add complexity filtering to test profile --- conf/test.config | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/conf/test.config b/conf/test.config index 92a10e4..bce5918 100644 --- a/conf/test.config +++ b/conf/test.config @@ -24,8 +24,9 @@ params { // TODO nf-core: Give any required params for the test so that command line flags are not needed input = 'https://raw.githubusercontent.com/nf-core/test-datasets/taxprofiler/samplesheet.csv' databases = 'https://raw.githubusercontent.com/nf-core/test-datasets/taxprofiler/database.csv' - run_kraken2 = true - run_malt = true - shortread_clipmerge = true + run_kraken2 = true + run_malt = true + shortread_clipmerge = true + shortread_complexityfiltering = true } From 469e4f36825d86bf83a341d8c95bb4768f682bfd Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Sat, 2 Apr 2022 17:07:30 +0200 Subject: [PATCH 092/789] Remove remaining debugging .dumps( --- workflows/taxprofiler.nf | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/workflows/taxprofiler.nf b/workflows/taxprofiler.nf index a403589..1c86edb 100644 --- a/workflows/taxprofiler.nf +++ b/workflows/taxprofiler.nf @@ -90,7 +90,7 @@ workflow TAXPROFILER { /* MODULE: Run FastQC */ - ch_input_for_fastqc = INPUT_CHECK.out.fastq.mix( INPUT_CHECK.out.nanopore ).dump(tag: "input_to_fastq") + ch_input_for_fastqc = INPUT_CHECK.out.fastq.mix( INPUT_CHECK.out.nanopore ) FASTQC ( ch_input_for_fastqc @@ -199,27 +199,27 @@ workflow TAXPROFILER { ch_multiqc_files = ch_multiqc_files.mix(FASTQC.out.zip.collect{it[1]}.ifEmpty([])) if (params.shortread_clipmerge) { - ch_multiqc_files = ch_multiqc_files.mix( SHORTREAD_PREPROCESSING.out.mqc.collect{it[1]}.ifEmpty([]) ).dump(tag: "mqc_shortclipmerge") + ch_multiqc_files = ch_multiqc_files.mix( SHORTREAD_PREPROCESSING.out.mqc.collect{it[1]}.ifEmpty([]) ) ch_versions = ch_versions.mix( SHORTREAD_PREPROCESSING.out.versions ) } if (params.longread_clip) { - ch_multiqc_files = ch_multiqc_files.mix( LONGREAD_PREPROCESSING.out.mqc.collect{it[1]}.ifEmpty([]) ).dump(tag: "mqc_longclipmerge") + ch_multiqc_files = ch_multiqc_files.mix( LONGREAD_PREPROCESSING.out.mqc.collect{it[1]}.ifEmpty([]) ) ch_versions = ch_versions.mix( LONGREAD_PREPROCESSING.out.versions ) } if (params.shortread_complexityfilter){ - ch_multiqc_files = ch_multiqc_files.mix( SHORTREAD_COMPLEXITYFILTERING.out.mqc.collect{it[1]}.ifEmpty([]) ).dump(tag: "mqc_compelxity") + ch_multiqc_files = ch_multiqc_files.mix( SHORTREAD_COMPLEXITYFILTERING.out.mqc.collect{it[1]}.ifEmpty([]) ) ch_versions = ch_versions.mix( SHORTREAD_COMPLEXITYFILTERING.out.versions ) } if (params.run_kraken2) { - ch_multiqc_files = ch_multiqc_files.mix( KRAKEN2_KRAKEN2.out.txt.collect{it[1]}.ifEmpty([]) ).dump(tag: "mqc_kraken") + ch_multiqc_files = ch_multiqc_files.mix( KRAKEN2_KRAKEN2.out.txt.collect{it[1]}.ifEmpty([]) ) ch_versions = ch_versions.mix( KRAKEN2_KRAKEN2.out.versions.first() ) } if (params.run_malt) { - ch_multiqc_files = ch_multiqc_files.mix( MALT_RUN.out.log.collect{it[1]}.ifEmpty([]) ).dump(tag: "mqc_malt") + ch_multiqc_files = ch_multiqc_files.mix( MALT_RUN.out.log.collect{it[1]}.ifEmpty([]) ) ch_versions = ch_versions.mix( MALT_RUN.out.versions.first() ) } From 02d950c58c84f4e6c571cdb055154016fc78a22d Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Sat, 2 Apr 2022 17:18:20 +0200 Subject: [PATCH 093/789] Fix test so complexity filter actually executes --- conf/test.config | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/conf/test.config b/conf/test.config index bce5918..3e7530c 100644 --- a/conf/test.config +++ b/conf/test.config @@ -27,6 +27,6 @@ params { run_kraken2 = true run_malt = true shortread_clipmerge = true - shortread_complexityfiltering = true + shortread_complexityfilter = true } From be93eae64057d21c7c5da34162ac2bc51fd86922 Mon Sep 17 00:00:00 2001 From: "Moritz E. Beber" Date: Sat, 2 Apr 2022 21:50:13 +0200 Subject: [PATCH 094/789] fix: insert `.fastq` file extension The MetaPhlAn3 module computes the input type from the file extension without the possibility to configure an override. Since AdapterRemoval2 creates files without `.fastq` extensions, MetaPhlAn3 input was determined to be SAM. --- modules/local/ensure_fastq_extension.nf | 31 +++++ .../local/shortread_adapterremoval.nf | 130 ++++++++++++------ 2 files changed, 120 insertions(+), 41 deletions(-) create mode 100644 modules/local/ensure_fastq_extension.nf diff --git a/modules/local/ensure_fastq_extension.nf b/modules/local/ensure_fastq_extension.nf new file mode 100644 index 0000000..6de223b --- /dev/null +++ b/modules/local/ensure_fastq_extension.nf @@ -0,0 +1,31 @@ +process ENSURE_FASTQ_EXTENSION { + tag "$meta.id" + label 'process_low' + + conda (params.enable_conda ? "conda-forge::bash=5.0" : null) + container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? + 'https://containers.biocontainers.pro/s3/SingImgsRepo/biocontainers/v1.2.0_cv2/biocontainers_v1.2.0_cv2.img' : + 'biocontainers/biocontainers:v1.2.0_cv2' }" + + + input: + tuple val(meta), path(reads) + + output: + tuple val(meta), path('*.fastq.gz'), emit: reads + + script: + if (meta.single_end) { + fastq = "${reads.baseName}.fastq.gz" + """ + ln -s '${reads}' '${fastq}' + """ + } else { + first = "${reads[0].baseName}.fastq.gz" + second = "${reads[1].baseName}.fastq.gz" + """ + ln -s '${reads[0]}' '${first}' + ln -s '${reads[1]}' '${second}' + """ + } +} diff --git a/subworkflows/local/shortread_adapterremoval.nf b/subworkflows/local/shortread_adapterremoval.nf index 3598e3e..661062d 100644 --- a/subworkflows/local/shortread_adapterremoval.nf +++ b/subworkflows/local/shortread_adapterremoval.nf @@ -5,6 +5,11 @@ Process short raw reads with AdapterRemoval include { ADAPTERREMOVAL as ADAPTERREMOVAL_SINGLE } from '../../modules/nf-core/modules/adapterremoval/main' include { ADAPTERREMOVAL as ADAPTERREMOVAL_PAIRED } from '../../modules/nf-core/modules/adapterremoval/main' include { CAT_FASTQ } from '../../modules/nf-core/modules/cat/fastq/main' +include { + ENSURE_FASTQ_EXTENSION as ENSURE_FASTQ_EXTENSION1; + ENSURE_FASTQ_EXTENSION as ENSURE_FASTQ_EXTENSION2; + ENSURE_FASTQ_EXTENSION as ENSURE_FASTQ_EXTENSION3; +} from '../../modules/local/ensure_fastq_extension' workflow SHORTREAD_ADAPTERREMOVAL { @@ -30,59 +35,102 @@ workflow SHORTREAD_ADAPTERREMOVAL { */ if ( params.shortread_clipmerge_mergepairs && !params.shortread_clipmerge_excludeunmerged ) { - ch_adapterremoval_for_cat = ADAPTERREMOVAL_PAIRED.out.collapsed - .mix( - ADAPTERREMOVAL_PAIRED.out.collapsed_truncated, - ADAPTERREMOVAL_PAIRED.out.singles_truncated, - ADAPTERREMOVAL_PAIRED.out.pair1_truncated, - ADAPTERREMOVAL_PAIRED.out.pair2_truncated - ) - .map { - meta, reads -> - def meta_new = meta.clone() - meta_new.single_end = true - - [ meta_new, reads ] - } - .groupTuple() - - ch_adapterremoval_reads_prepped = CAT_FASTQ ( ch_adapterremoval_for_cat ).reads - .mix( ADAPTERREMOVAL_SINGLE.out.singles_truncated ) + + ENSURE_FASTQ_EXTENSION1( + Channel.empty().mix( + ADAPTERREMOVAL_PAIRED.out.collapsed, + ADAPTERREMOVAL_PAIRED.out.collapsed_truncated, + ADAPTERREMOVAL_PAIRED.out.singles_truncated, + ADAPTERREMOVAL_PAIRED.out.pair1_truncated, + ADAPTERREMOVAL_PAIRED.out.pair2_truncated + ) + .map { meta, reads -> + meta.single_end = true + [meta, reads] + } + ) + + CAT_FASTQ( + ENSURE_FASTQ_EXTENSION1.out.reads + .groupTuple() + ) + + ENSURE_FASTQ_EXTENSION2(ADAPTERREMOVAL_SINGLE.out.singles_truncated) + + ch_adapterremoval_reads_prepped = CAT_FASTQ.out.reads + .mix(ENSURE_FASTQ_EXTENSION2.out.reads) } else if ( params.shortread_clipmerge_mergepairs && params.shortread_clipmerge_excludeunmerged ) { - ch_adapterremoval_for_cat = ADAPTERREMOVAL_PAIRED.out.collapsed - .mix( ADAPTERREMOVAL_PAIRED.out.collapsed_truncated ) - .map { - meta, reads -> - def meta_new = meta.clone() - meta_new['single_end'] = true - [ meta_new, reads ] - } - .groupTuple(by: 0) + ENSURE_FASTQ_EXTENSION1( + Channel.empty().mix( + ADAPTERREMOVAL_PAIRED.out.collapsed, + ADAPTERREMOVAL_PAIRED.out.collapsed_truncated + ) + .map { meta, reads -> + meta.single_end = true + [meta, reads] + } + ) + + CAT_FASTQ( + ENSURE_FASTQ_EXTENSION1.out.reads + .groupTuple() + ) - ch_adapterremoval_reads_prepped = CAT_FASTQ ( ch_adapterremoval_for_cat ).reads - .mix( ADAPTERREMOVAL_SINGLE.out.singles_truncated ) + ENSURE_FASTQ_EXTENSION2(ADAPTERREMOVAL_SINGLE.out.singles_truncated) + + ch_adapterremoval_reads_prepped = CAT_FASTQ.out.reads + .mix(ENSURE_FASTQ_EXTENSION2.out.reads) } else { - ch_adapterremoval_reads_prepped = ADAPTERREMOVAL_PAIRED.out.pair1_truncated - .join( ADAPTERREMOVAL_PAIRED.out.pair2_truncated ) - .groupTuple() - .map { meta, pair1, pair2 -> - [ meta, [ pair1, pair2 ].flatten() ] - } - .mix( ADAPTERREMOVAL_SINGLE.out.singles_truncated ) - } + ENSURE_FASTQ_EXTENSION1( + ADAPTERREMOVAL_PAIRED.out.pair1_truncated + .map { meta, reads -> + meta.single_end = true + [meta, reads] + } + ) + + ENSURE_FASTQ_EXTENSION2( + ADAPTERREMOVAL_PAIRED.out.pair2_truncated + .map { meta, reads -> + meta.single_end = true + [meta, reads] + } + ) + + ENSURE_FASTQ_EXTENSION3(ADAPTERREMOVAL_SINGLE.out.singles_truncated) + + ch_adapterremoval_reads_prepped = ENSURE_FASTQ_EXTENSION1.out.reads + .join(ENSURE_FASTQ_EXTENSION2.out.reads) + .groupTuple() + .map { meta, pair1, pair2 -> + meta.single_end = false + [ meta, [ pair1, pair2 ].flatten() ] + } + .mix(ENSURE_FASTQ_EXTENSION3.out.reads) - ch_processed_reads = ch_adapterremoval_reads_prepped + } ch_versions = ch_versions.mix( ADAPTERREMOVAL_SINGLE.out.versions.first() ) ch_versions = ch_versions.mix( ADAPTERREMOVAL_PAIRED.out.versions.first() ) - ch_multiqc_files = ch_multiqc_files.mix( ADAPTERREMOVAL_PAIRED.out.log.collect{it[1]}, ADAPTERREMOVAL_SINGLE.out.log.collect{it[1]} ) + ch_multiqc_files = ch_multiqc_files.mix( + ADAPTERREMOVAL_PAIRED.out.log.collect{it[1]}, + ADAPTERREMOVAL_SINGLE.out.log.collect{it[1]} + ) emit: - reads = ch_processed_reads // channel: [ val(meta), [ reads ] ] - versions = ch_versions // channel: [ versions.yml ] + reads = ch_adapterremoval_reads_prepped // channel: [ val(meta), [ reads ] ] + versions = ch_versions // channel: [ versions.yml ] mqc = ch_multiqc_files } + +def ensureFastQExtension(row) { + def (meta, read) = row + def filename = file(read.parent).resolve("${read.baseName}.fastq.gz") + + read.renameTo(filename.toString()) + return [meta, read] +} From f5baf910be4a7a6207c6070fef407873201d3ce4 Mon Sep 17 00:00:00 2001 From: "Moritz E. Beber" Date: Sun, 3 Apr 2022 00:21:09 +0200 Subject: [PATCH 095/789] Apply suggestions from code review Co-authored-by: James A. Fellows Yates --- nextflow.config | 1 - subworkflows/local/shortread_adapterremoval.nf | 7 ------- 2 files changed, 8 deletions(-) diff --git a/nextflow.config b/nextflow.config index cd6de9c..bc66734 100644 --- a/nextflow.config +++ b/nextflow.config @@ -159,7 +159,6 @@ if (!params.igenomes_ignore) { env { PYTHONNOUSERSITE = '1' - // PYTHONUTF8 = '1' // MetaPhlAn3 may fail with a UnicodeDecodeError if the locale is not set appropriately. R_PROFILE_USER = "/.Rprofile" R_ENVIRON_USER = "/.Renviron" JULIA_DEPOT_PATH = "/usr/local/share/julia" diff --git a/subworkflows/local/shortread_adapterremoval.nf b/subworkflows/local/shortread_adapterremoval.nf index 661062d..e522a1a 100644 --- a/subworkflows/local/shortread_adapterremoval.nf +++ b/subworkflows/local/shortread_adapterremoval.nf @@ -127,10 +127,3 @@ workflow SHORTREAD_ADAPTERREMOVAL { mqc = ch_multiqc_files } -def ensureFastQExtension(row) { - def (meta, read) = row - def filename = file(read.parent).resolve("${read.baseName}.fastq.gz") - - read.renameTo(filename.toString()) - return [meta, read] -} From d3572e18787eee40ed4e856bd6caf2f573246094 Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Sun, 3 Apr 2022 07:28:01 +0200 Subject: [PATCH 096/789] Final MQC fix for AR2 (remove too-early collect) --- subworkflows/local/shortread_adapterremoval.nf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/subworkflows/local/shortread_adapterremoval.nf b/subworkflows/local/shortread_adapterremoval.nf index b173e4c..bbb108e 100644 --- a/subworkflows/local/shortread_adapterremoval.nf +++ b/subworkflows/local/shortread_adapterremoval.nf @@ -77,7 +77,7 @@ workflow SHORTREAD_ADAPTERREMOVAL { ch_versions = ch_versions.mix( ADAPTERREMOVAL_SINGLE.out.versions.first() ) ch_versions = ch_versions.mix( ADAPTERREMOVAL_PAIRED.out.versions.first() ) - ch_multiqc_files = ch_multiqc_files.mix( ADAPTERREMOVAL_PAIRED.out.log.collect{it[1]}, ADAPTERREMOVAL_SINGLE.out.log.collect{it[1]} ) + ch_multiqc_files = ch_multiqc_files.mix( ADAPTERREMOVAL_PAIRED.out.log, ADAPTERREMOVAL_SINGLE.out.log ) emit: reads = ch_processed_reads // channel: [ val(meta), [ reads ] ] From 482112bb42ddd314de8e92b6a3c1a94e530828f7 Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Sun, 3 Apr 2022 07:58:40 +0200 Subject: [PATCH 097/789] Start work on host removal --- modules.json | 11 ++- modules/nf-core/modules/bowtie2/align/main.nf | 77 +++++++++++++++++++ .../nf-core/modules/bowtie2/align/meta.yml | 51 ++++++++++++ modules/nf-core/modules/bowtie2/build/main.nf | 30 ++++++++ .../nf-core/modules/bowtie2/build/meta.yml | 33 ++++++++ .../nf-core/modules/samtools/flagstat/main.nf | 34 ++++++++ .../modules/samtools/flagstat/meta.yml | 49 ++++++++++++ nextflow.config | 4 + subworkflows/local/shortread_hostremoval.nf | 39 ++++++++++ workflows/taxprofiler.nf | 12 ++- 10 files changed, 336 insertions(+), 4 deletions(-) create mode 100644 modules/nf-core/modules/bowtie2/align/main.nf create mode 100644 modules/nf-core/modules/bowtie2/align/meta.yml create mode 100644 modules/nf-core/modules/bowtie2/build/main.nf create mode 100644 modules/nf-core/modules/bowtie2/build/meta.yml create mode 100644 modules/nf-core/modules/samtools/flagstat/main.nf create mode 100644 modules/nf-core/modules/samtools/flagstat/meta.yml create mode 100644 subworkflows/local/shortread_hostremoval.nf diff --git a/modules.json b/modules.json index dcfbd3f..7c3facc 100644 --- a/modules.json +++ b/modules.json @@ -6,6 +6,12 @@ "adapterremoval": { "git_sha": "f0800157544a82ae222931764483331a81812012" }, + "bowtie2/align": { + "git_sha": "e745e167c1020928ef20ea1397b6b4d230681b4d" + }, + "bowtie2/build": { + "git_sha": "e745e167c1020928ef20ea1397b6b4d230681b4d" + }, "cat/fastq": { "git_sha": "e745e167c1020928ef20ea1397b6b4d230681b4d" }, @@ -30,9 +36,12 @@ "porechop": { "git_sha": "e20e57f90b6787ac9a010a980cf6ea98bd990046" }, + "samtools/flagstat": { + "git_sha": "1ad73f1b2abdea9398680d6d20014838135c9a35" + }, "untar": { "git_sha": "e080f4c8acf5760039ed12ec1f206170f3f9a918" } } } -} +} \ No newline at end of file diff --git a/modules/nf-core/modules/bowtie2/align/main.nf b/modules/nf-core/modules/bowtie2/align/main.nf new file mode 100644 index 0000000..7e8a965 --- /dev/null +++ b/modules/nf-core/modules/bowtie2/align/main.nf @@ -0,0 +1,77 @@ +process BOWTIE2_ALIGN { + tag "$meta.id" + label 'process_high' + + conda (params.enable_conda ? 'bioconda::bowtie2=2.4.4 bioconda::samtools=1.14 conda-forge::pigz=2.6' : null) + container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? + 'https://depot.galaxyproject.org/singularity/mulled-v2-ac74a7f02cebcfcc07d8e8d1d750af9c83b4d45a:4d235f41348a00533f18e47c9669f1ecb327f629-0' : + 'quay.io/biocontainers/mulled-v2-ac74a7f02cebcfcc07d8e8d1d750af9c83b4d45a:4d235f41348a00533f18e47c9669f1ecb327f629-0' }" + + input: + tuple val(meta), path(reads) + path index + val save_unaligned + + output: + tuple val(meta), path('*.bam') , emit: bam + tuple val(meta), path('*.log') , emit: log + tuple val(meta), path('*fastq.gz'), emit: fastq, optional:true + path "versions.yml" , emit: versions + + when: + task.ext.when == null || task.ext.when + + script: + def args = task.ext.args ?: '' + def args2 = task.ext.args2 ?: '' + def prefix = task.ext.prefix ?: "${meta.id}" + if (meta.single_end) { + def unaligned = save_unaligned ? "--un-gz ${prefix}.unmapped.fastq.gz" : '' + """ + INDEX=`find -L ./ -name "*.rev.1.bt2" | sed 's/.rev.1.bt2//'` + bowtie2 \\ + -x \$INDEX \\ + -U $reads \\ + --threads $task.cpus \\ + $unaligned \\ + $args \\ + 2> ${prefix}.bowtie2.log \\ + | samtools view -@ $task.cpus $args2 -bhS -o ${prefix}.bam - + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + bowtie2: \$(echo \$(bowtie2 --version 2>&1) | sed 's/^.*bowtie2-align-s version //; s/ .*\$//') + samtools: \$(echo \$(samtools --version 2>&1) | sed 's/^.*samtools //; s/Using.*\$//') + pigz: \$( pigz --version 2>&1 | sed 's/pigz //g' ) + END_VERSIONS + """ + } else { + def unaligned = save_unaligned ? "--un-conc-gz ${prefix}.unmapped.fastq.gz" : '' + """ + INDEX=`find -L ./ -name "*.rev.1.bt2" | sed 's/.rev.1.bt2//'` + bowtie2 \\ + -x \$INDEX \\ + -1 ${reads[0]} \\ + -2 ${reads[1]} \\ + --threads $task.cpus \\ + $unaligned \\ + $args \\ + 2> ${prefix}.bowtie2.log \\ + | samtools view -@ $task.cpus $args2 -bhS -o ${prefix}.bam - + + if [ -f ${prefix}.unmapped.fastq.1.gz ]; then + mv ${prefix}.unmapped.fastq.1.gz ${prefix}.unmapped_1.fastq.gz + fi + if [ -f ${prefix}.unmapped.fastq.2.gz ]; then + mv ${prefix}.unmapped.fastq.2.gz ${prefix}.unmapped_2.fastq.gz + fi + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + bowtie2: \$(echo \$(bowtie2 --version 2>&1) | sed 's/^.*bowtie2-align-s version //; s/ .*\$//') + samtools: \$(echo \$(samtools --version 2>&1) | sed 's/^.*samtools //; s/Using.*\$//') + pigz: \$( pigz --version 2>&1 | sed 's/pigz //g' ) + END_VERSIONS + """ + } +} diff --git a/modules/nf-core/modules/bowtie2/align/meta.yml b/modules/nf-core/modules/bowtie2/align/meta.yml new file mode 100644 index 0000000..f80421e --- /dev/null +++ b/modules/nf-core/modules/bowtie2/align/meta.yml @@ -0,0 +1,51 @@ +name: bowtie2_align +description: Align reads to a reference genome using bowtie2 +keywords: + - align + - fasta + - genome + - reference +tools: + - bowtie2: + description: | + Bowtie 2 is an ultrafast and memory-efficient tool for aligning + sequencing reads to long reference sequences. + homepage: http://bowtie-bio.sourceforge.net/bowtie2/index.shtml + documentation: http://bowtie-bio.sourceforge.net/bowtie2/manual.shtml + doi: 10.1038/nmeth.1923 + licence: ["GPL-3.0-or-later"] +input: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - reads: + type: file + description: | + List of input FastQ files of size 1 and 2 for single-end and paired-end data, + respectively. + - index: + type: file + description: Bowtie2 genome index files + pattern: "*.ebwt" +output: + - bam: + type: file + description: Output BAM file containing read alignments + pattern: "*.{bam}" + - versions: + type: file + description: File containing software versions + pattern: "versions.yml" + - fastq: + type: file + description: Unaligned FastQ files + pattern: "*.fastq.gz" + - log: + type: file + description: Aligment log + pattern: "*.log" +authors: + - "@joseespinosa" + - "@drpatelh" diff --git a/modules/nf-core/modules/bowtie2/build/main.nf b/modules/nf-core/modules/bowtie2/build/main.nf new file mode 100644 index 0000000..a4da62d --- /dev/null +++ b/modules/nf-core/modules/bowtie2/build/main.nf @@ -0,0 +1,30 @@ +process BOWTIE2_BUILD { + tag "$fasta" + label 'process_high' + + conda (params.enable_conda ? 'bioconda::bowtie2=2.4.4' : null) + container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? + 'https://depot.galaxyproject.org/singularity/bowtie2:2.4.4--py39hbb4e92a_0' : + 'quay.io/biocontainers/bowtie2:2.4.4--py39hbb4e92a_0' }" + + input: + path fasta + + output: + path 'bowtie2' , emit: index + path "versions.yml" , emit: versions + + when: + task.ext.when == null || task.ext.when + + script: + def args = task.ext.args ?: '' + """ + mkdir bowtie2 + bowtie2-build $args --threads $task.cpus $fasta bowtie2/${fasta.baseName} + cat <<-END_VERSIONS > versions.yml + "${task.process}": + bowtie2: \$(echo \$(bowtie2 --version 2>&1) | sed 's/^.*bowtie2-align-s version //; s/ .*\$//') + END_VERSIONS + """ +} diff --git a/modules/nf-core/modules/bowtie2/build/meta.yml b/modules/nf-core/modules/bowtie2/build/meta.yml new file mode 100644 index 0000000..2da9a21 --- /dev/null +++ b/modules/nf-core/modules/bowtie2/build/meta.yml @@ -0,0 +1,33 @@ +name: bowtie2_build +description: Builds bowtie index for reference genome +keywords: + - build + - index + - fasta + - genome + - reference +tools: + - bowtie2: + description: | + Bowtie 2 is an ultrafast and memory-efficient tool for aligning + sequencing reads to long reference sequences. + homepage: http://bowtie-bio.sourceforge.net/bowtie2/index.shtml + documentation: http://bowtie-bio.sourceforge.net/bowtie2/manual.shtml + doi: 10.1038/nmeth.1923 + licence: ["GPL-3.0-or-later"] +input: + - fasta: + type: file + description: Input genome fasta file +output: + - index: + type: file + description: Bowtie2 genome index files + pattern: "*.bt2" + - versions: + type: file + description: File containing software versions + pattern: "versions.yml" +authors: + - "@joseespinosa" + - "@drpatelh" diff --git a/modules/nf-core/modules/samtools/flagstat/main.nf b/modules/nf-core/modules/samtools/flagstat/main.nf new file mode 100644 index 0000000..9e3440a --- /dev/null +++ b/modules/nf-core/modules/samtools/flagstat/main.nf @@ -0,0 +1,34 @@ +process SAMTOOLS_FLAGSTAT { + tag "$meta.id" + label 'process_low' + + conda (params.enable_conda ? "bioconda::samtools=1.15" : null) + container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? + 'https://depot.galaxyproject.org/singularity/samtools:1.15--h1170115_1' : + 'quay.io/biocontainers/samtools:1.15--h1170115_1' }" + + input: + tuple val(meta), path(bam), path(bai) + + output: + tuple val(meta), path("*.flagstat"), emit: flagstat + path "versions.yml" , emit: versions + + when: + task.ext.when == null || task.ext.when + + script: + def args = task.ext.args ?: '' + """ + samtools \\ + flagstat \\ + --threads ${task.cpus-1} \\ + $bam \\ + > ${bam}.flagstat + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + samtools: \$(echo \$(samtools --version 2>&1) | sed 's/^.*samtools //; s/Using.*\$//') + END_VERSIONS + """ +} diff --git a/modules/nf-core/modules/samtools/flagstat/meta.yml b/modules/nf-core/modules/samtools/flagstat/meta.yml new file mode 100644 index 0000000..9526906 --- /dev/null +++ b/modules/nf-core/modules/samtools/flagstat/meta.yml @@ -0,0 +1,49 @@ +name: samtools_flagstat +description: Counts the number of alignments in a BAM/CRAM/SAM file for each FLAG type +keywords: + - stats + - mapping + - counts + - bam + - sam + - cram +tools: + - samtools: + description: | + SAMtools is a set of utilities for interacting with and post-processing + short DNA sequence read alignments in the SAM, BAM and CRAM formats, written by Heng Li. + These files are generated as output by short read aligners like BWA. + homepage: http://www.htslib.org/ + documentation: hhttp://www.htslib.org/doc/samtools.html + doi: 10.1093/bioinformatics/btp352 + licence: ["MIT"] +input: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - bam: + type: file + description: BAM/CRAM/SAM file + pattern: "*.{bam,cram,sam}" + - bai: + type: file + description: Index for BAM/CRAM/SAM file + pattern: "*.{bai,crai,sai}" +output: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - flagstat: + type: file + description: File containing samtools flagstat output + pattern: "*.{flagstat}" + - versions: + type: file + description: File containing software versions + pattern: "versions.yml" +authors: + - "@drpatelh" diff --git a/nextflow.config b/nextflow.config index 7be36a6..8aa8722 100644 --- a/nextflow.config +++ b/nextflow.config @@ -65,6 +65,10 @@ params { shortread_clipmerge_minlength = 15 longread_clip = false + // Host Removal + shortread_hostremoval_reference = null + shortread_hostremoval_index = null + // MALT run_malt = false malt_mode = 'BlastN' diff --git a/subworkflows/local/shortread_hostremoval.nf b/subworkflows/local/shortread_hostremoval.nf new file mode 100644 index 0000000..4b0861c --- /dev/null +++ b/subworkflows/local/shortread_hostremoval.nf @@ -0,0 +1,39 @@ +// +// Remove host reads via alignment and export off-target reads +// + +include { BOWTIE2_ALIGN } from '../../../modules/nf-core/modules/bowtie2/align/main' +include { BOWTIE2_BUILD } from '../../../modules/nf-core/modules/bowtie2/build/main' +include { SAMTOOLS_VIEW } from '../../../modules/nf-core/modules/samtools/view/main' +include { SAMTOOLS_FASTQ } from '../../../modules/nf-core/modules/samtools/fastq/main' +include { SAMTOOLS_FLAGSTAT } from '../../../modules/nf-core/modules/samtools/flagstat/main' + +workflow SHORTREAD_PREPROCESSING { + take: + reads // [ [ meta ], [ reads ] ] + reference // /path/to/fasta + + main: + ch_versions = Channel.empty() + ch_multiqc_files = Channel.empty() + + if ( !params.shortread_hostremoval_index ) { + file( , checkIfExists: true ) + BOWTIE2_BUILD ( reference ) + ch_versions = ch_versions.mix( BOWTIE2_BUILD.out.versions ) + } + + BOWTIE2_ALIGN ( reads, BOWTIE2_BUILD.out.index ) + ch_versions = ch_versions.mix( BOWTIE2_BUILD.out.versions ) + ch_multiqc_files = ch_multiqc_files.mix( SAMTOOLS_FLAGSTAT.out.log ) + + SAMTOOLS_FLAGSTAT ( BOWTIE2_ALIGN.out.bam ) + ch_versions = ch_versions.mix( SAMTOOLS_FLAGSTAT.out.versions ) + ch_multiqc_files = ch_multiqc_files.mix( SAMTOOLS_FLAGSTAT.out.flagstat ) + + emit: + reads = BOWTIE2_ALIGN.out.fastq // channel: [ val(meta), [ reads ] ] + versions = ch_versions // channel: [ versions.yml ] + mqc = ch_multiqc_files +} + diff --git a/workflows/taxprofiler.nf b/workflows/taxprofiler.nf index ce89a91..c5678f1 100644 --- a/workflows/taxprofiler.nf +++ b/workflows/taxprofiler.nf @@ -11,15 +11,21 @@ WorkflowTaxprofiler.initialise(params, log) // TODO nf-core: Add all file path parameters for the pipeline to the list below // Check input path parameters to see if they exist -def checkPathParamList = [ params.input, params.databases, params.multiqc_config ] +def checkPathParamList = [ params.input, params.databases, params.shortread_hostremoval_reference, + params.shortread_hostremoval_index, params.multiqc_config + ] for (param in checkPathParamList) { if (param) { file(param, checkIfExists: true) } } // Check mandatory parameters -if (params.input ) { ch_input = file(params.input) } else { exit 1, 'Input samplesheet not specified!' } -if (params.databases) { ch_databases = file(params.databases) } else { exit 1, 'Input database sheet not specified!' } +if (params.input ) { ch_input = file(params.input) } else { exit 1, 'Input samplesheet not specified!' } +if (params.databases ) { ch_databases = file(params.databases) } else { exit 1, 'Input database sheet not specified!' } if (params.shortread_clipmerge_mergepairs && params.run_malt ) log.warn "[nf-core/taxprofiler] warning: MALT does not except uncollapsed paired-reads. Pairs will be profiled as separate files." if (params.shortread_clipmerge_excludeunmerged && !params.shortread_clipmerge_mergepairs) exit 1, "[nf-core/taxprofiler] error: cannot include unmerged reads when merging not turned on. Please specify --shortread_clipmerge_mergepairs" +// TODO Add check if index but no reference exit 1 +if (params.shortread_hostremoval_reference ) { ch_reference = file(params.shortread_hostremoval_reference) } else { } +if (params.shortread_hostremoval_index) { ch_reference_index = file(params.shortread_hostremoval_index ) } else { ch_reference_index = [] } + /* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ CONFIG FILES From 066ceb2bcaeb21c0a2a07fd1a5359e30277869ce Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Sun, 3 Apr 2022 17:23:14 +0200 Subject: [PATCH 098/789] Remove flagstat as bowtie2 reports this itself --- conf/modules.config | 19 ++++++- conf/test.config | 12 +++-- modules.json | 3 -- .../nf-core/modules/samtools/flagstat/main.nf | 34 ------------- .../modules/samtools/flagstat/meta.yml | 49 ------------------- nextflow.config | 1 + nextflow_schema.json | 14 +++++- subworkflows/local/shortread_hostremoval.nf | 29 +++++------ workflows/taxprofiler.nf | 27 ++++++++-- 9 files changed, 72 insertions(+), 116 deletions(-) delete mode 100644 modules/nf-core/modules/samtools/flagstat/main.nf delete mode 100644 modules/nf-core/modules/samtools/flagstat/meta.yml diff --git a/conf/modules.config b/conf/modules.config index dc8b138..41faa62 100644 --- a/conf/modules.config +++ b/conf/modules.config @@ -132,7 +132,6 @@ process { ] } - withName: PORECHOP { ext.prefix = { "${meta.id}_${meta.run_accession}" } publishDir = [ @@ -142,6 +141,24 @@ process { ] } + withName: BOWTIE2_BUILD { + ext.prefix = { "${meta.id}_${meta.run_accession}" } + publishDir = [ + path: { "${params.outdir}/bowtie2/build" }, + mode: 'copy', + pattern: '*.bt2' + ] + } + + withName: BOWTIE2_ALIGN { + ext.prefix = { "${meta.id}_${meta.run_accession}" } + publishDir = [ + path: { "${params.outdir}/bowtie2/align" }, + mode: 'copy', + pattern: '*.{fastq.gz,bam}' + ] + } + withName: CAT_FASTQ { publishDir = [ path: { "${params.outdir}/prepared_sequences" }, diff --git a/conf/test.config b/conf/test.config index 92a10e4..90ea241 100644 --- a/conf/test.config +++ b/conf/test.config @@ -22,10 +22,12 @@ params { // Input data // TODO nf-core: Specify the paths to your test data on nf-core/test-datasets // TODO nf-core: Give any required params for the test so that command line flags are not needed - input = 'https://raw.githubusercontent.com/nf-core/test-datasets/taxprofiler/samplesheet.csv' - databases = 'https://raw.githubusercontent.com/nf-core/test-datasets/taxprofiler/database.csv' - run_kraken2 = true - run_malt = true - shortread_clipmerge = true + input = 'https://raw.githubusercontent.com/nf-core/test-datasets/taxprofiler/samplesheet.csv' + databases = 'https://raw.githubusercontent.com/nf-core/test-datasets/taxprofiler/database.csv' + run_kraken2 = true + run_malt = true + shortread_clipmerge = true + shortread_hostremoval = true + shortread_hostremoval_reference = 'https://raw.githubusercontent.com/nf-core/test-datasets/modules/data/genomics/homo_sapiens/genome/genome.fasta' } diff --git a/modules.json b/modules.json index 7c3facc..7395d68 100644 --- a/modules.json +++ b/modules.json @@ -36,9 +36,6 @@ "porechop": { "git_sha": "e20e57f90b6787ac9a010a980cf6ea98bd990046" }, - "samtools/flagstat": { - "git_sha": "1ad73f1b2abdea9398680d6d20014838135c9a35" - }, "untar": { "git_sha": "e080f4c8acf5760039ed12ec1f206170f3f9a918" } diff --git a/modules/nf-core/modules/samtools/flagstat/main.nf b/modules/nf-core/modules/samtools/flagstat/main.nf deleted file mode 100644 index 9e3440a..0000000 --- a/modules/nf-core/modules/samtools/flagstat/main.nf +++ /dev/null @@ -1,34 +0,0 @@ -process SAMTOOLS_FLAGSTAT { - tag "$meta.id" - label 'process_low' - - conda (params.enable_conda ? "bioconda::samtools=1.15" : null) - container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/samtools:1.15--h1170115_1' : - 'quay.io/biocontainers/samtools:1.15--h1170115_1' }" - - input: - tuple val(meta), path(bam), path(bai) - - output: - tuple val(meta), path("*.flagstat"), emit: flagstat - path "versions.yml" , emit: versions - - when: - task.ext.when == null || task.ext.when - - script: - def args = task.ext.args ?: '' - """ - samtools \\ - flagstat \\ - --threads ${task.cpus-1} \\ - $bam \\ - > ${bam}.flagstat - - cat <<-END_VERSIONS > versions.yml - "${task.process}": - samtools: \$(echo \$(samtools --version 2>&1) | sed 's/^.*samtools //; s/Using.*\$//') - END_VERSIONS - """ -} diff --git a/modules/nf-core/modules/samtools/flagstat/meta.yml b/modules/nf-core/modules/samtools/flagstat/meta.yml deleted file mode 100644 index 9526906..0000000 --- a/modules/nf-core/modules/samtools/flagstat/meta.yml +++ /dev/null @@ -1,49 +0,0 @@ -name: samtools_flagstat -description: Counts the number of alignments in a BAM/CRAM/SAM file for each FLAG type -keywords: - - stats - - mapping - - counts - - bam - - sam - - cram -tools: - - samtools: - description: | - SAMtools is a set of utilities for interacting with and post-processing - short DNA sequence read alignments in the SAM, BAM and CRAM formats, written by Heng Li. - These files are generated as output by short read aligners like BWA. - homepage: http://www.htslib.org/ - documentation: hhttp://www.htslib.org/doc/samtools.html - doi: 10.1093/bioinformatics/btp352 - licence: ["MIT"] -input: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - bam: - type: file - description: BAM/CRAM/SAM file - pattern: "*.{bam,cram,sam}" - - bai: - type: file - description: Index for BAM/CRAM/SAM file - pattern: "*.{bai,crai,sai}" -output: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - flagstat: - type: file - description: File containing samtools flagstat output - pattern: "*.{flagstat}" - - versions: - type: file - description: File containing software versions - pattern: "versions.yml" -authors: - - "@drpatelh" diff --git a/nextflow.config b/nextflow.config index 8aa8722..e559a85 100644 --- a/nextflow.config +++ b/nextflow.config @@ -66,6 +66,7 @@ params { longread_clip = false // Host Removal + shortread_hostremoval = false shortread_hostremoval_reference = null shortread_hostremoval_index = null diff --git a/nextflow_schema.json b/nextflow_schema.json index fb2ca31..0b5162b 100644 --- a/nextflow_schema.json +++ b/nextflow_schema.json @@ -266,8 +266,7 @@ "type": "boolean" }, "shortread_clipmerge_excludeunmerged": { - "type": "boolean", - "default": false + "type": "boolean" }, "longread_clip": { "type": "boolean" @@ -304,6 +303,17 @@ "shortread_clipmerge_minlength": { "type": "integer", "default": 15 + }, + "shortread_hostremoval": { + "type": "boolean" + }, + "shortread_hostremoval_reference": { + "type": "string", + "default": null + }, + "shortread_hostremoval_index": { + "type": "string", + "default": null } } } diff --git a/subworkflows/local/shortread_hostremoval.nf b/subworkflows/local/shortread_hostremoval.nf index 4b0861c..505f989 100644 --- a/subworkflows/local/shortread_hostremoval.nf +++ b/subworkflows/local/shortread_hostremoval.nf @@ -2,38 +2,33 @@ // Remove host reads via alignment and export off-target reads // -include { BOWTIE2_ALIGN } from '../../../modules/nf-core/modules/bowtie2/align/main' -include { BOWTIE2_BUILD } from '../../../modules/nf-core/modules/bowtie2/build/main' -include { SAMTOOLS_VIEW } from '../../../modules/nf-core/modules/samtools/view/main' -include { SAMTOOLS_FASTQ } from '../../../modules/nf-core/modules/samtools/fastq/main' -include { SAMTOOLS_FLAGSTAT } from '../../../modules/nf-core/modules/samtools/flagstat/main' +include { BOWTIE2_BUILD } from '../../modules/nf-core/modules/bowtie2/build/main' +include { BOWTIE2_ALIGN } from '../../modules/nf-core/modules/bowtie2/align/main' -workflow SHORTREAD_PREPROCESSING { +workflow SHORTREAD_HOSTREMOVAL { take: reads // [ [ meta ], [ reads ] ] reference // /path/to/fasta + index // /path/to/index main: ch_versions = Channel.empty() ch_multiqc_files = Channel.empty() if ( !params.shortread_hostremoval_index ) { - file( , checkIfExists: true ) - BOWTIE2_BUILD ( reference ) - ch_versions = ch_versions.mix( BOWTIE2_BUILD.out.versions ) + ch_bowtie2_index = BOWTIE2_BUILD ( reference ).index + ch_versions = ch_versions.mix( BOWTIE2_BUILD.out.versions ) + } else { + ch_bowtie2_index = index.first() } - BOWTIE2_ALIGN ( reads, BOWTIE2_BUILD.out.index ) - ch_versions = ch_versions.mix( BOWTIE2_BUILD.out.versions ) - ch_multiqc_files = ch_multiqc_files.mix( SAMTOOLS_FLAGSTAT.out.log ) - - SAMTOOLS_FLAGSTAT ( BOWTIE2_ALIGN.out.bam ) - ch_versions = ch_versions.mix( SAMTOOLS_FLAGSTAT.out.versions ) - ch_multiqc_files = ch_multiqc_files.mix( SAMTOOLS_FLAGSTAT.out.flagstat ) + BOWTIE2_ALIGN ( reads, ch_bowtie2_index, true ) + ch_versions = ch_versions.mix( BOWTIE2_ALIGN.out.versions.first() ) + ch_multiqc_files = ch_multiqc_files.mix( BOWTIE2_ALIGN.out.log ) emit: reads = BOWTIE2_ALIGN.out.fastq // channel: [ val(meta), [ reads ] ] - versions = ch_versions // channel: [ versions.yml ] + versions = ch_versions // channel: [ versions.yml ] mqc = ch_multiqc_files } diff --git a/workflows/taxprofiler.nf b/workflows/taxprofiler.nf index c5678f1..631aee6 100644 --- a/workflows/taxprofiler.nf +++ b/workflows/taxprofiler.nf @@ -23,8 +23,11 @@ if (params.shortread_clipmerge_mergepairs && params.run_malt ) log.warn "[nf-cor if (params.shortread_clipmerge_excludeunmerged && !params.shortread_clipmerge_mergepairs) exit 1, "[nf-core/taxprofiler] error: cannot include unmerged reads when merging not turned on. Please specify --shortread_clipmerge_mergepairs" // TODO Add check if index but no reference exit 1 -if (params.shortread_hostremoval_reference ) { ch_reference = file(params.shortread_hostremoval_reference) } else { } -if (params.shortread_hostremoval_index) { ch_reference_index = file(params.shortread_hostremoval_index ) } else { ch_reference_index = [] } +if (params.shortread_hostremoval && !params.shortread_hostremoval_reference) { exit 1, "[nf-core/taxprofiler] error: --shortread_hostremoval requested but no --shortread_hostremoval_reference FASTA supplied. Check input." } +if (!params.shortread_hostremoval_reference && params.shortread_hostremoval_reference_index) { exit 1, "[nf-core/taxprofiler] error: --shortread_hostremoval_index provided but no --shortread_hostremoval_reference FASTA supplied. Check input." } + +if (params.shortread_hostremoval_reference ) { ch_reference = file(params.shortread_hostremoval_reference) } else { ch_reference = [] } +if (params.shortread_hostremoval_index ) { ch_reference_index = file(params.shortread_hostremoval_index ) } else { ch_reference_index = [] } /* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -49,6 +52,7 @@ include { INPUT_CHECK } from '../subworkflows/local/input_check' include { DB_CHECK } from '../subworkflows/local/db_check' include { SHORTREAD_PREPROCESSING } from '../subworkflows/local/shortread_preprocessing' include { LONGREAD_PREPROCESSING } from '../subworkflows/local/longread_preprocessing' +include { SHORTREAD_HOSTREMOVAL } from '../subworkflows/local/shortread_hostremoval' /* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -120,17 +124,24 @@ workflow TAXPROFILER { if ( params.longread_clip ) { ch_longreads_preprocessed = LONGREAD_PREPROCESSING ( INPUT_CHECK.out.nanopore ).reads .map { it -> [ it[0], [it[1]] ] } - ch_versions = ch_versions.mix(LONGREAD_PREPROCESSING.out.versions.first()) - } else { + ch_versions = ch_versions.mix(LONGREAD_PREPROCESSING.out.versions.first()) + } else {SHORTREAD_HOSTREMOVAL ch_longreads_preprocessed = INPUT_CHECK.out.nanopore } + if ( params.shortread_hostremoval ) { + ch_shortreads_hostremoved = SHORTREAD_HOSTREMOVAL ( ch_shortreads_preprocessed, ch_reference, ch_reference_index ).reads + ch_versions = ch_versions.mix(SHORTREAD_HOSTREMOVAL.out.versions.first()) + } else { + ch_shortreads_hostremoved = ch_shortreads_preprocessed + } + /* COMBINE READS WITH POSSIBLE DATABASES */ // e.g. output [DUMP: reads_plus_db] [['id':'2612', 'run_accession':'combined', 'instrument_platform':'ILLUMINA', 'single_end':1], /2612.merged.fastq.gz, ['tool':'malt', 'db_name':'mal95', 'db_params':'"-id 90"'], /malt90] - ch_input_for_profiling = ch_shortreads_preprocessed + ch_input_for_profiling = ch_shortreads_hostremoved .mix( ch_longreads_preprocessed ) .combine(DB_CHECK.out.dbs) .branch { @@ -196,9 +207,15 @@ workflow TAXPROFILER { if (params.shortread_clipmerge) { ch_multiqc_files = ch_multiqc_files.mix(SHORTREAD_PREPROCESSING.out.mqc) } + + if (params.shortread_hostremoval) { + ch_multiqc_files = ch_multiqc_files.mix(SHORTREAD_HOSTREMOVAL.out.mqc.collect{it[1]}.ifEmpty([])) + } + if (params.longread_clip) { ch_multiqc_files = ch_multiqc_files.mix(LONGREAD_PREPROCESSING.out.mqc) } + if (params.run_kraken2) { ch_multiqc_files = ch_multiqc_files.mix(KRAKEN2_KRAKEN2.out.txt.collect{it[1]}.ifEmpty([])) ch_versions = ch_versions.mix(KRAKEN2_KRAKEN2.out.versions.first()) From a76576c16b44be09548f8f8c6bede81aef2a4d99 Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Sun, 3 Apr 2022 17:24:50 +0200 Subject: [PATCH 099/789] Prettier --- modules.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules.json b/modules.json index 398c351..cd1a0a9 100644 --- a/modules.json +++ b/modules.json @@ -44,4 +44,4 @@ } } } -} \ No newline at end of file +} From 3a562065138a4ef9035e43b558c844f58a36611d Mon Sep 17 00:00:00 2001 From: sofstam Date: Mon, 4 Apr 2022 16:55:48 +0200 Subject: [PATCH 100/789] Centrifuge classification --- nextflow.config | 2 +- nextflow_schema.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/nextflow.config b/nextflow.config index 725f892..a99481c 100644 --- a/nextflow.config +++ b/nextflow.config @@ -74,7 +74,7 @@ params { // centrifuge run_centrifuge = false - centrifuge_db_name = false + centrifuge_db_name = 'minigut_cf' centrifuge_save_unaligned = false centrifuge_save_aligned = false centrifuge_sam_format = false diff --git a/nextflow_schema.json b/nextflow_schema.json index 3ec2aae..777b82f 100644 --- a/nextflow_schema.json +++ b/nextflow_schema.json @@ -336,7 +336,7 @@ }, "centrifuge_db_name": { "type": "string", - "default": "false" + "default": null } } } \ No newline at end of file From a384162810cb1fe1d800d7c3f2053f01c25083da Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Mon, 4 Apr 2022 21:16:51 +0200 Subject: [PATCH 101/789] Add prinseq as alternative complexity filtering --- CITATIONS.md | 12 ++-- conf/modules.config | 15 ++++- modules.json | 5 +- .../nf-core/modules/prinseqplusplus/main.nf | 61 +++++++++++++++++++ .../nf-core/modules/prinseqplusplus/meta.yml | 60 ++++++++++++++++++ nextflow.config | 13 ++-- nextflow_schema.json | 37 ++++++++--- .../local/shortread_complexityfiltering.nf | 6 +- 8 files changed, 189 insertions(+), 20 deletions(-) create mode 100644 modules/nf-core/modules/prinseqplusplus/main.nf create mode 100644 modules/nf-core/modules/prinseqplusplus/meta.yml diff --git a/CITATIONS.md b/CITATIONS.md index 0eb8141..ec424b1 100644 --- a/CITATIONS.md +++ b/CITATIONS.md @@ -18,23 +18,27 @@ - [fastp](https://doi.org/10.1093/bioinformatics/bty560) - > Chen, Shifu, Yanqing Zhou, Yaru Chen, and Jia Gu. 2018. “Fastp: An Ultra-Fast All-in-One FASTQ Preprocessor.” Bioinformatics 34 (17): i884-90. 10.1093/bioinformatics/bty560. + > Chen, Shifu, Yanqing Zhou, Yaru Chen, and Jia Gu. 2018. Fastp: An Ultra-Fast All-in-One FASTQ Preprocessor. Bioinformatics 34 (17): i884-90. 10.1093/bioinformatics/bty560. - [AdapterRemoval2](https://doi.org/10.1186/s13104-016-1900-2) - > Schubert, Mikkel, Stinus Lindgreen, and Ludovic Orlando. 2016. “AdapterRemoval v2: Rapid Adapter Trimming, Identification, and Read Merging.” BMC Research Notes 9 (February): 88. doi:10.1186/s13104-016-1900-2. + > Schubert, Mikkel, Stinus Lindgreen, and Ludovic Orlando. 2016. AdapterRemoval v2: Rapid Adapter Trimming, Identification, and Read Merging. BMC Research Notes 9 (February): 88. doi:10.1186/s13104-016-1900-2. - [Porechop](https://github.com/rrwick/Porechop) - [BBTools](http://sourceforge.net/projects/bbmap/) +- [PRINSEQ++](https://doi.org/10.7287/peerj.preprints.27553v1) + + > Cantu, Vito Adrian, Jeffrey Sadural, and Robert Edwards. 2019. PRINSEQ++, a Multi-Threaded Tool for Fast and Efficient Quality Control and Preprocessing of Sequencing Datasets. e27553v1. PeerJ Preprints. doi: 10.7287/peerj.preprints.27553v1. + - [Kraken2](https://doi.org/10.1186/s13059-019-1891-0) - > Wood, Derrick E., Jennifer Lu, and Ben Langmead. 2019. “Improved Metagenomic Analysis with Kraken 2.” Genome Biology 20 (1): 257. doi: 10.1186/s13059-019-1891-0. + > Wood, Derrick E., Jennifer Lu, and Ben Langmead. 2019. Improved Metagenomic Analysis with Kraken 2. Genome Biology 20 (1): 257. doi: 10.1186/s13059-019-1891-0. - [MALT](https://doi.org/10.1038/s41559-017-0446-6) - > Vågene, Åshild J., Alexander Herbig, Michael G. Campana, Nelly M. Robles García, Christina Warinner, Susanna Sabin, Maria A. Spyrou, et al. 2018. “Salmonella Enterica Genomes from Victims of a Major Sixteenth-Century Epidemic in Mexico.” Nature Ecology & Evolution 2 (3): 520-28. doi: 10.1038/s41559-017-0446-6. + > Vågene, Åshild J., Alexander Herbig, Michael G. Campana, Nelly M. Robles García, Christina Warinner, Susanna Sabin, Maria A. Spyrou, et al. 2018. Salmonella Enterica Genomes from Victims of a Major Sixteenth-Century Epidemic in Mexico. Nature Ecology & Evolution 2 (3): 520-28. doi: 10.1038/s41559-017-0446-6. ## Software packaging/containerisation tools diff --git a/conf/modules.config b/conf/modules.config index 601f915..9d2edc3 100644 --- a/conf/modules.config +++ b/conf/modules.config @@ -143,7 +143,7 @@ process { withName: BBMAP_BBDUK { ext.args = [ - "entropy=${params.shortread_complexityfilter_bbduk_entropy}", + "entropy=${params.shortread_complexityfilter_entropy}", "entropywindow=${params.shortread_complexityfilter_bbduk_windowsize}", params.shortread_complexityfilter_bbduk_mask ? "entropymask=t" : "entropymask=f" ].join(' ').trim() @@ -155,6 +155,19 @@ process { ] } + withName: PRINSEQPLUSPLUS { + ext.args = [ + params.shortread_complexityfilter_prinseqplusplus_mode == 'dust' ? "-lc_dust=${params.shortread_complexityfilter_prinseqplusplus_dustscore}" : "-lc_entropy=${params.shortread_complexityfilter_entropy}", + "-trim_qual_left=0 -trim_qual_left=0 -trim_qual_window=0 -trim_qual_step=0" + ].join(' ').trim() + ext.prefix = { "${meta.id}-${meta.run_accession}" } + publishDir = [ + path: { "${params.outdir}/prinseqplusplus/" }, + mode: params.publish_dir_mode, + pattern: '*{_good_out.fastq.gz,_good_out_R1.fastq.gz,_good_out_R2.fastq.gz,log}' + ] + } + withName: MALT_RUN { ext.args = { "${meta.db_params}" } ext.prefix = { "${meta.id}-${meta.run_accession}-${meta.db_name}" } diff --git a/modules.json b/modules.json index 64e6c3c..355dc9e 100644 --- a/modules.json +++ b/modules.json @@ -33,9 +33,12 @@ "porechop": { "git_sha": "e20e57f90b6787ac9a010a980cf6ea98bd990046" }, + "prinseqplusplus": { + "git_sha": "f1c5384c31e985591716afdd732cf8c2ae29d05b" + }, "untar": { "git_sha": "e080f4c8acf5760039ed12ec1f206170f3f9a918" } } } -} +} \ No newline at end of file diff --git a/modules/nf-core/modules/prinseqplusplus/main.nf b/modules/nf-core/modules/prinseqplusplus/main.nf new file mode 100644 index 0000000..ebd8c58 --- /dev/null +++ b/modules/nf-core/modules/prinseqplusplus/main.nf @@ -0,0 +1,61 @@ +process PRINSEQPLUSPLUS { + tag "$meta.id" + label 'process_low' + + conda (params.enable_conda ? "bioconda::prinseq-plus-plus=1.2.3" : null) + container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? + 'https://depot.galaxyproject.org/singularity/prinseq-plus-plus:1.2.3--hc90279e_1': + 'quay.io/biocontainers/prinseq-plus-plus:1.2.3--hc90279e_1' }" + + input: + tuple val(meta), path(reads) + + output: + tuple val(meta), path("*_good_out*.fastq.gz") , emit: good_reads + tuple val(meta), path("*_single_out*.fastq.gz"), optional: true, emit: single_reads + tuple val(meta), path("*_bad_out*.fastq.gz") , optional: true, emit: bad_reads + tuple val(meta), path("*.log") , emit: log + path "versions.yml" , emit: versions + + when: + task.ext.when == null || task.ext.when + + script: + def args = task.ext.args ?: '' + def prefix = task.ext.prefix ?: "${meta.id}" + + if (meta.single_end) { + """ + prinseq++ \\ + -threads $task.cpus \\ + -fastq ${reads} \\ + -out_name ${prefix} \\ + -out_gz \\ + -VERBOSE 1 \\ + $args \\ + | tee ${prefix}.log + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + prinseqplusplus: \$(echo \$(prinseq++ --version | cut -f 2 -d ' ' )) + END_VERSIONS + """ + } else { + """ + prinseq++ \\ + -threads $task.cpus \\ + -fastq ${reads[0]} \\ + -fastq2 ${reads[1]} \\ + -out_name ${prefix} \\ + -out_gz \\ + -VERBOSE 1 \\ + $args \\ + | tee ${prefix}.log + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + prinseqplusplus: \$(echo \$(prinseq++ --version | cut -f 2 -d ' ' )) + END_VERSIONS + """ + } +} diff --git a/modules/nf-core/modules/prinseqplusplus/meta.yml b/modules/nf-core/modules/prinseqplusplus/meta.yml new file mode 100644 index 0000000..8155df9 --- /dev/null +++ b/modules/nf-core/modules/prinseqplusplus/meta.yml @@ -0,0 +1,60 @@ +name: "prinseqplusplus" +description: PRINSEQ++ is a C++ implementation of the prinseq-lite.pl program. It can be used to filter, reformat or trim genomic and metagenomic sequence data +keywords: + - fastq + - fasta + - filter + - trim +tools: + - "prinseqplusplus": + description: "PRINSEQ++ - Multi-threaded C++ sequence cleaning" + homepage: "https://github.com/Adrian-Cantu/PRINSEQ-plus-plus" + documentation: "https://github.com/Adrian-Cantu/PRINSEQ-plus-plus" + tool_dev_url: "https://github.com/Adrian-Cantu/PRINSEQ-plus-plus" + doi: "10.7287/peerj.preprints.27553v1" + licence: "['GPL v2']" + +input: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - reads: + type: file + description: | + List of input FastQ files of size 1 and 2 for single-end and paired-end + data, respectively. + +output: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - versions: + type: file + description: File containing software versions + pattern: "versions.yml" + - good_reads: + type: file + description: Reads passing filter(s) in gzipped FASTQ format + pattern: "*_good_out_{R1,R2}.fastq.gz" + - single_reads: + type: file + description: | + Single reads without the pair passing filter(s) in gzipped FASTQ format + pattern: "*_single_out_{R1,R2}.fastq.gz" + - bad_reads: + type: file + description: | + Reads without not passing filter(s) in gzipped FASTQ format + pattern: "*_bad_out_{R1,R2}.fastq.gz" + - log: + type: file + description: | + Verbose level 2 STDOUT information in a log file + pattern: "*.log" + +authors: + - "@jfy133" diff --git a/nextflow.config b/nextflow.config index d57743a..03dfbb9 100644 --- a/nextflow.config +++ b/nextflow.config @@ -66,11 +66,14 @@ params { longread_clip = false // Complexity filtering - shortread_complexityfilter = false - shortread_complexityfilter_tool = 'bbduk' - shortread_complexityfilter_bbduk_entropy = 0.3 - shortread_complexityfilter_bbduk_windowsize = 50 - shortread_complexityfilter_bbduk_mask = false + shortread_complexityfilter = false + shortread_complexityfilter_tool = 'bbduk' + shortread_complexityfilter_entropy = 0.3 + shortread_complexityfilter_bbduk_windowsize = 50 + shortread_complexityfilter_bbduk_mask = false + shortread_complexityfilter_prinseqplusplus_mode = 'entropy' + shortread_complexityfilter_prinseqplusplus_dustscore = 0.5 + // MALT run_malt = false diff --git a/nextflow_schema.json b/nextflow_schema.json index bd8b438..6dee045 100644 --- a/nextflow_schema.json +++ b/nextflow_schema.json @@ -10,7 +10,10 @@ "type": "object", "fa_icon": "fas fa-terminal", "description": "Define where the pipeline should find input data and save output data.", - "required": ["input", "outdir"], + "required": [ + "input", + "outdir" + ], "properties": { "input": { "type": "string", @@ -173,7 +176,14 @@ "description": "Method used to save pipeline results to output directory.", "help_text": "The Nextflow `publishDir` option specifies which intermediate files should be saved to the output directory. This option tells the pipeline what method should be used to move these files. See [Nextflow docs](https://www.nextflow.io/docs/latest/process.html#publishdir) for details.", "fa_icon": "fas fa-copy", - "enum": ["symlink", "rellink", "link", "copy", "copyNoFollow", "move"], + "enum": [ + "symlink", + "rellink", + "link", + "copy", + "copyNoFollow", + "move" + ], "hidden": true }, "email_on_fail": { @@ -284,7 +294,10 @@ "shortread_clipmerge_tool": { "type": "string", "default": "fastp", - "enum": ["fastp", "adapterremoval"] + "enum": [ + "fastp", + "adapterremoval" + ] }, "shortread_clipmerge_skipadaptertrim": { "type": "boolean" @@ -308,10 +321,6 @@ "type": "string", "default": "bbduk" }, - "shortread_complexityfilter_bbduk_entropy": { - "type": "number", - "default": 0.3 - }, "shortread_complexityfilter_bbduk_windowsize": { "type": "integer", "default": 50 @@ -321,6 +330,18 @@ }, "shortread_complexityfilter": { "type": "boolean" + }, + "shortread_complexityfilter_entropy": { + "type": "number", + "default": 0.3 + }, + "shortread_complexityfilter_prinseqplusplus_mode": { + "type": "string", + "default": "entropy" + }, + "shortread_complexityfilter_prinseqplusplus_dustscore": { + "type": "number", + "default": 0.5 } } -} +} \ No newline at end of file diff --git a/subworkflows/local/shortread_complexityfiltering.nf b/subworkflows/local/shortread_complexityfiltering.nf index 3d69ed6..12686d7 100644 --- a/subworkflows/local/shortread_complexityfiltering.nf +++ b/subworkflows/local/shortread_complexityfiltering.nf @@ -2,7 +2,8 @@ // Check input samplesheet and get read channels // -include { BBMAP_BBDUK } from '../../modules/nf-core/modules/bbmap/bbduk/main' +include { BBMAP_BBDUK } from '../../modules/nf-core/modules/bbmap/bbduk/main' +include { PRINSEQPLUSPLUS } from '../../modules/nf-core/modules/prinseqplusplus/main' workflow SHORTREAD_COMPLEXITYFILTERING { take: @@ -16,6 +17,9 @@ workflow SHORTREAD_COMPLEXITYFILTERING { ch_filtered_reads = BBMAP_BBDUK ( reads, [] ).reads ch_versions = ch_versions.mix( BBMAP_BBDUK.out.versions.first() ) ch_multiqc_files = ch_multiqc_files.mix( BBMAP_BBDUK.out.log ) + } else if ( params.shortread_complexityfilter_tool == 'prinseqplusplus' ) { + ch_filtered_reads = PRINSEQPLUSPLUS ( reads ).good_reads + ch_versions = ch_versions.mix( PRINSEQPLUSPLUS.out.versions.first() ) } else { ch_filtered_reads = reads } From 613f6a5565dbaaf6bef06ba980a6b017506490f7 Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Mon, 4 Apr 2022 21:21:29 +0200 Subject: [PATCH 102/789] Prettier --- modules.json | 2 +- nextflow_schema.json | 21 ++++----------------- 2 files changed, 5 insertions(+), 18 deletions(-) diff --git a/modules.json b/modules.json index 355dc9e..d8ac3db 100644 --- a/modules.json +++ b/modules.json @@ -41,4 +41,4 @@ } } } -} \ No newline at end of file +} diff --git a/nextflow_schema.json b/nextflow_schema.json index 6dee045..75e1abe 100644 --- a/nextflow_schema.json +++ b/nextflow_schema.json @@ -10,10 +10,7 @@ "type": "object", "fa_icon": "fas fa-terminal", "description": "Define where the pipeline should find input data and save output data.", - "required": [ - "input", - "outdir" - ], + "required": ["input", "outdir"], "properties": { "input": { "type": "string", @@ -176,14 +173,7 @@ "description": "Method used to save pipeline results to output directory.", "help_text": "The Nextflow `publishDir` option specifies which intermediate files should be saved to the output directory. This option tells the pipeline what method should be used to move these files. See [Nextflow docs](https://www.nextflow.io/docs/latest/process.html#publishdir) for details.", "fa_icon": "fas fa-copy", - "enum": [ - "symlink", - "rellink", - "link", - "copy", - "copyNoFollow", - "move" - ], + "enum": ["symlink", "rellink", "link", "copy", "copyNoFollow", "move"], "hidden": true }, "email_on_fail": { @@ -294,10 +284,7 @@ "shortread_clipmerge_tool": { "type": "string", "default": "fastp", - "enum": [ - "fastp", - "adapterremoval" - ] + "enum": ["fastp", "adapterremoval"] }, "shortread_clipmerge_skipadaptertrim": { "type": "boolean" @@ -344,4 +331,4 @@ "default": 0.5 } } -} \ No newline at end of file +} From c54c32c4947df993231c364ac3fe19f2abb85eed Mon Sep 17 00:00:00 2001 From: "Moritz E. Beber" Date: Tue, 5 Apr 2022 10:18:34 +0200 Subject: [PATCH 103/789] chore: update adapterremoval --- modules.json | 4 +- .../nf-core/modules/adapterremoval/main.nf | 44 ++++++++++++++----- .../nf-core/modules/adapterremoval/meta.yml | 14 +++--- 3 files changed, 42 insertions(+), 20 deletions(-) diff --git a/modules.json b/modules.json index 9953edb..51f13ea 100644 --- a/modules.json +++ b/modules.json @@ -4,7 +4,7 @@ "repos": { "nf-core/modules": { "adapterremoval": { - "git_sha": "f0800157544a82ae222931764483331a81812012" + "git_sha": "879d42c5e28661fe0a5e744c9e2c515868f9e08a" }, "cat/fastq": { "git_sha": "e745e167c1020928ef20ea1397b6b4d230681b4d" @@ -38,4 +38,4 @@ } } } -} +} \ No newline at end of file diff --git a/modules/nf-core/modules/adapterremoval/main.nf b/modules/nf-core/modules/adapterremoval/main.nf index 9d16b9c..0e17c05 100644 --- a/modules/nf-core/modules/adapterremoval/main.nf +++ b/modules/nf-core/modules/adapterremoval/main.nf @@ -12,15 +12,14 @@ process ADAPTERREMOVAL { path(adapterlist) output: - tuple val(meta), path("${prefix}.truncated.gz") , optional: true, emit: singles_truncated - tuple val(meta), path("${prefix}.discarded.gz") , optional: true, emit: discarded - tuple val(meta), path("${prefix}.pair1.truncated.gz") , optional: true, emit: pair1_truncated - tuple val(meta), path("${prefix}.pair2.truncated.gz") , optional: true, emit: pair2_truncated - tuple val(meta), path("${prefix}.collapsed.gz") , optional: true, emit: collapsed - tuple val(meta), path("${prefix}.collapsed.truncated.gz") , optional: true, emit: collapsed_truncated - tuple val(meta), path("${prefix}.paired.gz") , optional: true, emit: paired_interleaved - tuple val(meta), path('*.log') , emit: log - path "versions.yml" , emit: versions + tuple val(meta), path("${prefix}.truncated.fastq.gz") , optional: true, emit: singles_truncated + tuple val(meta), path("${prefix}.discarded.fastq.gz") , optional: true, emit: discarded + tuple val(meta), path("${prefix}.pair{1,2}.truncated.fastq.gz") , optional: true, emit: paired_truncated + tuple val(meta), path("${prefix}.collapsed.fastq.gz") , optional: true, emit: collapsed + tuple val(meta), path("${prefix}.collapsed.truncated.fastq.gz") , optional: true, emit: collapsed_truncated + tuple val(meta), path("${prefix}.paired.fastq.gz") , optional: true, emit: paired_interleaved + tuple val(meta), path('*.settings') , emit: settings + path "versions.yml" , emit: versions when: task.ext.when == null || task.ext.when @@ -38,10 +37,19 @@ process ADAPTERREMOVAL { $adapterlist \\ --basename ${prefix} \\ --threads ${task.cpus} \\ - --settings ${prefix}.log \\ --seed 42 \\ --gzip + ensure_fastq() { + if [ -f "\${1}" ]; then + mv "\${1}" "\${1::-3}.fastq.gz" + fi + + } + + ensure_fastq '${prefix}.truncated.gz' + ensure_fastq '${prefix}.discarded.gz' + cat <<-END_VERSIONS > versions.yml "${task.process}": adapterremoval: \$(AdapterRemoval --version 2>&1 | sed -e "s/AdapterRemoval ver. //g") @@ -56,10 +64,24 @@ process ADAPTERREMOVAL { $adapterlist \\ --basename ${prefix} \\ --threads $task.cpus \\ - --settings ${prefix}.log \\ --seed 42 \\ --gzip + ensure_fastq() { + if [ -f "\${1}" ]; then + mv "\${1}" "\${1::-3}.fastq.gz" + fi + + } + + ensure_fastq '${prefix}.truncated.gz' + ensure_fastq '${prefix}.discarded.gz' + ensure_fastq '${prefix}.pair1.truncated.gz' + ensure_fastq '${prefix}.pair2.truncated.gz' + ensure_fastq '${prefix}.collapsed.gz' + ensure_fastq '${prefix}.collapsed.truncated.gz' + ensure_fastq '${prefix}.paired.gz' + cat <<-END_VERSIONS > versions.yml "${task.process}": adapterremoval: \$(AdapterRemoval --version 2>&1 | sed -e "s/AdapterRemoval ver. //g") diff --git a/modules/nf-core/modules/adapterremoval/meta.yml b/modules/nf-core/modules/adapterremoval/meta.yml index 5faad04..77273f6 100644 --- a/modules/nf-core/modules/adapterremoval/meta.yml +++ b/modules/nf-core/modules/adapterremoval/meta.yml @@ -43,43 +43,43 @@ output: Adapter trimmed FastQ files of either single-end reads, or singleton 'orphaned' reads from merging of paired-end data (i.e., one of the pair was lost due to filtering thresholds). - pattern: "*.truncated.gz" + pattern: "*.truncated.fastq.gz" - discarded: type: file description: | Adapter trimmed FastQ files of reads that did not pass filtering thresholds. - pattern: "*.discarded.gz" + pattern: "*.discarded.fastq.gz" - pair1_truncated: type: file description: | Adapter trimmed R1 FastQ files of paired-end reads that did not merge with their respective R2 pair due to long templates. The respective pair is stored in 'pair2_truncated'. - pattern: "*.pair1.truncated.gz" + pattern: "*.pair1.truncated.fastq.gz" - pair2_truncated: type: file description: | Adapter trimmed R2 FastQ files of paired-end reads that did not merge with their respective R1 pair due to long templates. The respective pair is stored in 'pair1_truncated'. - pattern: "*.pair2.truncated.gz" + pattern: "*.pair2.truncated.fastq.gz" - collapsed: type: file description: | Collapsed FastQ of paired-end reads that successfully merged with their respective R1 pair but were not trimmed. - pattern: "*.collapsed.gz" + pattern: "*.collapsed.fastq.gz" - collapsed_truncated: type: file description: | Collapsed FastQ of paired-end reads that successfully merged with their respective R1 pair and were trimmed of adapter due to sufficient overlap. - pattern: "*.collapsed.truncated.gz" + pattern: "*.collapsed.truncated.fastq.gz" - log: type: file description: AdapterRemoval log file - pattern: "*.log" + pattern: "*.settings" - versions: type: file description: File containing software versions From 0e9b2989e3fd59b6e05a77a8faf6ed89d6ddea03 Mon Sep 17 00:00:00 2001 From: "Moritz E. Beber" Date: Tue, 5 Apr 2022 10:53:04 +0200 Subject: [PATCH 104/789] refactor: remove superfluous ENSURE_FASTQ_EXTENSION --- .../local/shortread_adapterremoval.nf | 75 ++++--------------- 1 file changed, 16 insertions(+), 59 deletions(-) diff --git a/subworkflows/local/shortread_adapterremoval.nf b/subworkflows/local/shortread_adapterremoval.nf index e522a1a..8c02f6f 100644 --- a/subworkflows/local/shortread_adapterremoval.nf +++ b/subworkflows/local/shortread_adapterremoval.nf @@ -5,11 +5,6 @@ Process short raw reads with AdapterRemoval include { ADAPTERREMOVAL as ADAPTERREMOVAL_SINGLE } from '../../modules/nf-core/modules/adapterremoval/main' include { ADAPTERREMOVAL as ADAPTERREMOVAL_PAIRED } from '../../modules/nf-core/modules/adapterremoval/main' include { CAT_FASTQ } from '../../modules/nf-core/modules/cat/fastq/main' -include { - ENSURE_FASTQ_EXTENSION as ENSURE_FASTQ_EXTENSION1; - ENSURE_FASTQ_EXTENSION as ENSURE_FASTQ_EXTENSION2; - ENSURE_FASTQ_EXTENSION as ENSURE_FASTQ_EXTENSION3; -} from '../../modules/local/ensure_fastq_extension' workflow SHORTREAD_ADAPTERREMOVAL { @@ -36,34 +31,25 @@ workflow SHORTREAD_ADAPTERREMOVAL { if ( params.shortread_clipmerge_mergepairs && !params.shortread_clipmerge_excludeunmerged ) { - ENSURE_FASTQ_EXTENSION1( - Channel.empty().mix( + ch_concat_fastq = Channel.empty() + .mix( ADAPTERREMOVAL_PAIRED.out.collapsed, ADAPTERREMOVAL_PAIRED.out.collapsed_truncated, ADAPTERREMOVAL_PAIRED.out.singles_truncated, - ADAPTERREMOVAL_PAIRED.out.pair1_truncated, - ADAPTERREMOVAL_PAIRED.out.pair2_truncated + ADAPTERREMOVAL_PAIRED.out.paired_truncated ) - .map { meta, reads -> - meta.single_end = true - [meta, reads] - } - ) - - CAT_FASTQ( - ENSURE_FASTQ_EXTENSION1.out.reads - .groupTuple() - ) + .groupTuple() + .map { [it.head(), it.tail().flatten()] } - ENSURE_FASTQ_EXTENSION2(ADAPTERREMOVAL_SINGLE.out.singles_truncated) + CAT_FASTQ(ch_concat_fastq) ch_adapterremoval_reads_prepped = CAT_FASTQ.out.reads - .mix(ENSURE_FASTQ_EXTENSION2.out.reads) + .mix(ADAPTERREMOVAL_SINGLE.out.singles_truncated) } else if ( params.shortread_clipmerge_mergepairs && params.shortread_clipmerge_excludeunmerged ) { - ENSURE_FASTQ_EXTENSION1( - Channel.empty().mix( + ch_concat_fastq = Channel.empty() + .mix( ADAPTERREMOVAL_PAIRED.out.collapsed, ADAPTERREMOVAL_PAIRED.out.collapsed_truncated ) @@ -71,54 +57,25 @@ workflow SHORTREAD_ADAPTERREMOVAL { meta.single_end = true [meta, reads] } - ) - - CAT_FASTQ( - ENSURE_FASTQ_EXTENSION1.out.reads - .groupTuple() - ) + .groupTuple() - ENSURE_FASTQ_EXTENSION2(ADAPTERREMOVAL_SINGLE.out.singles_truncated) + CAT_FASTQ(ch_concat_fastq) ch_adapterremoval_reads_prepped = CAT_FASTQ.out.reads - .mix(ENSURE_FASTQ_EXTENSION2.out.reads) + .mix(ADAPTERREMOVAL_SINGLE.out.singles_truncated) } else { - ENSURE_FASTQ_EXTENSION1( - ADAPTERREMOVAL_PAIRED.out.pair1_truncated - .map { meta, reads -> - meta.single_end = true - [meta, reads] - } - ) - - ENSURE_FASTQ_EXTENSION2( - ADAPTERREMOVAL_PAIRED.out.pair2_truncated - .map { meta, reads -> - meta.single_end = true - [meta, reads] - } - ) - - ENSURE_FASTQ_EXTENSION3(ADAPTERREMOVAL_SINGLE.out.singles_truncated) - - ch_adapterremoval_reads_prepped = ENSURE_FASTQ_EXTENSION1.out.reads - .join(ENSURE_FASTQ_EXTENSION2.out.reads) - .groupTuple() - .map { meta, pair1, pair2 -> - meta.single_end = false - [ meta, [ pair1, pair2 ].flatten() ] - } - .mix(ENSURE_FASTQ_EXTENSION3.out.reads) + ch_adapterremoval_reads_prepped = ADAPTERREMOVAL_PAIRED.out.paired_truncated + .mix(ADAPTERREMOVAL_SINGLE.out.singles_truncated) } ch_versions = ch_versions.mix( ADAPTERREMOVAL_SINGLE.out.versions.first() ) ch_versions = ch_versions.mix( ADAPTERREMOVAL_PAIRED.out.versions.first() ) ch_multiqc_files = ch_multiqc_files.mix( - ADAPTERREMOVAL_PAIRED.out.log.collect{it[1]}, - ADAPTERREMOVAL_SINGLE.out.log.collect{it[1]} + ADAPTERREMOVAL_PAIRED.out.settings.collect{it[1]}, + ADAPTERREMOVAL_SINGLE.out.settings.collect{it[1]} ) emit: From d46ddd972c2fc2c3ce0e7fe03b3ad42a4821332a Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Tue, 5 Apr 2022 11:04:30 +0200 Subject: [PATCH 105/789] Expand tests and fix schema after review --- .github/workflows/ci.yml | 8 ++++++++ conf/test.config | 13 +++++++------ nextflow.config | 2 +- nextflow_schema.json | 3 ++- 4 files changed, 18 insertions(+), 8 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index b8975b5..79148f0 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -29,8 +29,16 @@ jobs: - NXF_VER: "" NXF_EDGE: "1" parameters: + - "--longread_clip false" + - "--shortread_clip false" - "--shortread_clipmerge_tool fastp" + - "--shortread_clipmerge_tool fastp --shortread_clipmerge_mergepairs --shortread_clipmerge_excludeunmerged" + - "--shortread_clipmerge_tool fastp --shortread_clipmerge_mergepairs" - "--shortread_clipmerge_tool adapterremoval" + - "--shortread_clipmerge_tool adapterremoval --shortread_clipmerge_mergepairs --shortread_clipmerge_excludeunmerged" + - "--shortread_clipmerge_tool adapterremoval --shortread_clipmerge_mergepairs" + - "--shortread_complexityfilter_tool bbduk" + - "--shortread_complexityfilter_tool prinseq" steps: - name: Check out pipeline code diff --git a/conf/test.config b/conf/test.config index ff92fe7..bdad2c1 100644 --- a/conf/test.config +++ b/conf/test.config @@ -22,11 +22,12 @@ params { // Input data // TODO nf-core: Specify the paths to your test data on nf-core/test-datasets // TODO nf-core: Give any required params for the test so that command line flags are not needed - input = 'https://raw.githubusercontent.com/nf-core/test-datasets/taxprofiler/samplesheet.csv' - databases = 'https://raw.githubusercontent.com/nf-core/test-datasets/taxprofiler/database.csv' - run_kraken2 = true - run_malt = true - run_metaphlan3 = true - shortread_clipmerge = true + input = 'https://raw.githubusercontent.com/nf-core/test-datasets/taxprofiler/samplesheet.csv' + databases = 'https://raw.githubusercontent.com/nf-core/test-datasets/taxprofiler/database.csv' + run_kraken2 = true + run_malt = true + run_metaphlan3 = true + shortread_clipmerge = true + longread_clip = false shortread_complexityfilter = true } diff --git a/nextflow.config b/nextflow.config index cd81f08..e6d6307 100644 --- a/nextflow.config +++ b/nextflow.config @@ -51,7 +51,7 @@ params { max_cpus = 16 max_time = '240.h' - // Databaess + // Databases databases = null // FASTQ preprocessing diff --git a/nextflow_schema.json b/nextflow_schema.json index bec9ea4..6f6125e 100644 --- a/nextflow_schema.json +++ b/nextflow_schema.json @@ -328,7 +328,8 @@ }, "shortread_complexityfilter_prinseqplusplus_mode": { "type": "string", - "default": "entropy" + "default": "entropy", + "enum": ["entropy", "dust"] }, "shortread_complexityfilter_prinseqplusplus_dustscore": { "type": "number", From 59b2088aa183a58523f712ec5ee85cbdab8e1647 Mon Sep 17 00:00:00 2001 From: "Moritz E. Beber" Date: Tue, 5 Apr 2022 11:16:43 +0200 Subject: [PATCH 106/789] style: apply prettier --- modules.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules.json b/modules.json index 51f13ea..becb501 100644 --- a/modules.json +++ b/modules.json @@ -38,4 +38,4 @@ } } } -} \ No newline at end of file +} From 39e5e802c7af4e7e36927afa471801ff3b8aab6e Mon Sep 17 00:00:00 2001 From: "Moritz E. Beber" Date: Tue, 5 Apr 2022 11:29:39 +0200 Subject: [PATCH 107/789] refactor: make code more explicit, add comment --- subworkflows/local/shortread_adapterremoval.nf | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/subworkflows/local/shortread_adapterremoval.nf b/subworkflows/local/shortread_adapterremoval.nf index 8c02f6f..906a33f 100644 --- a/subworkflows/local/shortread_adapterremoval.nf +++ b/subworkflows/local/shortread_adapterremoval.nf @@ -39,7 +39,9 @@ workflow SHORTREAD_ADAPTERREMOVAL { ADAPTERREMOVAL_PAIRED.out.paired_truncated ) .groupTuple() - .map { [it.head(), it.tail().flatten()] } + // Paired-end reads cause a nested tuple during grouping. + // We want to present a flat list of files to `CAT_FASTQ`. + .map { meta, fastq -> [meta, fastq.flatten()] } CAT_FASTQ(ch_concat_fastq) From 245a4d1f5dae7e29ec76aa1265154edbbe3eb3db Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Tue, 5 Apr 2022 13:08:44 +0200 Subject: [PATCH 108/789] Fix MQC staging and remove debugging dump --- subworkflows/local/shortread_adapterremoval.nf | 4 ++-- workflows/taxprofiler.nf | 13 ++++++------- 2 files changed, 8 insertions(+), 9 deletions(-) diff --git a/subworkflows/local/shortread_adapterremoval.nf b/subworkflows/local/shortread_adapterremoval.nf index 9d49b10..473a05f 100644 --- a/subworkflows/local/shortread_adapterremoval.nf +++ b/subworkflows/local/shortread_adapterremoval.nf @@ -117,8 +117,8 @@ workflow SHORTREAD_ADAPTERREMOVAL { ch_versions = ch_versions.mix( ADAPTERREMOVAL_SINGLE.out.versions.first() ) ch_versions = ch_versions.mix( ADAPTERREMOVAL_PAIRED.out.versions.first() ) ch_multiqc_files = ch_multiqc_files.mix( - ADAPTERREMOVAL_PAIRED.out.log.collect{it[1]}, - ADAPTERREMOVAL_SINGLE.out.log.collect{it[1]} + ADAPTERREMOVAL_PAIRED.out.log, + ADAPTERREMOVAL_SINGLE.out.log ) emit: diff --git a/workflows/taxprofiler.nf b/workflows/taxprofiler.nf index ddd5914..eb2b461 100644 --- a/workflows/taxprofiler.nf +++ b/workflows/taxprofiler.nf @@ -171,7 +171,6 @@ workflow TAXPROFILER { } ch_input_for_metaphlan3 = ch_input_for_profiling.metaphlan3 - .dump(tag: "input_metaphlan3") .multiMap { it -> reads: [it[0] + it[2], it[1]] @@ -213,34 +212,34 @@ workflow TAXPROFILER { ch_multiqc_files = ch_multiqc_files.mix(FASTQC.out.zip.collect{it[1]}.ifEmpty([])) if (params.shortread_clipmerge) { - ch_multiqc_files = ch_multiqc_files.mix( SHORTREAD_PREPROCESSING.out.mqc.collect{it[1]}.ifEmpty([]) ) + ch_multiqc_files = ch_multiqc_files.mix( SHORTREAD_PREPROCESSING.out.mqc.collect{it[1]}.ifEmpty([]).dump(tag: "clipmerge") ) ch_versions = ch_versions.mix( SHORTREAD_PREPROCESSING.out.versions ) } if (params.longread_clip) { - ch_multiqc_files = ch_multiqc_files.mix( LONGREAD_PREPROCESSING.out.mqc.collect{it[1]}.ifEmpty([]) ) + ch_multiqc_files = ch_multiqc_files.mix( LONGREAD_PREPROCESSING.out.mqc.collect{it[1]}.ifEmpty([]).dump(tag: "clip") ) ch_versions = ch_versions.mix( LONGREAD_PREPROCESSING.out.versions ) } if (params.shortread_complexityfilter){ - ch_multiqc_files = ch_multiqc_files.mix( SHORTREAD_COMPLEXITYFILTERING.out.mqc.collect{it[1]}.ifEmpty([]) ) + ch_multiqc_files = ch_multiqc_files.mix( SHORTREAD_COMPLEXITYFILTERING.out.mqc.collect{it[1]}.ifEmpty([]).dump(tag: "complex") ) ch_versions = ch_versions.mix( SHORTREAD_COMPLEXITYFILTERING.out.versions ) } if (params.run_kraken2) { - ch_multiqc_files = ch_multiqc_files.mix( KRAKEN2_KRAKEN2.out.txt.collect{it[1]}.ifEmpty([]) ) + ch_multiqc_files = ch_multiqc_files.mix( KRAKEN2_KRAKEN2.out.txt.collect{it[1]}.ifEmpty([]).dump(tag: "kraken") ) ch_versions = ch_versions.mix( KRAKEN2_KRAKEN2.out.versions.first() ) } if (params.run_malt) { - ch_multiqc_files = ch_multiqc_files.mix( MALT_RUN.out.log.collect{it[1]}.ifEmpty([]) ) + ch_multiqc_files = ch_multiqc_files.mix( MALT_RUN.out.log.collect{it[1]}.ifEmpty([]).dump(tag: "malt") ) ch_versions = ch_versions.mix( MALT_RUN.out.versions.first() ) } // TODO Versions for Karken/MALT not report? // TODO create multiQC module for metaphlan MULTIQC ( - ch_multiqc_files.collect() + ch_multiqc_files.collect().dump(tag: "input_to_mqc") ) multiqc_report = MULTIQC.out.report.toList() ch_versions = ch_versions.mix(MULTIQC.out.versions) From 5b9355725dea7af56745a28e6807ae5768798e8b Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Tue, 5 Apr 2022 13:14:06 +0200 Subject: [PATCH 109/789] Whoops --- workflows/taxprofiler.nf | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/workflows/taxprofiler.nf b/workflows/taxprofiler.nf index eb2b461..8dfe996 100644 --- a/workflows/taxprofiler.nf +++ b/workflows/taxprofiler.nf @@ -17,7 +17,7 @@ for (param in checkPathParamList) { if (param) { file(param, checkIfExists: true // Check mandatory parameters if (params.input ) { ch_input = file(params.input) } else { exit 1, 'Input samplesheet not specified!' } if (params.databases) { ch_databases = file(params.databases) } else { exit 1, 'Input database sheet not specified!' } -if (params.shortread_clipmerge_mergepairs && params.run_malt ) log.warn "[nf-core/taxprofiler] warning: MALT does not except uncollapsed paired-reads. Pairs will be profiled as separate files." +if (params.shortread_clipmerge_mergepairs && params.run_malt ) log.warn "[nf-core/taxprofiler] warning: MALT does not accept uncollapsed paired-reads. Pairs will be profiled as separate files." if (params.shortread_clipmerge_excludeunmerged && !params.shortread_clipmerge_mergepairs) exit 1, "[nf-core/taxprofiler] error: cannot include unmerged reads when merging not turned on. Please specify --shortread_clipmerge_mergepairs" /* @@ -212,34 +212,34 @@ workflow TAXPROFILER { ch_multiqc_files = ch_multiqc_files.mix(FASTQC.out.zip.collect{it[1]}.ifEmpty([])) if (params.shortread_clipmerge) { - ch_multiqc_files = ch_multiqc_files.mix( SHORTREAD_PREPROCESSING.out.mqc.collect{it[1]}.ifEmpty([]).dump(tag: "clipmerge") ) + ch_multiqc_files = ch_multiqc_files.mix( SHORTREAD_PREPROCESSING.out.mqc.collect{it[1]}.ifEmpty([]) ) ch_versions = ch_versions.mix( SHORTREAD_PREPROCESSING.out.versions ) } if (params.longread_clip) { - ch_multiqc_files = ch_multiqc_files.mix( LONGREAD_PREPROCESSING.out.mqc.collect{it[1]}.ifEmpty([]).dump(tag: "clip") ) + ch_multiqc_files = ch_multiqc_files.mix( LONGREAD_PREPROCESSING.out.mqc.collect{it[1]}.ifEmpty([]) ) ch_versions = ch_versions.mix( LONGREAD_PREPROCESSING.out.versions ) } if (params.shortread_complexityfilter){ - ch_multiqc_files = ch_multiqc_files.mix( SHORTREAD_COMPLEXITYFILTERING.out.mqc.collect{it[1]}.ifEmpty([]).dump(tag: "complex") ) + ch_multiqc_files = ch_multiqc_files.mix( SHORTREAD_COMPLEXITYFILTERING.out.mqc.collect{it[1]}.ifEmpty([]) ) ch_versions = ch_versions.mix( SHORTREAD_COMPLEXITYFILTERING.out.versions ) } if (params.run_kraken2) { - ch_multiqc_files = ch_multiqc_files.mix( KRAKEN2_KRAKEN2.out.txt.collect{it[1]}.ifEmpty([]).dump(tag: "kraken") ) + ch_multiqc_files = ch_multiqc_files.mix( KRAKEN2_KRAKEN2.out.txt.collect{it[1]}.ifEmpty([]) ) ch_versions = ch_versions.mix( KRAKEN2_KRAKEN2.out.versions.first() ) } if (params.run_malt) { - ch_multiqc_files = ch_multiqc_files.mix( MALT_RUN.out.log.collect{it[1]}.ifEmpty([]).dump(tag: "malt") ) + ch_multiqc_files = ch_multiqc_files.mix( MALT_RUN.out.log.collect{it[1]}.ifEmpty([]) ) ch_versions = ch_versions.mix( MALT_RUN.out.versions.first() ) } // TODO Versions for Karken/MALT not report? // TODO create multiQC module for metaphlan MULTIQC ( - ch_multiqc_files.collect().dump(tag: "input_to_mqc") + ch_multiqc_files.collect() ) multiqc_report = MULTIQC.out.report.toList() ch_versions = ch_versions.mix(MULTIQC.out.versions) From 98f082d7b6df9e7ef8da41b98bafab63770d3582 Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Tue, 5 Apr 2022 13:17:54 +0200 Subject: [PATCH 110/789] Fix mistake in previous upstream merge with AR2 output channel for settings file --- subworkflows/local/shortread_adapterremoval.nf | 5 +++-- workflows/taxprofiler.nf | 2 +- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/subworkflows/local/shortread_adapterremoval.nf b/subworkflows/local/shortread_adapterremoval.nf index 6512596..bfed76a 100644 --- a/subworkflows/local/shortread_adapterremoval.nf +++ b/subworkflows/local/shortread_adapterremoval.nf @@ -75,9 +75,10 @@ workflow SHORTREAD_ADAPTERREMOVAL { ch_versions = ch_versions.mix( ADAPTERREMOVAL_SINGLE.out.versions.first() ) ch_versions = ch_versions.mix( ADAPTERREMOVAL_PAIRED.out.versions.first() ) + ch_multiqc_files = ch_multiqc_files.mix( - ADAPTERREMOVAL_PAIRED.out.log, - ADAPTERREMOVAL_SINGLE.out.log + ADAPTERREMOVAL_PAIRED.out.settings, + ADAPTERREMOVAL_SINGLE.out.settings ) emit: diff --git a/workflows/taxprofiler.nf b/workflows/taxprofiler.nf index 8dfe996..3b08402 100644 --- a/workflows/taxprofiler.nf +++ b/workflows/taxprofiler.nf @@ -222,7 +222,7 @@ workflow TAXPROFILER { } if (params.shortread_complexityfilter){ - ch_multiqc_files = ch_multiqc_files.mix( SHORTREAD_COMPLEXITYFILTERING.out.mqc.collect{it[1]}.ifEmpty([]) ) + ch_multiqc_files = ch_multiqc_files.mix( SHORTREAD_COMPLEXITYFILTERING.out.mqc.collect{it[1]}.ifEmpty([]) ) ch_versions = ch_versions.mix( SHORTREAD_COMPLEXITYFILTERING.out.versions ) } From 82aa89ad63d8769989b533da4695dc9387d81355 Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Tue, 5 Apr 2022 13:55:11 +0200 Subject: [PATCH 111/789] re add missing switch meta of merged reads to true --- subworkflows/local/shortread_adapterremoval.nf | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/subworkflows/local/shortread_adapterremoval.nf b/subworkflows/local/shortread_adapterremoval.nf index bfed76a..b573be9 100644 --- a/subworkflows/local/shortread_adapterremoval.nf +++ b/subworkflows/local/shortread_adapterremoval.nf @@ -38,11 +38,17 @@ workflow SHORTREAD_ADAPTERREMOVAL { ADAPTERREMOVAL_PAIRED.out.singles_truncated, ADAPTERREMOVAL_PAIRED.out.paired_truncated ) + .map { meta, reads -> + def meta_new = meta.clone() + meta_new.single_end = true + [meta_new, reads] + } .groupTuple() // Paired-end reads cause a nested tuple during grouping. // We want to present a flat list of files to `CAT_FASTQ`. .map { meta, fastq -> [meta, fastq.flatten()] } + CAT_FASTQ(ch_concat_fastq) ch_adapterremoval_reads_prepped = CAT_FASTQ.out.reads @@ -56,10 +62,13 @@ workflow SHORTREAD_ADAPTERREMOVAL { ADAPTERREMOVAL_PAIRED.out.collapsed_truncated ) .map { meta, reads -> - meta.single_end = true - [meta, reads] + def meta_new = meta.clone() + meta_new.single_end = true + [meta_new, reads] } .groupTuple() + .map { meta, fastq -> [meta, fastq.flatten()] } + CAT_FASTQ(ch_concat_fastq) From c40a9a00113c3e178bf20a4f1e0870d0994d9383 Mon Sep 17 00:00:00 2001 From: "Moritz E. Beber" Date: Tue, 5 Apr 2022 12:13:45 +0200 Subject: [PATCH 112/789] refactor: avoid publishing unpacked databases --- conf/modules.config | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/conf/modules.config b/conf/modules.config index 2a8789f..22db8d0 100644 --- a/conf/modules.config +++ b/conf/modules.config @@ -35,11 +35,7 @@ process { } withName: UNTAR { - publishDir = [ - path: { "${params.outdir}/databases" }, - mode: params.publish_dir_mode, - saveAs: { filename -> filename.equals('versions.yml') ? null : filename } - ] + publishDir = null } withName: FASTQC { From af12435fa5e3adf240d48bf9f764a063c62593b8 Mon Sep 17 00:00:00 2001 From: "Moritz E. Beber" Date: Tue, 5 Apr 2022 12:16:26 +0200 Subject: [PATCH 113/789] fix: use parameter for publish mode everywhere --- conf/modules.config | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/conf/modules.config b/conf/modules.config index 22db8d0..a910b8e 100644 --- a/conf/modules.config +++ b/conf/modules.config @@ -43,7 +43,7 @@ process { ext.prefix = { "${meta.id}_${meta.run_accession}_raw" } publishDir = [ path: { "${params.outdir}/fastqc/raw" }, - mode: 'copy', + mode: params.publish_dir_mode, pattern: '*.html' ] } @@ -53,7 +53,7 @@ process { ext.prefix = { "${meta.id}_${meta.run_accession}_processed" } publishDir = [ path: { "${params.outdir}/fastqc/processed" }, - mode: 'copy', + mode: params.publish_dir_mode, pattern: '*.html' ] } @@ -69,7 +69,7 @@ process { ext.prefix = { "${meta.id}_${meta.run_accession}" } publishDir = [ path: { "${params.outdir}/fastp" }, - mode: 'copy', + mode: params.publish_dir_mode, pattern: '*.fastq.gz' ] } @@ -88,7 +88,7 @@ process { ext.prefix = { "${meta.id}_${meta.run_accession}" } publishDir = [ path: { "${params.outdir}/fastp" }, - mode: 'copy', + mode: params.publish_dir_mode, pattern: '*.fastq.gz' ] } @@ -104,7 +104,7 @@ process { ext.prefix = { "${meta.id}_${meta.run_accession}" } publishDir = [ path: { "${params.outdir}/adapterremoval" }, - mode: 'copy', + mode: params.publish_dir_mode, pattern: '*.fastq.gz' ] } @@ -123,7 +123,7 @@ process { ext.prefix = { "${meta.id}_${meta.run_accession}" } publishDir = [ path: { "${params.outdir}/adapterremoval" }, - mode: 'copy', + mode: params.publish_dir_mode, pattern: '*.fastq.gz' ] } @@ -132,7 +132,7 @@ process { ext.prefix = { "${meta.id}_${meta.run_accession}" } publishDir = [ path: { "${params.outdir}/porechop" }, - mode: 'copy', + mode: params.publish_dir_mode, pattern: '*.fastq.gz' ] } @@ -169,7 +169,7 @@ process { ext.prefix = { "${meta.id}-${meta.run_accession}-${meta.db_name}" } publishDir = [ path: { "${params.outdir}/malt/${meta.db_name}" }, - mode: 'copy', + mode: params.publish_dir_mode, pattern: '*.{rma6,tab,text,sam,log}' ] } @@ -179,7 +179,7 @@ process { ext.prefix = { "${meta.id}-${meta.run_accession}-${meta.db_name}" } publishDir = [ path: { "${params.outdir}/kraken2/${meta.db_name}" }, - mode: 'copy', + mode: params.publish_dir_mode, pattern: '*.{fastq.gz,txt}' ] } From 8827b143a22b07c21c7cbe5776fb112015f5ae8b Mon Sep 17 00:00:00 2001 From: "Moritz E. Beber" Date: Tue, 5 Apr 2022 12:30:06 +0200 Subject: [PATCH 114/789] fix: disable publishing correctly --- conf/modules.config | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/conf/modules.config b/conf/modules.config index a910b8e..ce9597b 100644 --- a/conf/modules.config +++ b/conf/modules.config @@ -35,7 +35,7 @@ process { } withName: UNTAR { - publishDir = null + publishDir = [enabled: false] } withName: FASTQC { From 018b9a8ea60afd0c5d123e4420fdccaecafbc9f7 Mon Sep 17 00:00:00 2001 From: "Moritz E. Beber" Date: Wed, 6 Apr 2022 10:21:43 +0200 Subject: [PATCH 115/789] refactor: do not generally publish output --- conf/modules.config | 6 ------ 1 file changed, 6 deletions(-) diff --git a/conf/modules.config b/conf/modules.config index ce9597b..f9cfe3b 100644 --- a/conf/modules.config +++ b/conf/modules.config @@ -12,12 +12,6 @@ process { - publishDir = [ - path: { "${params.outdir}/${task.process.tokenize(':')[-1].tokenize('_')[0].toLowerCase()}" }, - mode: params.publish_dir_mode, - saveAs: { filename -> filename.equals('versions.yml') ? null : filename } - ] - withName: SAMPLESHEET_CHECK { publishDir = [ path: { "${params.outdir}/pipeline_info" }, From 7ab3aa546b8e1d0388981757d259284bf67f5fc8 Mon Sep 17 00:00:00 2001 From: "Moritz E. Beber" Date: Wed, 6 Apr 2022 10:27:11 +0200 Subject: [PATCH 116/789] refactor: use flags to publish reads --- conf/modules.config | 25 ++++++++++++++----------- nextflow.config | 2 ++ nextflow_schema.json | 8 ++++++++ 3 files changed, 24 insertions(+), 11 deletions(-) diff --git a/conf/modules.config b/conf/modules.config index f9cfe3b..b59850f 100644 --- a/conf/modules.config +++ b/conf/modules.config @@ -28,10 +28,6 @@ process { ] } - withName: UNTAR { - publishDir = [enabled: false] - } - withName: FASTQC { ext.args = '--quiet' ext.prefix = { "${meta.id}_${meta.run_accession}_raw" } @@ -64,7 +60,8 @@ process { publishDir = [ path: { "${params.outdir}/fastp" }, mode: params.publish_dir_mode, - pattern: '*.fastq.gz' + pattern: '*.fastq.gz', + enabled: params.save_preprocessed_reads ] } @@ -83,7 +80,8 @@ process { publishDir = [ path: { "${params.outdir}/fastp" }, mode: params.publish_dir_mode, - pattern: '*.fastq.gz' + pattern: '*.fastq.gz', + enabled: params.save_preprocessed_reads ] } @@ -99,7 +97,8 @@ process { publishDir = [ path: { "${params.outdir}/adapterremoval" }, mode: params.publish_dir_mode, - pattern: '*.fastq.gz' + pattern: '*.fastq.gz', + enabled: params.save_preprocessed_reads ] } @@ -118,7 +117,8 @@ process { publishDir = [ path: { "${params.outdir}/adapterremoval" }, mode: params.publish_dir_mode, - pattern: '*.fastq.gz' + pattern: '*.fastq.gz', + enabled: params.save_preprocessed_reads ] } @@ -127,7 +127,8 @@ process { publishDir = [ path: { "${params.outdir}/porechop" }, mode: params.publish_dir_mode, - pattern: '*.fastq.gz' + pattern: '*.fastq.gz', + enabled: params.save_preprocessed_reads ] } @@ -141,7 +142,8 @@ process { publishDir = [ path: { "${params.outdir}/bbduk/" }, mode: params.publish_dir_mode, - pattern: '*.{fastq.gz,log}' + pattern: '*.{fastq.gz,log}', + enabled: params.save_complexityfiltered_reads ] } @@ -154,7 +156,8 @@ process { publishDir = [ path: { "${params.outdir}/prinseqplusplus/" }, mode: params.publish_dir_mode, - pattern: '*{_good_out.fastq.gz,_good_out_R1.fastq.gz,_good_out_R2.fastq.gz,log}' + pattern: '*{_good_out.fastq.gz,_good_out_R1.fastq.gz,_good_out_R2.fastq.gz,log}', + enabled: params.save_complexityfiltered_reads ] } diff --git a/nextflow.config b/nextflow.config index e6d6307..19cc823 100644 --- a/nextflow.config +++ b/nextflow.config @@ -64,6 +64,7 @@ params { shortread_clipmerge_adapter2 = null shortread_clipmerge_minlength = 15 longread_clip = false + save_preprocessed_reads = false // Complexity filtering shortread_complexityfilter = false @@ -73,6 +74,7 @@ params { shortread_complexityfilter_bbduk_mask = false shortread_complexityfilter_prinseqplusplus_mode = 'entropy' shortread_complexityfilter_prinseqplusplus_dustscore = 0.5 + save_complexityfiltered_reads = false // MALT diff --git a/nextflow_schema.json b/nextflow_schema.json index 6f6125e..6858409 100644 --- a/nextflow_schema.json +++ b/nextflow_schema.json @@ -308,6 +308,10 @@ "type": "integer", "default": 15 }, + "save_preprocessed_reads": { + "type": "boolean", + "default": false + }, "shortread_complexityfilter_tool": { "type": "string", "default": "bbduk" @@ -334,6 +338,10 @@ "shortread_complexityfilter_prinseqplusplus_dustscore": { "type": "number", "default": 0.5 + }, + "save_complexityfiltered_reads": { + "type": "boolean", + "default": false } } } From 26779a4420f5d71d55a7bb99ff85ee1863740401 Mon Sep 17 00:00:00 2001 From: sofstam Date: Thu, 7 Apr 2022 16:27:19 +0200 Subject: [PATCH 117/789] Remove db_name from nextflow.config --- conf/test.config | 4 ++-- nextflow.config | 1 - nextflow_schema.json | 7 +++++-- 3 files changed, 7 insertions(+), 5 deletions(-) diff --git a/conf/test.config b/conf/test.config index 6e82300..d392306 100644 --- a/conf/test.config +++ b/conf/test.config @@ -25,10 +25,10 @@ params { input = 'https://raw.githubusercontent.com/nf-core/test-datasets/taxprofiler/samplesheet.csv' databases = 'https://raw.githubusercontent.com/nf-core/test-datasets/taxprofiler/database.csv' run_kraken2 = true - run_malt = true + run_malt = false run_metaphlan3 = true run_centrifuge = true shortread_clipmerge = true longread_clip = false - shortread_complexityfilter = true + shortread_complexityfilter = false } diff --git a/nextflow.config b/nextflow.config index 37f886f..b4a8d91 100644 --- a/nextflow.config +++ b/nextflow.config @@ -86,7 +86,6 @@ params { // centrifuge run_centrifuge = false - centrifuge_db_name = 'minigut_cf' centrifuge_save_unaligned = false centrifuge_save_aligned = false centrifuge_sam_format = false diff --git a/nextflow_schema.json b/nextflow_schema.json index 2ed80ed..23eb83b 100644 --- a/nextflow_schema.json +++ b/nextflow_schema.json @@ -358,7 +358,10 @@ "shortread_complexityfilter_prinseqplusplus_mode": { "type": "string", "default": "entropy", - "enum": ["entropy", "dust"] + "enum": [ + "entropy", + "dust" + ] }, "shortread_complexityfilter_prinseqplusplus_dustscore": { "type": "number", @@ -369,4 +372,4 @@ "default": false } } -} +} \ No newline at end of file From 3d45ac57aead82baa98a8f0ee8aa668775bf4021 Mon Sep 17 00:00:00 2001 From: Sofia Stamouli Date: Thu, 7 Apr 2022 16:42:22 +0200 Subject: [PATCH 118/789] Prettier --- modules.json | 2 +- nextflow_schema.json | 26 +++++--------------------- 2 files changed, 6 insertions(+), 22 deletions(-) diff --git a/modules.json b/modules.json index 5abebf6..7fbc65c 100644 --- a/modules.json +++ b/modules.json @@ -47,4 +47,4 @@ } } } -} \ No newline at end of file +} diff --git a/nextflow_schema.json b/nextflow_schema.json index 23eb83b..2b115eb 100644 --- a/nextflow_schema.json +++ b/nextflow_schema.json @@ -10,10 +10,7 @@ "type": "object", "fa_icon": "fas fa-terminal", "description": "Define where the pipeline should find input data and save output data.", - "required": [ - "input", - "outdir" - ], + "required": ["input", "outdir"], "properties": { "input": { "type": "string", @@ -176,14 +173,7 @@ "description": "Method used to save pipeline results to output directory.", "help_text": "The Nextflow `publishDir` option specifies which intermediate files should be saved to the output directory. This option tells the pipeline what method should be used to move these files. See [Nextflow docs](https://www.nextflow.io/docs/latest/process.html#publishdir) for details.", "fa_icon": "fas fa-copy", - "enum": [ - "symlink", - "rellink", - "link", - "copy", - "copyNoFollow", - "move" - ], + "enum": ["symlink", "rellink", "link", "copy", "copyNoFollow", "move"], "hidden": true }, "email_on_fail": { @@ -310,10 +300,7 @@ "shortread_clipmerge_tool": { "type": "string", "default": "fastp", - "enum": [ - "fastp", - "adapterremoval" - ] + "enum": ["fastp", "adapterremoval"] }, "shortread_clipmerge_skipadaptertrim": { "type": "boolean" @@ -358,10 +345,7 @@ "shortread_complexityfilter_prinseqplusplus_mode": { "type": "string", "default": "entropy", - "enum": [ - "entropy", - "dust" - ] + "enum": ["entropy", "dust"] }, "shortread_complexityfilter_prinseqplusplus_dustscore": { "type": "number", @@ -372,4 +356,4 @@ "default": false } } -} \ No newline at end of file +} From 2dfe3b3cc1d3a08aace2f521e84fa2c9820c3d98 Mon Sep 17 00:00:00 2001 From: Sofia Stamouli <91951607+sofstam@users.noreply.github.com> Date: Fri, 8 Apr 2022 10:00:04 +0200 Subject: [PATCH 119/789] Update conf/test.config Co-authored-by: James A. Fellows Yates --- conf/test.config | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/conf/test.config b/conf/test.config index d392306..270ad95 100644 --- a/conf/test.config +++ b/conf/test.config @@ -30,5 +30,5 @@ params { run_centrifuge = true shortread_clipmerge = true longread_clip = false - shortread_complexityfilter = false + shortread_complexityfilter = true } From 48d28cf8d4ac889b80736c86b3ed97eb46554af2 Mon Sep 17 00:00:00 2001 From: Sofia Stamouli <91951607+sofstam@users.noreply.github.com> Date: Fri, 8 Apr 2022 10:00:10 +0200 Subject: [PATCH 120/789] Update conf/test.config Co-authored-by: James A. Fellows Yates --- conf/test.config | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/conf/test.config b/conf/test.config index 270ad95..6e82300 100644 --- a/conf/test.config +++ b/conf/test.config @@ -25,7 +25,7 @@ params { input = 'https://raw.githubusercontent.com/nf-core/test-datasets/taxprofiler/samplesheet.csv' databases = 'https://raw.githubusercontent.com/nf-core/test-datasets/taxprofiler/database.csv' run_kraken2 = true - run_malt = false + run_malt = true run_metaphlan3 = true run_centrifuge = true shortread_clipmerge = true From fd5ebea9a697b7cc2e97cc2c056f131b64848bae Mon Sep 17 00:00:00 2001 From: Sofia Stamouli Date: Fri, 8 Apr 2022 10:57:58 +0200 Subject: [PATCH 121/789] Remove old centrifuge module --- modules.json | 2 +- .../nf-core/modules/centrifuge/main.nf | 63 ---------------- .../nf-core/modules/centrifuge/meta.yml | 73 ------------------- 3 files changed, 1 insertion(+), 137 deletions(-) delete mode 100644 modules/nf-core/modules/nf-core/modules/centrifuge/main.nf delete mode 100644 modules/nf-core/modules/nf-core/modules/centrifuge/meta.yml diff --git a/modules.json b/modules.json index 7fbc65c..5abebf6 100644 --- a/modules.json +++ b/modules.json @@ -47,4 +47,4 @@ } } } -} +} \ No newline at end of file diff --git a/modules/nf-core/modules/nf-core/modules/centrifuge/main.nf b/modules/nf-core/modules/nf-core/modules/centrifuge/main.nf deleted file mode 100644 index 7eb566d..0000000 --- a/modules/nf-core/modules/nf-core/modules/centrifuge/main.nf +++ /dev/null @@ -1,63 +0,0 @@ -process CENTRIFUGE { - tag "$meta.id" - label 'process_high' - - conda (params.enable_conda ? "bioconda::centrifuge=1.0.4_beta" : null) - container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/centrifuge:1.0.4_beta--h9a82719_6' : - 'quay.io/biocontainers/centrifuge:1.0.4_beta--h9a82719_6' }" - - input: - tuple val(meta), path(reads) - path db - val save_unaligned - val save_aligned - val sam_format - - output: - tuple val(meta), path('*report.txt') , emit: report - tuple val(meta), path('*results.txt') , emit: results - tuple val(meta), path('*kreport.txt') , emit: kreport - tuple val(meta), path('*.sam') , optional: true, emit: sam - tuple val(meta), path('*.mapped.fastq{,.1,.2}.gz') , optional: true, emit: fastq_mapped - tuple val(meta), path('*.unmapped.fastq{,.1,.2}.gz') , optional: true, emit: fastq_unmapped - path "versions.yml" , emit: versions - - when: - task.ext.when == null || task.ext.when - - script: - def args = task.ext.args ?: '' - def prefix = task.ext.prefix ?: "${meta.id}" - def paired = meta.single_end ? "-U ${reads}" : "-1 ${reads[0]} -2 ${reads[1]}" - def db_name = db.toString().replace(".tar.gz","") - def unaligned = '' - def aligned = '' - if (meta.single_end) { - unaligned = save_unaligned ? "--un-gz ${prefix}.unmapped.fastq.gz" : '' - aligned = save_aligned ? "--al-gz ${prefix}.mapped.fastq.gz" : '' - } else { - unaligned = save_unaligned ? "--un-conc-gz ${prefix}.unmapped.fastq.gz" : '' - aligned = save_aligned ? "--al-conc-gz ${prefix}.mapped.fastq.gz" : '' - } - def sam_output = sam_format ? "--out-fmt 'sam'" : '' - """ - tar -xf $db - centrifuge \\ - -x $db_name \\ - -p $task.cpus \\ - $paired \\ - --report-file ${prefix}.report.txt \\ - -S ${prefix}.results.txt \\ - $unaligned \\ - $aligned \\ - $sam_output \\ - $args - centrifuge-kreport -x $db_name ${prefix}.results.txt > ${prefix}.kreport.txt - - cat <<-END_VERSIONS > versions.yml - "${task.process}": - centrifuge: \$( centrifuge --version | sed -n 1p | sed 's/^.*centrifuge-class version //') - END_VERSIONS - """ -} diff --git a/modules/nf-core/modules/nf-core/modules/centrifuge/meta.yml b/modules/nf-core/modules/nf-core/modules/centrifuge/meta.yml deleted file mode 100644 index 3adf0e2..0000000 --- a/modules/nf-core/modules/nf-core/modules/centrifuge/meta.yml +++ /dev/null @@ -1,73 +0,0 @@ -name: centrifuge -description: Classifies metagenomic sequence data -keywords: - - classify - - metagenomics - - fastq - - db -tools: - - centrifuge: - description: Centrifuge is a classifier for metagenomic sequences. - homepage: https://ccb.jhu.edu/software/centrifuge/ - documentation: https://ccb.jhu.edu/software/centrifuge/manual.shtml - doi: 10.1101/gr.210641.116 - licence: ["GPL v3"] -input: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - reads: - type: file - description: | - List of input FastQ files of size 1 and 2 for single-end and paired-end data, - respectively. - - db: - type: directory - description: Centrifuge database in .tar.gz format - pattern: "*.tar.gz" - - save_unaligned: - type: value - description: If true unmapped fastq files are saved - - save_aligned: - type: value - description: If true mapped fastq files are saved -output: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - report: - type: file - description: | - File containing a classification summary - pattern: "*.{report.txt}" - - results: - type: file - description: | - File containing classification results - pattern: "*.{results.txt}" - - kreport: - type: file - description: | - File containing kraken-style report from centrifuge - out files. - pattern: "*.{kreport.txt}" - - fastq_unmapped: - type: file - description: Unmapped fastq files - pattern: "*.unmapped.fastq.gz" - - fastq_mapped: - type: file - description: Mapped fastq files - pattern: "*.mapped.fastq.gz" - - versions: - type: file - description: File containing software versions - pattern: "versions.yml" -authors: - - "@sofstam" - - "@jfy133" - - "@sateeshperi" From 63bc597daf008a4de9ed5e34c0b8d682f349a34a Mon Sep 17 00:00:00 2001 From: Sofia Stamouli Date: Fri, 8 Apr 2022 11:01:45 +0200 Subject: [PATCH 122/789] Prettier --- modules.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules.json b/modules.json index 5abebf6..7fbc65c 100644 --- a/modules.json +++ b/modules.json @@ -47,4 +47,4 @@ } } } -} \ No newline at end of file +} From 7b08c49cd6cb6471384a26c1202733cad0fe58ae Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Fri, 8 Apr 2022 11:54:54 +0200 Subject: [PATCH 123/789] Re-add run merging and gonna let GHA see if it works >.> --- .github/workflows/ci.yml | 1 + nextflow.config | 2 ++ workflows/taxprofiler.nf | 25 +++++++++++++++++++++++-- 3 files changed, 26 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 79148f0..7678645 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -39,6 +39,7 @@ jobs: - "--shortread_clipmerge_tool adapterremoval --shortread_clipmerge_mergepairs" - "--shortread_complexityfilter_tool bbduk" - "--shortread_complexityfilter_tool prinseq" + - "--run_merging" steps: - name: Check out pipeline code diff --git a/nextflow.config b/nextflow.config index 19cc823..1c69d36 100644 --- a/nextflow.config +++ b/nextflow.config @@ -76,6 +76,8 @@ params { shortread_complexityfilter_prinseqplusplus_dustscore = 0.5 save_complexityfiltered_reads = false + // run merging + run_merging = false // MALT run_malt = false diff --git a/workflows/taxprofiler.nf b/workflows/taxprofiler.nf index 3b08402..61eda6e 100644 --- a/workflows/taxprofiler.nf +++ b/workflows/taxprofiler.nf @@ -125,13 +125,34 @@ workflow TAXPROFILER { ch_shortreads_filtered = ch_shortreads_preprocessed } + /* + STEP: Run merging + */ + + if ( params.run_merging ) { + ch_reads_for_cat = ch_shortreads_filtered + .mix( ch_longreads_preprocessed ) + .map { + meta, reads -> + def meta_new = meta.clone() + meta_new['run_accession'].remove() + [ meta_new, reads ] + } + .groupTuple() + + ch_reads_runmerged = CAT_FASTQ ( ch_reads_for_cat ) + + } else { + ch_reads_runmerged = ch_shortreads_filtered + .mix( ch_longreads_preprocessed ) + } + /* COMBINE READS WITH POSSIBLE DATABASES */ // e.g. output [DUMP: reads_plus_db] [['id':'2612', 'run_accession':'combined', 'instrument_platform':'ILLUMINA', 'single_end':1], /2612.merged.fastq.gz, ['tool':'malt', 'db_name':'mal95', 'db_params':'"-id 90"'], /malt90] - ch_input_for_profiling = ch_shortreads_filtered - .mix( ch_longreads_preprocessed ) + ch_input_for_profiling = ch_reads_runmerged .combine(DB_CHECK.out.dbs) .branch { malt: it[2]['tool'] == 'malt' From 74c496f6af04e15e1625d7311791004a645b3a21 Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Fri, 8 Apr 2022 11:58:16 +0200 Subject: [PATCH 124/789] Fix CAT_FASTQ output --- workflows/taxprofiler.nf | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/workflows/taxprofiler.nf b/workflows/taxprofiler.nf index 61eda6e..2d0c17d 100644 --- a/workflows/taxprofiler.nf +++ b/workflows/taxprofiler.nf @@ -140,8 +140,7 @@ workflow TAXPROFILER { } .groupTuple() - ch_reads_runmerged = CAT_FASTQ ( ch_reads_for_cat ) - + ch_reads_runmerged = CAT_FASTQ ( ch_reads_for_cat ).reads } else { ch_reads_runmerged = ch_shortreads_filtered .mix( ch_longreads_preprocessed ) @@ -247,6 +246,10 @@ workflow TAXPROFILER { ch_versions = ch_versions.mix( SHORTREAD_COMPLEXITYFILTERING.out.versions ) } + if (params.run_merging){ + ch_versions = ch_versions.mix(CAT_FASTQ.out.versions) + } + if (params.run_kraken2) { ch_multiqc_files = ch_multiqc_files.mix( KRAKEN2_KRAKEN2.out.txt.collect{it[1]}.ifEmpty([]) ) ch_versions = ch_versions.mix( KRAKEN2_KRAKEN2.out.versions.first() ) From 4d726a87e98f56bf1a4e0d52259d9e83f89539ce Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Fri, 8 Apr 2022 12:01:07 +0200 Subject: [PATCH 125/789] Fix metadata removal --- workflows/taxprofiler.nf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/workflows/taxprofiler.nf b/workflows/taxprofiler.nf index 2d0c17d..33d9725 100644 --- a/workflows/taxprofiler.nf +++ b/workflows/taxprofiler.nf @@ -135,7 +135,7 @@ workflow TAXPROFILER { .map { meta, reads -> def meta_new = meta.clone() - meta_new['run_accession'].remove() + meta_new.remove('run_accession') [ meta_new, reads ] } .groupTuple() From d130a72d74899c3fd85db3c1c751b7b6848fd031 Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Fri, 8 Apr 2022 13:09:23 +0200 Subject: [PATCH 126/789] Get this working --- .github/workflows/ci.yml | 1 + conf/modules.config | 6 +++--- subworkflows/local/shortread_fastp.nf | 4 ++-- workflows/taxprofiler.nf | 18 ++++++++++++++++-- 4 files changed, 22 insertions(+), 7 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 7678645..53423cb 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -40,6 +40,7 @@ jobs: - "--shortread_complexityfilter_tool bbduk" - "--shortread_complexityfilter_tool prinseq" - "--run_merging" + - "--run_merging --shortread_clipmerge_mergepairs" steps: - name: Check out pipeline code diff --git a/conf/modules.config b/conf/modules.config index b59850f..7602e3f 100644 --- a/conf/modules.config +++ b/conf/modules.config @@ -163,7 +163,7 @@ process { withName: MALT_RUN { ext.args = { "${meta.db_params}" } - ext.prefix = { "${meta.id}-${meta.run_accession}-${meta.db_name}" } + ext.prefix = if params.run_merging : { "${meta.id}-${meta.db_name}" } : { "${meta.id}-${meta.run_accession}-${meta.db_name}" } publishDir = [ path: { "${params.outdir}/malt/${meta.db_name}" }, mode: params.publish_dir_mode, @@ -173,7 +173,7 @@ process { withName: KRAKEN2_KRAKEN2 { ext.args = { "${meta.db_params}" } - ext.prefix = { "${meta.id}-${meta.run_accession}-${meta.db_name}" } + ext.prefix = if params.run_merging : { "${meta.id}-${meta.db_name}" } : { "${meta.id}-${meta.run_accession}-${meta.db_name}" } publishDir = [ path: { "${params.outdir}/kraken2/${meta.db_name}" }, mode: params.publish_dir_mode, @@ -183,7 +183,7 @@ process { withName: METAPHLAN3 { publishDir = [ - path: { "${params.outdir}/metaphlan3/${meta.db_name}" }, + ext.prefix = if params.run_merging : { "${meta.id}-${meta.db_name}" } : { "${meta.id}-${meta.run_accession}-${meta.db_name}" } mode: params.publish_dir_mode, pattern: '*.{biom,txt}' ] diff --git a/subworkflows/local/shortread_fastp.nf b/subworkflows/local/shortread_fastp.nf index 18baf17..04057b1 100644 --- a/subworkflows/local/shortread_fastp.nf +++ b/subworkflows/local/shortread_fastp.nf @@ -28,8 +28,8 @@ workflow SHORTREAD_FASTP { .map { meta, reads -> def meta_new = meta.clone() - meta_new['single_end'] = 1 - [ meta_new, reads ] + meta_new['single_end'] = true + [ meta_new, reads.flatten() ] } ch_fastp_reads_prepped = ch_fastp_reads_prepped_pe.mix( FASTP_SINGLE.out.reads ) diff --git a/workflows/taxprofiler.nf b/workflows/taxprofiler.nf index 33d9725..e04d4d6 100644 --- a/workflows/taxprofiler.nf +++ b/workflows/taxprofiler.nf @@ -130,7 +130,8 @@ workflow TAXPROFILER { */ if ( params.run_merging ) { - ch_reads_for_cat = ch_shortreads_filtered + + ch_reads_for_cat_branch = ch_shortreads_filtered .mix( ch_longreads_preprocessed ) .map { meta, reads -> @@ -139,8 +140,21 @@ workflow TAXPROFILER { [ meta_new, reads ] } .groupTuple() + .map { + meta, reads -> + [ meta, reads.flatten() ] + } + .branch { + // we can't concate files if there is not a second run, we branch + // here to separate them out, and mix after + cat: ( it[0]['single_end'] && it[1].size() > 1 ) || ( !it[0]['single_end'] && it[1].size() > 2 ) + skip: true + } + + ch_reads_for_cat_branch.cat.dump(tag: "for_catting") + + ch_reads_runmerged = CAT_FASTQ ( ch_reads_for_cat_branch.cat ).reads.mix( ch_reads_for_cat_branch.skip ) - ch_reads_runmerged = CAT_FASTQ ( ch_reads_for_cat ).reads } else { ch_reads_runmerged = ch_shortreads_filtered .mix( ch_longreads_preprocessed ) From ca011ccc5b363ea9d6c1eaf44713a9c09e471f39 Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Fri, 8 Apr 2022 13:28:37 +0200 Subject: [PATCH 127/789] Fix cat_fastq naming logic? --- conf/modules.config | 19 +++++++++++++++---- nextflow.config | 1 + nextflow_schema.json | 38 +++++++++++++++++++++++++++++--------- workflows/taxprofiler.nf | 4 ---- 4 files changed, 45 insertions(+), 17 deletions(-) diff --git a/conf/modules.config b/conf/modules.config index 7602e3f..97e9510 100644 --- a/conf/modules.config +++ b/conf/modules.config @@ -161,9 +161,19 @@ process { ] } + withName: CAT_FASTQ { + ext.prefix = { "${meta.id}-${meta.run_accession}" } + publishDir = [ + path: { "${params.outdir}/run_merging/" }, + mode: params.publish_dir_mode, + pattern: '*.fastq.gz', + enabled: params.save_runmerged_reads + ] + } + withName: MALT_RUN { ext.args = { "${meta.db_params}" } - ext.prefix = if params.run_merging : { "${meta.id}-${meta.db_name}" } : { "${meta.id}-${meta.run_accession}-${meta.db_name}" } + ext.prefix = params.run_merging ? { "${meta.id}-${meta.db_name}" } : { "${meta.id}-${meta.run_accession}-${meta.db_name}" } publishDir = [ path: { "${params.outdir}/malt/${meta.db_name}" }, mode: params.publish_dir_mode, @@ -173,7 +183,7 @@ process { withName: KRAKEN2_KRAKEN2 { ext.args = { "${meta.db_params}" } - ext.prefix = if params.run_merging : { "${meta.id}-${meta.db_name}" } : { "${meta.id}-${meta.run_accession}-${meta.db_name}" } + ext.prefix = params.run_merging ? { "${meta.id}-${meta.db_name}" } : { "${meta.id}-${meta.run_accession}-${meta.db_name}" } publishDir = [ path: { "${params.outdir}/kraken2/${meta.db_name}" }, mode: params.publish_dir_mode, @@ -182,12 +192,13 @@ process { } withName: METAPHLAN3 { + ext.args = { "${meta.db_params}" } + ext.prefix = params.run_merging ? { "${meta.id}-${meta.db_name}" } : { "${meta.id}-${meta.run_accession}-${meta.db_name}" } publishDir = [ - ext.prefix = if params.run_merging : { "${meta.id}-${meta.db_name}" } : { "${meta.id}-${meta.run_accession}-${meta.db_name}" } + path: { "${params.outdir}/metaphlan3/${meta.db_name}" }, mode: params.publish_dir_mode, pattern: '*.{biom,txt}' ] - ext.prefix = { "${meta.id}-${meta.run_accession}-${meta.db_name}" } } withName: CUSTOM_DUMPSOFTWAREVERSIONS { diff --git a/nextflow.config b/nextflow.config index 1c69d36..d969ed9 100644 --- a/nextflow.config +++ b/nextflow.config @@ -78,6 +78,7 @@ params { // run merging run_merging = false + save_runmerged_reads = false // MALT run_malt = false diff --git a/nextflow_schema.json b/nextflow_schema.json index 6858409..0b4b4fb 100644 --- a/nextflow_schema.json +++ b/nextflow_schema.json @@ -10,7 +10,10 @@ "type": "object", "fa_icon": "fas fa-terminal", "description": "Define where the pipeline should find input data and save output data.", - "required": ["input", "outdir"], + "required": [ + "input", + "outdir" + ], "properties": { "input": { "type": "string", @@ -173,7 +176,14 @@ "description": "Method used to save pipeline results to output directory.", "help_text": "The Nextflow `publishDir` option specifies which intermediate files should be saved to the output directory. This option tells the pipeline what method should be used to move these files. See [Nextflow docs](https://www.nextflow.io/docs/latest/process.html#publishdir) for details.", "fa_icon": "fas fa-copy", - "enum": ["symlink", "rellink", "link", "copy", "copyNoFollow", "move"], + "enum": [ + "symlink", + "rellink", + "link", + "copy", + "copyNoFollow", + "move" + ], "hidden": true }, "email_on_fail": { @@ -288,7 +298,10 @@ "shortread_clipmerge_tool": { "type": "string", "default": "fastp", - "enum": ["fastp", "adapterremoval"] + "enum": [ + "fastp", + "adapterremoval" + ] }, "shortread_clipmerge_skipadaptertrim": { "type": "boolean" @@ -309,8 +322,7 @@ "default": 15 }, "save_preprocessed_reads": { - "type": "boolean", - "default": false + "type": "boolean" }, "shortread_complexityfilter_tool": { "type": "string", @@ -333,15 +345,23 @@ "shortread_complexityfilter_prinseqplusplus_mode": { "type": "string", "default": "entropy", - "enum": ["entropy", "dust"] + "enum": [ + "entropy", + "dust" + ] }, "shortread_complexityfilter_prinseqplusplus_dustscore": { "type": "number", "default": 0.5 }, "save_complexityfiltered_reads": { - "type": "boolean", - "default": false + "type": "boolean" + }, + "run_merging": { + "type": "boolean" + }, + "save_runmerged_reads": { + "type": "boolean" } } -} +} \ No newline at end of file diff --git a/workflows/taxprofiler.nf b/workflows/taxprofiler.nf index e04d4d6..bdb93ab 100644 --- a/workflows/taxprofiler.nf +++ b/workflows/taxprofiler.nf @@ -140,10 +140,6 @@ workflow TAXPROFILER { [ meta_new, reads ] } .groupTuple() - .map { - meta, reads -> - [ meta, reads.flatten() ] - } .branch { // we can't concate files if there is not a second run, we branch // here to separate them out, and mix after From a634814d848a68252d81b231e34942f5fa616c83 Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Fri, 8 Apr 2022 13:34:00 +0200 Subject: [PATCH 128/789] Formatting and fix fastp output --- nextflow_schema.json | 26 ++++--------------- .../local/shortread_adapterremoval.nf | 2 +- 2 files changed, 6 insertions(+), 22 deletions(-) diff --git a/nextflow_schema.json b/nextflow_schema.json index 0b4b4fb..64836df 100644 --- a/nextflow_schema.json +++ b/nextflow_schema.json @@ -10,10 +10,7 @@ "type": "object", "fa_icon": "fas fa-terminal", "description": "Define where the pipeline should find input data and save output data.", - "required": [ - "input", - "outdir" - ], + "required": ["input", "outdir"], "properties": { "input": { "type": "string", @@ -176,14 +173,7 @@ "description": "Method used to save pipeline results to output directory.", "help_text": "The Nextflow `publishDir` option specifies which intermediate files should be saved to the output directory. This option tells the pipeline what method should be used to move these files. See [Nextflow docs](https://www.nextflow.io/docs/latest/process.html#publishdir) for details.", "fa_icon": "fas fa-copy", - "enum": [ - "symlink", - "rellink", - "link", - "copy", - "copyNoFollow", - "move" - ], + "enum": ["symlink", "rellink", "link", "copy", "copyNoFollow", "move"], "hidden": true }, "email_on_fail": { @@ -298,10 +288,7 @@ "shortread_clipmerge_tool": { "type": "string", "default": "fastp", - "enum": [ - "fastp", - "adapterremoval" - ] + "enum": ["fastp", "adapterremoval"] }, "shortread_clipmerge_skipadaptertrim": { "type": "boolean" @@ -345,10 +332,7 @@ "shortread_complexityfilter_prinseqplusplus_mode": { "type": "string", "default": "entropy", - "enum": [ - "entropy", - "dust" - ] + "enum": ["entropy", "dust"] }, "shortread_complexityfilter_prinseqplusplus_dustscore": { "type": "number", @@ -364,4 +348,4 @@ "type": "boolean" } } -} \ No newline at end of file +} diff --git a/subworkflows/local/shortread_adapterremoval.nf b/subworkflows/local/shortread_adapterremoval.nf index b573be9..a7948e7 100644 --- a/subworkflows/local/shortread_adapterremoval.nf +++ b/subworkflows/local/shortread_adapterremoval.nf @@ -67,7 +67,7 @@ workflow SHORTREAD_ADAPTERREMOVAL { [meta_new, reads] } .groupTuple() - .map { meta, fastq -> [meta, fastq.flatten()] } + .map { meta, fastq -> [meta, [ fastq ].flatten()] } CAT_FASTQ(ch_concat_fastq) From 6c14f2b230a6c6df99e89c44ed8904cb0a5a7b59 Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Fri, 8 Apr 2022 13:44:52 +0200 Subject: [PATCH 129/789] Remove the flattening? --- subworkflows/local/shortread_adapterremoval.nf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/subworkflows/local/shortread_adapterremoval.nf b/subworkflows/local/shortread_adapterremoval.nf index a7948e7..735d3b8 100644 --- a/subworkflows/local/shortread_adapterremoval.nf +++ b/subworkflows/local/shortread_adapterremoval.nf @@ -67,7 +67,7 @@ workflow SHORTREAD_ADAPTERREMOVAL { [meta_new, reads] } .groupTuple() - .map { meta, fastq -> [meta, [ fastq ].flatten()] } + .map { meta, fastq -> [meta, fastq] } CAT_FASTQ(ch_concat_fastq) From 35cb6e042acf3fbe34c9664bebb9c27ef0d96179 Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Fri, 8 Apr 2022 13:46:12 +0200 Subject: [PATCH 130/789] Flatten the right thing --- subworkflows/local/shortread_adapterremoval.nf | 2 +- subworkflows/local/shortread_fastp.nf | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/subworkflows/local/shortread_adapterremoval.nf b/subworkflows/local/shortread_adapterremoval.nf index 735d3b8..b573be9 100644 --- a/subworkflows/local/shortread_adapterremoval.nf +++ b/subworkflows/local/shortread_adapterremoval.nf @@ -67,7 +67,7 @@ workflow SHORTREAD_ADAPTERREMOVAL { [meta_new, reads] } .groupTuple() - .map { meta, fastq -> [meta, fastq] } + .map { meta, fastq -> [meta, fastq.flatten()] } CAT_FASTQ(ch_concat_fastq) diff --git a/subworkflows/local/shortread_fastp.nf b/subworkflows/local/shortread_fastp.nf index 04057b1..4626691 100644 --- a/subworkflows/local/shortread_fastp.nf +++ b/subworkflows/local/shortread_fastp.nf @@ -29,7 +29,7 @@ workflow SHORTREAD_FASTP { meta, reads -> def meta_new = meta.clone() meta_new['single_end'] = true - [ meta_new, reads.flatten() ] + [ meta_new, [ reads ].flatten() ] } ch_fastp_reads_prepped = ch_fastp_reads_prepped_pe.mix( FASTP_SINGLE.out.reads ) From 8839fe22b8856fb1d69e11e2e1e0a4367cb97dc3 Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Fri, 8 Apr 2022 20:02:22 +0200 Subject: [PATCH 131/789] Fix output tuple for reads --- workflows/taxprofiler.nf | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/workflows/taxprofiler.nf b/workflows/taxprofiler.nf index bdb93ab..7d5f60f 100644 --- a/workflows/taxprofiler.nf +++ b/workflows/taxprofiler.nf @@ -149,7 +149,15 @@ workflow TAXPROFILER { ch_reads_for_cat_branch.cat.dump(tag: "for_catting") - ch_reads_runmerged = CAT_FASTQ ( ch_reads_for_cat_branch.cat ).reads.mix( ch_reads_for_cat_branch.skip ) + ch_reads_runmerged = CAT_FASTQ ( ch_reads_for_cat_branch.cat ).reads + .mix( ch_reads_for_cat_branch.skip ) + .map { + meta, reads -> + + [ meta, [ reads ].flatten() ] + } + + ch_reads_runmerged.dump(tag: "ch_reads_runmerged" ) } else { ch_reads_runmerged = ch_shortreads_filtered From afb66e445fcb2f9c60f4152e1184f5f8600a843c Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Fri, 8 Apr 2022 21:36:59 +0200 Subject: [PATCH 132/789] Append pairment to ID at profiling to prevent multiqc-level filename crash --- workflows/taxprofiler.nf | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/workflows/taxprofiler.nf b/workflows/taxprofiler.nf index 7d5f60f..1da812d 100644 --- a/workflows/taxprofiler.nf +++ b/workflows/taxprofiler.nf @@ -147,8 +147,6 @@ workflow TAXPROFILER { skip: true } - ch_reads_for_cat_branch.cat.dump(tag: "for_catting") - ch_reads_runmerged = CAT_FASTQ ( ch_reads_for_cat_branch.cat ).reads .mix( ch_reads_for_cat_branch.skip ) .map { @@ -157,8 +155,6 @@ workflow TAXPROFILER { [ meta, [ reads ].flatten() ] } - ch_reads_runmerged.dump(tag: "ch_reads_runmerged" ) - } else { ch_reads_runmerged = ch_shortreads_filtered .mix( ch_longreads_preprocessed ) @@ -168,8 +164,15 @@ workflow TAXPROFILER { COMBINE READS WITH POSSIBLE DATABASES */ - // e.g. output [DUMP: reads_plus_db] [['id':'2612', 'run_accession':'combined', 'instrument_platform':'ILLUMINA', 'single_end':1], /2612.merged.fastq.gz, ['tool':'malt', 'db_name':'mal95', 'db_params':'"-id 90"'], /malt90] + // e.g. output [DUMP: reads_plus_db] [['id':'2612', 'run_accession':'combined', 'instrument_platform':'ILLUMINA', 'single_end':1], [ /2612.merged.fastq.gz ], ['tool':'malt', 'db_name':'mal95', 'db_params':'"-id 90"'], /malt90] ch_input_for_profiling = ch_reads_runmerged + .map { + meta, reads -> + def meta_new = meta.clone() + pairtype = meta_new['single_end'] ? '_se' : '_pe' + meta_new['id'] = meta_new['id'] + pairtype + [meta_new, reads] + } .combine(DB_CHECK.out.dbs) .branch { malt: it[2]['tool'] == 'malt' From ecf0eea4f99f0601124661557b41c5092d507ca6 Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Sun, 10 Apr 2022 06:43:30 +0200 Subject: [PATCH 133/789] Move profiling to subworkflow and standardise outputs --- conf/modules.config | 20 +++--- subworkflows/local/profiling.nf | 120 ++++++++++++++++++++++++++++++++ workflows/taxprofiler.nf | 97 ++------------------------ 3 files changed, 134 insertions(+), 103 deletions(-) create mode 100644 subworkflows/local/profiling.nf diff --git a/conf/modules.config b/conf/modules.config index de41e69..531bd5a 100644 --- a/conf/modules.config +++ b/conf/modules.config @@ -167,7 +167,7 @@ process { publishDir = [ path: { "${params.outdir}/malt/${meta.db_name}" }, mode: params.publish_dir_mode, - pattern: '*.{rma6,tab,text,sam,log}' + pattern: '*.{log}' ] } @@ -177,7 +177,7 @@ process { publishDir = [ path: { "${params.outdir}/kraken2/${meta.db_name}" }, mode: params.publish_dir_mode, - pattern: '*.{fastq.gz,txt}' + pattern: '*.{txt}' ] } @@ -190,22 +190,22 @@ process { ext.prefix = { "${meta.id}-${meta.run_accession}-${meta.db_name}" } } - withName: CUSTOM_DUMPSOFTWAREVERSIONS { + withName: CENTRIFUGE_CENTRIFUGE { publishDir = [ - path: { "${params.outdir}/pipeline_info" }, + path: { "${params.outdir}/centrifuge/${meta.db_name}" }, mode: params.publish_dir_mode, - pattern: '*_versions.yml' + pattern: '*.txt' ] + ext.args = { "${meta.db_params}" } + ext.prefix = { "${meta.id}-${meta.run_accession}-${meta.db_name}" } } - withName: CENTRIFUGE_CENTRIFUGE { + withName: CUSTOM_DUMPSOFTWAREVERSIONS { publishDir = [ - path: { "${params.outdir}/centrifuge/${meta.db_name}" }, + path: { "${params.outdir}/pipeline_info" }, mode: params.publish_dir_mode, - pattern: '*.{fastq.gz,txt}' + pattern: '*_versions.yml' ] - ext.args = { "${meta.db_params}" } - ext.prefix = { "${meta.id}-${meta.run_accession}-${meta.db_name}" } } } diff --git a/subworkflows/local/profiling.nf b/subworkflows/local/profiling.nf new file mode 100644 index 0000000..ac48d77 --- /dev/null +++ b/subworkflows/local/profiling.nf @@ -0,0 +1,120 @@ +// +// Run profiling +// + +include { MALT_RUN } from '../../modules/nf-core/modules/malt/run/main' +include { KRAKEN2_KRAKEN2 } from '../../modules/nf-core/modules/kraken2/kraken2/main' +include { CENTRIFUGE_CENTRIFUGE } from '../../modules/nf-core/modules/centrifuge/centrifuge/main' +include { METAPHLAN3 } from '../../modules/nf-core/modules/metaphlan3/main' + +workflow PROFILING { + take: + shortreads // [ [ meta ], [ reads ] ] + longreads // [ [ meta ], [ reads ] ] + databases // [ [ meta ], path ] + + main: + ch_versions = Channel.empty() + ch_multiqc_files = Channel.empty() + +/* + COMBINE READS WITH POSSIBLE DATABASES + */ + + // e.g. output [DUMP: reads_plus_db] [['id':'2612', 'run_accession':'combined', 'instrument_platform':'ILLUMINA', 'single_end':1], /2612.merged.fastq.gz, ['tool':'malt', 'db_name':'mal95', 'db_params':'"-id 90"'], /malt90] + ch_input_for_profiling = shortreads + .mix( longreads ) + .combine(databases) + .branch { + malt: it[2]['tool'] == 'malt' + kraken2: it[2]['tool'] == 'kraken2' + metaphlan3: it[2]['tool'] == 'metaphlan3' + centrifuge: it[2]['tool'] == 'centrifuge' + unknown: true + } + + /* + PREPARE PROFILER INPUT CHANNELS + */ + + // Each tool as a slightly different input structure and generally separate + // input channels for reads vs databases. We restructure the channel tuple + // for each tool and make liberal use of multiMap to keep reads/databases + // channel element order in sync with each other + + // MALT: We groupTuple to have all samples in one channel for MALT as database + // loading takes a long time, so we only want to run it once per database + // TODO document somewhere we only accept illumina short reads for MALT? + ch_input_for_malt = ch_input_for_profiling.malt + .filter { it[0]['instrument_platform'] == 'ILLUMINA' } + .map { + it -> + def temp_meta = [ id: it[2]['db_name']] + it[2] + def db = it[3] + [ temp_meta, it[1], db ] + } + .groupTuple(by: [0,2]) + .multiMap { + it -> + reads: [ it[0], it[1].flatten() ] + db: it[2] + } + + // All subsequent tools can easily run on a per-sample basis + + ch_input_for_kraken2 = ch_input_for_profiling.kraken2 + .multiMap { + it -> + reads: [ it[0] + it[2], it[1] ] + db: it[3] + } + + ch_input_for_centrifuge = ch_input_for_profiling.centrifuge + .dump(tag: "input for centrifuge") + .multiMap { + it -> + reads: [ it[0] + it[2], it[1] ] + db: it[3] + } + + ch_input_for_metaphlan3 = ch_input_for_profiling.metaphlan3 + .multiMap { + it -> + reads: [it[0] + it[2], it[1]] + db: it[3] + } + + /* + RUN PROFILING + */ + + if ( params.run_malt ) { + MALT_RUN ( ch_input_for_malt.reads, params.malt_mode, ch_input_for_malt.db ) + ch_multiqc_files = ch_multiqc_files.mix( MALT_RUN.out.log.collect{it[1]}.ifEmpty([]) ) + ch_versions = ch_versions.mix( MALT_RUN.out.versions.first() ) + } + + if ( params.run_kraken2 ) { + KRAKEN2_KRAKEN2 ( ch_input_for_kraken2.reads, ch_input_for_kraken2.db ) + ch_multiqc_files = ch_multiqc_files.mix( KRAKEN2_KRAKEN2.out.txt.collect{it[1]}.ifEmpty([]) ) + ch_versions = ch_versions.mix( KRAKEN2_KRAKEN2.out.versions.first() ) + } + + if ( params.run_centrifuge ) { + CENTRIFUGE_CENTRIFUGE ( ch_input_for_centrifuge.reads, ch_input_for_centrifuge.db, params.centrifuge_save_unaligned, params.centrifuge_save_aligned, params.centrifuge_sam_format ) + ch_versions = ch_versions.mix( CENTRIFUGE_CENTRIFUGE.out.versions.first() ) + } + + if ( params.run_metaphlan3 ) { + METAPHLAN3 ( ch_input_for_metaphlan3.reads, ch_input_for_metaphlan3.db ) + ch_versions = ch_versions.mix( METAPHLAN3.out.versions.first() ) + } + + + emit: + // TODO work out if there is enough standardisation of output to export as one? + //output = ch_filtered_reads // channel: [ val(meta), [ reads ] ] + versions = ch_versions // channel: [ versions.yml ] + mqc = ch_multiqc_files +} + diff --git a/workflows/taxprofiler.nf b/workflows/taxprofiler.nf index 6b89c66..38afdda 100644 --- a/workflows/taxprofiler.nf +++ b/workflows/taxprofiler.nf @@ -44,6 +44,7 @@ include { DB_CHECK } from '../subworkflows/local/db_check' include { SHORTREAD_PREPROCESSING } from '../subworkflows/local/shortread_preprocessing' include { LONGREAD_PREPROCESSING } from '../subworkflows/local/longread_preprocessing' include { SHORTREAD_COMPLEXITYFILTERING } from '../subworkflows/local/shortread_complexityfiltering' +include { PROFILING } from '../subworkflows/local/profiling' /* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -59,10 +60,6 @@ include { MULTIQC } from '../modules/nf-core/modules/multiqc include { CUSTOM_DUMPSOFTWAREVERSIONS } from '../modules/nf-core/modules/custom/dumpsoftwareversions/main' include { CAT_FASTQ } from '../modules/nf-core/modules/cat/fastq/main' -include { MALT_RUN } from '../modules/nf-core/modules/malt/run/main' -include { KRAKEN2_KRAKEN2 } from '../modules/nf-core/modules/kraken2/kraken2/main' -include { CENTRIFUGE_CENTRIFUGE } from '../modules/nf-core/modules/centrifuge/centrifuge/main' -include { METAPHLAN3 } from '../modules/nf-core/modules/metaphlan3/main' /* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -127,88 +124,10 @@ workflow TAXPROFILER { } /* - COMBINE READS WITH POSSIBLE DATABASES + SUBWORKFLOW: PROFILING */ - // e.g. output [DUMP: reads_plus_db] [['id':'2612', 'run_accession':'combined', 'instrument_platform':'ILLUMINA', 'single_end':1], /2612.merged.fastq.gz, ['tool':'malt', 'db_name':'mal95', 'db_params':'"-id 90"'], /malt90] - ch_input_for_profiling = ch_shortreads_filtered - .mix( ch_longreads_preprocessed ) - .combine(DB_CHECK.out.dbs) - .branch { - malt: it[2]['tool'] == 'malt' - kraken2: it[2]['tool'] == 'kraken2' - metaphlan3: it[2]['tool'] == 'metaphlan3' - centrifuge: it[2]['tool'] == 'centrifuge' - unknown: true - } - - /* - PREPARE PROFILER INPUT CHANNELS - */ - - // We groupTuple to have all samples in one channel for MALT as database - // loading takes a long time, so we only want to run it once per database - // TODO document somewhere we only accept illumina short reads for MALT? - ch_input_for_malt = ch_input_for_profiling.malt - .filter { it[0]['instrument_platform'] == 'ILLUMINA' } - .map { - it -> - def temp_meta = [ id: it[2]['db_name']] + it[2] - def db = it[3] - [ temp_meta, it[1], db ] - } - .groupTuple(by: [0,2]) - .multiMap { - it -> - reads: [ it[0], it[1].flatten() ] - db: it[2] - } - - // We can run Kraken2 one-by-one sample-wise - ch_input_for_kraken2 = ch_input_for_profiling.kraken2 - .multiMap { - it -> - reads: [ it[0] + it[2], it[1] ] - db: it[3] - } - - // We can run centrifuge one-by-one sample-wise - ch_input_for_centrifuge = ch_input_for_profiling.centrifuge - .dump(tag: "input for centrifuge") - .multiMap { - it -> - reads: [ it[0] + it[2], it[1] ] - db: it[3] - } - - // - // RUN PROFILING - // - ch_input_for_metaphlan3 = ch_input_for_profiling.metaphlan3 - .multiMap { - it -> - reads: [it[0] + it[2], it[1]] - db: it[3] - } - - /* - MODULE: RUN PROFILING - */ - if ( params.run_malt ) { - MALT_RUN ( ch_input_for_malt.reads, params.malt_mode, ch_input_for_malt.db ) - } - - if ( params.run_kraken2 ) { - KRAKEN2_KRAKEN2 ( ch_input_for_kraken2.reads, ch_input_for_kraken2.db ) - } - - if ( params.run_centrifuge ) { - CENTRIFUGE_CENTRIFUGE ( ch_input_for_centrifuge.reads, ch_input_for_centrifuge.db, params.centrifuge_save_unaligned, params.centrifuge_save_aligned, params.centrifuge_sam_format ) - } - - if ( params.run_metaphlan3 ) { - METAPHLAN3 ( ch_input_for_metaphlan3.reads, ch_input_for_metaphlan3.db ) - } + PROFILING ( ch_shortreads_filtered, ch_longreads_preprocessed, DB_CHECK.out.dbs ) /* MODULE: MultiQC @@ -244,17 +163,9 @@ workflow TAXPROFILER { ch_versions = ch_versions.mix( SHORTREAD_COMPLEXITYFILTERING.out.versions ) } - if (params.run_kraken2) { - ch_multiqc_files = ch_multiqc_files.mix( KRAKEN2_KRAKEN2.out.txt.collect{it[1]}.ifEmpty([]) ) - ch_versions = ch_versions.mix( KRAKEN2_KRAKEN2.out.versions.first() ) - } + ch_multiqc_files = ch_multiqc_files.mix( PROFILING.out.mqc ) - if (params.run_malt) { - ch_multiqc_files = ch_multiqc_files.mix( MALT_RUN.out.log.collect{it[1]}.ifEmpty([]) ) - ch_versions = ch_versions.mix( MALT_RUN.out.versions.first() ) - } - // TODO Versions for Karken/MALT not report? // TODO create multiQC module for metaphlan MULTIQC ( ch_multiqc_files.collect() From 082093f3dee43655b4911e5d81ba0eb0c693454c Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Sun, 10 Apr 2022 06:44:10 +0200 Subject: [PATCH 134/789] Prettier --- conf/modules.config | 8 ++++++++ workflows/taxprofiler.nf | 1 - 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/conf/modules.config b/conf/modules.config index 531bd5a..2f5710e 100644 --- a/conf/modules.config +++ b/conf/modules.config @@ -208,4 +208,12 @@ process { ] } + withName: MULTIQC { + publishDir = [ + path: { "${params.outdir}/${task.process.tokenize(':')[-1].tokenize('_')[0].toLowerCase()}" }, + mode: params.publish_dir_mode, + saveAs: { filename -> filename.equals('versions.yml') ? null : filename } + ] + } + } diff --git a/workflows/taxprofiler.nf b/workflows/taxprofiler.nf index 38afdda..4afdd6c 100644 --- a/workflows/taxprofiler.nf +++ b/workflows/taxprofiler.nf @@ -165,7 +165,6 @@ workflow TAXPROFILER { ch_multiqc_files = ch_multiqc_files.mix( PROFILING.out.mqc ) - // TODO create multiQC module for metaphlan MULTIQC ( ch_multiqc_files.collect() From 80c08af11b28f89289bc0739fbd13da661b45644 Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Sun, 10 Apr 2022 06:48:25 +0200 Subject: [PATCH 135/789] Mix in profiling versions into mainline versons channel --- workflows/taxprofiler.nf | 1 + 1 file changed, 1 insertion(+) diff --git a/workflows/taxprofiler.nf b/workflows/taxprofiler.nf index 4afdd6c..237f1ea 100644 --- a/workflows/taxprofiler.nf +++ b/workflows/taxprofiler.nf @@ -128,6 +128,7 @@ workflow TAXPROFILER { */ PROFILING ( ch_shortreads_filtered, ch_longreads_preprocessed, DB_CHECK.out.dbs ) + ch_versions = ch_versions.mix( PROFILING.out.versions ) /* MODULE: MultiQC From 030099c559a5eeeee2a65c523a9e946748327b45 Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Sun, 10 Apr 2022 07:26:20 +0200 Subject: [PATCH 136/789] A bit of clean up --- subworkflows/local/profiling.nf | 1 - subworkflows/local/shortread_fastp.nf | 2 +- workflows/taxprofiler.nf | 2 ++ 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/subworkflows/local/profiling.nf b/subworkflows/local/profiling.nf index ac48d77..c74c583 100644 --- a/subworkflows/local/profiling.nf +++ b/subworkflows/local/profiling.nf @@ -70,7 +70,6 @@ workflow PROFILING { } ch_input_for_centrifuge = ch_input_for_profiling.centrifuge - .dump(tag: "input for centrifuge") .multiMap { it -> reads: [ it[0] + it[2], it[1] ] diff --git a/subworkflows/local/shortread_fastp.nf b/subworkflows/local/shortread_fastp.nf index 18baf17..9fb9425 100644 --- a/subworkflows/local/shortread_fastp.nf +++ b/subworkflows/local/shortread_fastp.nf @@ -10,7 +10,7 @@ workflow SHORTREAD_FASTP { reads // [[meta], [reads]] main: - ch_versions = Channel.empty() + ch_versions = Channel.empty() ch_multiqc_files = Channel.empty() ch_input_for_fastp = reads diff --git a/workflows/taxprofiler.nf b/workflows/taxprofiler.nf index 237f1ea..4b9f927 100644 --- a/workflows/taxprofiler.nf +++ b/workflows/taxprofiler.nf @@ -85,6 +85,7 @@ workflow TAXPROFILER { DB_CHECK ( ch_databases ) + ch_versions = ch_versions.mix(DB_CHECK.out.versions) /* MODULE: Run FastQC @@ -101,6 +102,7 @@ workflow TAXPROFILER { SUBWORKFLOW: PERFORM PREPROCESSING */ if ( params.shortread_clipmerge ) { + ch_shortreads_preprocessed = SHORTREAD_PREPROCESSING ( INPUT_CHECK.out.fastq ).reads } else { ch_shortreads_preprocessed = INPUT_CHECK.out.fastq From b892fd0be5b754cc361ab6d9c71f15b732353057 Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Sun, 10 Apr 2022 22:17:44 +0200 Subject: [PATCH 137/789] Initial attempt at docs --- README.md | 32 ++++++++-------- assets/samplesheet.csv | 9 +++-- docs/usage.md | 84 +++++++++++++++++++++++++++++------------- 3 files changed, 80 insertions(+), 45 deletions(-) diff --git a/README.md b/README.md index e976f73..88f643b 100644 --- a/README.md +++ b/README.md @@ -18,7 +18,7 @@ -**nf-core/taxprofiler** is a bioinformatics best-practice analysis pipeline for taxonomic profiling of shotgun metagenomic data. It allows for in-parallel profiling against multiple profiling tools and databases and produces standardised output tables. +**nf-core/taxprofiler** is a bioinformatics best-practice analysis pipeline for taxonomic profiling of shotgun metagenomic data. It allows for in-parallel profiling with multiple profiling tools against multiple databases, produces standardised output tables. The pipeline is built using [Nextflow](https://www.nextflow.io), a workflow tool to run tasks across multiple compute infrastructures in a very portable manner. It uses Docker/Singularity containers making installation trivial and results highly reproducible. The [Nextflow DSL2](https://www.nextflow.io/docs/latest/dsl2.html) implementation of this pipeline uses one container per process which makes it much easier to maintain and update software dependencies. Where possible, these processes have been submitted to and installed from [nf-core/modules](https://github.com/nf-core/modules) in order to make them available to all nf-core pipelines, and to everyone within the Nextflow community! @@ -32,20 +32,20 @@ On release, automated continuous integration tests run the pipeline on a full-si 1. Read QC ([`FastQC`](https://www.bioinformatics.babraham.ac.uk/projects/fastqc/)) 2. Performs optional read pre-processing - - Adapter clipping and merging (short, and nanopore reads) - - Low complexity filtering - - Host read removal + - Adapter clipping and merging (short read: [fastp](https://github.com/OpenGene/fastp), [AdapterRemoval2](https://github.com/MikkelSchubert/adapterremoval); long read: [porechop](https://github.com/rrwick/Porechop)) + - Low complexity filtering ([bbduk](https://jgi.doe.gov/data-and-tools/software-tools/bbtools/), [PRINSEQ++](https://github.com/Adrian-Cantu/PRINSEQ-plus-plus)) + - Host read removal ([BowTie2](http://bowtie-bio.sourceforge.net/bowtie2/)) - Run merging -3. Performs taxonomic profiling a choice of: - - Kraken2 - - MetaPhlAn3 - - MALT - - DIAMOND - - Centrifuge - - Kaiju - - mOTUs +3. Performs taxonomic profiling via a choice of any or all of: + - [Kraken2](https://ccb.jhu.edu/software/kraken2/) + - [MetaPhlAn3](https://huttenhower.sph.harvard.edu/metaphlan/) + - [MALT](https://uni-tuebingen.de/fakultaeten/mathematisch-naturwissenschaftliche-fakultaet/fachbereiche/informatik/lehrstuehle/algorithms-in-bioinformatics/software/malt/) + - [DIAMOND](https://github.com/bbuchfink/diamond) + - [Centrifuge](https://ccb.jhu.edu/software/centrifuge/) + - [Kaiju](https://kaiju.binf.ku.dk/) + - [mOTUs](https://motu-tool.org/) 4. Perform optional post-processing with: - - bracken + - [bracken](https://ccb.jhu.edu/software/bracken/) 5. Standardises output tables 6. Present QC for raw reads ([`MultiQC`](http://multiqc.info/)) @@ -70,10 +70,8 @@ On release, automated continuous integration tests run the pipeline on a full-si 4. Start running your own analysis! - - ```console - nextflow run nf-core/taxprofiler --input samplesheet.csv --outdir --genome GRCh37 -profile + nextflow run nf-core/taxprofiler --input samplesheet.csv --databases database.csv --outdir --run_ --run_ -profile ``` ## Documentation @@ -86,7 +84,7 @@ nf-core/taxprofiler was originally written by nf-core community. We thank the following people for their extensive assistance in the development of this pipeline: - +[James A. Fellows Yates](https://github.com/jfy133), [Moritz Beber](https://github.com/Midnighter), [Lauri Mesilaakso](https://github.com/ljmesi), [Sofia Stamouli](https://github.com/sofsam), [Maxime Borry](https://github.com/maxibor). ## Contributions and Support diff --git a/assets/samplesheet.csv b/assets/samplesheet.csv index 5f653ab..82565b1 100644 --- a/assets/samplesheet.csv +++ b/assets/samplesheet.csv @@ -1,3 +1,6 @@ -sample,fastq_1,fastq_2 -SAMPLE_PAIRED_END,/path/to/fastq/files/AEG588A1_S1_L002_R1_001.fastq.gz,/path/to/fastq/files/AEG588A1_S1_L002_R2_001.fastq.gz -SAMPLE_SINGLE_END,/path/to/fastq/files/AEG588A4_S4_L003_R1_001.fastq.gz, +sample,run_accession,instrument_platform,fastq_1,fastq_2,fasta +2611,ERR5766174,ILLUMINA,,,///fasta/ERX5474930_ERR5766174_1.fa.gz +2612,ERR5766176,ILLUMINA,///fastq/ERX5474932_ERR5766176_1.fastq.gz,///fastq/ERX5474932_ERR5766176_2.fastq.gz, +2612,ERR5766180,ILLUMINA,///fastq/ERX5474936_ERR5766180_1.fastq.gz,, +2613,ERR5766181,ILLUMINA,///fastq/ERX5474937_ERR5766181_1.fastq.gz,///fastq/ERX5474937_ERR5766181_2.fastq.gz, +ERR3201952,ERR3201952,OXFORD_NANOPORE,///fastq/ERR3201952.fastq.gz,, diff --git a/docs/usage.md b/docs/usage.md index bd840a4..0091d57 100644 --- a/docs/usage.md +++ b/docs/usage.md @@ -8,56 +8,90 @@ -## Samplesheet input +## Samplesheet inputs -You will need to create a samplesheet with information about the samples you would like to analyse before running the pipeline. Use this parameter to specify its location. It has to be a comma-separated file with 3 columns, and a header row as shown in the examples below. +You will need to create a samplesheet with information about the samples you would like to analyse before running the pipeline. Use this parameter to specify its location. It has to be a comma-separated file with 6 columns, and a header row as shown in the examples below. Furthermother, nf-core/taxprofiler also requires a second comma-separated file of 3 columns with a header row as in the examples below. + +This samplesheet is then specified on the command line as follows: ```console ---input '[path to samplesheet file]' +--input '[path to samplesheet file]' --databases '[path to database sheet file]' ``` ### Multiple runs of the same sample -The `sample` identifiers have to be the same when you have re-sequenced the same sample more than once e.g. to increase sequencing depth. The pipeline will concatenate the raw reads before performing any downstream analysis. Below is an example for the same sample sequenced across 3 lanes: +The `sample` identifiers have to be the same when you have re-sequenced the same sample more than once e.g. to increase sequencing depth. The pipeline will processed reads before performing profiling. Below is an example for the same sample sequenced across 3 lanes: ```console -sample,fastq_1,fastq_2 -CONTROL_REP1,AEG588A1_S1_L002_R1_001.fastq.gz,AEG588A1_S1_L002_R2_001.fastq.gz -CONTROL_REP1,AEG588A1_S1_L003_R1_001.fastq.gz,AEG588A1_S1_L003_R2_001.fastq.gz -CONTROL_REP1,AEG588A1_S1_L004_R1_001.fastq.gz,AEG588A1_S1_L004_R2_001.fastq.gz +sample,run_accession,instrument_platform,fastq_1,fastq_2,fasta +2612,run1,ILLUMINA,2612_run1_R1.fq.gz,, +2612,run2,ILLUMINA,2612_run2_R1.fq.gz,, +2612,run3,ILLUMINA,2612_run3_R1.fq.gz,2612_run3_R2.fq.gz, + ``` +> ⚠️ Runs of the sample sample sequenced on Illumina platforms with a combination of single and paired-end data will **not** be run-wise concatenated, unless pair-merging is specified. In the example above, `run3` will be profiled independently of `run1` and `run2` if pairs not merged. + ### Full samplesheet -The pipeline will auto-detect whether a sample is single- or paired-end using the information provided in the samplesheet. The samplesheet can have as many columns as you desire, however, there is a strict requirement for the first 3 columns to match those defined in the table below. +The pipeline will auto-detect whether a sample is single- or paired-end using the information provided in the samplesheet. The samplesheet can have as many columns as you desire, however, there is a strict requirement for the first 6 columns to match those defined in the table below. -A final samplesheet file consisting of both single- and paired-end data may look something like the one below. This is for 6 samples, where `TREATMENT_REP3` has been sequenced twice. +A final samplesheet file consisting of both single- and paired-end data, as well as long-read FASTA fies may look something like the one below. This is for 6 samples, where `2612` has been sequenced twice. ```console -sample,fastq_1,fastq_2 -CONTROL_REP1,AEG588A1_S1_L002_R1_001.fastq.gz,AEG588A1_S1_L002_R2_001.fastq.gz -CONTROL_REP2,AEG588A2_S2_L002_R1_001.fastq.gz,AEG588A2_S2_L002_R2_001.fastq.gz -CONTROL_REP3,AEG588A3_S3_L002_R1_001.fastq.gz,AEG588A3_S3_L002_R2_001.fastq.gz -TREATMENT_REP1,AEG588A4_S4_L003_R1_001.fastq.gz, -TREATMENT_REP2,AEG588A5_S5_L003_R1_001.fastq.gz, -TREATMENT_REP3,AEG588A6_S6_L003_R1_001.fastq.gz, -TREATMENT_REP3,AEG588A6_S6_L004_R1_001.fastq.gz, +2611,ERR5766174,ILLUMINA,,,///fasta/ERX5474930_ERR5766174_1.fa.gz +2612,ERR5766176,ILLUMINA,///fastq/ERX5474932_ERR5766176_1.fastq.gz,///fastq/ERX5474932_ERR5766176_2.fastq.gz, +2612,ERR5766180,ILLUMINA,///fastq/ERX5474936_ERR5766180_1.fastq.gz,, +2613,ERR5766181,ILLUMINA,///fastq/ERX5474937_ERR5766181_1.fastq.gz,///fastq/ERX5474937_ERR5766181_2.fastq.gz, +ERR3201952,ERR3201952,OXFORD_NANOPORE,///fastq/ERR3201952.fastq.gz,, ``` -| Column | Description | -| --------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `sample` | Custom sample name. This entry will be identical for multiple sequencing libraries/runs from the same sample. Spaces in sample names are automatically converted to underscores (`_`). | -| `fastq_1` | Full path to FastQ file for Illumina short reads 1 or Nanopore reads. File has to be gzipped and have the extension ".fastq.gz" or ".fq.gz". | -| `fastq_2` | Full path to FastQ file for Illumina short reads 2. File has to be gzipped and have the extension ".fastq.gz" or ".fq.gz". | +| Column | Description | +| --------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `sample` | Unique sample name [required]. | +| `run_accession` | Run ID or name unique for each (pairs of) file(s) .Can also supply sample name again here, if only a single run was generated [required]. | +| `instrument_platform` | Sequencing platform reads generated on, selected from the EBI ENA [controlled vocabulary](https://www.ebi.ac.uk/ena/portal/api/controlledVocab?field=instrument_platform) [required]. | +| `fastq_1` | Path or URL to sequencing reads or for Illumina R1 sequencing reads in FASTQ format. GZipped compressed files accepted. Can be left empty if data in FASTA is specifed. Cannot be combined with `fasta`. | +| `fastq_2` | Path or URL to Illumina R2 sequencing reads in FASTQ format. GZipped compressed files accepted. Can be left empty if single end data. Cannot be combined with `fasta`. | +| `fasta` | Path or URL to long-reads or contigs in FASTA format. GZipped compressed files accepted. Can be left empty if data in FASTA is specifed. Cannot be combined with `fastq_1` or `fastq_2`. | An [example samplesheet](../assets/samplesheet.csv) has been provided with the pipeline. +### Full database sheet + +nf-core/taxprofiler supports multiple databases being profiled in parallel for each tool. These databases, and specific parameters for each, can be specified in a 4 column comma-separated sheet. + +> ⚠️ nf-core/taxprofiler does not provide any databases by default, nor currently generates them for you. This must be performed manually by the user. + +An example database sheet can look as follows, where 4 tools are being used, and `malt` and `kraken2` will be used against two databases each. + +```console +tool,db_name,db_params,db_path +malt,malt85,-id 85,///malt/testdb-malt/ +malt,malt95,-id 90,///malt/testdb-malt.tar.gz +kraken2,db1,,///kraken2/testdb-kraken2.tar.gz +kraken2,db2,--quick,///kraken2/testdb-kraken2.tar.gz +centrifuge,db1,,///centrifuge/minigut_cf.tar.gz +metaphlan3,db1,,///metaphlan3/metaphlan_database/ +``` + +Column specifications are as follows: + +| Column | Description | +| ----------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `tool` | Taxonomic profiling tool (supported by nf-core/taxprofiler) that the database has been indexed for [required]. | +| `db_name` | A unique name of the particular database [required]. | +| `db_params` | Any parameters of the given taxonomic profiler that you wish to specify that the taxonomic profiling tool should use when profiling against this specific. Can be empty to use taxonomic profiler defaults Must not be surrounded by quotes [required]. | +| `db_path` | Path to the database. Can either be a path to a directory containing the database index files or a `.tar.gz` file which contains the compressed database directory with the same name as the tar archive, minus `.tar.gz` [required]. | + +> 💡 You can also specify the same database directory/file twice (ensuring unique `db_name`s) and specify different parameters for each database to compare the effect of different parameters during profiling. + ## Running the pipeline The typical command for running the pipeline is as follows: ```console -nextflow run nf-core/taxprofiler --input samplesheet.csv --outdir --genome GRCh37 -profile docker +nextflow run nf-core/taxprofiler --input samplesheet.csv --databases databases.csv --outdir -profile docker --run_ --run_ ``` This will launch the pipeline with the `docker` configuration profile. See below for more information about profiles. @@ -66,7 +100,7 @@ Note that the pipeline will create the following files in your working directory ```console work # Directory containing the nextflow working files - # Finished results in specified location (defined with --outdir) + # Finished results in specified location (defined with --outdir) .nextflow_log # Log file from Nextflow # Other nextflow hidden files, eg. history of pipeline runs and old logs. ``` From b8b11fd065ee04ced28f586c505c2e180109b30e Mon Sep 17 00:00:00 2001 From: "James A. Fellows Yates" Date: Mon, 11 Apr 2022 10:30:29 +0200 Subject: [PATCH 138/789] Apply suggestions from code review Co-authored-by: Moritz E. Beber --- README.md | 2 +- docs/usage.md | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 88f643b..f1d59d5 100644 --- a/README.md +++ b/README.md @@ -36,7 +36,7 @@ On release, automated continuous integration tests run the pipeline on a full-si - Low complexity filtering ([bbduk](https://jgi.doe.gov/data-and-tools/software-tools/bbtools/), [PRINSEQ++](https://github.com/Adrian-Cantu/PRINSEQ-plus-plus)) - Host read removal ([BowTie2](http://bowtie-bio.sourceforge.net/bowtie2/)) - Run merging -3. Performs taxonomic profiling via a choice of any or all of: +3. Performs taxonomic profiling using one or more of: - [Kraken2](https://ccb.jhu.edu/software/kraken2/) - [MetaPhlAn3](https://huttenhower.sph.harvard.edu/metaphlan/) - [MALT](https://uni-tuebingen.de/fakultaeten/mathematisch-naturwissenschaftliche-fakultaet/fachbereiche/informatik/lehrstuehle/algorithms-in-bioinformatics/software/malt/) diff --git a/docs/usage.md b/docs/usage.md index 0091d57..239a55d 100644 --- a/docs/usage.md +++ b/docs/usage.md @@ -20,7 +20,7 @@ This samplesheet is then specified on the command line as follows: ### Multiple runs of the same sample -The `sample` identifiers have to be the same when you have re-sequenced the same sample more than once e.g. to increase sequencing depth. The pipeline will processed reads before performing profiling. Below is an example for the same sample sequenced across 3 lanes: +The `sample` identifiers have to be the same when you have re-sequenced the same sample more than once e.g. to increase sequencing depth. The pipeline will process reads before performing profiling. Below is an example for the same sample sequenced across 3 lanes: ```console sample,run_accession,instrument_platform,fastq_1,fastq_2,fasta @@ -30,7 +30,7 @@ sample,run_accession,instrument_platform,fastq_1,fastq_2,fasta ``` -> ⚠️ Runs of the sample sample sequenced on Illumina platforms with a combination of single and paired-end data will **not** be run-wise concatenated, unless pair-merging is specified. In the example above, `run3` will be profiled independently of `run1` and `run2` if pairs not merged. +> ⚠️ Runs of the same sample sequenced on Illumina platforms with a combination of single and paired-end data will **not** be run-wise concatenated, unless pair-merging is specified. In the example above, `run3` will be profiled independently of `run1` and `run2` if pairs are not merged. ### Full samplesheet @@ -61,7 +61,7 @@ An [example samplesheet](../assets/samplesheet.csv) has been provided with the p nf-core/taxprofiler supports multiple databases being profiled in parallel for each tool. These databases, and specific parameters for each, can be specified in a 4 column comma-separated sheet. -> ⚠️ nf-core/taxprofiler does not provide any databases by default, nor currently generates them for you. This must be performed manually by the user. +> ⚠️ nf-core/taxprofiler does not provide any databases by default, nor does it currently generate them for you. This must be performed manually by the user. An example database sheet can look as follows, where 4 tools are being used, and `malt` and `kraken2` will be used against two databases each. From 29073e3c93e1ea5a4221ca8ec2080547716b503c Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Mon, 11 Apr 2022 13:38:42 +0200 Subject: [PATCH 139/789] Update CI tests --- .github/workflows/ci.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 79148f0..5e57889 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -39,6 +39,7 @@ jobs: - "--shortread_clipmerge_tool adapterremoval --shortread_clipmerge_mergepairs" - "--shortread_complexityfilter_tool bbduk" - "--shortread_complexityfilter_tool prinseq" + - "--shortread_complexityfilter false --shortread_hostremoval" steps: - name: Check out pipeline code From 78182c2a8ca72d17b3a1004f100180d44439db42 Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Mon, 11 Apr 2022 13:40:24 +0200 Subject: [PATCH 140/789] Add comma --- workflows/taxprofiler.nf | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/workflows/taxprofiler.nf b/workflows/taxprofiler.nf index abb330d..95e3588 100644 --- a/workflows/taxprofiler.nf +++ b/workflows/taxprofiler.nf @@ -125,7 +125,7 @@ workflow TAXPROFILER { } else { ch_longreads_preprocessed = INPUT_CHECK.out.nanopore } - + /* SUBWORKFLOW: COMPLEXITY FILTERING */ @@ -146,12 +146,12 @@ workflow TAXPROFILER { } else { ch_shortreads_hostremoved = ch_shortreads_filtered } - + /* SUBWORKFLOW: PROFILING */ - PROFILING ( ch_shortreads_hostremoved ch_longreads_preprocessed, DB_CHECK.out.dbs ) + PROFILING ( ch_shortreads_hostremoved, ch_longreads_preprocessed, DB_CHECK.out.dbs ) ch_versions = ch_versions.mix( PROFILING.out.versions ) /* @@ -191,7 +191,7 @@ workflow TAXPROFILER { if (params.shortread_hostremoval) { ch_multiqc_files = ch_multiqc_files.mix(SHORTREAD_HOSTREMOVAL.out.mqc.collect{it[1]}.ifEmpty([])) } - + ch_multiqc_files = ch_multiqc_files.mix( PROFILING.out.mqc ) // TODO create multiQC module for metaphlan From 989dc55ce107ae01331727eb9678a0d41e22de03 Mon Sep 17 00:00:00 2001 From: sofstam Date: Mon, 11 Apr 2022 17:42:38 +0200 Subject: [PATCH 141/789] Delete extra nf-core directory --- nf-core/modules/centrifuge/centrifuge/main.nf | 61 ----------------- .../modules/centrifuge/centrifuge/meta.yml | 66 ------------------- 2 files changed, 127 deletions(-) delete mode 100644 nf-core/modules/centrifuge/centrifuge/main.nf delete mode 100644 nf-core/modules/centrifuge/centrifuge/meta.yml diff --git a/nf-core/modules/centrifuge/centrifuge/main.nf b/nf-core/modules/centrifuge/centrifuge/main.nf deleted file mode 100644 index 3d23fc9..0000000 --- a/nf-core/modules/centrifuge/centrifuge/main.nf +++ /dev/null @@ -1,61 +0,0 @@ -process CENTRIFUGE_CENTRIFUGE { - tag "$meta.id" - label 'process_high' - - conda (params.enable_conda ? "bioconda::centrifuge=1.0.4_beta" : null) - container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/centrifuge:1.0.4_beta--h9a82719_6' : - 'quay.io/biocontainers/centrifuge:1.0.4_beta--h9a82719_6' }" - - input: - tuple val(meta), path(reads) - path db - val save_unaligned - val save_aligned - val sam_format - - output: - tuple val(meta), path('*report.txt') , emit: report - tuple val(meta), path('*results.txt') , emit: results - tuple val(meta), path('*.sam') , optional: true, emit: sam - tuple val(meta), path('*.mapped.fastq{,.1,.2}.gz') , optional: true, emit: fastq_mapped - tuple val(meta), path('*.unmapped.fastq{,.1,.2}.gz') , optional: true, emit: fastq_unmapped - path "versions.yml" , emit: versions - - when: - task.ext.when == null || task.ext.when - - script: - def args = task.ext.args ?: '' - def prefix = task.ext.prefix ?: "${meta.id}" - def paired = meta.single_end ? "-U ${reads}" : "-1 ${reads[0]} -2 ${reads[1]}" - def unaligned = '' - def aligned = '' - if (meta.single_end) { - unaligned = save_unaligned ? "--un-gz ${prefix}.unmapped.fastq.gz" : '' - aligned = save_aligned ? "--al-gz ${prefix}.mapped.fastq.gz" : '' - } else { - unaligned = save_unaligned ? "--un-conc-gz ${prefix}.unmapped.fastq.gz" : '' - aligned = save_aligned ? "--al-conc-gz ${prefix}.mapped.fastq.gz" : '' - } - def sam_output = sam_format ? "--out-fmt 'sam'" : '' - """ - ## we add "-no-name ._" to ensure silly Mac OSX metafiles files aren't included - db_name=`find -L ${db} -name "*.1.cf" -not -name "._*" | sed 's/.1.cf//'` - centrifuge \\ - -x \$db_name \\ - -p $task.cpus \\ - $paired \\ - --report-file ${prefix}.report.txt \\ - -S ${prefix}.results.txt \\ - $unaligned \\ - $aligned \\ - $sam_output \\ - $args - - cat <<-END_VERSIONS > versions.yml - "${task.process}": - centrifuge: \$( centrifuge --version | sed -n 1p | sed 's/^.*centrifuge-class version //') - END_VERSIONS - """ -} diff --git a/nf-core/modules/centrifuge/centrifuge/meta.yml b/nf-core/modules/centrifuge/centrifuge/meta.yml deleted file mode 100644 index a252c00..0000000 --- a/nf-core/modules/centrifuge/centrifuge/meta.yml +++ /dev/null @@ -1,66 +0,0 @@ -name: centrifuge_centrifuge -description: Classifies metagenomic sequence data -keywords: - - classify - - metagenomics - - fastq - - db -tools: - - centrifuge: - description: Centrifuge is a classifier for metagenomic sequences. - homepage: https://ccb.jhu.edu/software/centrifuge/ - documentation: https://ccb.jhu.edu/software/centrifuge/manual.shtml - doi: 10.1101/gr.210641.116 - licence: ["GPL v3"] -input: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - reads: - type: file - description: | - List of input FastQ files of size 1 and 2 for single-end and paired-end data, - respectively. - - db: - type: directory - description: Path to directory containing centrifuge database files - - save_unaligned: - type: value - description: If true unmapped fastq files are saved - - save_aligned: - type: value - description: If true mapped fastq files are saved -output: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - report: - type: file - description: | - File containing a classification summary - pattern: "*.{report.txt}" - - results: - type: file - description: | - File containing classification results - pattern: "*.{results.txt}" - - fastq_unmapped: - type: file - description: Unmapped fastq files - pattern: "*.unmapped.fastq.gz" - - fastq_mapped: - type: file - description: Mapped fastq files - pattern: "*.mapped.fastq.gz" - - versions: - type: file - description: File containing software versions - pattern: "versions.yml" -authors: - - "@sofstam" - - "@jfy133" - - "@sateeshperi" From a5f4fc42d53fce99863a3d135b017b9e468722be Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Tue, 12 Apr 2022 09:25:27 +0200 Subject: [PATCH 142/789] Fix run merging for unmerged PE data --- conf/modules.config | 2 +- workflows/taxprofiler.nf | 7 +++++-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/conf/modules.config b/conf/modules.config index 97e9510..eb448bb 100644 --- a/conf/modules.config +++ b/conf/modules.config @@ -162,7 +162,7 @@ process { } withName: CAT_FASTQ { - ext.prefix = { "${meta.id}-${meta.run_accession}" } + ext.prefix = { "${meta.id}" } publishDir = [ path: { "${params.outdir}/run_merging/" }, mode: params.publish_dir_mode, diff --git a/workflows/taxprofiler.nf b/workflows/taxprofiler.nf index 1da812d..2eb7e8c 100644 --- a/workflows/taxprofiler.nf +++ b/workflows/taxprofiler.nf @@ -139,7 +139,11 @@ workflow TAXPROFILER { meta_new.remove('run_accession') [ meta_new, reads ] } - .groupTuple() + .groupTuple(by: 0) + .map { + meta, reads -> + [ meta, reads.flatten() ] + } .branch { // we can't concate files if there is not a second run, we branch // here to separate them out, and mix after @@ -151,7 +155,6 @@ workflow TAXPROFILER { .mix( ch_reads_for_cat_branch.skip ) .map { meta, reads -> - [ meta, [ reads ].flatten() ] } From 9f221f84cc66ca121a46d8f68db8f727dec523c9 Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Tue, 12 Apr 2022 10:12:17 +0200 Subject: [PATCH 143/789] Only supply single input channel to profiling, as these are merged into single input channel at run_merging --- subworkflows/local/profiling.nf | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/subworkflows/local/profiling.nf b/subworkflows/local/profiling.nf index c74c583..07b6b72 100644 --- a/subworkflows/local/profiling.nf +++ b/subworkflows/local/profiling.nf @@ -9,8 +9,7 @@ include { METAPHLAN3 } from '../../modules/nf-core/modules/meta workflow PROFILING { take: - shortreads // [ [ meta ], [ reads ] ] - longreads // [ [ meta ], [ reads ] ] + reads // [ [ meta ], [ reads ] ] databases // [ [ meta ], path ] main: @@ -22,9 +21,9 @@ workflow PROFILING { */ // e.g. output [DUMP: reads_plus_db] [['id':'2612', 'run_accession':'combined', 'instrument_platform':'ILLUMINA', 'single_end':1], /2612.merged.fastq.gz, ['tool':'malt', 'db_name':'mal95', 'db_params':'"-id 90"'], /malt90] - ch_input_for_profiling = shortreads - .mix( longreads ) + ch_input_for_profiling = reads .combine(databases) + .dump(tag: "combined_withdbs") .branch { malt: it[2]['tool'] == 'malt' kraken2: it[2]['tool'] == 'kraken2' From 2ef21c6ef3e46ae824ad5c99970b8a5250ef8e38 Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Tue, 12 Apr 2022 10:14:05 +0200 Subject: [PATCH 144/789] Fix input to profiling --- subworkflows/local/profiling.nf | 1 - workflows/taxprofiler.nf | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/subworkflows/local/profiling.nf b/subworkflows/local/profiling.nf index 07b6b72..ac744aa 100644 --- a/subworkflows/local/profiling.nf +++ b/subworkflows/local/profiling.nf @@ -23,7 +23,6 @@ workflow PROFILING { // e.g. output [DUMP: reads_plus_db] [['id':'2612', 'run_accession':'combined', 'instrument_platform':'ILLUMINA', 'single_end':1], /2612.merged.fastq.gz, ['tool':'malt', 'db_name':'mal95', 'db_params':'"-id 90"'], /malt90] ch_input_for_profiling = reads .combine(databases) - .dump(tag: "combined_withdbs") .branch { malt: it[2]['tool'] == 'malt' kraken2: it[2]['tool'] == 'kraken2' diff --git a/workflows/taxprofiler.nf b/workflows/taxprofiler.nf index 0916cac..7c02f4c 100644 --- a/workflows/taxprofiler.nf +++ b/workflows/taxprofiler.nf @@ -167,7 +167,7 @@ workflow TAXPROFILER { SUBWORKFLOW: PROFILING */ - PROFILING ( ch_reads_runmerged, ch_longreads_preprocessed, DB_CHECK.out.dbs ) + PROFILING ( ch_reads_runmerged, DB_CHECK.out.dbs ) ch_versions = ch_versions.mix( PROFILING.out.versions ) /* From 26399718b2440499f294ebc59d669dd78dd7cdb6 Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Tue, 12 Apr 2022 10:46:03 +0200 Subject: [PATCH 145/789] Re-add pairment attachment --- subworkflows/local/profiling.nf | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/subworkflows/local/profiling.nf b/subworkflows/local/profiling.nf index ac744aa..b03b83e 100644 --- a/subworkflows/local/profiling.nf +++ b/subworkflows/local/profiling.nf @@ -23,6 +23,12 @@ workflow PROFILING { // e.g. output [DUMP: reads_plus_db] [['id':'2612', 'run_accession':'combined', 'instrument_platform':'ILLUMINA', 'single_end':1], /2612.merged.fastq.gz, ['tool':'malt', 'db_name':'mal95', 'db_params':'"-id 90"'], /malt90] ch_input_for_profiling = reads .combine(databases) + meta, reads -> + def meta_new = meta.clone() + pairtype = meta_new['single_end'] ? '_se' : '_pe' + meta_new['id'] = meta_new['id'] + pairtype + [meta_new, reads] + } .branch { malt: it[2]['tool'] == 'malt' kraken2: it[2]['tool'] == 'kraken2' From 8d689141924a52cf72e666e76db1b575d541a341 Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Tue, 12 Apr 2022 10:47:44 +0200 Subject: [PATCH 146/789] Re-add operator name --- subworkflows/local/profiling.nf | 1 + 1 file changed, 1 insertion(+) diff --git a/subworkflows/local/profiling.nf b/subworkflows/local/profiling.nf index b03b83e..8a156c2 100644 --- a/subworkflows/local/profiling.nf +++ b/subworkflows/local/profiling.nf @@ -23,6 +23,7 @@ workflow PROFILING { // e.g. output [DUMP: reads_plus_db] [['id':'2612', 'run_accession':'combined', 'instrument_platform':'ILLUMINA', 'single_end':1], /2612.merged.fastq.gz, ['tool':'malt', 'db_name':'mal95', 'db_params':'"-id 90"'], /malt90] ch_input_for_profiling = reads .combine(databases) + .map { meta, reads -> def meta_new = meta.clone() pairtype = meta_new['single_end'] ? '_se' : '_pe' From a15c45b00cd18e2148baf7112f15c340261acdef Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Tue, 12 Apr 2022 10:51:27 +0200 Subject: [PATCH 147/789] Put map in the rigt place --- subworkflows/local/profiling.nf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/subworkflows/local/profiling.nf b/subworkflows/local/profiling.nf index 8a156c2..18de739 100644 --- a/subworkflows/local/profiling.nf +++ b/subworkflows/local/profiling.nf @@ -22,7 +22,6 @@ workflow PROFILING { // e.g. output [DUMP: reads_plus_db] [['id':'2612', 'run_accession':'combined', 'instrument_platform':'ILLUMINA', 'single_end':1], /2612.merged.fastq.gz, ['tool':'malt', 'db_name':'mal95', 'db_params':'"-id 90"'], /malt90] ch_input_for_profiling = reads - .combine(databases) .map { meta, reads -> def meta_new = meta.clone() @@ -30,6 +29,7 @@ workflow PROFILING { meta_new['id'] = meta_new['id'] + pairtype [meta_new, reads] } + .combine(databases) .branch { malt: it[2]['tool'] == 'malt' kraken2: it[2]['tool'] == 'kraken2' From 16a3556bfcfddf8195bbcd486653325aaa1de4ee Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Wed, 13 Apr 2022 08:26:08 +0200 Subject: [PATCH 148/789] Changes after code review --- workflows/taxprofiler.nf | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/workflows/taxprofiler.nf b/workflows/taxprofiler.nf index 7c02f4c..58671b3 100644 --- a/workflows/taxprofiler.nf +++ b/workflows/taxprofiler.nf @@ -139,15 +139,16 @@ workflow TAXPROFILER { meta_new.remove('run_accession') [ meta_new, reads ] } - .groupTuple(by: 0) + .groupTuple() .map { meta, reads -> [ meta, reads.flatten() ] } .branch { + meta, reads -> // we can't concatenate files if there is not a second run, we branch // here to separate them out, and mix back in after for efficiency - cat: ( it[0]['single_end'] && it[1].size() > 1 ) || ( !it[0]['single_end'] && it[1].size() > 2 ) + cat: ( meta.single_end && reads.size() > 1 ) || ( !meta.single_end && reads.size() > 2 ) skip: true } From de5734052601ce6bedd7be2389fef4bacd0affb1 Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Wed, 13 Apr 2022 11:49:35 +0200 Subject: [PATCH 149/789] Start work --- modules.json | 5 +- .../nf-core/modules/megan/rma2info/main.nf | 38 ++++++++++++++ .../nf-core/modules/megan/rma2info/meta.yml | 51 +++++++++++++++++++ nextflow.config | 1 + subworkflows/local/profiling.nf | 22 ++++---- .../local/shortread_postprocessing.nf | 39 ++++++++++++++ 6 files changed, 146 insertions(+), 10 deletions(-) create mode 100644 modules/nf-core/modules/megan/rma2info/main.nf create mode 100644 modules/nf-core/modules/megan/rma2info/meta.yml create mode 100644 subworkflows/local/shortread_postprocessing.nf diff --git a/modules.json b/modules.json index 7fbc65c..e921454 100644 --- a/modules.json +++ b/modules.json @@ -30,6 +30,9 @@ "malt/run": { "git_sha": "72b96f4e504eef673f2b5c13560a9d90b669129b" }, + "megan/rma2info": { + "git_sha": "2d38566eca4cc15142b2ffa7c11837569b39aece" + }, "metaphlan3": { "git_sha": "e745e167c1020928ef20ea1397b6b4d230681b4d" }, @@ -47,4 +50,4 @@ } } } -} +} \ No newline at end of file diff --git a/modules/nf-core/modules/megan/rma2info/main.nf b/modules/nf-core/modules/megan/rma2info/main.nf new file mode 100644 index 0000000..80d1975 --- /dev/null +++ b/modules/nf-core/modules/megan/rma2info/main.nf @@ -0,0 +1,38 @@ +process MEGAN_RMA2INFO { + tag "$meta.id" + label 'process_low' + + conda (params.enable_conda ? "bioconda::megan=6.21.7" : null) + container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? + 'https://depot.galaxyproject.org/singularity/megan:6.21.7--h9ee0642_0': + 'quay.io/biocontainers/megan:6.21.7--h9ee0642_0' }" + + input: + tuple val(meta), path(rma6) + val(megan_summary) + + output: + tuple val(meta), path("*.txt.gz") , emit: txt + tuple val(meta), path("*.megan"), optional: true, emit: megan_summary + path "versions.yml" , emit: versions + + when: + task.ext.when == null || task.ext.when + + script: + def args = task.ext.args ?: '' + def prefix = task.ext.prefix ?: "${meta.id}" + def summary = megan_summary ? "-es ${prefix}.megan" : "" + """ + rma2info \\ + -i ${rma6} \\ + -o ${prefix}.txt.gz \\ + ${summary} \\ + $args + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + megan: \$(echo \$(rma2info 2>&1) | grep version | sed 's/.*version //g;s/, built.*//g') + END_VERSIONS + """ +} diff --git a/modules/nf-core/modules/megan/rma2info/meta.yml b/modules/nf-core/modules/megan/rma2info/meta.yml new file mode 100644 index 0000000..0f2d5a9 --- /dev/null +++ b/modules/nf-core/modules/megan/rma2info/meta.yml @@ -0,0 +1,51 @@ +name: "megan_rma2info" +description: Analyses an RMA file and exports information in text format +keywords: + - megan + - rma6 + - classification + - conversion +tools: + - "megan": + description: "A tool for studying the taxonomic content of a set of DNA reads" + homepage: "https://uni-tuebingen.de/fakultaeten/mathematisch-naturwissenschaftliche-fakultaet/fachbereiche/informatik/lehrstuehle/algorithms-in-bioinformatics/software/megan6/" + documentation: "https://software-ab.informatik.uni-tuebingen.de/download/megan6/welcome.html" + tool_dev_url: "https://github.com/husonlab/megan-ce" + doi: "10.1371/journal.pcbi.1004957" + licence: "['GPL >=3']" + +input: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - rma6: + type: file + description: RMA6 file from MEGAN or MALT + pattern: "*.rma6" + - megan_summary: + type: boolean + description: Specify whether to generate an MEGAN summary file + +output: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - versions: + type: file + description: File containing software versions + pattern: "versions.yml" + - txt: + type: file + description: Compressed text file + pattern: "*.txt.gz" + - megan_summary: + type: file + description: Optionally generated MEGAN summary file + pattern: "*.megan" + +authors: + - "@jfy133" diff --git a/nextflow.config b/nextflow.config index b4a8d91..8ddf365 100644 --- a/nextflow.config +++ b/nextflow.config @@ -89,6 +89,7 @@ params { centrifuge_save_unaligned = false centrifuge_save_aligned = false centrifuge_sam_format = false + // metaphlan3 run_metaphlan3 = false } diff --git a/subworkflows/local/profiling.nf b/subworkflows/local/profiling.nf index c74c583..59b0dc0 100644 --- a/subworkflows/local/profiling.nf +++ b/subworkflows/local/profiling.nf @@ -14,8 +14,9 @@ workflow PROFILING { databases // [ [ meta ], path ] main: - ch_versions = Channel.empty() - ch_multiqc_files = Channel.empty() + ch_versions = Channel.empty() + ch_multiqc_files = Channel.empty() + ch_raw_profiles = Channel.empty() /* COMBINE READS WITH POSSIBLE DATABASES @@ -89,30 +90,33 @@ workflow PROFILING { if ( params.run_malt ) { MALT_RUN ( ch_input_for_malt.reads, params.malt_mode, ch_input_for_malt.db ) - ch_multiqc_files = ch_multiqc_files.mix( MALT_RUN.out.log.collect{it[1]}.ifEmpty([]) ) - ch_versions = ch_versions.mix( MALT_RUN.out.versions.first() ) + ch_multiqc_files = ch_multiqc_files.mix( MALT_RUN.out.log.collect{it[1]}.ifEmpty([]) ) + ch_versions = ch_versions.mix( MALT_RUN.out.versions.first() ) + ch_raw_profiles = ch_raw_profiles.mix( MALT_RUN.out.rma6 ) } if ( params.run_kraken2 ) { KRAKEN2_KRAKEN2 ( ch_input_for_kraken2.reads, ch_input_for_kraken2.db ) - ch_multiqc_files = ch_multiqc_files.mix( KRAKEN2_KRAKEN2.out.txt.collect{it[1]}.ifEmpty([]) ) - ch_versions = ch_versions.mix( KRAKEN2_KRAKEN2.out.versions.first() ) + ch_multiqc_files = ch_multiqc_files.mix( KRAKEN2_KRAKEN2.out.txt.collect{it[1]}.ifEmpty([]) ) + ch_versions = ch_versions.mix( KRAKEN2_KRAKEN2.out.versions.first() ) + ch_raw_profiles = ch_raw_profiles.mix( KRAKEN2_KRAKEN2.out.txt ) } if ( params.run_centrifuge ) { CENTRIFUGE_CENTRIFUGE ( ch_input_for_centrifuge.reads, ch_input_for_centrifuge.db, params.centrifuge_save_unaligned, params.centrifuge_save_aligned, params.centrifuge_sam_format ) - ch_versions = ch_versions.mix( CENTRIFUGE_CENTRIFUGE.out.versions.first() ) + ch_versions = ch_versions.mix( CENTRIFUGE_CENTRIFUGE.out.versions.first() ) + ch_raw_profiles = ch_raw_profiles.mix( CENTRIFUGE_CENTRIFUGE.out.report ) } if ( params.run_metaphlan3 ) { METAPHLAN3 ( ch_input_for_metaphlan3.reads, ch_input_for_metaphlan3.db ) ch_versions = ch_versions.mix( METAPHLAN3.out.versions.first() ) + ch_raw_profiles = ch_raw_profiles.mix( METAPHLAN3.out.biom ) } emit: - // TODO work out if there is enough standardisation of output to export as one? - //output = ch_filtered_reads // channel: [ val(meta), [ reads ] ] + profiles = ch_raw_profiles // channel: [ val(meta), [ reads ] ] versions = ch_versions // channel: [ versions.yml ] mqc = ch_multiqc_files } diff --git a/subworkflows/local/shortread_postprocessing.nf b/subworkflows/local/shortread_postprocessing.nf new file mode 100644 index 0000000..7fb0d70 --- /dev/null +++ b/subworkflows/local/shortread_postprocessing.nf @@ -0,0 +1,39 @@ +// +// Perform read trimming and merging +// + + +include { SHORTREAD_FASTP } from './shortread_fastp' +include { SHORTREAD_ADAPTERREMOVAL } from './shortread_adapterremoval' +include { FASTQC as FASTQC_PROCESSED } from '../../modules/nf-core/modules/fastqc/main' + +workflow SHORTREAD_POSTPROCESSING { + take: + input // [ [ meta ], [ taxon_table/file ] ] + + main: + ch_versions = Channel.empty() + ch_multiqc_files = Channel.empty() + + if ( params.shortread_clipmerge_tool == "fastp" ) { + ch_processed_reads = SHORTREAD_FASTP ( reads ).reads + ch_versions = ch_versions.mix( SHORTREAD_FASTP.out.versions ) + ch_multiqc_files = ch_multiqc_files.mix( SHORTREAD_FASTP.out.mqc ) + } else if ( params.shortread_clipmerge_tool == "adapterremoval" ) { + ch_processed_reads = SHORTREAD_ADAPTERREMOVAL ( reads ).reads + ch_versions = ch_versions.mix( SHORTREAD_ADAPTERREMOVAL.out.versions ) + ch_multiqc_files = ch_multiqc_files.mix( SHORTREAD_ADAPTERREMOVAL.out.mqc ) + } else { + ch_processed_reads = reads + } + + FASTQC_PROCESSED ( ch_processed_reads ) + ch_versions = ch_versions.mix( FASTQC_PROCESSED.out.versions ) + ch_multiqc_files = ch_multiqc_files.mix( FASTQC_PROCESSED.out.zip ) + + emit: + output = output // channel: [ val(meta), taxon_table ] + versions = ch_versions // channel: [ versions.yml ] + mqc = ch_multiqc_files +} + From dfeaa0d1fe79a6f59c27bdb481904b3bbb620234 Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Wed, 13 Apr 2022 12:00:28 +0200 Subject: [PATCH 150/789] Rename subworkflow parameters for consistency --- .github/workflows/ci.yml | 8 ++++---- conf/modules.config | 6 +++--- conf/test.config | 6 +++--- nextflow.config | 11 ++++++----- nextflow_schema.json | 22 +++++++++++----------- workflows/taxprofiler.nf | 16 ++++++++-------- 6 files changed, 35 insertions(+), 34 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 53423cb..c373bc8 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -29,8 +29,8 @@ jobs: - NXF_VER: "" NXF_EDGE: "1" parameters: - - "--longread_clip false" - - "--shortread_clip false" + - "--perform_longread_clip false" + - "--perform_shortread_clipmerge false" - "--shortread_clipmerge_tool fastp" - "--shortread_clipmerge_tool fastp --shortread_clipmerge_mergepairs --shortread_clipmerge_excludeunmerged" - "--shortread_clipmerge_tool fastp --shortread_clipmerge_mergepairs" @@ -39,8 +39,8 @@ jobs: - "--shortread_clipmerge_tool adapterremoval --shortread_clipmerge_mergepairs" - "--shortread_complexityfilter_tool bbduk" - "--shortread_complexityfilter_tool prinseq" - - "--run_merging" - - "--run_merging --shortread_clipmerge_mergepairs" + - "--perform_runmerging" + - "--perform_runmerging --shortread_clipmerge_mergepairs" steps: - name: Check out pipeline code diff --git a/conf/modules.config b/conf/modules.config index d93486f..42528de 100644 --- a/conf/modules.config +++ b/conf/modules.config @@ -173,7 +173,7 @@ process { withName: MALT_RUN { ext.args = { "${meta.db_params}" } - ext.prefix = params.run_merging ? { "${meta.id}-${meta.db_name}" } : { "${meta.id}-${meta.run_accession}-${meta.db_name}" } + ext.prefix = params.perform_runmerging ? { "${meta.id}-${meta.db_name}" } : { "${meta.id}-${meta.run_accession}-${meta.db_name}" } publishDir = [ path: { "${params.outdir}/malt/${meta.db_name}" }, mode: params.publish_dir_mode, @@ -183,7 +183,7 @@ process { withName: KRAKEN2_KRAKEN2 { ext.args = { "${meta.db_params}" } - ext.prefix = params.run_merging ? { "${meta.id}-${meta.db_name}" } : { "${meta.id}-${meta.run_accession}-${meta.db_name}" } + ext.prefix = params.perform_runmerging ? { "${meta.id}-${meta.db_name}" } : { "${meta.id}-${meta.run_accession}-${meta.db_name}" } publishDir = [ path: { "${params.outdir}/kraken2/${meta.db_name}" }, mode: params.publish_dir_mode, @@ -193,7 +193,7 @@ process { withName: METAPHLAN3 { ext.args = { "${meta.db_params}" } - ext.prefix = params.run_merging ? { "${meta.id}-${meta.db_name}" } : { "${meta.id}-${meta.run_accession}-${meta.db_name}" } + ext.prefix = params.perform_runmerging ? { "${meta.id}-${meta.db_name}" } : { "${meta.id}-${meta.run_accession}-${meta.db_name}" } publishDir = [ path: { "${params.outdir}/metaphlan3/${meta.db_name}" }, mode: params.publish_dir_mode, diff --git a/conf/test.config b/conf/test.config index 6e82300..923dda7 100644 --- a/conf/test.config +++ b/conf/test.config @@ -28,7 +28,7 @@ params { run_malt = true run_metaphlan3 = true run_centrifuge = true - shortread_clipmerge = true - longread_clip = false - shortread_complexityfilter = true + perform_shortread_clipmerge = true + perform_longread_clip = false + perform_shortread_complexityfilter = true } diff --git a/nextflow.config b/nextflow.config index da8bbdb..b72b4f9 100644 --- a/nextflow.config +++ b/nextflow.config @@ -55,7 +55,7 @@ params { databases = null // FASTQ preprocessing - shortread_clipmerge = false + perform_shortread_clipmerge = false shortread_clipmerge_tool = 'fastp' shortread_clipmerge_skipadaptertrim = false shortread_clipmerge_mergepairs = false @@ -63,11 +63,11 @@ params { shortread_clipmerge_adapter1 = null shortread_clipmerge_adapter2 = null shortread_clipmerge_minlength = 15 - longread_clip = false + perform_longread_clip = false save_preprocessed_reads = false // Complexity filtering - shortread_complexityfilter = false + perform_shortread_complexityfilter = false shortread_complexityfilter_tool = 'bbduk' shortread_complexityfilter_entropy = 0.3 shortread_complexityfilter_bbduk_windowsize = 50 @@ -77,8 +77,8 @@ params { save_complexityfiltered_reads = false // run merging - run_merging = false - save_runmerged_reads = false + perform_runmerging = false + save_runmerged_reads = false // MALT run_malt = false @@ -92,6 +92,7 @@ params { centrifuge_save_unaligned = false centrifuge_save_aligned = false centrifuge_sam_format = false + // metaphlan3 run_metaphlan3 = false } diff --git a/nextflow_schema.json b/nextflow_schema.json index 4db7fa0..06bd94b 100644 --- a/nextflow_schema.json +++ b/nextflow_schema.json @@ -262,15 +262,9 @@ "type": "string", "default": "None" }, - "shortread_clipmerge": { - "type": "boolean" - }, "shortread_clipmerge_excludeunmerged": { "type": "boolean" }, - "longread_clip": { - "type": "boolean" - }, "run_malt": { "type": "boolean" }, @@ -334,9 +328,6 @@ "shortread_complexityfilter_bbduk_mask": { "type": "boolean" }, - "shortread_complexityfilter": { - "type": "boolean" - }, "shortread_complexityfilter_entropy": { "type": "number", "default": 0.3 @@ -353,10 +344,19 @@ "save_complexityfiltered_reads": { "type": "boolean" }, - "run_merging": { + "save_runmerged_reads": { + "type": "boolean" + }, + "perform_shortread_clipmerge": { "type": "boolean" }, - "save_runmerged_reads": { + "perform_longread_clip": { + "type": "boolean" + }, + "perform_shortread_complexityfilter": { + "type": "boolean" + }, + "perform_runmerging": { "type": "boolean" } } diff --git a/workflows/taxprofiler.nf b/workflows/taxprofiler.nf index 58671b3..f086557 100644 --- a/workflows/taxprofiler.nf +++ b/workflows/taxprofiler.nf @@ -101,14 +101,14 @@ workflow TAXPROFILER { /* SUBWORKFLOW: PERFORM PREPROCESSING */ - if ( params.shortread_clipmerge ) { + if ( params.perform_shortread_clipmerge ) { ch_shortreads_preprocessed = SHORTREAD_PREPROCESSING ( INPUT_CHECK.out.fastq ).reads } else { ch_shortreads_preprocessed = INPUT_CHECK.out.fastq } - if ( params.longread_clip ) { + if ( params.perform_longread_clip ) { ch_longreads_preprocessed = LONGREAD_PREPROCESSING ( INPUT_CHECK.out.nanopore ).reads .map { it -> [ it[0], [it[1]] ] } } else { @@ -119,7 +119,7 @@ workflow TAXPROFILER { SUBWORKFLOW: COMPLEXITY FILTERING */ - if ( params.shortread_complexityfilter ) { + if ( params.perform_shortread_complexityfilter ) { ch_shortreads_filtered = SHORTREAD_COMPLEXITYFILTERING ( ch_shortreads_preprocessed ).reads } else { ch_shortreads_filtered = ch_shortreads_preprocessed @@ -129,7 +129,7 @@ workflow TAXPROFILER { STEP: Run merging */ - if ( params.run_merging ) { + if ( params.perform_runmerging ) { ch_reads_for_cat_branch = ch_shortreads_filtered .mix( ch_longreads_preprocessed ) @@ -190,22 +190,22 @@ workflow TAXPROFILER { ch_multiqc_files = ch_multiqc_files.mix(CUSTOM_DUMPSOFTWAREVERSIONS.out.mqc_yml.collect()) ch_multiqc_files = ch_multiqc_files.mix(FASTQC.out.zip.collect{it[1]}.ifEmpty([])) - if (params.shortread_clipmerge) { + if (params.perform_shortread_clipmerge) { ch_multiqc_files = ch_multiqc_files.mix( SHORTREAD_PREPROCESSING.out.mqc.collect{it[1]}.ifEmpty([]) ) ch_versions = ch_versions.mix( SHORTREAD_PREPROCESSING.out.versions ) } - if (params.longread_clip) { + if (params.perform_longread_clip) { ch_multiqc_files = ch_multiqc_files.mix( LONGREAD_PREPROCESSING.out.mqc.collect{it[1]}.ifEmpty([]) ) ch_versions = ch_versions.mix( LONGREAD_PREPROCESSING.out.versions ) } - if (params.shortread_complexityfilter){ + if (params.perform_shortread_complexityfilter){ ch_multiqc_files = ch_multiqc_files.mix( SHORTREAD_COMPLEXITYFILTERING.out.mqc.collect{it[1]}.ifEmpty([]) ) ch_versions = ch_versions.mix( SHORTREAD_COMPLEXITYFILTERING.out.versions ) } - if (params.run_merging){ + if (params.perform_runmerging){ ch_versions = ch_versions.mix(CAT_FASTQ.out.versions) } From aa2d07c42ae4e451711a4147264782d567576e88 Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Wed, 13 Apr 2022 14:19:19 +0200 Subject: [PATCH 151/789] Fix merge cockup --- .github/workflows/ci.yml | 2 +- conf/test.config | 2 +- nextflow.config | 2 +- nextflow_schema.json | 2 +- workflows/taxprofiler.nf | 13 +++++-------- 5 files changed, 9 insertions(+), 12 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index b18e601..a1ece72 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -41,7 +41,7 @@ jobs: - "--shortread_complexityfilter_tool prinseq" - "--perform_runmerging" - "--perform_runmerging --shortread_clipmerge_mergepairs" - - "--shortread_complexityfilter false --shortread_hostremoval" + - "--shortread_complexityfilter false --perform_shortread_hostremoval" steps: - name: Check out pipeline code diff --git a/conf/test.config b/conf/test.config index 1d08d91..8f12312 100644 --- a/conf/test.config +++ b/conf/test.config @@ -31,6 +31,6 @@ params { perform_shortread_clipmerge = true perform_longread_clip = false perform_shortread_complexityfilter = true - shortread_hostremoval = true + perform_shortread_hostremoval = true shortread_hostremoval_reference = 'https://raw.githubusercontent.com/nf-core/test-datasets/modules/data/genomics/homo_sapiens/genome/genome.fasta' } diff --git a/nextflow.config b/nextflow.config index 6b0a79d..94c5837 100644 --- a/nextflow.config +++ b/nextflow.config @@ -81,7 +81,7 @@ params { save_runmerged_reads = false // Host Removal - shortread_hostremoval = false + perform_shortread_hostremoval = false shortread_hostremoval_reference = null shortread_hostremoval_index = null diff --git a/nextflow_schema.json b/nextflow_schema.json index 07295e3..cf0edab 100644 --- a/nextflow_schema.json +++ b/nextflow_schema.json @@ -359,7 +359,7 @@ "perform_runmerging": { "type": "boolean" }, - "shortread_hostremoval": { + "perform_shortread_hostremoval": { "type": "boolean" }, "shortread_hostremoval_reference": { diff --git a/workflows/taxprofiler.nf b/workflows/taxprofiler.nf index 894a1e1..9fe8cc8 100644 --- a/workflows/taxprofiler.nf +++ b/workflows/taxprofiler.nf @@ -22,11 +22,10 @@ if (params.databases) { ch_databases = file(params.databases) } else { exit 1, ' if (params.shortread_clipmerge_mergepairs && params.run_malt ) log.warn "[nf-core/taxprofiler] warning: MALT does not accept uncollapsed paired-reads. Pairs will be profiled as separate files." if (params.shortread_clipmerge_excludeunmerged && !params.shortread_clipmerge_mergepairs) exit 1, "[nf-core/taxprofiler] error: cannot include unmerged reads when merging not turned on. Please specify --shortread_clipmerge_mergepairs" -// TODO Add check if index but no reference exit 1 -if (params.shortread_hostremoval && !params.shortread_hostremoval_reference) { exit 1, "[nf-core/taxprofiler] error: --shortread_hostremoval requested but no --shortread_hostremoval_reference FASTA supplied. Check input." } +if (params.perform_shortread_hostremoval && !params.shortread_hostremoval_reference) { exit 1, "[nf-core/taxprofiler] error: --shortread_hostremoval requested but no --shortread_hostremoval_reference FASTA supplied. Check input." } if (!params.shortread_hostremoval_reference && params.shortread_hostremoval_reference_index) { exit 1, "[nf-core/taxprofiler] error: --shortread_hostremoval_index provided but no --shortread_hostremoval_reference FASTA supplied. Check input." } -if (params.shortread_hostremoval_reference ) { ch_reference = file(params.shortread_hostremoval_reference) } else { ch_reference = [] } +if (params.shortread_hostremoval_reference ) { ch_reference = file(params.shortread_hostremoval_reference) } if (params.shortread_hostremoval_index ) { ch_reference_index = file(params.shortread_hostremoval_index ) } else { ch_reference_index = [] } /* @@ -140,15 +139,13 @@ workflow TAXPROFILER { SUBWORKFLOW: HOST REMOVAL */ - if ( params.shortread_hostremoval ) { + if ( params.perform_shortread_hostremoval ) { ch_shortreads_hostremoved = SHORTREAD_HOSTREMOVAL ( ch_shortreads_filtered, ch_reference, ch_reference_index ).reads ch_versions = ch_versions.mix(SHORTREAD_HOSTREMOVAL.out.versions.first()) } else { ch_shortreads_hostremoved = ch_shortreads_filtered } - */ - if ( params.perform_runmerging ) { ch_reads_for_cat_branch = ch_shortreads_hostremoved @@ -225,11 +222,11 @@ workflow TAXPROFILER { ch_versions = ch_versions.mix( SHORTREAD_COMPLEXITYFILTERING.out.versions ) } - if (params.shortread_hostremoval) { + if (params.perform_shortread_hostremoval) { ch_multiqc_files = ch_multiqc_files.mix(SHORTREAD_HOSTREMOVAL.out.mqc.collect{it[1]}.ifEmpty([])) ch_versions = ch_versions.mix(SHORTREAD_HOSTREMOVAL.out.versions) } - + if (params.perform_runmerging){ ch_versions = ch_versions.mix(CAT_FASTQ.out.versions) } From 5e80df0f949557883ea6e961b0ea7ba3214065c5 Mon Sep 17 00:00:00 2001 From: "James A. Fellows Yates" Date: Wed, 13 Apr 2022 15:27:53 +0200 Subject: [PATCH 152/789] Apply suggestions from code review --- conf/test.config | 4 ++-- nextflow.config | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/conf/test.config b/conf/test.config index 8f12312..9fa5de8 100644 --- a/conf/test.config +++ b/conf/test.config @@ -31,6 +31,6 @@ params { perform_shortread_clipmerge = true perform_longread_clip = false perform_shortread_complexityfilter = true - perform_shortread_hostremoval = true - shortread_hostremoval_reference = 'https://raw.githubusercontent.com/nf-core/test-datasets/modules/data/genomics/homo_sapiens/genome/genome.fasta' + perform_shortread_hostremoval = true + shortread_hostremoval_reference = 'https://raw.githubusercontent.com/nf-core/test-datasets/modules/data/genomics/homo_sapiens/genome/genome.fasta' } diff --git a/nextflow.config b/nextflow.config index 94c5837..bf3ca92 100644 --- a/nextflow.config +++ b/nextflow.config @@ -81,7 +81,7 @@ params { save_runmerged_reads = false // Host Removal - perform_shortread_hostremoval = false + perform_shortread_hostremoval = false shortread_hostremoval_reference = null shortread_hostremoval_index = null From 68ce5843a475b6d4a28713a82ecc30816368d0ff Mon Sep 17 00:00:00 2001 From: sofstam Date: Wed, 13 Apr 2022 18:51:56 +0200 Subject: [PATCH 153/789] Add kaiju in taxprofiler --- conf/modules.config | 9 ++++ conf/test.config | 13 ++--- modules/nf-core/modules/kaiju/kaiju/main.nf | 41 +++++++++++++++ modules/nf-core/modules/kaiju/kaiju/meta.yml | 53 ++++++++++++++++++++ nextflow.config | 3 ++ subworkflows/local/profiling.nf | 13 +++++ 6 files changed, 126 insertions(+), 6 deletions(-) create mode 100644 modules/nf-core/modules/kaiju/kaiju/main.nf create mode 100644 modules/nf-core/modules/kaiju/kaiju/meta.yml diff --git a/conf/modules.config b/conf/modules.config index ccd1748..f85df30 100644 --- a/conf/modules.config +++ b/conf/modules.config @@ -245,4 +245,13 @@ process { ] } + withName: KAIJU_KAIJU { + publishDir = [ + path: { "${params.outdir}/kaiju/${meta.db_name}" }, + mode: params.publish_dir_mode, + pattern: '*.tsv' + ] + ext.args = { "${meta.db_params}" } + ext.prefix = { "${meta.id}-${meta.run_accession}-${meta.db_name}" } + } } diff --git a/conf/test.config b/conf/test.config index 9fa5de8..884ff32 100644 --- a/conf/test.config +++ b/conf/test.config @@ -22,15 +22,16 @@ params { // Input data // TODO nf-core: Specify the paths to your test data on nf-core/test-datasets // TODO nf-core: Give any required params for the test so that command line flags are not needed - input = 'https://raw.githubusercontent.com/nf-core/test-datasets/taxprofiler/samplesheet.csv' - databases = 'https://raw.githubusercontent.com/nf-core/test-datasets/taxprofiler/database.csv' - run_kraken2 = true - run_malt = true - run_metaphlan3 = true - run_centrifuge = true + input = 'https://raw.githubusercontent.com/nf-core/test-datasets/taxprofiler/samplesheet.csv' + databases = 'https://raw.githubusercontent.com/nf-core/test-datasets/taxprofiler/database.csv' + run_kraken2 = true + run_malt = true + run_metaphlan3 = true + run_centrifuge = true perform_shortread_clipmerge = true perform_longread_clip = false perform_shortread_complexityfilter = true perform_shortread_hostremoval = true shortread_hostremoval_reference = 'https://raw.githubusercontent.com/nf-core/test-datasets/modules/data/genomics/homo_sapiens/genome/genome.fasta' + run_kaiju = true } diff --git a/modules/nf-core/modules/kaiju/kaiju/main.nf b/modules/nf-core/modules/kaiju/kaiju/main.nf new file mode 100644 index 0000000..ae8f99e --- /dev/null +++ b/modules/nf-core/modules/kaiju/kaiju/main.nf @@ -0,0 +1,41 @@ +process KAIJU_KAIJU { + tag "$meta.id" + label 'process_high' + + conda (params.enable_conda ? "bioconda::kaiju=1.8.2" : null) + container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? + 'https://depot.galaxyproject.org/singularity/kaiju:1.8.2--h5b5514e_1': + 'quay.io/biocontainers/kaiju:1.8.2--h5b5514e_1' }" + + input: + tuple val(meta), path(reads) + path(db) + + output: + tuple val(meta), path('*.tsv'), emit: results + path "versions.yml" , emit: versions + + when: + task.ext.when == null || task.ext.when + + script: + def args = task.ext.args ?: '' + def prefix = task.ext.prefix ?: "${meta.id}" + def input = meta.single_end ? "-i ${reads}" : "-i ${reads[0]} -j ${reads[1]}" + """ + dbnodes=`find -L ${db} -name "*nodes.dmp"` + dbname=`find -L ${db} -name "*.fmi" -not -name "._*"` + kaiju \\ + $args \\ + -z $task.cpus \\ + -t \$dbnodes \\ + -f \$dbname \\ + -o ${prefix}.tsv \\ + $input + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + kaiju: \$(echo \$( kaiju -h 2>&1 | sed -n 1p | sed 's/^.*Kaiju //' )) + END_VERSIONS + """ +} diff --git a/modules/nf-core/modules/kaiju/kaiju/meta.yml b/modules/nf-core/modules/kaiju/kaiju/meta.yml new file mode 100644 index 0000000..e24c8ef --- /dev/null +++ b/modules/nf-core/modules/kaiju/kaiju/meta.yml @@ -0,0 +1,53 @@ +name: kaiju_kaiju +description: Taxonomic classification of metagenomic sequence data using a protein reference database +keywords: + - classify + - metagenomics + - fastq + - taxonomic profiling +tools: + - kaiju: + description: Fast and sensitive taxonomic classification for metagenomics + homepage: https://kaiju.binf.ku.dk/ + documentation: https://github.com/bioinformatics-centre/kaiju/blob/master/README.md + tool_dev_url: https://github.com/bioinformatics-centre/kaiju + doi: "10.1038/ncomms11257" + licence: ["GNU GPL v3"] + +input: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - reads: + type: file + description: | + List of input fastq/fasta files of size 1 and 2 for single-end and paired-end data, + respectively. + pattern: "*.{fastq,fq,fasta,fa,fsa,fas,fna,fastq.gz,fq.gz,fasta.gz,fa.gz,fsa.gz,fas.gz,fna.gz}" + - db: + type: files + description: | + List containing the database and nodes files for Kaiju + e.g. [ 'database.fmi', 'nodes.dmp' ] + +output: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - versions: + type: file + description: File containing software versions + pattern: "versions.yml" + - results: + type: file + description: Results with taxonomic classification of each read + pattern: "*.tsv" + +authors: + - "@talnor" + - "@sofstam" + - "@jfy133" diff --git a/nextflow.config b/nextflow.config index bf3ca92..9ad84d5 100644 --- a/nextflow.config +++ b/nextflow.config @@ -100,6 +100,9 @@ params { // metaphlan3 run_metaphlan3 = false + + // kaiju + run_kaiju = false } // Load base.config by default for all pipelines diff --git a/subworkflows/local/profiling.nf b/subworkflows/local/profiling.nf index 18de739..272b5b4 100644 --- a/subworkflows/local/profiling.nf +++ b/subworkflows/local/profiling.nf @@ -6,6 +6,7 @@ include { MALT_RUN } from '../../modules/nf-core/modules/malt include { KRAKEN2_KRAKEN2 } from '../../modules/nf-core/modules/kraken2/kraken2/main' include { CENTRIFUGE_CENTRIFUGE } from '../../modules/nf-core/modules/centrifuge/centrifuge/main' include { METAPHLAN3 } from '../../modules/nf-core/modules/metaphlan3/main' +include { KAIJU_KAIJU } from '../../modules/nf-core/modules/kaiju/kaiju/main' workflow PROFILING { take: @@ -35,6 +36,7 @@ workflow PROFILING { kraken2: it[2]['tool'] == 'kraken2' metaphlan3: it[2]['tool'] == 'metaphlan3' centrifuge: it[2]['tool'] == 'centrifuge' + kaiju: it[2]['tool'] == 'kaiju' unknown: true } @@ -88,6 +90,13 @@ workflow PROFILING { db: it[3] } + ch_input_for_kaiju = ch_input_for_profiling.kaiju + .multiMap { + it -> + reads: [it[0] + it[2], it[1]] + db: it[3] + } + /* RUN PROFILING */ @@ -114,6 +123,10 @@ workflow PROFILING { ch_versions = ch_versions.mix( METAPHLAN3.out.versions.first() ) } + if ( params.run_kaiju ) { + KAIJU_KAIJU ( ch_input_for_kaiju.reads, ch_input_for_kaiju.db ) + ch_versions = ch_versions.mix( KAIJU_KAIJU.out.versions.first() ) + } emit: // TODO work out if there is enough standardisation of output to export as one? From 6736a2a980edd1244c8f3943d385f07f5b8a69ff Mon Sep 17 00:00:00 2001 From: sofstam Date: Wed, 13 Apr 2022 19:00:52 +0200 Subject: [PATCH 154/789] Update README.md, nextflow_schema.json --- README.md | 1 + modules.json | 3 +++ nextflow_schema.json | 34 +++++++++++++++++++++++++++------- 3 files changed, 31 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index f1d59d5..66578e5 100644 --- a/README.md +++ b/README.md @@ -44,6 +44,7 @@ On release, automated continuous integration tests run the pipeline on a full-si - [Centrifuge](https://ccb.jhu.edu/software/centrifuge/) - [Kaiju](https://kaiju.binf.ku.dk/) - [mOTUs](https://motu-tool.org/) + - [MetaMaps](https://github.com/DiltheyLab/MetaMaps) 4. Perform optional post-processing with: - [bracken](https://ccb.jhu.edu/software/bracken/) 5. Standardises output tables diff --git a/modules.json b/modules.json index 2be0b7f..726e701 100644 --- a/modules.json +++ b/modules.json @@ -50,6 +50,9 @@ }, "untar": { "git_sha": "e080f4c8acf5760039ed12ec1f206170f3f9a918" + }, + "kaiju/kaiju": { + "git_sha": "8856f127c58f6af479128be8b8df4d42e442ddbe" } } } diff --git a/nextflow_schema.json b/nextflow_schema.json index cf0edab..75854bf 100644 --- a/nextflow_schema.json +++ b/nextflow_schema.json @@ -10,7 +10,10 @@ "type": "object", "fa_icon": "fas fa-terminal", "description": "Define where the pipeline should find input data and save output data.", - "required": ["input", "outdir"], + "required": [ + "input", + "outdir" + ], "properties": { "input": { "type": "string", @@ -173,7 +176,14 @@ "description": "Method used to save pipeline results to output directory.", "help_text": "The Nextflow `publishDir` option specifies which intermediate files should be saved to the output directory. This option tells the pipeline what method should be used to move these files. See [Nextflow docs](https://www.nextflow.io/docs/latest/process.html#publishdir) for details.", "fa_icon": "fas fa-copy", - "enum": ["symlink", "rellink", "link", "copy", "copyNoFollow", "move"], + "enum": [ + "symlink", + "rellink", + "link", + "copy", + "copyNoFollow", + "move" + ], "hidden": true }, "email_on_fail": { @@ -294,7 +304,10 @@ "shortread_clipmerge_tool": { "type": "string", "default": "fastp", - "enum": ["fastp", "adapterremoval"] + "enum": [ + "fastp", + "adapterremoval" + ] }, "shortread_clipmerge_skipadaptertrim": { "type": "boolean" @@ -335,7 +348,10 @@ "shortread_complexityfilter_prinseqplusplus_mode": { "type": "string", "default": "entropy", - "enum": ["entropy", "dust"] + "enum": [ + "entropy", + "dust" + ] }, "shortread_complexityfilter_prinseqplusplus_dustscore": { "type": "number", @@ -364,11 +380,15 @@ }, "shortread_hostremoval_reference": { "type": "string", - "default": null + "default": "None" }, "shortread_hostremoval_index": { "type": "string", - "default": null + "default": "None" + }, + "run_kaiju": { + "type": "string", + "default": "false" } } -} +} \ No newline at end of file From 0e5c9e7bdd4f00323969f5f6d7217cc33ba63f5b Mon Sep 17 00:00:00 2001 From: sofstam Date: Thu, 14 Apr 2022 09:14:05 +0200 Subject: [PATCH 155/789] Type:boolean for kaiju in nextflow_schema.json --- nextflow_schema.json | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/nextflow_schema.json b/nextflow_schema.json index 75854bf..5fe371d 100644 --- a/nextflow_schema.json +++ b/nextflow_schema.json @@ -387,8 +387,7 @@ "default": "None" }, "run_kaiju": { - "type": "string", - "default": "false" + "type": "boolean" } } -} \ No newline at end of file +} From cc73cdd51d26330d831ec306f8a5da081fb8665a Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Sat, 16 Apr 2022 07:42:30 +0200 Subject: [PATCH 156/789] Add generation of taxon-table like output for MALT --- CITATIONS.md | 10 ++++- conf/modules.config | 15 ++++++- nextflow.config | 1 + nextflow_schema.json | 7 +++- subworkflows/local/profiling.nf | 32 +++++++++++---- .../local/shortread_postprocessing.nf | 39 ------------------- 6 files changed, 52 insertions(+), 52 deletions(-) delete mode 100644 subworkflows/local/shortread_postprocessing.nf diff --git a/CITATIONS.md b/CITATIONS.md index e7bcf47..02621d9 100644 --- a/CITATIONS.md +++ b/CITATIONS.md @@ -40,9 +40,17 @@ > Vågene, Åshild J., Alexander Herbig, Michael G. Campana, Nelly M. Robles García, Christina Warinner, Susanna Sabin, Maria A. Spyrou, et al. 2018. Salmonella Enterica Genomes from Victims of a Major Sixteenth-Century Epidemic in Mexico. Nature Ecology & Evolution 2 (3): 520-28. doi: 10.1038/s41559-017-0446-6. +- [MEGAN](https://doi.org/10.1371/journal.pcbi.1004957) + + > Huson, Daniel H., Sina Beier, Isabell Flade, Anna Górska, Mohamed El-Hadidi, Suparna Mitra, Hans-Joachim Ruscheweyh, and Rewati Tappu. 2016. “MEGAN Community Edition - Interactive Exploration and Analysis of Large-Scale Microbiome Sequencing Data.” PLoS Computational Biology 12 (6): e1004957. doi: 10.1371/journal.pcbi.1004957. + - [MetaPhlAn3](https://doi.org/10.7554/eLife.65088) - > Beghini, Francesco, Lauren J McIver, Aitor Blanco-Míguez, Leonard Dubois, Francesco Asnicar, Sagun Maharjan, Ana Mailyan, et al. 2021. “Integrating Taxonomic, Functional, and Strain-Level Profiling of Diverse Microbial Communities with BioBakery 3.” Edited by Peter Turnbaugh, Eduardo Franco, and C Titus Brown. ELife 10 (May): e65088. + > Beghini, Francesco, Lauren J McIver, Aitor Blanco-Míguez, Leonard Dubois, Francesco Asnicar, Sagun Maharjan, Ana Mailyan, et al. 2021. “Integrating Taxonomic, Functional, and Strain-Level Profiling of Diverse Microbial Communities with BioBakery 3.” Edited by Peter Turnbaugh, Eduardo Franco, and C Titus Brown. ELife 10 (May): e65088. doi: 10.7554/eLife.65088 + +- [Centrifuge](https://doi.org/10.1101/gr.210641.116) + + > Kim, Daehwan, Li Song, Florian P. Breitwieser, and Steven L. Salzberg. 2016. “Centrifuge: Rapid and Sensitive Classification of Metagenomic Sequences.” Genome Research 26 (12): 1721-29. doi: 10.1101/gr.210641.116. ## Software packaging/containerisation tools diff --git a/conf/modules.config b/conf/modules.config index ccd1748..23455a4 100644 --- a/conf/modules.config +++ b/conf/modules.config @@ -191,11 +191,22 @@ process { withName: MALT_RUN { ext.args = { "${meta.db_params}" } - ext.prefix = params.perform_runmerging ? { "${meta.id}-${meta.db_name}" } : { "${meta.id}-${meta.run_accession}-${meta.db_name}" } + // one run with multiple samples, so fix ID to just db name to ensure clean log name + ext.prefix = { "${meta.db_name}" } + publishDir = [ + path: { "${params.outdir}/malt/${meta.db_name}" }, + mode: params.publish_dir_mode, + pattern: '*.{rma6,log,sam}' + ] + } + + withName: MEGAN_RMA2INFO { + ext.args = "-c2c Taxonomy" + ext.prefix = { "${meta.id}" } publishDir = [ path: { "${params.outdir}/malt/${meta.db_name}" }, mode: params.publish_dir_mode, - pattern: '*.{log}' + pattern: '*.{txt.gz,megan}' ] } diff --git a/nextflow.config b/nextflow.config index bf3ca92..a618f66 100644 --- a/nextflow.config +++ b/nextflow.config @@ -88,6 +88,7 @@ params { // MALT run_malt = false malt_mode = 'BlastN' + malt_generatemegansummary = false // kraken2 run_kraken2 = false diff --git a/nextflow_schema.json b/nextflow_schema.json index cf0edab..2cbfb0e 100644 --- a/nextflow_schema.json +++ b/nextflow_schema.json @@ -364,11 +364,14 @@ }, "shortread_hostremoval_reference": { "type": "string", - "default": null + "default": "None" }, "shortread_hostremoval_index": { "type": "string", - "default": null + "default": "None" + }, + "malt_generatemegansummary": { + "type": "boolean" } } } diff --git a/subworkflows/local/profiling.nf b/subworkflows/local/profiling.nf index 23b96e7..d7532b7 100644 --- a/subworkflows/local/profiling.nf +++ b/subworkflows/local/profiling.nf @@ -3,6 +3,7 @@ // include { MALT_RUN } from '../../modules/nf-core/modules/malt/run/main' +include { MEGAN_RMA2INFO } from '../../modules/nf-core/modules/megan/rma2info/main' include { KRAKEN2_KRAKEN2 } from '../../modules/nf-core/modules/kraken2/kraken2/main' include { CENTRIFUGE_CENTRIFUGE } from '../../modules/nf-core/modules/centrifuge/centrifuge/main' include { METAPHLAN3 } from '../../modules/nf-core/modules/metaphlan3/main' @@ -95,33 +96,48 @@ workflow PROFILING { if ( params.run_malt ) { MALT_RUN ( ch_input_for_malt.reads, params.malt_mode, ch_input_for_malt.db ) - ch_multiqc_files = ch_multiqc_files.mix( MALT_RUN.out.log.collect{it[1]}.ifEmpty([]) ) - ch_versions = ch_versions.mix( MALT_RUN.out.versions.first() ) - ch_raw_profiles = ch_raw_profiles.mix( MALT_RUN.out.rma6 ) + + ch_maltrun_for_megan = MALT_RUN.out.rma6 + .transpose() + .map{ + meta, rma -> + // re-extract meta from file names, use filename without rma to + // ensure we keep paired-end information in downstream filenames + // when no pair-merging + def meta_new = meta.clone() + meta_new['db_name'] = meta.id + meta_new['id'] = rma.name - ( '.' + rma.extension ) + [ meta_new, rma ] + } + + MEGAN_RMA2INFO (ch_maltrun_for_megan, params.malt_generatemegansummary ) + ch_multiqc_files = ch_multiqc_files.mix( MALT_RUN.out.log.collect{it[1]}.ifEmpty([]) ) + ch_versions = ch_versions.mix( MALT_RUN.out.versions.first() ) + ch_raw_profiles = ch_raw_profiles.mix( MEGAN_RMA2INFO.out.txt ) } if ( params.run_kraken2 ) { KRAKEN2_KRAKEN2 ( ch_input_for_kraken2.reads, ch_input_for_kraken2.db ) - ch_multiqc_files = ch_multiqc_files.mix( KRAKEN2_KRAKEN2.out.txt.collect{it[1]}.ifEmpty([]) ) - ch_versions = ch_versions.mix( KRAKEN2_KRAKEN2.out.versions.first() ) + ch_multiqc_files = ch_multiqc_files.mix( KRAKEN2_KRAKEN2.out.txt.collect{it[1]}.ifEmpty([]) ) + ch_versions = ch_versions.mix( KRAKEN2_KRAKEN2.out.versions.first() ) ch_raw_profiles = ch_raw_profiles.mix( KRAKEN2_KRAKEN2.out.txt ) } if ( params.run_centrifuge ) { CENTRIFUGE_CENTRIFUGE ( ch_input_for_centrifuge.reads, ch_input_for_centrifuge.db, params.centrifuge_save_unaligned, params.centrifuge_save_aligned, params.centrifuge_sam_format ) - ch_versions = ch_versions.mix( CENTRIFUGE_CENTRIFUGE.out.versions.first() ) + ch_versions = ch_versions.mix( CENTRIFUGE_CENTRIFUGE.out.versions.first() ) ch_raw_profiles = ch_raw_profiles.mix( CENTRIFUGE_CENTRIFUGE.out.report ) } if ( params.run_metaphlan3 ) { METAPHLAN3 ( ch_input_for_metaphlan3.reads, ch_input_for_metaphlan3.db ) - ch_versions = ch_versions.mix( METAPHLAN3.out.versions.first() ) + ch_versions = ch_versions.mix( METAPHLAN3.out.versions.first() ) ch_raw_profiles = ch_raw_profiles.mix( METAPHLAN3.out.biom ) } emit: - profiles = ch_raw_profiles // channel: [ val(meta), [ reads ] ] + profiles = ch_raw_profiles // channel: [ val(meta), [ reads ] ] - should be text files or biom versions = ch_versions // channel: [ versions.yml ] mqc = ch_multiqc_files } diff --git a/subworkflows/local/shortread_postprocessing.nf b/subworkflows/local/shortread_postprocessing.nf deleted file mode 100644 index 7fb0d70..0000000 --- a/subworkflows/local/shortread_postprocessing.nf +++ /dev/null @@ -1,39 +0,0 @@ -// -// Perform read trimming and merging -// - - -include { SHORTREAD_FASTP } from './shortread_fastp' -include { SHORTREAD_ADAPTERREMOVAL } from './shortread_adapterremoval' -include { FASTQC as FASTQC_PROCESSED } from '../../modules/nf-core/modules/fastqc/main' - -workflow SHORTREAD_POSTPROCESSING { - take: - input // [ [ meta ], [ taxon_table/file ] ] - - main: - ch_versions = Channel.empty() - ch_multiqc_files = Channel.empty() - - if ( params.shortread_clipmerge_tool == "fastp" ) { - ch_processed_reads = SHORTREAD_FASTP ( reads ).reads - ch_versions = ch_versions.mix( SHORTREAD_FASTP.out.versions ) - ch_multiqc_files = ch_multiqc_files.mix( SHORTREAD_FASTP.out.mqc ) - } else if ( params.shortread_clipmerge_tool == "adapterremoval" ) { - ch_processed_reads = SHORTREAD_ADAPTERREMOVAL ( reads ).reads - ch_versions = ch_versions.mix( SHORTREAD_ADAPTERREMOVAL.out.versions ) - ch_multiqc_files = ch_multiqc_files.mix( SHORTREAD_ADAPTERREMOVAL.out.mqc ) - } else { - ch_processed_reads = reads - } - - FASTQC_PROCESSED ( ch_processed_reads ) - ch_versions = ch_versions.mix( FASTQC_PROCESSED.out.versions ) - ch_multiqc_files = ch_multiqc_files.mix( FASTQC_PROCESSED.out.zip ) - - emit: - output = output // channel: [ val(meta), taxon_table ] - versions = ch_versions // channel: [ versions.yml ] - mqc = ch_multiqc_files -} - From d0256ec9378eac0cad715fe364d997a84e9b312b Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Sat, 16 Apr 2022 07:45:24 +0200 Subject: [PATCH 157/789] Prettier --- modules.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules.json b/modules.json index 18c0e69..18dea60 100644 --- a/modules.json +++ b/modules.json @@ -56,4 +56,4 @@ } } } -} \ No newline at end of file +} From 818d3bd053beb2a33730d91d8556c544ff94b417 Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Sun, 17 Apr 2022 17:53:22 +0200 Subject: [PATCH 158/789] Complete documentation for preprocessing subworkflows --- docs/usage.md | 107 ++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 103 insertions(+), 4 deletions(-) diff --git a/docs/usage.md b/docs/usage.md index 239a55d..528aeef 100644 --- a/docs/usage.md +++ b/docs/usage.md @@ -10,6 +10,8 @@ ## Samplesheet inputs +nf-core/profiler can accept as input raw or preprocessed single- or paired-end short-read (e.g. Illumina) FASTQ files, long-read FASTQ files (e.g. Oxford Nanopore), or FASTA sequences (when accepted by a profiler). + You will need to create a samplesheet with information about the samples you would like to analyse before running the pipeline. Use this parameter to specify its location. It has to be a comma-separated file with 6 columns, and a header row as shown in the examples below. Furthermother, nf-core/taxprofiler also requires a second comma-separated file of 3 columns with a header row as in the examples below. This samplesheet is then specified on the command line as follows: @@ -20,7 +22,7 @@ This samplesheet is then specified on the command line as follows: ### Multiple runs of the same sample -The `sample` identifiers have to be the same when you have re-sequenced the same sample more than once e.g. to increase sequencing depth. The pipeline will process reads before performing profiling. Below is an example for the same sample sequenced across 3 lanes: +The `sample` identifiers have to be the same when you have re-sequenced the same sample more than once e.g. to increase sequencing depth. The pipeline will concatenate different runs FASTQ files of the same sample before performing profiling, when `--perform_runmerging` is supplied. Below is an example for the same sample sequenced across 3 lanes: ```console sample,run_accession,instrument_platform,fastq_1,fastq_2,fasta @@ -36,7 +38,7 @@ sample,run_accession,instrument_platform,fastq_1,fastq_2,fasta The pipeline will auto-detect whether a sample is single- or paired-end using the information provided in the samplesheet. The samplesheet can have as many columns as you desire, however, there is a strict requirement for the first 6 columns to match those defined in the table below. -A final samplesheet file consisting of both single- and paired-end data, as well as long-read FASTA fies may look something like the one below. This is for 6 samples, where `2612` has been sequenced twice. +A final samplesheet file consisting of both single- and paired-end data, as well as long-read FASTA files may look something like the one below. This is for 6 samples, where `2612` has been sequenced twice. ```console 2611,ERR5766174,ILLUMINA,,,///fasta/ERX5474930_ERR5766174_1.fa.gz @@ -59,9 +61,11 @@ An [example samplesheet](../assets/samplesheet.csv) has been provided with the p ### Full database sheet -nf-core/taxprofiler supports multiple databases being profiled in parallel for each tool. These databases, and specific parameters for each, can be specified in a 4 column comma-separated sheet. +nf-core/taxprofiler supports multiple databases being profiled in parallel for each tool. +Databases can be supplied either be in the form of a compressed `.tar.gz` archive of a folder containing all relevant database files or the path to an (uncompressed) directory. +The pipelines takes the locations these of databases as input, and specific parameters for each, via a 4 column comma-separated sheet. -> ⚠️ nf-core/taxprofiler does not provide any databases by default, nor does it currently generate them for you. This must be performed manually by the user. +> ⚠️ nf-core/taxprofiler does not provide any databases by default, nor does it currently generate them for you. This must be performed manually by the user. See below for more information of the expected database files. An example database sheet can look as follows, where 4 tools are being used, and `malt` and `kraken2` will be used against two databases each. @@ -86,6 +90,41 @@ Column specifications are as follows: > 💡 You can also specify the same database directory/file twice (ensuring unique `db_name`s) and specify different parameters for each database to compare the effect of different parameters during profiling. +nf-core/taxprofiler will automatically decompress and extract any compressed archives for you. + +Expected (uncompressed) database files for each tool are as follows: + +- **MALT** output of `malt-build`. A directory containing: + - `ref.idx` + - `taxonomy.idx` + - `taxonomy.map` + - `index0.idx` + - `table0.idx` + - `table0.db` + - `ref.inf` + - `ref.db` + - `taxonomy.tre` +- **Kraken2** output of `kraken2-build` command(s) A directory containing: + - `opts.k2d` + - `hash.k2d` + - `taxo.k2d` +- **Centrifuge** output of `centrifuge-build`. A directory containing: + - `..cf` + - `..cf` + - `..cf` + - `..cf` +- **MetaPhlAn3** generated with `metaphlan --install` or downloaded from links on the [MetaPhlAn3 wiki](https://github.com/biobakery/MetaPhlAn/wiki/MetaPhlAn-3.0#customizing-the-database). A directory containing: + - `mpa_v30_CHOCOPhlAn_201901.pkl` + - `mpa_v30_CHOCOPhlAn_201901.pkl` + - `mpa_v30_CHOCOPhlAn_201901.fasta` + - `mpa_v30_CHOCOPhlAn_201901.3.bt2` + - `mpa_v30_CHOCOPhlAn_201901.4.bt2` + - `mpa_v30_CHOCOPhlAn_201901.1.bt2` + - `mpa_v30_CHOCOPhlAn_201901.2.bt2` + - `mpa_v30_CHOCOPhlAn_201901.rev.1.bt2` + - `mpa_v30_CHOCOPhlAn_201901.rev.2.bt2` + - `mpa_latest` + ## Running the pipeline The typical command for running the pipeline is as follows: @@ -105,6 +144,66 @@ work # Directory containing the nextflow working files # Other nextflow hidden files, eg. history of pipeline runs and old logs. ``` +### Preprocessing Steps + +nf-core/taxprofiler offers four main preprocessing steps + +- Read processing: adapter clipping and pair-merging. +- Complexity filtering: removal of low-sequence complexity reads. +- Host read-removal: removal of reads aligning to reference genome(s) of a host. +- Run merging: concatenation of multiple FASTQ chunks/sequencing runs/libraries of a sample. + +#### Read Processing + +Raw sequencing read processing in the form of adapter clipping and paired-end read merging can be activated via the `--perform_shortread_clipmerge` or `--perform_longread_clip` flags. + +It is highly recommended to run this on raw reads to remove artefacts from sequencing that can cause false positive identification of taxa (e.g. contaminated reference genomes) and/or skews in taxonomic abundance profiles. + +There are currently two options for short-read preprocessing: `fastp` or `adapterremoval`. + +For adapter clipping, you can either rely on tool default adapter sequences, or supply your own adapters (`--shortread_clipmerge_adapter1` and `--shortread_clipmerge_adapter2`) +By default, paired-end merging is not activated and paired-end profiling is performed where supported otherwise pairs will be independently profiled. If paired-end merging is activated you can also specify whether to exclude unmerged reads in the reads sent for profiling (`--shortread_clipmerge_mergepairs` and `--shortread_clipmerge_excludeunmerged`). +You can also turn off clipping and only perform paired-end merging, if requested. This can be useful when processing data downloaded from the ENA, SRA, or DDBJ (--shortread_clipmerge_skipadaptertrim). +Both tools support length filtering of reads and can be tuned with `--shortread_clipmerge_minlength`. Performing length filtering can be useful to remove short (often low sequencing complexity) sequences that result in unspecific classification and therefore slow down runtime during profiling, with minimal gain. + +There is currently one option for long-read Oxford Nanopore processing: `porechop`. + +For both short-read and long-read preprocessing, you can optionally save the resulting processed reads with `--save_preprocessed_reads`. + +#### Complexity Filtering + +Complexity filtering can be activated via the `--perform_shortread_complexityfilter` flag. + +Complexity filtering is primarily a run-time optimisation step. It is not necessary for accurate taxonomic profiling, however it can speed up run-time of each tool by removing reads with low-diversity of nucleotides (e.g. with mono-nucleotide - `AAAAAAAA`, or di-nucleotide repeats `GAGAGAGAGAGAGAG`) that have a low-chance of giving an informatic taxonomic ID as they can be associated with many different taxa. Removing these reads therefore saves computational time and resources. + +There are currently two options for short-read complexity filtering: [`bbduk`](https://jgi.doe.gov/data-and-tools/software-tools/bbtools/bb-tools-user-guide/bbduk-guide/) and [`prinseq++`](https://jgi.doe.gov/data-and-tools/software-tools/bbtools/bb-tools-user-guide/bbduk-guide/). + +The tools offer different algorithms and parameters for removing low complexity reads. We therefore recommend reviewing the pipeline's [parameter documentation](https://nf-co.re/taxprofiler/parameters) and the documentation of both tools (see links above) to decide on optimal methods and parameters for your dataset. + +You can optionally save the FASTQ output of the run merging with the `--save_complexityfiltered_reads`. + +#### Host Removal + +Removal of possible-host reads from FASTQ files prior profiling can be activated with `--perform_shortread_hostremoval` + +Similarly to complexity filtering, host-removal can be useful for runtime optimisation and reduction in misclassified reads. It is not always necessary to report classification of reads from a host when you already know the host of the sample, therefore you can gain a run-time and computational advantage by removing these prior typically resource-heavy profiling with more efficient methods. Furthermore, particularly with human samples, you can reduce the number of false positives during profiling that occur due to host-sequence contamination in reference genomes on public databases. + +nf-core/taxprofiler currently offers host-removal via alignment against a reference genome with Bowtie2, and the use of the unaligned reads for downstream profiling. + +You can supply your reference genome in FASTA format with `--shortread_hostremoval_reference`. You can also optionally supply a directory containing pre-indexed Bowtie2 index files with `--shortread_hostremoval_index`, however nf-core/taxprofiler will generate this for you if necessary. + +> 💡 If you have multiple taxa or sequences you wish to remove (e.g., the host genome and then also PhiX - common quality-control reagent during sequencing) you can simply concatenate the FASTAs of each taxa or sequences into a single reference file. + +#### Run Merging + +For samples that may have been sequenced over multiple runs, or for FASTQ files split into multiple chunks, you can activate the ability to merge across all runs or chunks with `--perform_runmerging`. + +For more information how to set up your input samplesheet, see [Multiple runs of the same sample](#multiple-runs-of-the-same-sample). + +Activating this functionality will concatenate togther the FASTQ files with the same sample name _after_ the optional preprocessing steps and prior profiling. Note that libraries with runs of different pairment types will **not** the different types merged together, and output files will indicate with a `_se` or `_pe` suffix to the sample name accordingly. + +You can optionally save the FASTQ output of the run merging with the `--save_runmerged_reads`. + ### Updating the pipeline When you run the above command, Nextflow automatically pulls the pipeline code from GitHub and stores it as a cached version. When running the pipeline after this, it will always use the cached version if available - even if the pipeline has been updated since. To make sure that you're running the latest version of the pipeline, make sure that you regularly update the cached version of the pipeline: From 457c13e8b74f4fef01f8631bbbdfb9583777760c Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Sun, 17 Apr 2022 17:55:23 +0200 Subject: [PATCH 159/789] Add additional tips for host removal --- docs/usage.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/usage.md b/docs/usage.md index 528aeef..919569c 100644 --- a/docs/usage.md +++ b/docs/usage.md @@ -190,7 +190,7 @@ Similarly to complexity filtering, host-removal can be useful for runtime optimi nf-core/taxprofiler currently offers host-removal via alignment against a reference genome with Bowtie2, and the use of the unaligned reads for downstream profiling. -You can supply your reference genome in FASTA format with `--shortread_hostremoval_reference`. You can also optionally supply a directory containing pre-indexed Bowtie2 index files with `--shortread_hostremoval_index`, however nf-core/taxprofiler will generate this for you if necessary. +You can supply your reference genome in FASTA format with `--shortread_hostremoval_reference`. You can also optionally supply a directory containing pre-indexed Bowtie2 index files with `--shortread_hostremoval_index`, however nf-core/taxprofiler will generate this for you if necessary. Pre-supplying the directory of index files can greatly speed up the process, and these can be re-used. > 💡 If you have multiple taxa or sequences you wish to remove (e.g., the host genome and then also PhiX - common quality-control reagent during sequencing) you can simply concatenate the FASTAs of each taxa or sequences into a single reference file. From 2cfcdf2dd2bcc5141b0e7a6474dd27646fa6ee25 Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Sun, 17 Apr 2022 22:27:04 +0200 Subject: [PATCH 160/789] Add finer controler over for hostremoval saving --- conf/modules.config | 20 ++++++++++++++++---- nextflow.config | 7 +++++-- nextflow_schema.json | 39 ++++++++++++++++++++++++++++++++------- 3 files changed, 53 insertions(+), 13 deletions(-) diff --git a/conf/modules.config b/conf/modules.config index ccd1748..55119ff 100644 --- a/conf/modules.config +++ b/conf/modules.config @@ -133,21 +133,33 @@ process { } withName: BOWTIE2_BUILD { - ext.prefix = { "${meta.id}_${meta.run_accession}" } publishDir = [ path: { "${params.outdir}/bowtie2/build" }, mode: params.publish_dir_mode, - pattern: '*.bt2' + enabled: params.save_hostremoval_index, + pattern: 'bowtie2/*' ] } withName: BOWTIE2_ALIGN { ext.prefix = { "${meta.id}_${meta.run_accession}" } + publishDir = [[ + path: { "${params.outdir}/bowtie2/align" }, + mode: params.publish_dir_mode, + pattern: '*.log' + ], + [ + path: { "${params.outdir}/bowtie2/align" }, + mode: params.publish_dir_mode, + enabled: params.save_hostremoval_mapped, + pattern: '*.bam' + ], publishDir = [ path: { "${params.outdir}/bowtie2/align" }, mode: params.publish_dir_mode, - pattern: '*.{fastq.gz,bam}' - ] + enabled: params.save_hostremoval_unmapped, + pattern: '*.fastq.gz' + ]] } withName: BBMAP_BBDUK { diff --git a/nextflow.config b/nextflow.config index bf3ca92..5616b0e 100644 --- a/nextflow.config +++ b/nextflow.config @@ -82,8 +82,11 @@ params { // Host Removal perform_shortread_hostremoval = false - shortread_hostremoval_reference = null - shortread_hostremoval_index = null + shortread_hostremoval_reference = null + shortread_hostremoval_index = null + save_hostremoval_index = false + save_hostremoval_mapped = false + save_hostremoval_unmapped = false // MALT run_malt = false diff --git a/nextflow_schema.json b/nextflow_schema.json index cf0edab..7890517 100644 --- a/nextflow_schema.json +++ b/nextflow_schema.json @@ -10,7 +10,10 @@ "type": "object", "fa_icon": "fas fa-terminal", "description": "Define where the pipeline should find input data and save output data.", - "required": ["input", "outdir"], + "required": [ + "input", + "outdir" + ], "properties": { "input": { "type": "string", @@ -173,7 +176,14 @@ "description": "Method used to save pipeline results to output directory.", "help_text": "The Nextflow `publishDir` option specifies which intermediate files should be saved to the output directory. This option tells the pipeline what method should be used to move these files. See [Nextflow docs](https://www.nextflow.io/docs/latest/process.html#publishdir) for details.", "fa_icon": "fas fa-copy", - "enum": ["symlink", "rellink", "link", "copy", "copyNoFollow", "move"], + "enum": [ + "symlink", + "rellink", + "link", + "copy", + "copyNoFollow", + "move" + ], "hidden": true }, "email_on_fail": { @@ -294,7 +304,10 @@ "shortread_clipmerge_tool": { "type": "string", "default": "fastp", - "enum": ["fastp", "adapterremoval"] + "enum": [ + "fastp", + "adapterremoval" + ] }, "shortread_clipmerge_skipadaptertrim": { "type": "boolean" @@ -335,7 +348,10 @@ "shortread_complexityfilter_prinseqplusplus_mode": { "type": "string", "default": "entropy", - "enum": ["entropy", "dust"] + "enum": [ + "entropy", + "dust" + ] }, "shortread_complexityfilter_prinseqplusplus_dustscore": { "type": "number", @@ -364,11 +380,20 @@ }, "shortread_hostremoval_reference": { "type": "string", - "default": null + "default": "None" }, "shortread_hostremoval_index": { "type": "string", - "default": null + "default": "None" + }, + "save_hostremoval_index": { + "type": "boolean" + }, + "save_hostremoval_mapped": { + "type": "boolean" + }, + "save_hostremoval_unmapped": { + "type": "boolean" } } -} +} \ No newline at end of file From b036ed5b7354df252bf819dfdd65771b8ebcfc98 Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Sun, 17 Apr 2022 22:28:18 +0200 Subject: [PATCH 161/789] Prettier --- nextflow_schema.json | 26 +++++--------------------- 1 file changed, 5 insertions(+), 21 deletions(-) diff --git a/nextflow_schema.json b/nextflow_schema.json index 7890517..c0d3597 100644 --- a/nextflow_schema.json +++ b/nextflow_schema.json @@ -10,10 +10,7 @@ "type": "object", "fa_icon": "fas fa-terminal", "description": "Define where the pipeline should find input data and save output data.", - "required": [ - "input", - "outdir" - ], + "required": ["input", "outdir"], "properties": { "input": { "type": "string", @@ -176,14 +173,7 @@ "description": "Method used to save pipeline results to output directory.", "help_text": "The Nextflow `publishDir` option specifies which intermediate files should be saved to the output directory. This option tells the pipeline what method should be used to move these files. See [Nextflow docs](https://www.nextflow.io/docs/latest/process.html#publishdir) for details.", "fa_icon": "fas fa-copy", - "enum": [ - "symlink", - "rellink", - "link", - "copy", - "copyNoFollow", - "move" - ], + "enum": ["symlink", "rellink", "link", "copy", "copyNoFollow", "move"], "hidden": true }, "email_on_fail": { @@ -304,10 +294,7 @@ "shortread_clipmerge_tool": { "type": "string", "default": "fastp", - "enum": [ - "fastp", - "adapterremoval" - ] + "enum": ["fastp", "adapterremoval"] }, "shortread_clipmerge_skipadaptertrim": { "type": "boolean" @@ -348,10 +335,7 @@ "shortread_complexityfilter_prinseqplusplus_mode": { "type": "string", "default": "entropy", - "enum": [ - "entropy", - "dust" - ] + "enum": ["entropy", "dust"] }, "shortread_complexityfilter_prinseqplusplus_dustscore": { "type": "number", @@ -396,4 +380,4 @@ "type": "boolean" } } -} \ No newline at end of file +} From 9880baa0b813a1d7721c9270224a37bb064a31fc Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Mon, 18 Apr 2022 06:37:23 +0200 Subject: [PATCH 162/789] Get build directory working --- conf/modules.config | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/conf/modules.config b/conf/modules.config index 55119ff..ba3c5c9 100644 --- a/conf/modules.config +++ b/conf/modules.config @@ -137,29 +137,31 @@ process { path: { "${params.outdir}/bowtie2/build" }, mode: params.publish_dir_mode, enabled: params.save_hostremoval_index, - pattern: 'bowtie2/*' + pattern: 'bowtie2' ] } withName: BOWTIE2_ALIGN { ext.prefix = { "${meta.id}_${meta.run_accession}" } - publishDir = [[ + publishDir = [ + [ path: { "${params.outdir}/bowtie2/align" }, mode: params.publish_dir_mode, pattern: '*.log' - ], - [ + ], + [ path: { "${params.outdir}/bowtie2/align" }, mode: params.publish_dir_mode, enabled: params.save_hostremoval_mapped, pattern: '*.bam' - ], - publishDir = [ + ], + [ path: { "${params.outdir}/bowtie2/align" }, mode: params.publish_dir_mode, enabled: params.save_hostremoval_unmapped, pattern: '*.fastq.gz' - ]] + ] + ] } withName: BBMAP_BBDUK { From 564474cafeb77ed1e39d127ed4a08667a4522878 Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Mon, 18 Apr 2022 07:21:12 +0200 Subject: [PATCH 163/789] Adds filtering and warning for non-FASTA supporting tool. Standardised warning messages. --- subworkflows/local/input_check.nf | 2 ++ subworkflows/local/profiling.nf | 8 ++++++++ workflows/taxprofiler.nf | 11 ++++++----- 3 files changed, 16 insertions(+), 5 deletions(-) diff --git a/subworkflows/local/input_check.nf b/subworkflows/local/input_check.nf index db46f2b..eb21b9d 100644 --- a/subworkflows/local/input_check.nf +++ b/subworkflows/local/input_check.nf @@ -45,6 +45,7 @@ def create_fastq_channel(LinkedHashMap row) { meta.run_accession = row.run_accession meta.instrument_platform = row.instrument_platform meta.single_end = row.single_end.toBoolean() + meta.is_fasta = false // add path(s) of the fastq file(s) to the meta map def fastq_meta = [] @@ -75,6 +76,7 @@ def create_fasta_channel(LinkedHashMap row) { meta.run_accession = row.run_accession meta.instrument_platform = row.instrument_platform meta.single_end = true + meta.is_fasta = true def array = [] if (!file(row.fasta).exists()) { diff --git a/subworkflows/local/profiling.nf b/subworkflows/local/profiling.nf index 18de739..f2f7eb7 100644 --- a/subworkflows/local/profiling.nf +++ b/subworkflows/local/profiling.nf @@ -75,6 +75,10 @@ workflow PROFILING { } ch_input_for_centrifuge = ch_input_for_profiling.centrifuge + .filter{ + if (it[0].is_fasta) log.warn "[nf-core/taxprofiler] Centrifuge does not accept FASTA files as input. Skipping Centrifuge for sample " + it[0].id + !it[0].is_fasta + } .multiMap { it -> reads: [ it[0] + it[2], it[1] ] @@ -82,6 +86,10 @@ workflow PROFILING { } ch_input_for_metaphlan3 = ch_input_for_profiling.metaphlan3 + .filter{ + if (it[0].is_fasta) log.warn "[nf-core/taxprofiler] MetaPhlAn3 does not accept FASTA files as input. Skipping MetaPhlAn3 for sample " + it[0].id + !it[0].is_fasta + } .multiMap { it -> reads: [it[0] + it[2], it[1]] diff --git a/workflows/taxprofiler.nf b/workflows/taxprofiler.nf index 9fe8cc8..e7ff78b 100644 --- a/workflows/taxprofiler.nf +++ b/workflows/taxprofiler.nf @@ -19,11 +19,11 @@ for (param in checkPathParamList) { if (param) { file(param, checkIfExists: true // Check mandatory parameters if (params.input ) { ch_input = file(params.input) } else { exit 1, 'Input samplesheet not specified!' } if (params.databases) { ch_databases = file(params.databases) } else { exit 1, 'Input database sheet not specified!' } -if (params.shortread_clipmerge_mergepairs && params.run_malt ) log.warn "[nf-core/taxprofiler] warning: MALT does not accept uncollapsed paired-reads. Pairs will be profiled as separate files." -if (params.shortread_clipmerge_excludeunmerged && !params.shortread_clipmerge_mergepairs) exit 1, "[nf-core/taxprofiler] error: cannot include unmerged reads when merging not turned on. Please specify --shortread_clipmerge_mergepairs" +if (params.shortread_clipmerge_mergepairs && params.run_malt ) log.warn "[nf-core/taxprofiler]: MALT does not accept uncollapsed paired-reads. Pairs will be profiled as separate files." +if (params.shortread_clipmerge_excludeunmerged && !params.shortread_clipmerge_mergepairs) exit 1, "ERROR: [nf-core/taxprofiler] cannot include unmerged reads when merging not turned on. Please specify --shortread_clipmerge_mergepairs" -if (params.perform_shortread_hostremoval && !params.shortread_hostremoval_reference) { exit 1, "[nf-core/taxprofiler] error: --shortread_hostremoval requested but no --shortread_hostremoval_reference FASTA supplied. Check input." } -if (!params.shortread_hostremoval_reference && params.shortread_hostremoval_reference_index) { exit 1, "[nf-core/taxprofiler] error: --shortread_hostremoval_index provided but no --shortread_hostremoval_reference FASTA supplied. Check input." } +if (params.perform_shortread_hostremoval && !params.shortread_hostremoval_reference) { exit 1, "ERROR: [nf-core/taxprofiler] --shortread_hostremoval requested but no --shortread_hostremoval_reference FASTA supplied. Check input." } +if (!params.shortread_hostremoval_reference && params.shortread_hostremoval_reference_index) { exit 1, "ERROR: [nf-core/taxprofiler] --shortread_hostremoval_index provided but no --shortread_hostremoval_reference FASTA supplied. Check input." } if (params.shortread_hostremoval_reference ) { ch_reference = file(params.shortread_hostremoval_reference) } if (params.shortread_hostremoval_index ) { ch_reference_index = file(params.shortread_hostremoval_index ) } else { ch_reference_index = [] } @@ -175,10 +175,11 @@ workflow TAXPROFILER { meta, reads -> [ meta, [ reads ].flatten() ] } - + .mix( INPUT_CHECK.out.fasta ) } else { ch_reads_runmerged = ch_shortreads_hostremoved .mix( ch_longreads_preprocessed ) + .mix( INPUT_CHECK.out.fasta ) } /* From 491c2d894967f76481b566758c40be369b448603 Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Mon, 18 Apr 2022 07:26:15 +0200 Subject: [PATCH 164/789] Revert "Adds filtering and warning for non-FASTA supporting tool. Standardised warning messages." This reverts commit 564474cafeb77ed1e39d127ed4a08667a4522878. --- subworkflows/local/input_check.nf | 2 -- subworkflows/local/profiling.nf | 8 -------- workflows/taxprofiler.nf | 11 +++++------ 3 files changed, 5 insertions(+), 16 deletions(-) diff --git a/subworkflows/local/input_check.nf b/subworkflows/local/input_check.nf index eb21b9d..db46f2b 100644 --- a/subworkflows/local/input_check.nf +++ b/subworkflows/local/input_check.nf @@ -45,7 +45,6 @@ def create_fastq_channel(LinkedHashMap row) { meta.run_accession = row.run_accession meta.instrument_platform = row.instrument_platform meta.single_end = row.single_end.toBoolean() - meta.is_fasta = false // add path(s) of the fastq file(s) to the meta map def fastq_meta = [] @@ -76,7 +75,6 @@ def create_fasta_channel(LinkedHashMap row) { meta.run_accession = row.run_accession meta.instrument_platform = row.instrument_platform meta.single_end = true - meta.is_fasta = true def array = [] if (!file(row.fasta).exists()) { diff --git a/subworkflows/local/profiling.nf b/subworkflows/local/profiling.nf index f2f7eb7..18de739 100644 --- a/subworkflows/local/profiling.nf +++ b/subworkflows/local/profiling.nf @@ -75,10 +75,6 @@ workflow PROFILING { } ch_input_for_centrifuge = ch_input_for_profiling.centrifuge - .filter{ - if (it[0].is_fasta) log.warn "[nf-core/taxprofiler] Centrifuge does not accept FASTA files as input. Skipping Centrifuge for sample " + it[0].id - !it[0].is_fasta - } .multiMap { it -> reads: [ it[0] + it[2], it[1] ] @@ -86,10 +82,6 @@ workflow PROFILING { } ch_input_for_metaphlan3 = ch_input_for_profiling.metaphlan3 - .filter{ - if (it[0].is_fasta) log.warn "[nf-core/taxprofiler] MetaPhlAn3 does not accept FASTA files as input. Skipping MetaPhlAn3 for sample " + it[0].id - !it[0].is_fasta - } .multiMap { it -> reads: [it[0] + it[2], it[1]] diff --git a/workflows/taxprofiler.nf b/workflows/taxprofiler.nf index e7ff78b..9fe8cc8 100644 --- a/workflows/taxprofiler.nf +++ b/workflows/taxprofiler.nf @@ -19,11 +19,11 @@ for (param in checkPathParamList) { if (param) { file(param, checkIfExists: true // Check mandatory parameters if (params.input ) { ch_input = file(params.input) } else { exit 1, 'Input samplesheet not specified!' } if (params.databases) { ch_databases = file(params.databases) } else { exit 1, 'Input database sheet not specified!' } -if (params.shortread_clipmerge_mergepairs && params.run_malt ) log.warn "[nf-core/taxprofiler]: MALT does not accept uncollapsed paired-reads. Pairs will be profiled as separate files." -if (params.shortread_clipmerge_excludeunmerged && !params.shortread_clipmerge_mergepairs) exit 1, "ERROR: [nf-core/taxprofiler] cannot include unmerged reads when merging not turned on. Please specify --shortread_clipmerge_mergepairs" +if (params.shortread_clipmerge_mergepairs && params.run_malt ) log.warn "[nf-core/taxprofiler] warning: MALT does not accept uncollapsed paired-reads. Pairs will be profiled as separate files." +if (params.shortread_clipmerge_excludeunmerged && !params.shortread_clipmerge_mergepairs) exit 1, "[nf-core/taxprofiler] error: cannot include unmerged reads when merging not turned on. Please specify --shortread_clipmerge_mergepairs" -if (params.perform_shortread_hostremoval && !params.shortread_hostremoval_reference) { exit 1, "ERROR: [nf-core/taxprofiler] --shortread_hostremoval requested but no --shortread_hostremoval_reference FASTA supplied. Check input." } -if (!params.shortread_hostremoval_reference && params.shortread_hostremoval_reference_index) { exit 1, "ERROR: [nf-core/taxprofiler] --shortread_hostremoval_index provided but no --shortread_hostremoval_reference FASTA supplied. Check input." } +if (params.perform_shortread_hostremoval && !params.shortread_hostremoval_reference) { exit 1, "[nf-core/taxprofiler] error: --shortread_hostremoval requested but no --shortread_hostremoval_reference FASTA supplied. Check input." } +if (!params.shortread_hostremoval_reference && params.shortread_hostremoval_reference_index) { exit 1, "[nf-core/taxprofiler] error: --shortread_hostremoval_index provided but no --shortread_hostremoval_reference FASTA supplied. Check input." } if (params.shortread_hostremoval_reference ) { ch_reference = file(params.shortread_hostremoval_reference) } if (params.shortread_hostremoval_index ) { ch_reference_index = file(params.shortread_hostremoval_index ) } else { ch_reference_index = [] } @@ -175,11 +175,10 @@ workflow TAXPROFILER { meta, reads -> [ meta, [ reads ].flatten() ] } - .mix( INPUT_CHECK.out.fasta ) + } else { ch_reads_runmerged = ch_shortreads_hostremoved .mix( ch_longreads_preprocessed ) - .mix( INPUT_CHECK.out.fasta ) } /* From 6307a9cf4342a05fdc6cb2a127527a66d3993155 Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Mon, 18 Apr 2022 07:28:09 +0200 Subject: [PATCH 165/789] Typos --- subworkflows/local/profiling.nf | 2 +- workflows/taxprofiler.nf | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/subworkflows/local/profiling.nf b/subworkflows/local/profiling.nf index f2f7eb7..156259b 100644 --- a/subworkflows/local/profiling.nf +++ b/subworkflows/local/profiling.nf @@ -76,7 +76,7 @@ workflow PROFILING { ch_input_for_centrifuge = ch_input_for_profiling.centrifuge .filter{ - if (it[0].is_fasta) log.warn "[nf-core/taxprofiler] Centrifuge does not accept FASTA files as input. Skipping Centrifuge for sample " + it[0].id + if (it[0].is_fasta) log.warn "[nf-core/taxprofiler] Centrifuge currently does not accept FASTA files as input. Skipping Centrifuge for sample " + it[0].id !it[0].is_fasta } .multiMap { diff --git a/workflows/taxprofiler.nf b/workflows/taxprofiler.nf index e7ff78b..884ee46 100644 --- a/workflows/taxprofiler.nf +++ b/workflows/taxprofiler.nf @@ -19,7 +19,7 @@ for (param in checkPathParamList) { if (param) { file(param, checkIfExists: true // Check mandatory parameters if (params.input ) { ch_input = file(params.input) } else { exit 1, 'Input samplesheet not specified!' } if (params.databases) { ch_databases = file(params.databases) } else { exit 1, 'Input database sheet not specified!' } -if (params.shortread_clipmerge_mergepairs && params.run_malt ) log.warn "[nf-core/taxprofiler]: MALT does not accept uncollapsed paired-reads. Pairs will be profiled as separate files." +if (params.shortread_clipmerge_mergepairs && params.run_malt ) log.warn "[nf-core/taxprofiler] MALT does not accept uncollapsed paired-reads. Pairs will be profiled as separate files." if (params.shortread_clipmerge_excludeunmerged && !params.shortread_clipmerge_mergepairs) exit 1, "ERROR: [nf-core/taxprofiler] cannot include unmerged reads when merging not turned on. Please specify --shortread_clipmerge_mergepairs" if (params.perform_shortread_hostremoval && !params.shortread_hostremoval_reference) { exit 1, "ERROR: [nf-core/taxprofiler] --shortread_hostremoval requested but no --shortread_hostremoval_reference FASTA supplied. Check input." } From 9f634805e402c99bd906c523fdbba3350f4086e4 Mon Sep 17 00:00:00 2001 From: "James A. Fellows Yates" Date: Mon, 18 Apr 2022 07:31:44 +0200 Subject: [PATCH 166/789] Update subworkflows/local/profiling.nf --- subworkflows/local/profiling.nf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/subworkflows/local/profiling.nf b/subworkflows/local/profiling.nf index 4e0a3a9..659430f 100644 --- a/subworkflows/local/profiling.nf +++ b/subworkflows/local/profiling.nf @@ -87,7 +87,7 @@ workflow PROFILING { ch_input_for_metaphlan3 = ch_input_for_profiling.metaphlan3 .filter{ - if (it[0].is_fasta) log.warn "[nf-core/taxprofiler] Centrifuge currently does not accept FASTA files as input. Skipping Centrifuge for sample " + it[0].id + if (it[0].is_fasta) log.warn "[nf-core/taxprofiler] MetaPhlAn3 currently does not accept FASTA files as input. Skipping MetaPhlAn3 for sample " + it[0].id !it[0].is_fasta } .multiMap { From ecaff371aa8047b1fea25f8b42fa7df1fc58e93b Mon Sep 17 00:00:00 2001 From: "James A. Fellows Yates" Date: Mon, 18 Apr 2022 07:35:19 +0200 Subject: [PATCH 167/789] Update input_check.nf --- subworkflows/local/input_check.nf | 2 ++ 1 file changed, 2 insertions(+) diff --git a/subworkflows/local/input_check.nf b/subworkflows/local/input_check.nf index db46f2b..eb21b9d 100644 --- a/subworkflows/local/input_check.nf +++ b/subworkflows/local/input_check.nf @@ -45,6 +45,7 @@ def create_fastq_channel(LinkedHashMap row) { meta.run_accession = row.run_accession meta.instrument_platform = row.instrument_platform meta.single_end = row.single_end.toBoolean() + meta.is_fasta = false // add path(s) of the fastq file(s) to the meta map def fastq_meta = [] @@ -75,6 +76,7 @@ def create_fasta_channel(LinkedHashMap row) { meta.run_accession = row.run_accession meta.instrument_platform = row.instrument_platform meta.single_end = true + meta.is_fasta = true def array = [] if (!file(row.fasta).exists()) { From 87777a428959bc89f4f6cfda956c43312d4b6d16 Mon Sep 17 00:00:00 2001 From: "James A. Fellows Yates" Date: Tue, 19 Apr 2022 12:54:57 +0200 Subject: [PATCH 168/789] Update subworkflows/local/profiling.nf Co-authored-by: Moritz E. Beber --- subworkflows/local/profiling.nf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/subworkflows/local/profiling.nf b/subworkflows/local/profiling.nf index d7532b7..5f9c111 100644 --- a/subworkflows/local/profiling.nf +++ b/subworkflows/local/profiling.nf @@ -106,7 +106,7 @@ workflow PROFILING { // when no pair-merging def meta_new = meta.clone() meta_new['db_name'] = meta.id - meta_new['id'] = rma.name - ( '.' + rma.extension ) + meta_new['id'] = rma.baseName [ meta_new, rma ] } From 1b7ff2265d146577c840399fcb167d032f98c88d Mon Sep 17 00:00:00 2001 From: sofstam Date: Tue, 19 Apr 2022 13:04:58 +0200 Subject: [PATCH 169/789] Update usage.md, reformat test.config and modules.config --- conf/modules.config | 4 ++-- conf/test.config | 8 ++++---- docs/usage.md | 5 +++++ 3 files changed, 11 insertions(+), 6 deletions(-) diff --git a/conf/modules.config b/conf/modules.config index f85df30..d9e9125 100644 --- a/conf/modules.config +++ b/conf/modules.config @@ -226,7 +226,7 @@ process { pattern: '*.txt' ] ext.args = { "${meta.db_params}" } - ext.prefix = { "${meta.id}-${meta.run_accession}-${meta.db_name}" } + ext.prefix = params.perform_runmerging ? { "${meta.id}-${meta.db_name}" } : { "${meta.id}-${meta.run_accession}-${meta.db_name}" } } withName: CUSTOM_DUMPSOFTWAREVERSIONS { @@ -252,6 +252,6 @@ process { pattern: '*.tsv' ] ext.args = { "${meta.db_params}" } - ext.prefix = { "${meta.id}-${meta.run_accession}-${meta.db_name}" } + ext.prefix = params.perform_runmerging ? { "${meta.id}-${meta.db_name}" } : { "${meta.id}-${meta.run_accession}-${meta.db_name}" } } } diff --git a/conf/test.config b/conf/test.config index 884ff32..107beb5 100644 --- a/conf/test.config +++ b/conf/test.config @@ -24,14 +24,14 @@ params { // TODO nf-core: Give any required params for the test so that command line flags are not needed input = 'https://raw.githubusercontent.com/nf-core/test-datasets/taxprofiler/samplesheet.csv' databases = 'https://raw.githubusercontent.com/nf-core/test-datasets/taxprofiler/database.csv' - run_kraken2 = true - run_malt = true - run_metaphlan3 = true - run_centrifuge = true perform_shortread_clipmerge = true perform_longread_clip = false perform_shortread_complexityfilter = true perform_shortread_hostremoval = true shortread_hostremoval_reference = 'https://raw.githubusercontent.com/nf-core/test-datasets/modules/data/genomics/homo_sapiens/genome/genome.fasta' run_kaiju = true + run_kraken2 = true + run_malt = true + run_metaphlan3 = true + run_centrifuge = true } diff --git a/docs/usage.md b/docs/usage.md index 239a55d..2b6937b 100644 --- a/docs/usage.md +++ b/docs/usage.md @@ -86,6 +86,11 @@ Column specifications are as follows: > 💡 You can also specify the same database directory/file twice (ensuring unique `db_name`s) and specify different parameters for each database to compare the effect of different parameters during profiling. +## Profilers + +- `kaiju` + - The file `nodes.dmp` must be inside the database directory that is specified to `--databases` file + ## Running the pipeline The typical command for running the pipeline is as follows: From 4e1b1269be42b3547678ac1ec2905401b8e47ab0 Mon Sep 17 00:00:00 2001 From: Sofia Stamouli Date: Tue, 19 Apr 2022 13:11:43 +0200 Subject: [PATCH 170/789] Apply prettier --- nextflow_schema.json | 24 ++++-------------------- 1 file changed, 4 insertions(+), 20 deletions(-) diff --git a/nextflow_schema.json b/nextflow_schema.json index 5fe371d..12c0bac 100644 --- a/nextflow_schema.json +++ b/nextflow_schema.json @@ -10,10 +10,7 @@ "type": "object", "fa_icon": "fas fa-terminal", "description": "Define where the pipeline should find input data and save output data.", - "required": [ - "input", - "outdir" - ], + "required": ["input", "outdir"], "properties": { "input": { "type": "string", @@ -176,14 +173,7 @@ "description": "Method used to save pipeline results to output directory.", "help_text": "The Nextflow `publishDir` option specifies which intermediate files should be saved to the output directory. This option tells the pipeline what method should be used to move these files. See [Nextflow docs](https://www.nextflow.io/docs/latest/process.html#publishdir) for details.", "fa_icon": "fas fa-copy", - "enum": [ - "symlink", - "rellink", - "link", - "copy", - "copyNoFollow", - "move" - ], + "enum": ["symlink", "rellink", "link", "copy", "copyNoFollow", "move"], "hidden": true }, "email_on_fail": { @@ -304,10 +294,7 @@ "shortread_clipmerge_tool": { "type": "string", "default": "fastp", - "enum": [ - "fastp", - "adapterremoval" - ] + "enum": ["fastp", "adapterremoval"] }, "shortread_clipmerge_skipadaptertrim": { "type": "boolean" @@ -348,10 +335,7 @@ "shortread_complexityfilter_prinseqplusplus_mode": { "type": "string", "default": "entropy", - "enum": [ - "entropy", - "dust" - ] + "enum": ["entropy", "dust"] }, "shortread_complexityfilter_prinseqplusplus_dustscore": { "type": "number", From b7d0557ee08ff0aac70fc84f4c36bb6c881ddcc9 Mon Sep 17 00:00:00 2001 From: "James A. Fellows Yates" Date: Wed, 20 Apr 2022 09:15:45 +0200 Subject: [PATCH 171/789] Update subworkflows/local/profiling.nf Co-authored-by: Moritz E. Beber --- subworkflows/local/profiling.nf | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/subworkflows/local/profiling.nf b/subworkflows/local/profiling.nf index 659430f..1968741 100644 --- a/subworkflows/local/profiling.nf +++ b/subworkflows/local/profiling.nf @@ -76,7 +76,9 @@ workflow PROFILING { ch_input_for_centrifuge = ch_input_for_profiling.centrifuge .filter{ - if (it[0].is_fasta) log.warn "[nf-core/taxprofiler] Centrifuge currently does not accept FASTA files as input. Skipping Centrifuge for sample " + it[0].id + if (it[0].is_fasta) { + WorkflowTaxprofiler.logMessage("Centrifuge currently does not accept FASTA files as input. Skipping Centrifuge for sample ${it[0].id}.", log) + } !it[0].is_fasta } .multiMap { From ac714dd30f758a0f419ad4155b296cdba5e8a80a Mon Sep 17 00:00:00 2001 From: "James A. Fellows Yates" Date: Wed, 20 Apr 2022 09:22:10 +0200 Subject: [PATCH 172/789] Apply suggestions from code review Co-authored-by: Moritz E. Beber --- docs/usage.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/docs/usage.md b/docs/usage.md index 919569c..f4f11fb 100644 --- a/docs/usage.md +++ b/docs/usage.md @@ -10,7 +10,7 @@ ## Samplesheet inputs -nf-core/profiler can accept as input raw or preprocessed single- or paired-end short-read (e.g. Illumina) FASTQ files, long-read FASTQ files (e.g. Oxford Nanopore), or FASTA sequences (when accepted by a profiler). +nf-core/taxprofiler can accept as input raw or preprocessed single- or paired-end short-read (e.g. Illumina) FASTQ files, long-read FASTQ files (e.g. Oxford Nanopore), or FASTA sequences (available for a subset of profilers). You will need to create a samplesheet with information about the samples you would like to analyse before running the pipeline. Use this parameter to specify its location. It has to be a comma-separated file with 6 columns, and a header row as shown in the examples below. Furthermother, nf-core/taxprofiler also requires a second comma-separated file of 3 columns with a header row as in the examples below. @@ -62,8 +62,8 @@ An [example samplesheet](../assets/samplesheet.csv) has been provided with the p ### Full database sheet nf-core/taxprofiler supports multiple databases being profiled in parallel for each tool. -Databases can be supplied either be in the form of a compressed `.tar.gz` archive of a folder containing all relevant database files or the path to an (uncompressed) directory. -The pipelines takes the locations these of databases as input, and specific parameters for each, via a 4 column comma-separated sheet. +Databases can be supplied either in the form of a compressed `.tar.gz` archive of a directory containing all relevant database files or the path to a directory on the filesystem. +The pipeline takes the locations and specific parameters of these databases as input via a four column comma-separated sheet. > ⚠️ nf-core/taxprofiler does not provide any databases by default, nor does it currently generate them for you. This must be performed manually by the user. See below for more information of the expected database files. @@ -163,7 +163,7 @@ There are currently two options for short-read preprocessing: `fastp` or `adapte For adapter clipping, you can either rely on tool default adapter sequences, or supply your own adapters (`--shortread_clipmerge_adapter1` and `--shortread_clipmerge_adapter2`) By default, paired-end merging is not activated and paired-end profiling is performed where supported otherwise pairs will be independently profiled. If paired-end merging is activated you can also specify whether to exclude unmerged reads in the reads sent for profiling (`--shortread_clipmerge_mergepairs` and `--shortread_clipmerge_excludeunmerged`). -You can also turn off clipping and only perform paired-end merging, if requested. This can be useful when processing data downloaded from the ENA, SRA, or DDBJ (--shortread_clipmerge_skipadaptertrim). +You can also turn off clipping and only perform paired-end merging, if requested. This can be useful when processing data downloaded from the ENA, SRA, or DDBJ (`--shortread_clipmerge_skipadaptertrim`). Both tools support length filtering of reads and can be tuned with `--shortread_clipmerge_minlength`. Performing length filtering can be useful to remove short (often low sequencing complexity) sequences that result in unspecific classification and therefore slow down runtime during profiling, with minimal gain. There is currently one option for long-read Oxford Nanopore processing: `porechop`. @@ -174,7 +174,7 @@ For both short-read and long-read preprocessing, you can optionally save the res Complexity filtering can be activated via the `--perform_shortread_complexityfilter` flag. -Complexity filtering is primarily a run-time optimisation step. It is not necessary for accurate taxonomic profiling, however it can speed up run-time of each tool by removing reads with low-diversity of nucleotides (e.g. with mono-nucleotide - `AAAAAAAA`, or di-nucleotide repeats `GAGAGAGAGAGAGAG`) that have a low-chance of giving an informatic taxonomic ID as they can be associated with many different taxa. Removing these reads therefore saves computational time and resources. +Complexity filtering is primarily a run-time optimisation step. It is not necessary for accurate taxonomic profiling, however it can speed up run-time of each tool by removing reads with low-diversity of nucleotides (e.g. with mono-nucleotide - `AAAAAAAA`, or di-nucleotide repeats `GAGAGAGAGAGAGAG`) that have a low-chance of giving an informative taxonomic ID as they can be associated with many different taxa. Removing these reads therefore saves computational time and resources. There are currently two options for short-read complexity filtering: [`bbduk`](https://jgi.doe.gov/data-and-tools/software-tools/bbtools/bb-tools-user-guide/bbduk-guide/) and [`prinseq++`](https://jgi.doe.gov/data-and-tools/software-tools/bbtools/bb-tools-user-guide/bbduk-guide/). @@ -200,7 +200,7 @@ For samples that may have been sequenced over multiple runs, or for FASTQ files For more information how to set up your input samplesheet, see [Multiple runs of the same sample](#multiple-runs-of-the-same-sample). -Activating this functionality will concatenate togther the FASTQ files with the same sample name _after_ the optional preprocessing steps and prior profiling. Note that libraries with runs of different pairment types will **not** the different types merged together, and output files will indicate with a `_se` or `_pe` suffix to the sample name accordingly. +Activating this functionality will concatenate the FASTQ files with the same sample name _after_ the optional preprocessing steps and _before_ profiling. Note that libraries with runs of different pairing types will **not** be merged and this will be indicated on output files with a `_se` or `_pe` suffix to the sample name accordingly. You can optionally save the FASTQ output of the run merging with the `--save_runmerged_reads`. From 60d232d62ce42f77df45ceaf71a04751960cbf7d Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Wed, 20 Apr 2022 09:23:38 +0200 Subject: [PATCH 173/789] Revert "Update subworkflows/local/profiling.nf" This reverts commit b7d0557ee08ff0aac70fc84f4c36bb6c881ddcc9. --- subworkflows/local/profiling.nf | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/subworkflows/local/profiling.nf b/subworkflows/local/profiling.nf index 1968741..659430f 100644 --- a/subworkflows/local/profiling.nf +++ b/subworkflows/local/profiling.nf @@ -76,9 +76,7 @@ workflow PROFILING { ch_input_for_centrifuge = ch_input_for_profiling.centrifuge .filter{ - if (it[0].is_fasta) { - WorkflowTaxprofiler.logMessage("Centrifuge currently does not accept FASTA files as input. Skipping Centrifuge for sample ${it[0].id}.", log) - } + if (it[0].is_fasta) log.warn "[nf-core/taxprofiler] Centrifuge currently does not accept FASTA files as input. Skipping Centrifuge for sample " + it[0].id !it[0].is_fasta } .multiMap { From 9fd94b13892018963ed387e8f425e295af5e4d61 Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Wed, 20 Apr 2022 09:25:54 +0200 Subject: [PATCH 174/789] Switch to string interpolation --- subworkflows/local/profiling.nf | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/subworkflows/local/profiling.nf b/subworkflows/local/profiling.nf index 659430f..87bea1a 100644 --- a/subworkflows/local/profiling.nf +++ b/subworkflows/local/profiling.nf @@ -76,18 +76,18 @@ workflow PROFILING { ch_input_for_centrifuge = ch_input_for_profiling.centrifuge .filter{ - if (it[0].is_fasta) log.warn "[nf-core/taxprofiler] Centrifuge currently does not accept FASTA files as input. Skipping Centrifuge for sample " + it[0].id - !it[0].is_fasta + if (it[0].is_fasta) log.warn "[nf-core/taxprofiler] Centrifuge currently does not accept FASTA files as input. Skipping Centrifuge for sample ${it[0].id}." + !it[0].is_fasta } .multiMap { it -> - reads: [ it[0] + it[2], it[1] ] - db: it[3] + reads: [ it[0] + it[2], it[1] ] + db: it[3] } ch_input_for_metaphlan3 = ch_input_for_profiling.metaphlan3 .filter{ - if (it[0].is_fasta) log.warn "[nf-core/taxprofiler] MetaPhlAn3 currently does not accept FASTA files as input. Skipping MetaPhlAn3 for sample " + it[0].id + if (it[0].is_fasta) log.warn "[nf-core/taxprofiler] MetaPhlAn3 currently does not accept FASTA files as input. Skipping MetaPhlAn3 for sample ${it[0].id}." !it[0].is_fasta } .multiMap { From d031322c16aca1c2a6dcd4103c17a097db3f136f Mon Sep 17 00:00:00 2001 From: "James A. Fellows Yates" Date: Wed, 20 Apr 2022 13:41:01 +0200 Subject: [PATCH 175/789] Update test.config --- conf/test.config | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/conf/test.config b/conf/test.config index 107beb5..0bd09ab 100644 --- a/conf/test.config +++ b/conf/test.config @@ -34,4 +34,10 @@ params { run_malt = true run_metaphlan3 = true run_centrifuge = true + } + +process { + withName: MALT_RUN { + maxForks = 1 + } } From d850333e11db1d1fb4807b15b94c9e8332a71cac Mon Sep 17 00:00:00 2001 From: "James A. Fellows Yates" Date: Wed, 20 Apr 2022 13:42:26 +0200 Subject: [PATCH 176/789] Linting --- conf/test.config | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/conf/test.config b/conf/test.config index 0bd09ab..ecf55bd 100644 --- a/conf/test.config +++ b/conf/test.config @@ -34,7 +34,7 @@ params { run_malt = true run_metaphlan3 = true run_centrifuge = true - } +} process { withName: MALT_RUN { From c00ca1c2b80a9032f66dd068c2f51cb42090a55d Mon Sep 17 00:00:00 2001 From: sofstam Date: Fri, 22 Apr 2022 15:24:10 +0200 Subject: [PATCH 177/789] Add centrifuge kreport in taxprofiler --- conf/modules.config | 10 +++++ modules.json | 11 +++-- .../modules/centrifuge/kreport/main.nf | 33 +++++++++++++++ .../modules/centrifuge/kreport/meta.yml | 41 +++++++++++++++++++ nextflow.config | 1 + nextflow_schema.json | 27 ++++++++++-- subworkflows/local/profiling.nf | 4 +- 7 files changed, 118 insertions(+), 9 deletions(-) create mode 100644 modules/nf-core/modules/centrifuge/kreport/main.nf create mode 100644 modules/nf-core/modules/centrifuge/kreport/meta.yml diff --git a/conf/modules.config b/conf/modules.config index 5b9a815..19cfef7 100644 --- a/conf/modules.config +++ b/conf/modules.config @@ -254,6 +254,16 @@ process { ext.prefix = params.perform_runmerging ? { "${meta.id}-${meta.db_name}" } : { "${meta.id}-${meta.run_accession}-${meta.db_name}" } } + withName: CENTRIFUGE_KREPORT { + ext.args = { "${meta.db_params}" } + ext.prefix = { "${meta.id}" } + publishDir = [ + path: { "${params.outdir}/centrifuge/${meta.db_name}" }, + mode: params.publish_dir_mode, + pattern: '*.{txt}' + ] + } + withName: CUSTOM_DUMPSOFTWAREVERSIONS { publishDir = [ path: { "${params.outdir}/pipeline_info" }, diff --git a/modules.json b/modules.json index d6be2da..6fc4f51 100644 --- a/modules.json +++ b/modules.json @@ -21,6 +21,9 @@ "centrifuge/centrifuge": { "git_sha": "d2726fcf75063960f06b36d2229a4c0966614108" }, + "centrifuge/kreport": { + "git_sha": "be4ae28c3c95b3c4047a7d9fb4cb0ed749631cea" + }, "custom/dumpsoftwareversions": { "git_sha": "e745e167c1020928ef20ea1397b6b4d230681b4d" }, @@ -30,6 +33,9 @@ "fastqc": { "git_sha": "e745e167c1020928ef20ea1397b6b4d230681b4d" }, + "kaiju/kaiju": { + "git_sha": "8856f127c58f6af479128be8b8df4d42e442ddbe" + }, "kraken2/kraken2": { "git_sha": "e745e167c1020928ef20ea1397b6b4d230681b4d" }, @@ -53,10 +59,7 @@ }, "untar": { "git_sha": "e080f4c8acf5760039ed12ec1f206170f3f9a918" - }, - "kaiju/kaiju": { - "git_sha": "8856f127c58f6af479128be8b8df4d42e442ddbe" } } } -} +} \ No newline at end of file diff --git a/modules/nf-core/modules/centrifuge/kreport/main.nf b/modules/nf-core/modules/centrifuge/kreport/main.nf new file mode 100644 index 0000000..124cbdb --- /dev/null +++ b/modules/nf-core/modules/centrifuge/kreport/main.nf @@ -0,0 +1,33 @@ +process CENTRIFUGE_KREPORT { + tag "$meta.id" + label 'process_low' + + conda (params.enable_conda ? "bioconda::centrifuge=1.0.4_beta" : null) + container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? + 'https://depot.galaxyproject.org/singularity/centrifuge:1.0.4_beta--h9a82719_6': + 'quay.io/biocontainers/centrifuge:1.0.4_beta--h9a82719_6' }" + + input: + tuple val(meta), path(results) + path db + + output: + tuple val(meta), path('*.txt') , emit: kreport + path "versions.yml" , emit: versions + + when: + task.ext.when == null || task.ext.when + + script: + def args = task.ext.args ?: '' + def prefix = task.ext.prefix ?: "${meta.id}" + """ + db_name=`find -L ${db} -name "*.1.cf" -not -name "._*" | sed 's/.1.cf//'` + centrifuge-kreport -x \$db_name ${results} > ${prefix}.txt + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + centrifuge: \$( centrifuge --version | sed -n 1p | sed 's/^.*centrifuge-class version //') + END_VERSIONS + """ +} diff --git a/modules/nf-core/modules/centrifuge/kreport/meta.yml b/modules/nf-core/modules/centrifuge/kreport/meta.yml new file mode 100644 index 0000000..fbcae24 --- /dev/null +++ b/modules/nf-core/modules/centrifuge/kreport/meta.yml @@ -0,0 +1,41 @@ +name: "centrifuge_kreport" +description: Creates Kraken-style reports from centrifuge out files +keywords: + - metagenomics +tools: + - centrifuge: + description: Centrifuge is a classifier for metagenomic sequences. + homepage: https://ccb.jhu.edu/software/centrifuge/ + documentation: https://ccb.jhu.edu/software/centrifuge/manual.shtml + doi: 10.1101/gr.210641.116 + licence: ["GPL v3"] +input: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - results: + type: file + description: File containing the centrifuge classification results + pattern: "*.{txt}" + +output: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - versions: + type: file + description: File containing software versions + pattern: "versions.yml" + - kreport: + type: file + description: | + File containing kraken-style report from centrifuge + out files. + pattern: "*.{txt}" +authors: + - "@sofstam" + - "@jfy133" diff --git a/nextflow.config b/nextflow.config index 43aaae8..61b4905 100644 --- a/nextflow.config +++ b/nextflow.config @@ -98,6 +98,7 @@ params { // centrifuge run_centrifuge = false + centrifuge_kreport = false centrifuge_save_unaligned = false centrifuge_save_aligned = false centrifuge_sam_format = false diff --git a/nextflow_schema.json b/nextflow_schema.json index 2181cce..f5822db 100644 --- a/nextflow_schema.json +++ b/nextflow_schema.json @@ -10,7 +10,10 @@ "type": "object", "fa_icon": "fas fa-terminal", "description": "Define where the pipeline should find input data and save output data.", - "required": ["input", "outdir"], + "required": [ + "input", + "outdir" + ], "properties": { "input": { "type": "string", @@ -173,7 +176,14 @@ "description": "Method used to save pipeline results to output directory.", "help_text": "The Nextflow `publishDir` option specifies which intermediate files should be saved to the output directory. This option tells the pipeline what method should be used to move these files. See [Nextflow docs](https://www.nextflow.io/docs/latest/process.html#publishdir) for details.", "fa_icon": "fas fa-copy", - "enum": ["symlink", "rellink", "link", "copy", "copyNoFollow", "move"], + "enum": [ + "symlink", + "rellink", + "link", + "copy", + "copyNoFollow", + "move" + ], "hidden": true }, "email_on_fail": { @@ -294,7 +304,10 @@ "shortread_clipmerge_tool": { "type": "string", "default": "fastp", - "enum": ["fastp", "adapterremoval"] + "enum": [ + "fastp", + "adapterremoval" + ] }, "shortread_clipmerge_skipadaptertrim": { "type": "boolean" @@ -335,7 +348,10 @@ "shortread_complexityfilter_prinseqplusplus_mode": { "type": "string", "default": "entropy", - "enum": ["entropy", "dust"] + "enum": [ + "entropy", + "dust" + ] }, "shortread_complexityfilter_prinseqplusplus_dustscore": { "type": "number", @@ -384,6 +400,9 @@ }, "malt_generatemegansummary": { "type": "boolean" + }, + "centrifuge_kreport": { + "type": "boolean" } } } diff --git a/subworkflows/local/profiling.nf b/subworkflows/local/profiling.nf index 8d19bfe..1369f4c 100644 --- a/subworkflows/local/profiling.nf +++ b/subworkflows/local/profiling.nf @@ -6,6 +6,7 @@ include { MALT_RUN } from '../../modules/nf-core/modules/malt include { MEGAN_RMA2INFO } from '../../modules/nf-core/modules/megan/rma2info/main' include { KRAKEN2_KRAKEN2 } from '../../modules/nf-core/modules/kraken2/kraken2/main' include { CENTRIFUGE_CENTRIFUGE } from '../../modules/nf-core/modules/centrifuge/centrifuge/main' +include { CENTRIFUGE_KREPORT } from '../../modules/nf-core/modules/centrifuge/kreport/main' include { METAPHLAN3 } from '../../modules/nf-core/modules/metaphlan3/main' include { KAIJU_KAIJU } from '../../modules/nf-core/modules/kaiju/kaiju/main' @@ -142,8 +143,9 @@ workflow PROFILING { if ( params.run_centrifuge ) { CENTRIFUGE_CENTRIFUGE ( ch_input_for_centrifuge.reads, ch_input_for_centrifuge.db, params.centrifuge_save_unaligned, params.centrifuge_save_aligned, params.centrifuge_sam_format ) + CENTRIFUGE_KREPORT (CENTRIFUGE_CENTRIFUGE.out.results, ch_input_for_centrifuge.db) ch_versions = ch_versions.mix( CENTRIFUGE_CENTRIFUGE.out.versions.first() ) - ch_raw_profiles = ch_raw_profiles.mix( CENTRIFUGE_CENTRIFUGE.out.report ) + ch_raw_profiles = ch_raw_profiles.mix( CENTRIFUGE_KREPORT.out.kreport ) } if ( params.run_metaphlan3 ) { From cda12749181128267b721e1931018e1c67bbf1a6 Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Sat, 23 Apr 2022 06:47:59 +0200 Subject: [PATCH 178/789] Moves ordering of modules/subworkflow versions mixing to before custom_dumpsoftwareversions mix, otherwise not used in collectFile --- workflows/taxprofiler.nf | 22 +++++++++------------- 1 file changed, 9 insertions(+), 13 deletions(-) diff --git a/workflows/taxprofiler.nf b/workflows/taxprofiler.nf index 3ae1351..9981ca4 100644 --- a/workflows/taxprofiler.nf +++ b/workflows/taxprofiler.nf @@ -111,8 +111,8 @@ workflow TAXPROFILER { SUBWORKFLOW: PERFORM PREPROCESSING */ if ( params.perform_shortread_clipmerge ) { - ch_shortreads_preprocessed = SHORTREAD_PREPROCESSING ( INPUT_CHECK.out.fastq ).reads + ch_versions = ch_versions.mix( SHORTREAD_PREPROCESSING.out.versions ) } else { ch_shortreads_preprocessed = INPUT_CHECK.out.fastq } @@ -120,7 +120,7 @@ workflow TAXPROFILER { if ( params.perform_longread_clip ) { ch_longreads_preprocessed = LONGREAD_PREPROCESSING ( INPUT_CHECK.out.nanopore ).reads .map { it -> [ it[0], [it[1]] ] } - ch_versions = ch_versions.mix(LONGREAD_PREPROCESSING.out.versions.first()) + ch_versions = ch_versions.mix( LONGREAD_PREPROCESSING.out.versions ) } else { ch_longreads_preprocessed = INPUT_CHECK.out.nanopore } @@ -131,6 +131,7 @@ workflow TAXPROFILER { if ( params.perform_shortread_complexityfilter ) { ch_shortreads_filtered = SHORTREAD_COMPLEXITYFILTERING ( ch_shortreads_preprocessed ).reads + ch_versions = ch_versions.mix( SHORTREAD_COMPLEXITYFILTERING.out.versions ) } else { ch_shortreads_filtered = ch_shortreads_preprocessed } @@ -141,7 +142,7 @@ workflow TAXPROFILER { if ( params.perform_shortread_hostremoval ) { ch_shortreads_hostremoved = SHORTREAD_HOSTREMOVAL ( ch_shortreads_filtered, ch_reference, ch_reference_index ).reads - ch_versions = ch_versions.mix(SHORTREAD_HOSTREMOVAL.out.versions.first()) + ch_versions = ch_versions.mix(SHORTREAD_HOSTREMOVAL.out.versions) } else { ch_shortreads_hostremoved = ch_shortreads_filtered } @@ -177,6 +178,8 @@ workflow TAXPROFILER { } .mix( INPUT_CHECK.out.fasta ) + ch_versions = ch_versions.mix(CAT_FASTQ.out.versions) + } else { ch_reads_runmerged = ch_shortreads_hostremoved .mix( ch_longreads_preprocessed, INPUT_CHECK.out.fasta ) @@ -193,8 +196,10 @@ workflow TAXPROFILER { MODULE: MultiQC */ + ch_versions = ch_versions.mix(MULTIQC.out.versions) + CUSTOM_DUMPSOFTWAREVERSIONS ( - ch_versions.unique().collectFile(name: 'collated_versions.yml') + ch_versions.dump(tag: "software_versions_beforeuniqe").unique().dump(tag: "software_versions").collectFile(name: 'collated_versions.yml') ) @@ -210,26 +215,18 @@ workflow TAXPROFILER { if (params.perform_shortread_clipmerge) { ch_multiqc_files = ch_multiqc_files.mix( SHORTREAD_PREPROCESSING.out.mqc.collect{it[1]}.ifEmpty([]) ) - ch_versions = ch_versions.mix( SHORTREAD_PREPROCESSING.out.versions ) } if (params.perform_longread_clip) { ch_multiqc_files = ch_multiqc_files.mix( LONGREAD_PREPROCESSING.out.mqc.collect{it[1]}.ifEmpty([]) ) - ch_versions = ch_versions.mix( LONGREAD_PREPROCESSING.out.versions ) } if (params.perform_shortread_complexityfilter){ ch_multiqc_files = ch_multiqc_files.mix( SHORTREAD_COMPLEXITYFILTERING.out.mqc.collect{it[1]}.ifEmpty([]) ) - ch_versions = ch_versions.mix( SHORTREAD_COMPLEXITYFILTERING.out.versions ) } if (params.perform_shortread_hostremoval) { ch_multiqc_files = ch_multiqc_files.mix(SHORTREAD_HOSTREMOVAL.out.mqc.collect{it[1]}.ifEmpty([])) - ch_versions = ch_versions.mix(SHORTREAD_HOSTREMOVAL.out.versions) - } - - if (params.perform_runmerging){ - ch_versions = ch_versions.mix(CAT_FASTQ.out.versions) } ch_multiqc_files = ch_multiqc_files.mix( PROFILING.out.mqc ) @@ -239,7 +236,6 @@ workflow TAXPROFILER { ch_multiqc_files.collect() ) multiqc_report = MULTIQC.out.report.toList() - ch_versions = ch_versions.mix(MULTIQC.out.versions) } /* From 06b38f3699edd49d1d4a25e02196e012d9221dba Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Sat, 23 Apr 2022 08:36:01 +0200 Subject: [PATCH 179/789] Fix crash, add missing versions --- subworkflows/local/db_check.nf | 2 +- subworkflows/local/profiling.nf | 2 +- workflows/taxprofiler.nf | 5 ++--- 3 files changed, 4 insertions(+), 5 deletions(-) diff --git a/subworkflows/local/db_check.nf b/subworkflows/local/db_check.nf index a718fa9..f3464d5 100644 --- a/subworkflows/local/db_check.nf +++ b/subworkflows/local/db_check.nf @@ -34,7 +34,7 @@ workflow DB_CHECK { emit: dbs = ch_final_dbs // channel: [ val(meta), [ db ] ] - versions = DATABASE_CHECK.out.versions // channel: [ versions.yml ] + versions = DATABASE_CHECK.out.versions.mix(UNTAR.out.versions.first()) // channel: [ versions.yml ] } def create_db_channels(LinkedHashMap row) { diff --git a/subworkflows/local/profiling.nf b/subworkflows/local/profiling.nf index 8d19bfe..a5afaaf 100644 --- a/subworkflows/local/profiling.nf +++ b/subworkflows/local/profiling.nf @@ -129,7 +129,7 @@ workflow PROFILING { MEGAN_RMA2INFO (ch_maltrun_for_megan, params.malt_generatemegansummary ) ch_multiqc_files = ch_multiqc_files.mix( MALT_RUN.out.log.collect{it[1]}.ifEmpty([]) ) - ch_versions = ch_versions.mix( MALT_RUN.out.versions.first() ) + ch_versions = ch_versions.mix( MALT_RUN.out.versions.first(), MEGAN_RMA2INFO.out.versions.first() ) ch_raw_profiles = ch_raw_profiles.mix( MEGAN_RMA2INFO.out.txt ) } diff --git a/workflows/taxprofiler.nf b/workflows/taxprofiler.nf index 9981ca4..a0046b2 100644 --- a/workflows/taxprofiler.nf +++ b/workflows/taxprofiler.nf @@ -196,10 +196,8 @@ workflow TAXPROFILER { MODULE: MultiQC */ - ch_versions = ch_versions.mix(MULTIQC.out.versions) - CUSTOM_DUMPSOFTWAREVERSIONS ( - ch_versions.dump(tag: "software_versions_beforeuniqe").unique().dump(tag: "software_versions").collectFile(name: 'collated_versions.yml') + ch_versions.unique().collectFile(name: 'collated_versions.yml') ) @@ -236,6 +234,7 @@ workflow TAXPROFILER { ch_multiqc_files.collect() ) multiqc_report = MULTIQC.out.report.toList() + ch_versions = ch_versions.mix(MULTIQC.out.versions) } /* From e7e24c2d95c43d28c024817b0ebf67b2a9febf75 Mon Sep 17 00:00:00 2001 From: Sofia Stamouli Date: Mon, 25 Apr 2022 09:21:29 +0200 Subject: [PATCH 180/789] Prettier and suggestions from review --- conf/modules.config | 2 +- nextflow.config | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/conf/modules.config b/conf/modules.config index 19cfef7..5c5de54 100644 --- a/conf/modules.config +++ b/conf/modules.config @@ -256,7 +256,7 @@ process { withName: CENTRIFUGE_KREPORT { ext.args = { "${meta.db_params}" } - ext.prefix = { "${meta.id}" } + ext.prefix = params.perform_runmerging ? { "${meta.id}-${meta.db_name}" } : { "${meta.id}-${meta.run_accession}-${meta.db_name}" } publishDir = [ path: { "${params.outdir}/centrifuge/${meta.db_name}" }, mode: params.publish_dir_mode, diff --git a/nextflow.config b/nextflow.config index 61b4905..43aaae8 100644 --- a/nextflow.config +++ b/nextflow.config @@ -98,7 +98,6 @@ params { // centrifuge run_centrifuge = false - centrifuge_kreport = false centrifuge_save_unaligned = false centrifuge_save_aligned = false centrifuge_sam_format = false From ba2479b95bf0cb07423dfff9c1a75db09ac3abff Mon Sep 17 00:00:00 2001 From: Sofia Stamouli Date: Mon, 25 Apr 2022 09:26:49 +0200 Subject: [PATCH 181/789] Prettier --- modules.json | 2 +- nextflow_schema.json | 24 ++++-------------------- 2 files changed, 5 insertions(+), 21 deletions(-) diff --git a/modules.json b/modules.json index 6fc4f51..e9c1310 100644 --- a/modules.json +++ b/modules.json @@ -62,4 +62,4 @@ } } } -} \ No newline at end of file +} diff --git a/nextflow_schema.json b/nextflow_schema.json index f5822db..fe66308 100644 --- a/nextflow_schema.json +++ b/nextflow_schema.json @@ -10,10 +10,7 @@ "type": "object", "fa_icon": "fas fa-terminal", "description": "Define where the pipeline should find input data and save output data.", - "required": [ - "input", - "outdir" - ], + "required": ["input", "outdir"], "properties": { "input": { "type": "string", @@ -176,14 +173,7 @@ "description": "Method used to save pipeline results to output directory.", "help_text": "The Nextflow `publishDir` option specifies which intermediate files should be saved to the output directory. This option tells the pipeline what method should be used to move these files. See [Nextflow docs](https://www.nextflow.io/docs/latest/process.html#publishdir) for details.", "fa_icon": "fas fa-copy", - "enum": [ - "symlink", - "rellink", - "link", - "copy", - "copyNoFollow", - "move" - ], + "enum": ["symlink", "rellink", "link", "copy", "copyNoFollow", "move"], "hidden": true }, "email_on_fail": { @@ -304,10 +294,7 @@ "shortread_clipmerge_tool": { "type": "string", "default": "fastp", - "enum": [ - "fastp", - "adapterremoval" - ] + "enum": ["fastp", "adapterremoval"] }, "shortread_clipmerge_skipadaptertrim": { "type": "boolean" @@ -348,10 +335,7 @@ "shortread_complexityfilter_prinseqplusplus_mode": { "type": "string", "default": "entropy", - "enum": [ - "entropy", - "dust" - ] + "enum": ["entropy", "dust"] }, "shortread_complexityfilter_prinseqplusplus_dustscore": { "type": "number", From d8a5c793e23315557ae0772a1a82db895ac5d536 Mon Sep 17 00:00:00 2001 From: Sofia Stamouli Date: Mon, 25 Apr 2022 09:29:43 +0200 Subject: [PATCH 182/789] Remove parameter from nextflow_schema --- nextflow_schema.json | 29 +++++++++++++++++++++-------- 1 file changed, 21 insertions(+), 8 deletions(-) diff --git a/nextflow_schema.json b/nextflow_schema.json index fe66308..f53e036 100644 --- a/nextflow_schema.json +++ b/nextflow_schema.json @@ -10,7 +10,10 @@ "type": "object", "fa_icon": "fas fa-terminal", "description": "Define where the pipeline should find input data and save output data.", - "required": ["input", "outdir"], + "required": [ + "input", + "outdir" + ], "properties": { "input": { "type": "string", @@ -173,7 +176,14 @@ "description": "Method used to save pipeline results to output directory.", "help_text": "The Nextflow `publishDir` option specifies which intermediate files should be saved to the output directory. This option tells the pipeline what method should be used to move these files. See [Nextflow docs](https://www.nextflow.io/docs/latest/process.html#publishdir) for details.", "fa_icon": "fas fa-copy", - "enum": ["symlink", "rellink", "link", "copy", "copyNoFollow", "move"], + "enum": [ + "symlink", + "rellink", + "link", + "copy", + "copyNoFollow", + "move" + ], "hidden": true }, "email_on_fail": { @@ -294,7 +304,10 @@ "shortread_clipmerge_tool": { "type": "string", "default": "fastp", - "enum": ["fastp", "adapterremoval"] + "enum": [ + "fastp", + "adapterremoval" + ] }, "shortread_clipmerge_skipadaptertrim": { "type": "boolean" @@ -335,7 +348,10 @@ "shortread_complexityfilter_prinseqplusplus_mode": { "type": "string", "default": "entropy", - "enum": ["entropy", "dust"] + "enum": [ + "entropy", + "dust" + ] }, "shortread_complexityfilter_prinseqplusplus_dustscore": { "type": "number", @@ -384,9 +400,6 @@ }, "malt_generatemegansummary": { "type": "boolean" - }, - "centrifuge_kreport": { - "type": "boolean" } } -} +} \ No newline at end of file From e3a613de00416b470ca69e6d36fd6d46c5d1c491 Mon Sep 17 00:00:00 2001 From: Sofia Stamouli Date: Mon, 25 Apr 2022 09:32:25 +0200 Subject: [PATCH 183/789] Prettier --- nextflow_schema.json | 26 +++++--------------------- 1 file changed, 5 insertions(+), 21 deletions(-) diff --git a/nextflow_schema.json b/nextflow_schema.json index f53e036..2181cce 100644 --- a/nextflow_schema.json +++ b/nextflow_schema.json @@ -10,10 +10,7 @@ "type": "object", "fa_icon": "fas fa-terminal", "description": "Define where the pipeline should find input data and save output data.", - "required": [ - "input", - "outdir" - ], + "required": ["input", "outdir"], "properties": { "input": { "type": "string", @@ -176,14 +173,7 @@ "description": "Method used to save pipeline results to output directory.", "help_text": "The Nextflow `publishDir` option specifies which intermediate files should be saved to the output directory. This option tells the pipeline what method should be used to move these files. See [Nextflow docs](https://www.nextflow.io/docs/latest/process.html#publishdir) for details.", "fa_icon": "fas fa-copy", - "enum": [ - "symlink", - "rellink", - "link", - "copy", - "copyNoFollow", - "move" - ], + "enum": ["symlink", "rellink", "link", "copy", "copyNoFollow", "move"], "hidden": true }, "email_on_fail": { @@ -304,10 +294,7 @@ "shortread_clipmerge_tool": { "type": "string", "default": "fastp", - "enum": [ - "fastp", - "adapterremoval" - ] + "enum": ["fastp", "adapterremoval"] }, "shortread_clipmerge_skipadaptertrim": { "type": "boolean" @@ -348,10 +335,7 @@ "shortread_complexityfilter_prinseqplusplus_mode": { "type": "string", "default": "entropy", - "enum": [ - "entropy", - "dust" - ] + "enum": ["entropy", "dust"] }, "shortread_complexityfilter_prinseqplusplus_dustscore": { "type": "number", @@ -402,4 +386,4 @@ "type": "boolean" } } -} \ No newline at end of file +} From d082d67bcb6e55dfcd46996b97a947819e86b3c7 Mon Sep 17 00:00:00 2001 From: sofstam Date: Mon, 25 Apr 2022 17:36:29 +0200 Subject: [PATCH 184/789] Add kaiju2table to taxprofiler --- conf/modules.config | 10 ++++ modules.json | 5 +- .../nf-core/modules/kaiju/kaiju2table/main.nf | 40 +++++++++++++++ .../modules/kaiju/kaiju2table/meta.yml | 50 +++++++++++++++++++ nextflow.config | 1 + nextflow_schema.json | 30 +++++++++-- subworkflows/local/profiling.nf | 6 ++- 7 files changed, 135 insertions(+), 7 deletions(-) create mode 100644 modules/nf-core/modules/kaiju/kaiju2table/main.nf create mode 100644 modules/nf-core/modules/kaiju/kaiju2table/meta.yml diff --git a/conf/modules.config b/conf/modules.config index 5c5de54..a72561d 100644 --- a/conf/modules.config +++ b/conf/modules.config @@ -289,4 +289,14 @@ process { ext.args = { "${meta.db_params}" } ext.prefix = params.perform_runmerging ? { "${meta.id}-${meta.db_name}" } : { "${meta.id}-${meta.run_accession}-${meta.db_name}" } } + + withName: KAIJU_KAIJU2TABLE { + ext.args = { "${meta.db_params}" } + ext.prefix = params.perform_runmerging ? { "${meta.id}-${meta.db_name}" } : { "${meta.id}-${meta.run_accession}-${meta.db_name}" } + publishDir = [ + path: { "${params.outdir}/kaiju/${meta.db_name}" }, + mode: params.publish_dir_mode, + pattern: '*.{txt}' + ] + } } diff --git a/modules.json b/modules.json index e9c1310..9beb010 100644 --- a/modules.json +++ b/modules.json @@ -36,6 +36,9 @@ "kaiju/kaiju": { "git_sha": "8856f127c58f6af479128be8b8df4d42e442ddbe" }, + "kaiju/kaiju2table": { + "git_sha": "538dbac98ba9c8f799536cd5a617195501439457" + }, "kraken2/kraken2": { "git_sha": "e745e167c1020928ef20ea1397b6b4d230681b4d" }, @@ -62,4 +65,4 @@ } } } -} +} \ No newline at end of file diff --git a/modules/nf-core/modules/kaiju/kaiju2table/main.nf b/modules/nf-core/modules/kaiju/kaiju2table/main.nf new file mode 100644 index 0000000..00739d1 --- /dev/null +++ b/modules/nf-core/modules/kaiju/kaiju2table/main.nf @@ -0,0 +1,40 @@ +process KAIJU_KAIJU2TABLE { + tag "$meta.id" + label 'process_low' + + conda (params.enable_conda ? "bioconda::kaiju=1.8.2" : null) + container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? + 'https://depot.galaxyproject.org/singularity/kaiju:1.8.2--h5b5514e_1': + 'quay.io/biocontainers/kaiju:1.8.2--h2e03b76_0' }" + + input: + tuple val(meta), path(results) + path db + val taxon_rank + + output: + tuple val(meta), path('*.txt'), emit: summary + path "versions.yml" , emit: versions + + when: + task.ext.when == null || task.ext.when + + script: + def args = task.ext.args ?: '' + def prefix = task.ext.prefix ?: "${meta.id}" + """ + dbnodes=`find -L ${db} -name "*nodes.dmp"` + dbname=`find -L ${db} -name "*.fmi" -not -name "._*"` + kaiju2table $args \\ + -t \$dbnodes \\ + -n \$dbname \\ + -r ${taxon_rank} \\ + -o ${prefix}.txt \\ + ${results} + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + kaiju: \$(echo \$( kaiju -h 2>&1 | sed -n 1p | sed 's/^.*Kaiju //' )) + END_VERSIONS + """ +} diff --git a/modules/nf-core/modules/kaiju/kaiju2table/meta.yml b/modules/nf-core/modules/kaiju/kaiju2table/meta.yml new file mode 100644 index 0000000..bc3e85d --- /dev/null +++ b/modules/nf-core/modules/kaiju/kaiju2table/meta.yml @@ -0,0 +1,50 @@ +name: "kaiju_kaiju2table" +description: write your description here +keywords: + - classify + - metagenomics +tools: + - kaiju: + description: Fast and sensitive taxonomic classification for metagenomics + homepage: https://kaiju.binf.ku.dk/ + documentation: https://github.com/bioinformatics-centre/kaiju/blob/master/README.md + tool_dev_url: https://github.com/bioinformatics-centre/kaiju + doi: "10.1038/ncomms11257" + licence: ["GNU GPL v3"] + +input: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - results: + type: file + description: File containing the kaiju classification results + pattern: "*.{txt}" + - taxon_rank: + type: string + description: | + Taxonomic rank to display in report + pattern: "phylum|class|order|family|genus|species" + +output: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - versions: + type: file + description: File containing software versions + pattern: "versions.yml" + - results: + type: file + description: | + Summary table for a given taxonomic rank + pattern: "*.{tsv}" + +authors: + - "@sofstam" + - "@talnor" + - "@jfy133" diff --git a/nextflow.config b/nextflow.config index 43aaae8..909da25 100644 --- a/nextflow.config +++ b/nextflow.config @@ -107,6 +107,7 @@ params { // kaiju run_kaiju = false + kaiju_taxon_name = 'species' } // Load base.config by default for all pipelines diff --git a/nextflow_schema.json b/nextflow_schema.json index 2181cce..9516b6a 100644 --- a/nextflow_schema.json +++ b/nextflow_schema.json @@ -10,7 +10,10 @@ "type": "object", "fa_icon": "fas fa-terminal", "description": "Define where the pipeline should find input data and save output data.", - "required": ["input", "outdir"], + "required": [ + "input", + "outdir" + ], "properties": { "input": { "type": "string", @@ -173,7 +176,14 @@ "description": "Method used to save pipeline results to output directory.", "help_text": "The Nextflow `publishDir` option specifies which intermediate files should be saved to the output directory. This option tells the pipeline what method should be used to move these files. See [Nextflow docs](https://www.nextflow.io/docs/latest/process.html#publishdir) for details.", "fa_icon": "fas fa-copy", - "enum": ["symlink", "rellink", "link", "copy", "copyNoFollow", "move"], + "enum": [ + "symlink", + "rellink", + "link", + "copy", + "copyNoFollow", + "move" + ], "hidden": true }, "email_on_fail": { @@ -294,7 +304,10 @@ "shortread_clipmerge_tool": { "type": "string", "default": "fastp", - "enum": ["fastp", "adapterremoval"] + "enum": [ + "fastp", + "adapterremoval" + ] }, "shortread_clipmerge_skipadaptertrim": { "type": "boolean" @@ -335,7 +348,10 @@ "shortread_complexityfilter_prinseqplusplus_mode": { "type": "string", "default": "entropy", - "enum": ["entropy", "dust"] + "enum": [ + "entropy", + "dust" + ] }, "shortread_complexityfilter_prinseqplusplus_dustscore": { "type": "number", @@ -384,6 +400,10 @@ }, "malt_generatemegansummary": { "type": "boolean" + }, + "kaiju_taxon_name": { + "type": "string", + "default": "species" } } -} +} \ No newline at end of file diff --git a/subworkflows/local/profiling.nf b/subworkflows/local/profiling.nf index fcb2678..1f1d4da 100644 --- a/subworkflows/local/profiling.nf +++ b/subworkflows/local/profiling.nf @@ -9,6 +9,7 @@ include { CENTRIFUGE_CENTRIFUGE } from '../../modules/nf-core/modules/cent include { CENTRIFUGE_KREPORT } from '../../modules/nf-core/modules/centrifuge/kreport/main' include { METAPHLAN3 } from '../../modules/nf-core/modules/metaphlan3/main' include { KAIJU_KAIJU } from '../../modules/nf-core/modules/kaiju/kaiju/main' +include { KAIJU_KAIJU2TABLE } from '../../modules/nf-core/modules/kaiju/kaiju2table/main' workflow PROFILING { take: @@ -155,8 +156,11 @@ workflow PROFILING { } if ( params.run_kaiju ) { - KAIJU_KAIJU ( ch_input_for_kaiju.reads, ch_input_for_kaiju.db ) + KAIJU_KAIJU ( ch_input_for_kaiju.reads, ch_input_for_kaiju.db) + KAIJU_KAIJU2TABLE (KAIJU_KAIJU.out.results, ch_input_for_kaiju.db, params.kaiju_taxon_name) + ch_multiqc_files = ch_multiqc_files.mix( KAIJU_KAIJU2TABLE.out.summary.collect{it[1]}.ifEmpty([]) ) ch_versions = ch_versions.mix( KAIJU_KAIJU.out.versions.first() ) + ch_raw_profiles = ch_raw_profiles.mix( KAIJU_KAIJU2TABLE.out.summary ) } emit: From f4480feb9bb5f76a7e12f84682d512d2932022d2 Mon Sep 17 00:00:00 2001 From: Sofia Stamouli Date: Mon, 25 Apr 2022 17:45:26 +0200 Subject: [PATCH 185/789] Prettier --- modules.json | 2 +- nextflow_schema.json | 26 +++++--------------------- 2 files changed, 6 insertions(+), 22 deletions(-) diff --git a/modules.json b/modules.json index 9beb010..ffcde5d 100644 --- a/modules.json +++ b/modules.json @@ -65,4 +65,4 @@ } } } -} \ No newline at end of file +} diff --git a/nextflow_schema.json b/nextflow_schema.json index 9516b6a..93450d2 100644 --- a/nextflow_schema.json +++ b/nextflow_schema.json @@ -10,10 +10,7 @@ "type": "object", "fa_icon": "fas fa-terminal", "description": "Define where the pipeline should find input data and save output data.", - "required": [ - "input", - "outdir" - ], + "required": ["input", "outdir"], "properties": { "input": { "type": "string", @@ -176,14 +173,7 @@ "description": "Method used to save pipeline results to output directory.", "help_text": "The Nextflow `publishDir` option specifies which intermediate files should be saved to the output directory. This option tells the pipeline what method should be used to move these files. See [Nextflow docs](https://www.nextflow.io/docs/latest/process.html#publishdir) for details.", "fa_icon": "fas fa-copy", - "enum": [ - "symlink", - "rellink", - "link", - "copy", - "copyNoFollow", - "move" - ], + "enum": ["symlink", "rellink", "link", "copy", "copyNoFollow", "move"], "hidden": true }, "email_on_fail": { @@ -304,10 +294,7 @@ "shortread_clipmerge_tool": { "type": "string", "default": "fastp", - "enum": [ - "fastp", - "adapterremoval" - ] + "enum": ["fastp", "adapterremoval"] }, "shortread_clipmerge_skipadaptertrim": { "type": "boolean" @@ -348,10 +335,7 @@ "shortread_complexityfilter_prinseqplusplus_mode": { "type": "string", "default": "entropy", - "enum": [ - "entropy", - "dust" - ] + "enum": ["entropy", "dust"] }, "shortread_complexityfilter_prinseqplusplus_dustscore": { "type": "number", @@ -406,4 +390,4 @@ "default": "species" } } -} \ No newline at end of file +} From 7afda265c5c99149739a62dfc0449aad20582184 Mon Sep 17 00:00:00 2001 From: Sofia Stamouli Date: Tue, 26 Apr 2022 11:27:18 +0200 Subject: [PATCH 186/789] Enumerating taxon --- nextflow_schema.json | 36 ++++++++++++++++++++++++++++++------ 1 file changed, 30 insertions(+), 6 deletions(-) diff --git a/nextflow_schema.json b/nextflow_schema.json index 93450d2..2fda6e1 100644 --- a/nextflow_schema.json +++ b/nextflow_schema.json @@ -10,7 +10,10 @@ "type": "object", "fa_icon": "fas fa-terminal", "description": "Define where the pipeline should find input data and save output data.", - "required": ["input", "outdir"], + "required": [ + "input", + "outdir" + ], "properties": { "input": { "type": "string", @@ -173,7 +176,14 @@ "description": "Method used to save pipeline results to output directory.", "help_text": "The Nextflow `publishDir` option specifies which intermediate files should be saved to the output directory. This option tells the pipeline what method should be used to move these files. See [Nextflow docs](https://www.nextflow.io/docs/latest/process.html#publishdir) for details.", "fa_icon": "fas fa-copy", - "enum": ["symlink", "rellink", "link", "copy", "copyNoFollow", "move"], + "enum": [ + "symlink", + "rellink", + "link", + "copy", + "copyNoFollow", + "move" + ], "hidden": true }, "email_on_fail": { @@ -294,7 +304,10 @@ "shortread_clipmerge_tool": { "type": "string", "default": "fastp", - "enum": ["fastp", "adapterremoval"] + "enum": [ + "fastp", + "adapterremoval" + ] }, "shortread_clipmerge_skipadaptertrim": { "type": "boolean" @@ -335,7 +348,10 @@ "shortread_complexityfilter_prinseqplusplus_mode": { "type": "string", "default": "entropy", - "enum": ["entropy", "dust"] + "enum": [ + "entropy", + "dust" + ] }, "shortread_complexityfilter_prinseqplusplus_dustscore": { "type": "number", @@ -387,7 +403,15 @@ }, "kaiju_taxon_name": { "type": "string", - "default": "species" + "default": "species", + "enum": [ + "phylum", + "class", + "order", + "family", + "genus", + "species" + ] } } -} +} \ No newline at end of file From 194b89e66a32862d234ef39cc36aad46c97a2da7 Mon Sep 17 00:00:00 2001 From: Sofia Stamouli Date: Tue, 26 Apr 2022 12:53:39 +0200 Subject: [PATCH 187/789] Prettier --- nextflow_schema.json | 35 ++++++----------------------------- 1 file changed, 6 insertions(+), 29 deletions(-) diff --git a/nextflow_schema.json b/nextflow_schema.json index 2fda6e1..83793e8 100644 --- a/nextflow_schema.json +++ b/nextflow_schema.json @@ -10,10 +10,7 @@ "type": "object", "fa_icon": "fas fa-terminal", "description": "Define where the pipeline should find input data and save output data.", - "required": [ - "input", - "outdir" - ], + "required": ["input", "outdir"], "properties": { "input": { "type": "string", @@ -176,14 +173,7 @@ "description": "Method used to save pipeline results to output directory.", "help_text": "The Nextflow `publishDir` option specifies which intermediate files should be saved to the output directory. This option tells the pipeline what method should be used to move these files. See [Nextflow docs](https://www.nextflow.io/docs/latest/process.html#publishdir) for details.", "fa_icon": "fas fa-copy", - "enum": [ - "symlink", - "rellink", - "link", - "copy", - "copyNoFollow", - "move" - ], + "enum": ["symlink", "rellink", "link", "copy", "copyNoFollow", "move"], "hidden": true }, "email_on_fail": { @@ -304,10 +294,7 @@ "shortread_clipmerge_tool": { "type": "string", "default": "fastp", - "enum": [ - "fastp", - "adapterremoval" - ] + "enum": ["fastp", "adapterremoval"] }, "shortread_clipmerge_skipadaptertrim": { "type": "boolean" @@ -348,10 +335,7 @@ "shortread_complexityfilter_prinseqplusplus_mode": { "type": "string", "default": "entropy", - "enum": [ - "entropy", - "dust" - ] + "enum": ["entropy", "dust"] }, "shortread_complexityfilter_prinseqplusplus_dustscore": { "type": "number", @@ -404,14 +388,7 @@ "kaiju_taxon_name": { "type": "string", "default": "species", - "enum": [ - "phylum", - "class", - "order", - "family", - "genus", - "species" - ] + "enum": ["phylum", "class", "order", "family", "genus", "species"] } } -} \ No newline at end of file +} From 8126d16dee7e60f80d9cfb159db9199435bccd03 Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Fri, 29 Apr 2022 21:59:42 +0200 Subject: [PATCH 188/789] Add draft version of DIAMOND --- CITATIONS.md | 4 ++ conf/modules.config | 42 +++++++++------ conf/test.config | 5 ++ docs/usage.md | 3 ++ modules.json | 5 +- .../nf-core/modules/diamond/blastx/main.nf | 53 +++++++++++++++++++ .../nf-core/modules/diamond/blastx/meta.yml | 52 ++++++++++++++++++ nextflow.config | 4 ++ nextflow_schema.json | 51 +++++++++++++++--- subworkflows/local/profiling.nf | 16 ++++++ 10 files changed, 212 insertions(+), 23 deletions(-) create mode 100644 modules/nf-core/modules/diamond/blastx/main.nf create mode 100644 modules/nf-core/modules/diamond/blastx/meta.yml diff --git a/CITATIONS.md b/CITATIONS.md index 02621d9..fd8c52a 100644 --- a/CITATIONS.md +++ b/CITATIONS.md @@ -52,6 +52,10 @@ > Kim, Daehwan, Li Song, Florian P. Breitwieser, and Steven L. Salzberg. 2016. “Centrifuge: Rapid and Sensitive Classification of Metagenomic Sequences.” Genome Research 26 (12): 1721-29. doi: 10.1101/gr.210641.116. +- [DIAMOND](https://doi.org/10.1038/nmeth.3176) + +> Buchfink, Benjamin, Chao Xie, and Daniel H. Huson. 2015. “Fast and Sensitive Protein Alignment Using DIAMOND.” Nature Methods 12 (1): 59-60. doi: 10.1038/nmeth.3176. + ## Software packaging/containerisation tools - [Anaconda](https://anaconda.com) diff --git a/conf/modules.config b/conf/modules.config index a72561d..9b081b5 100644 --- a/conf/modules.config +++ b/conf/modules.config @@ -264,39 +264,49 @@ process { ] } - withName: CUSTOM_DUMPSOFTWAREVERSIONS { + withName: KAIJU_KAIJU { publishDir = [ - path: { "${params.outdir}/pipeline_info" }, + path: { "${params.outdir}/kaiju/${meta.db_name}" }, mode: params.publish_dir_mode, - pattern: '*_versions.yml' + pattern: '*.tsv' ] + ext.args = { "${meta.db_params}" } + ext.prefix = params.perform_runmerging ? { "${meta.id}-${meta.db_name}" } : { "${meta.id}-${meta.run_accession}-${meta.db_name}" } } - withName: MULTIQC { + withName: KAIJU_KAIJU2TABLE { + ext.args = { "${meta.db_params}" } + ext.prefix = params.perform_runmerging ? { "${meta.id}-${meta.db_name}" } : { "${meta.id}-${meta.run_accession}-${meta.db_name}" } publishDir = [ - path: { "${params.outdir}/${task.process.tokenize(':')[-1].tokenize('_')[0].toLowerCase()}" }, + path: { "${params.outdir}/kaiju/${meta.db_name}" }, mode: params.publish_dir_mode, - saveAs: { filename -> filename.equals('versions.yml') ? null : filename } + pattern: '*.{txt}' ] } - withName: KAIJU_KAIJU { + withName: DIAMOND_BLASTX { + ext.args = { "${meta.db_params}" } + ext.prefix = params.perform_runmerging ? { "${meta.id}-${meta.db_name}" } : { "${meta.id}-${meta.run_accession}-${meta.db_name}" } publishDir = [ - path: { "${params.outdir}/kaiju/${meta.db_name}" }, + path: { "${params.outdir}/diamond/${meta.db_name}" }, mode: params.publish_dir_mode, - pattern: '*.tsv' + pattern: '*.{blast,xml,txt,daa,sam,tsv,paf}' ] - ext.args = { "${meta.db_params}" } - ext.prefix = params.perform_runmerging ? { "${meta.id}-${meta.db_name}" } : { "${meta.id}-${meta.run_accession}-${meta.db_name}" } } - withName: KAIJU_KAIJU2TABLE { - ext.args = { "${meta.db_params}" } - ext.prefix = params.perform_runmerging ? { "${meta.id}-${meta.db_name}" } : { "${meta.id}-${meta.run_accession}-${meta.db_name}" } + withName: CUSTOM_DUMPSOFTWAREVERSIONS { publishDir = [ - path: { "${params.outdir}/kaiju/${meta.db_name}" }, + path: { "${params.outdir}/pipeline_info" }, mode: params.publish_dir_mode, - pattern: '*.{txt}' + pattern: '*_versions.yml' + ] + } + + withName: MULTIQC { + publishDir = [ + path: { "${params.outdir}/${task.process.tokenize(':')[-1].tokenize('_')[0].toLowerCase()}" }, + mode: params.publish_dir_mode, + saveAs: { filename -> filename.equals('versions.yml') ? null : filename } ] } } diff --git a/conf/test.config b/conf/test.config index ecf55bd..35d3539 100644 --- a/conf/test.config +++ b/conf/test.config @@ -34,6 +34,11 @@ params { run_malt = true run_metaphlan3 = true run_centrifuge = true + run_diamond = true + // TODO: setting to txt here as does not require taxonomy in database. + // Should consider re-building our test database but with the required + // taxonomy files, but this may make large files (prot2access: 9GB) + diamond_output_format = 'txt' } process { diff --git a/docs/usage.md b/docs/usage.md index 5d3268b..002f4f2 100644 --- a/docs/usage.md +++ b/docs/usage.md @@ -128,6 +128,9 @@ Expected (uncompressed) database files for each tool are as follows: - `kaiju_db_*.fmi` - `nodes.dmp` - `names.dmp` +- **DIAMOND** output of `diamond makedb`. Note: requires building with taxonomy files + to generate taxonomic profile. See [DIAMOND documentation](https://github.com/bbuchfink/diamond/wiki/3.-Command-line-options#makedb-options). A file named: + - `.dmnd` ## Running the pipeline diff --git a/modules.json b/modules.json index ffcde5d..7b659c1 100644 --- a/modules.json +++ b/modules.json @@ -27,6 +27,9 @@ "custom/dumpsoftwareversions": { "git_sha": "e745e167c1020928ef20ea1397b6b4d230681b4d" }, + "diamond/blastx": { + "git_sha": "42564565b934eeb2449e35ec97ed13ff2a67f1de" + }, "fastp": { "git_sha": "d0a1cbb703a130c19f6796c3fce24fbe7dfce789" }, @@ -65,4 +68,4 @@ } } } -} +} \ No newline at end of file diff --git a/modules/nf-core/modules/diamond/blastx/main.nf b/modules/nf-core/modules/diamond/blastx/main.nf new file mode 100644 index 0000000..6703c1e --- /dev/null +++ b/modules/nf-core/modules/diamond/blastx/main.nf @@ -0,0 +1,53 @@ +process DIAMOND_BLASTX { + tag "$meta.id" + label 'process_medium' + + // Dimaond is limited to v2.0.9 because there is not a + // singularity version higher than this at the current time. + conda (params.enable_conda ? "bioconda::diamond=2.0.9" : null) + container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? + 'https://depot.galaxyproject.org/singularity/diamond:2.0.9--hdcc8f71_0' : + 'quay.io/biocontainers/diamond:2.0.9--hdcc8f71_0' }" + + input: + tuple val(meta), path(fasta) + path db + val outext + + output: + tuple val(meta), path('*.{blast,xml,txt,daa,sam,tsv,paf}'), emit: output + path "versions.yml" , emit: versions + + when: + task.ext.when == null || task.ext.when + + script: + def args = task.ext.args ?: '' + def prefix = task.ext.prefix ?: "${meta.id}" + switch ( outext ) { + case "blast": outfmt = 0; break + case "xml": outfmt = 5; break + case "txt": outfmt = 6; break + case "daa": outfmt = 100; break + case "sam": outfmt = 101; break + case "tsv": outfmt = 102; break + case "paf": outfmt = 103; break + } + """ + DB=`find -L ./ -name "*.dmnd" | sed 's/.dmnd//'` + + diamond \\ + blastx \\ + --threads $task.cpus \\ + --db \$DB \\ + --query $fasta \\ + --outfmt ${outfmt} \\ + $args \\ + --out ${prefix}.${outext} + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + diamond: \$(diamond --version 2>&1 | tail -n 1 | sed 's/^diamond version //') + END_VERSIONS + """ +} diff --git a/modules/nf-core/modules/diamond/blastx/meta.yml b/modules/nf-core/modules/diamond/blastx/meta.yml new file mode 100644 index 0000000..5ee2d55 --- /dev/null +++ b/modules/nf-core/modules/diamond/blastx/meta.yml @@ -0,0 +1,52 @@ +name: diamond_blastx +description: Queries a DIAMOND database using blastx mode +keywords: + - fasta + - diamond + - blastx + - DNA sequence +tools: + - diamond: + description: Accelerated BLAST compatible local sequence aligner + homepage: https://github.com/bbuchfink/diamond + documentation: https://github.com/bbuchfink/diamond/wiki + tool_dev_url: https://github.com/bbuchfink/diamond + doi: "doi:10.1038/s41592-021-01101-x" + licence: ["GPL v3.0"] + +input: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - fasta: + type: file + description: Input fasta file containing query sequences + pattern: "*.{fa,fasta}" + - db: + type: directory + description: Directory containing the nucelotide blast database + pattern: "*" + - outext: + type: string + description: | + Specify the type of output file to be generated. `blast` corresponds to + BLAST pairwise format. `xml` corresponds to BLAST xml format. + `txt` corresponds to to BLAST tabular format. `tsv` corresponds to + taxonomic classification format. + pattern: "blast|xml|txt|daa|sam|tsv|paf" + +output: + - txt: + type: file + description: File containing blastx hits + pattern: "*.{blastx.txt}" + - versions: + type: file + description: File containing software versions + pattern: "versions.yml" + +authors: + - "@spficklin" + - "@jfy133" diff --git a/nextflow.config b/nextflow.config index 909da25..963a4a5 100644 --- a/nextflow.config +++ b/nextflow.config @@ -108,6 +108,10 @@ params { // kaiju run_kaiju = false kaiju_taxon_name = 'species' + + // diamond + run_diamond = false + diamond_output_format = 'tsv' } // Load base.config by default for all pipelines diff --git a/nextflow_schema.json b/nextflow_schema.json index 83793e8..fc516d6 100644 --- a/nextflow_schema.json +++ b/nextflow_schema.json @@ -10,7 +10,10 @@ "type": "object", "fa_icon": "fas fa-terminal", "description": "Define where the pipeline should find input data and save output data.", - "required": ["input", "outdir"], + "required": [ + "input", + "outdir" + ], "properties": { "input": { "type": "string", @@ -173,7 +176,14 @@ "description": "Method used to save pipeline results to output directory.", "help_text": "The Nextflow `publishDir` option specifies which intermediate files should be saved to the output directory. This option tells the pipeline what method should be used to move these files. See [Nextflow docs](https://www.nextflow.io/docs/latest/process.html#publishdir) for details.", "fa_icon": "fas fa-copy", - "enum": ["symlink", "rellink", "link", "copy", "copyNoFollow", "move"], + "enum": [ + "symlink", + "rellink", + "link", + "copy", + "copyNoFollow", + "move" + ], "hidden": true }, "email_on_fail": { @@ -294,7 +304,10 @@ "shortread_clipmerge_tool": { "type": "string", "default": "fastp", - "enum": ["fastp", "adapterremoval"] + "enum": [ + "fastp", + "adapterremoval" + ] }, "shortread_clipmerge_skipadaptertrim": { "type": "boolean" @@ -335,7 +348,10 @@ "shortread_complexityfilter_prinseqplusplus_mode": { "type": "string", "default": "entropy", - "enum": ["entropy", "dust"] + "enum": [ + "entropy", + "dust" + ] }, "shortread_complexityfilter_prinseqplusplus_dustscore": { "type": "number", @@ -388,7 +404,30 @@ "kaiju_taxon_name": { "type": "string", "default": "species", - "enum": ["phylum", "class", "order", "family", "genus", "species"] + "enum": [ + "phylum", + "class", + "order", + "family", + "genus", + "species" + ] + }, + "run_diamond": { + "type": "boolean" + }, + "diamond_output_format": { + "type": "string", + "default": "tsv", + "enum": [ + "blast", + "xml", + "txt", + "daa", + "sam", + "tsv", + "paf" + ] } } -} +} \ No newline at end of file diff --git a/subworkflows/local/profiling.nf b/subworkflows/local/profiling.nf index 1f1d4da..9389e19 100644 --- a/subworkflows/local/profiling.nf +++ b/subworkflows/local/profiling.nf @@ -10,6 +10,8 @@ include { CENTRIFUGE_KREPORT } from '../../modules/nf-core/modules/cent include { METAPHLAN3 } from '../../modules/nf-core/modules/metaphlan3/main' include { KAIJU_KAIJU } from '../../modules/nf-core/modules/kaiju/kaiju/main' include { KAIJU_KAIJU2TABLE } from '../../modules/nf-core/modules/kaiju/kaiju2table/main' +include { DIAMOND_BLASTX } from '../../modules/nf-core/modules/diamond/blastx/main' + workflow PROFILING { take: @@ -41,6 +43,7 @@ workflow PROFILING { metaphlan3: it[2]['tool'] == 'metaphlan3' centrifuge: it[2]['tool'] == 'centrifuge' kaiju: it[2]['tool'] == 'kaiju' + diamond: it[2]['tool'] == 'diamond' unknown: true } @@ -109,6 +112,13 @@ workflow PROFILING { db: it[3] } + ch_input_for_diamond = ch_input_for_profiling.diamond + .multiMap { + it -> + reads: [it[0] + it[2], it[1]] + db: it[3] + } + /* RUN PROFILING */ @@ -163,6 +173,12 @@ workflow PROFILING { ch_raw_profiles = ch_raw_profiles.mix( KAIJU_KAIJU2TABLE.out.summary ) } + if ( params.run_diamond ) { + DIAMOND_BLASTX ( ch_input_for_diamond.reads, ch_input_for_diamond.db, params.diamond_output_format ) + ch_versions = ch_versions.mix( DIAMOND_BLASTX.out.versions.first() ) + ch_raw_profiles = ch_raw_profiles.mix( DIAMOND_BLASTX.out.output ) + } + emit: profiles = ch_raw_profiles // channel: [ val(meta), [ reads ] ] - should be text files or biom versions = ch_versions // channel: [ versions.yml ] From a4a9b161d80914f7f1964b4a86c58229d4d884b3 Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Fri, 29 Apr 2022 22:02:44 +0200 Subject: [PATCH 189/789] Lintin --- conf/modules.config | 4 ++-- docs/usage.md | 2 +- modules.json | 2 +- nextflow_schema.json | 45 +++++++------------------------------------- 4 files changed, 11 insertions(+), 42 deletions(-) diff --git a/conf/modules.config b/conf/modules.config index 9b081b5..d8fb382 100644 --- a/conf/modules.config +++ b/conf/modules.config @@ -274,7 +274,7 @@ process { ext.prefix = params.perform_runmerging ? { "${meta.id}-${meta.db_name}" } : { "${meta.id}-${meta.run_accession}-${meta.db_name}" } } - withName: KAIJU_KAIJU2TABLE { + withName: KAIJU_KAIJU2TABLE { ext.args = { "${meta.db_params}" } ext.prefix = params.perform_runmerging ? { "${meta.id}-${meta.db_name}" } : { "${meta.id}-${meta.run_accession}-${meta.db_name}" } publishDir = [ @@ -284,7 +284,7 @@ process { ] } - withName: DIAMOND_BLASTX { + withName: DIAMOND_BLASTX { ext.args = { "${meta.db_params}" } ext.prefix = params.perform_runmerging ? { "${meta.id}-${meta.db_name}" } : { "${meta.id}-${meta.run_accession}-${meta.db_name}" } publishDir = [ diff --git a/docs/usage.md b/docs/usage.md index 002f4f2..cee2bb6 100644 --- a/docs/usage.md +++ b/docs/usage.md @@ -129,7 +129,7 @@ Expected (uncompressed) database files for each tool are as follows: - `nodes.dmp` - `names.dmp` - **DIAMOND** output of `diamond makedb`. Note: requires building with taxonomy files - to generate taxonomic profile. See [DIAMOND documentation](https://github.com/bbuchfink/diamond/wiki/3.-Command-line-options#makedb-options). A file named: + to generate taxonomic profile. See [DIAMOND documentation](https://github.com/bbuchfink/diamond/wiki/3.-Command-line-options#makedb-options). A file named: - `.dmnd` ## Running the pipeline diff --git a/modules.json b/modules.json index 7b659c1..a65926c 100644 --- a/modules.json +++ b/modules.json @@ -68,4 +68,4 @@ } } } -} \ No newline at end of file +} diff --git a/nextflow_schema.json b/nextflow_schema.json index fc516d6..f429d1b 100644 --- a/nextflow_schema.json +++ b/nextflow_schema.json @@ -10,10 +10,7 @@ "type": "object", "fa_icon": "fas fa-terminal", "description": "Define where the pipeline should find input data and save output data.", - "required": [ - "input", - "outdir" - ], + "required": ["input", "outdir"], "properties": { "input": { "type": "string", @@ -176,14 +173,7 @@ "description": "Method used to save pipeline results to output directory.", "help_text": "The Nextflow `publishDir` option specifies which intermediate files should be saved to the output directory. This option tells the pipeline what method should be used to move these files. See [Nextflow docs](https://www.nextflow.io/docs/latest/process.html#publishdir) for details.", "fa_icon": "fas fa-copy", - "enum": [ - "symlink", - "rellink", - "link", - "copy", - "copyNoFollow", - "move" - ], + "enum": ["symlink", "rellink", "link", "copy", "copyNoFollow", "move"], "hidden": true }, "email_on_fail": { @@ -304,10 +294,7 @@ "shortread_clipmerge_tool": { "type": "string", "default": "fastp", - "enum": [ - "fastp", - "adapterremoval" - ] + "enum": ["fastp", "adapterremoval"] }, "shortread_clipmerge_skipadaptertrim": { "type": "boolean" @@ -348,10 +335,7 @@ "shortread_complexityfilter_prinseqplusplus_mode": { "type": "string", "default": "entropy", - "enum": [ - "entropy", - "dust" - ] + "enum": ["entropy", "dust"] }, "shortread_complexityfilter_prinseqplusplus_dustscore": { "type": "number", @@ -404,14 +388,7 @@ "kaiju_taxon_name": { "type": "string", "default": "species", - "enum": [ - "phylum", - "class", - "order", - "family", - "genus", - "species" - ] + "enum": ["phylum", "class", "order", "family", "genus", "species"] }, "run_diamond": { "type": "boolean" @@ -419,15 +396,7 @@ "diamond_output_format": { "type": "string", "default": "tsv", - "enum": [ - "blast", - "xml", - "txt", - "daa", - "sam", - "tsv", - "paf" - ] + "enum": ["blast", "xml", "txt", "daa", "sam", "tsv", "paf"] } } -} \ No newline at end of file +} From 0630fce3b5ddb4db1b1932b2405e11ba9bd321e2 Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Sat, 30 Apr 2022 08:11:40 +0200 Subject: [PATCH 190/789] Tweak based on official DIAMOND test-data --- conf/test.config | 4 ---- nextflow.config | 2 +- 2 files changed, 1 insertion(+), 5 deletions(-) diff --git a/conf/test.config b/conf/test.config index 35d3539..a2464b2 100644 --- a/conf/test.config +++ b/conf/test.config @@ -35,10 +35,6 @@ params { run_metaphlan3 = true run_centrifuge = true run_diamond = true - // TODO: setting to txt here as does not require taxonomy in database. - // Should consider re-building our test database but with the required - // taxonomy files, but this may make large files (prot2access: 9GB) - diamond_output_format = 'txt' } process { diff --git a/nextflow.config b/nextflow.config index 963a4a5..5644786 100644 --- a/nextflow.config +++ b/nextflow.config @@ -111,7 +111,7 @@ params { // diamond run_diamond = false - diamond_output_format = 'tsv' + diamond_output_format = 'txt' } // Load base.config by default for all pipelines From 031cb45934cc3e66909d6cdd7b38527508353250 Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Sun, 1 May 2022 07:18:14 +0200 Subject: [PATCH 191/789] Add initial longread QC filtering - requires filtlong module update --- .github/workflows/ci.yml | 18 +++---- CITATIONS.md | 2 + conf/modules.config | 48 ++++++++++++------ conf/test.config | 4 +- docs/usage.md | 10 ++-- modules.json | 3 ++ modules/nf-core/modules/filtlong/main.nf | 36 +++++++++++++ modules/nf-core/modules/filtlong/meta.yml | 50 +++++++++++++++++++ nextflow.config | 28 +++++++---- nextflow_schema.json | 36 +++++++++---- subworkflows/local/longread_preprocessing.nf | 45 +++++++++++++---- .../local/shortread_adapterremoval.nf | 4 +- subworkflows/local/shortread_fastp.nf | 4 +- subworkflows/local/shortread_preprocessing.nf | 4 +- workflows/taxprofiler.nf | 15 +++--- 15 files changed, 233 insertions(+), 74 deletions(-) create mode 100644 modules/nf-core/modules/filtlong/main.nf create mode 100644 modules/nf-core/modules/filtlong/meta.yml diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index a1ece72..cb531b7 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -29,18 +29,18 @@ jobs: - NXF_VER: "" NXF_EDGE: "1" parameters: - - "--perform_longread_clip false" - - "--perform_shortread_clipmerge false" - - "--shortread_clipmerge_tool fastp" - - "--shortread_clipmerge_tool fastp --shortread_clipmerge_mergepairs --shortread_clipmerge_excludeunmerged" - - "--shortread_clipmerge_tool fastp --shortread_clipmerge_mergepairs" - - "--shortread_clipmerge_tool adapterremoval" - - "--shortread_clipmerge_tool adapterremoval --shortread_clipmerge_mergepairs --shortread_clipmerge_excludeunmerged" - - "--shortread_clipmerge_tool adapterremoval --shortread_clipmerge_mergepairs" + - "--perform_longread_qc false" + - "--perform_shortread_qc false" + - "--shortread_qc_tool fastp" + - "--shortread_qc_tool fastp --shortread_qc_mergepairs --shortread_qc_excludeunmerged" + - "--shortread_qc_tool fastp --shortread_qc_mergepairs" + - "--shortread_qc_tool adapterremoval" + - "--shortread_qc_tool adapterremoval --shortread_qc_mergepairs --shortread_qc_excludeunmerged" + - "--shortread_qc_tool adapterremoval --shortread_qc_mergepairs" - "--shortread_complexityfilter_tool bbduk" - "--shortread_complexityfilter_tool prinseq" - "--perform_runmerging" - - "--perform_runmerging --shortread_clipmerge_mergepairs" + - "--perform_runmerging --shortread_qc_mergepairs" - "--shortread_complexityfilter false --perform_shortread_hostremoval" steps: diff --git a/CITATIONS.md b/CITATIONS.md index fd8c52a..8044658 100644 --- a/CITATIONS.md +++ b/CITATIONS.md @@ -56,6 +56,8 @@ > Buchfink, Benjamin, Chao Xie, and Daniel H. Huson. 2015. “Fast and Sensitive Protein Alignment Using DIAMOND.” Nature Methods 12 (1): 59-60. doi: 10.1038/nmeth.3176. +- [FILTLONG](https://github.com/rrwick/Filtlong) + ## Software packaging/containerisation tools - [Anaconda](https://anaconda.com) diff --git a/conf/modules.config b/conf/modules.config index d8fb382..8481e7b 100644 --- a/conf/modules.config +++ b/conf/modules.config @@ -51,10 +51,10 @@ process { withName: FASTP_SINGLE { ext.args = [ // trimming options - params.shortread_clipmerge_skipadaptertrim ? "--disable_adapter_trimming" : "", - params.shortread_clipmerge_adapter1 ? "--adapter_sequence ${params.shortread_clipmerge_adapter1}" : "", + params.shortread_qc_skipadaptertrim ? "--disable_adapter_trimming" : "", + params.shortread_qc_adapter1 ? "--adapter_sequence ${params.shortread_qc_adapter1}" : "", // filtering options - "--length_required ${params.shortread_clipmerge_minlength}" + "--length_required ${params.shortread_qc_minlength}" ].join(' ').trim() ext.prefix = { "${meta.id}_${meta.run_accession}" } publishDir = [ @@ -68,13 +68,13 @@ process { withName: FASTP_PAIRED { ext.args = [ // collapsing options - option to retain singletons - params.shortread_clipmerge_excludeunmerged ? '' : "--include_unmerged", + params.shortread_qc_excludeunmerged ? '' : "--include_unmerged", // trimming options - params.shortread_clipmerge_skipadaptertrim ? "--disable_adapter_trimming" : "", - params.shortread_clipmerge_adapter1 ? "--adapter_sequence ${params.shortread_clipmerge_adapter1}" : "", - params.shortread_clipmerge_adapter2 ? "--adapter_sequence_r2 ${params.shortread_clipmerge_adapter2}" : "--detect_adapter_for_pe", + params.shortread_qc_skipadaptertrim ? "--disable_adapter_trimming" : "", + params.shortread_qc_adapter1 ? "--adapter_sequence ${params.shortread_qc_adapter1}" : "", + params.shortread_qc_adapter2 ? "--adapter_sequence_r2 ${params.shortread_qc_adapter2}" : "--detect_adapter_for_pe", // filtering options - "--length_required ${params.shortread_clipmerge_minlength}" + "--length_required ${params.shortread_qc_minlength}" ].join(' ').trim() ext.prefix = { "${meta.id}_${meta.run_accession}" } publishDir = [ @@ -88,10 +88,10 @@ process { withName: ADAPTERREMOVAL_SINGLE { ext.args = [ // trimming options - params.shortread_clipmerge_skipadaptertrim ? "--adapter1 '' --adapter2 ''" : "", - params.shortread_clipmerge_adapter1 ? "--adapter1 ${params.shortread_clipmerge_adapter1}" : "", + params.shortread_qc_skipadaptertrim ? "--adapter1 '' --adapter2 ''" : "", + params.shortread_qc_adapter1 ? "--adapter1 ${params.shortread_qc_adapter1}" : "", // filtering options - "--minlength ${params.shortread_clipmerge_minlength}" + "--minlength ${params.shortread_qc_minlength}" ].join(' ').trim() ext.prefix = { "${meta.id}_${meta.run_accession}" } publishDir = [ @@ -105,13 +105,13 @@ process { withName: ADAPTERREMOVAL_PAIRED { ext.args = [ // collapsing options - params.shortread_clipmerge_mergepairs ? "--collapse" : "", + params.shortread_qc_mergepairs ? "--collapse" : "", // trimming options - params.shortread_clipmerge_skipadaptertrim ? "--adapter1 '' --adapter2 ''" : "", - params.shortread_clipmerge_adapter1 ? "--adapter1 ${params.shortread_clipmerge_adapter1}" : "", - params.shortread_clipmerge_adapter2 ? "--adapter2 ${params.shortread_clipmerge_adapter2}" : "", + params.shortread_qc_skipadaptertrim ? "--adapter1 '' --adapter2 ''" : "", + params.shortread_qc_adapter1 ? "--adapter1 ${params.shortread_qc_adapter1}" : "", + params.shortread_qc_adapter2 ? "--adapter2 ${params.shortread_qc_adapter2}" : "", // filtering options - "--minlength ${params.shortread_clipmerge_minlength}" + "--minlength ${params.shortread_qc_minlength}" ].join(' ').trim() ext.prefix = { "${meta.id}_${meta.run_accession}" } publishDir = [ @@ -132,6 +132,22 @@ process { ] } + withName: FILTLONG { + ext.args = [ + "--min_length ${params.longread_qc_minlength}", + "--keep_percent ${params.longread_qc_keepbppercent}", + "--target_bases ${params.longread_qc_targetnbases}" + ] + .join(' ').trim() + ext.prefix = { "${meta.id}_${meta.run_accession}" } + publishDir = [ + path: { "${params.outdir}/porechop" }, + mode: params.publish_dir_mode, + pattern: '*.fastq.gz', + enabled: params.save_preprocessed_reads + ] + } + withName: BOWTIE2_BUILD { publishDir = [ path: { "${params.outdir}/bowtie2/build" }, diff --git a/conf/test.config b/conf/test.config index a2464b2..ac7b0d3 100644 --- a/conf/test.config +++ b/conf/test.config @@ -24,8 +24,8 @@ params { // TODO nf-core: Give any required params for the test so that command line flags are not needed input = 'https://raw.githubusercontent.com/nf-core/test-datasets/taxprofiler/samplesheet.csv' databases = 'https://raw.githubusercontent.com/nf-core/test-datasets/taxprofiler/database.csv' - perform_shortread_clipmerge = true - perform_longread_clip = false + perform_shortread_qc = true + perform_longread_qc = false perform_shortread_complexityfilter = true perform_shortread_hostremoval = true shortread_hostremoval_reference = 'https://raw.githubusercontent.com/nf-core/test-datasets/modules/data/genomics/homo_sapiens/genome/genome.fasta' diff --git a/docs/usage.md b/docs/usage.md index cee2bb6..34af0eb 100644 --- a/docs/usage.md +++ b/docs/usage.md @@ -162,16 +162,16 @@ nf-core/taxprofiler offers four main preprocessing steps #### Read Processing -Raw sequencing read processing in the form of adapter clipping and paired-end read merging can be activated via the `--perform_shortread_clipmerge` or `--perform_longread_clip` flags. +Raw sequencing read processing in the form of adapter clipping and paired-end read merging can be activated via the `--perform_shortread_qc` or `--perform_longread_qc` flags. It is highly recommended to run this on raw reads to remove artefacts from sequencing that can cause false positive identification of taxa (e.g. contaminated reference genomes) and/or skews in taxonomic abundance profiles. There are currently two options for short-read preprocessing: `fastp` or `adapterremoval`. -For adapter clipping, you can either rely on tool default adapter sequences, or supply your own adapters (`--shortread_clipmerge_adapter1` and `--shortread_clipmerge_adapter2`) -By default, paired-end merging is not activated and paired-end profiling is performed where supported otherwise pairs will be independently profiled. If paired-end merging is activated you can also specify whether to exclude unmerged reads in the reads sent for profiling (`--shortread_clipmerge_mergepairs` and `--shortread_clipmerge_excludeunmerged`). -You can also turn off clipping and only perform paired-end merging, if requested. This can be useful when processing data downloaded from the ENA, SRA, or DDBJ (`--shortread_clipmerge_skipadaptertrim`). -Both tools support length filtering of reads and can be tuned with `--shortread_clipmerge_minlength`. Performing length filtering can be useful to remove short (often low sequencing complexity) sequences that result in unspecific classification and therefore slow down runtime during profiling, with minimal gain. +For adapter clipping, you can either rely on tool default adapter sequences, or supply your own adapters (`--shortread_qc_adapter1` and `--shortread_qc_adapter2`) +By default, paired-end merging is not activated and paired-end profiling is performed where supported otherwise pairs will be independently profiled. If paired-end merging is activated you can also specify whether to exclude unmerged reads in the reads sent for profiling (`--shortread_qc_mergepairs` and `--shortread_qc_excludeunmerged`). +You can also turn off clipping and only perform paired-end merging, if requested. This can be useful when processing data downloaded from the ENA, SRA, or DDBJ (`--shortread_qc_skipadaptertrim`). +Both tools support length filtering of reads and can be tuned with `--shortread_qc_minlength`. Performing length filtering can be useful to remove short (often low sequencing complexity) sequences that result in unspecific classification and therefore slow down runtime during profiling, with minimal gain. There is currently one option for long-read Oxford Nanopore processing: `porechop`. diff --git a/modules.json b/modules.json index a65926c..21c6a89 100644 --- a/modules.json +++ b/modules.json @@ -36,6 +36,9 @@ "fastqc": { "git_sha": "e745e167c1020928ef20ea1397b6b4d230681b4d" }, + "filtlong": { + "git_sha": "e745e167c1020928ef20ea1397b6b4d230681b4d" + }, "kaiju/kaiju": { "git_sha": "8856f127c58f6af479128be8b8df4d42e442ddbe" }, diff --git a/modules/nf-core/modules/filtlong/main.nf b/modules/nf-core/modules/filtlong/main.nf new file mode 100644 index 0000000..0e6fdd5 --- /dev/null +++ b/modules/nf-core/modules/filtlong/main.nf @@ -0,0 +1,36 @@ +process FILTLONG { + tag "$meta.id" + label 'process_low' + + conda (params.enable_conda ? "bioconda::filtlong=0.2.1" : null) + container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? + 'https://depot.galaxyproject.org/singularity/filtlong:0.2.1--h9a82719_0' : + 'quay.io/biocontainers/filtlong:0.2.1--h9a82719_0' }" + + input: + tuple val(meta), path(shortreads), path(longreads) + + output: + tuple val(meta), path("${meta.id}_lr_filtlong.fastq.gz"), emit: reads + path "versions.yml" , emit: versions + + when: + task.ext.when == null || task.ext.when + + script: + def args = task.ext.args ?: '' + def prefix = task.ext.prefix ?: "${meta.id}" + def short_reads = meta.single_end ? "-1 $shortreads" : "-1 ${shortreads[0]} -2 ${shortreads[1]}" + """ + filtlong \\ + $short_reads \\ + $args \\ + $longreads \\ + | gzip -n > ${prefix}_lr_filtlong.fastq.gz + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + filtlong: \$( filtlong --version | sed -e "s/Filtlong v//g" ) + END_VERSIONS + """ +} diff --git a/modules/nf-core/modules/filtlong/meta.yml b/modules/nf-core/modules/filtlong/meta.yml new file mode 100644 index 0000000..b3626e6 --- /dev/null +++ b/modules/nf-core/modules/filtlong/meta.yml @@ -0,0 +1,50 @@ +name: filtlong +description: Filtlong filters long reads based on quality measures or short read data. +keywords: + - nanopore + - quality control + - QC + - filtering + - long reads + - short reads +tools: + - filtlong: + description: Filtlong is a tool for filtering long reads. It can take a set of long reads and produce a smaller, better subset. It uses both read length (longer is better) and read identity (higher is better) when choosing which reads pass the filter. + homepage: https://anaconda.org/bioconda/filtlong + documentation: None + tool_dev_url: https://github.com/rrwick/Filtlong + doi: "" + licence: ["GPL v3"] + +input: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - shortreads: + type: file + description: fastq file + pattern: "*.{fq,fastq,fq.gz,fastq.gz}" + - longreads: + type: file + description: fastq file + pattern: "*.{fq,fastq,fq.gz,fastq.gz}" + +output: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - versions: + type: file + description: File containing software versions + pattern: "versions.yml" + - reads: + type: file + description: Filtered (compressed) fastq file + pattern: "*.fastq.gz" + +authors: + - "@d4straub" diff --git a/nextflow.config b/nextflow.config index 5644786..145e53b 100644 --- a/nextflow.config +++ b/nextflow.config @@ -55,16 +55,23 @@ params { databases = null // FASTQ preprocessing - perform_shortread_clipmerge = false - shortread_clipmerge_tool = 'fastp' - shortread_clipmerge_skipadaptertrim = false - shortread_clipmerge_mergepairs = false - shortread_clipmerge_excludeunmerged = false - shortread_clipmerge_adapter1 = null - shortread_clipmerge_adapter2 = null - shortread_clipmerge_minlength = 15 - perform_longread_clip = false - save_preprocessed_reads = false + perform_shortread_qc = false + shortread_qc_tool = 'fastp' + shortread_qc_skipadaptertrim = false + shortread_qc_mergepairs = false + shortread_qc_excludeunmerged = false + shortread_qc_adapter1 = null + shortread_qc_adapter2 = null + shortread_qc_minlength = 15 + + perform_longread_qc = false + longread_qc_run_clip = false + longread_qc_run_filter = false + longread_qc_minlength = 1000 + longread_qc_keepbppercent = 90 + longread_qc_targetnbases = 500000000 + + save_preprocessed_reads = false // Complexity filtering perform_shortread_complexityfilter = false @@ -185,6 +192,7 @@ profiles { } // Load igenomes.config if required + if (!params.igenomes_ignore) { includeConfig 'conf/igenomes.config' } else { diff --git a/nextflow_schema.json b/nextflow_schema.json index f429d1b..1a590bb 100644 --- a/nextflow_schema.json +++ b/nextflow_schema.json @@ -262,7 +262,7 @@ "type": "string", "default": "None" }, - "shortread_clipmerge_excludeunmerged": { + "shortread_qc_excludeunmerged": { "type": "boolean" }, "run_malt": { @@ -291,26 +291,26 @@ "type": "boolean", "description": "Enable MetaPhlAn for taxonomic profiling" }, - "shortread_clipmerge_tool": { + "shortread_qc_tool": { "type": "string", "default": "fastp", "enum": ["fastp", "adapterremoval"] }, - "shortread_clipmerge_skipadaptertrim": { + "shortread_qc_skipadaptertrim": { "type": "boolean" }, - "shortread_clipmerge_mergepairs": { + "shortread_qc_mergepairs": { "type": "boolean" }, - "shortread_clipmerge_adapter1": { + "shortread_qc_adapter1": { "type": "string", "default": "None" }, - "shortread_clipmerge_adapter2": { + "shortread_qc_adapter2": { "type": "string", "default": "None" }, - "shortread_clipmerge_minlength": { + "shortread_qc_minlength": { "type": "integer", "default": 15 }, @@ -347,10 +347,10 @@ "save_runmerged_reads": { "type": "boolean" }, - "perform_shortread_clipmerge": { + "perform_shortread_qc": { "type": "boolean" }, - "perform_longread_clip": { + "perform_longread_qc": { "type": "boolean" }, "perform_shortread_complexityfilter": { @@ -397,6 +397,24 @@ "type": "string", "default": "tsv", "enum": ["blast", "xml", "txt", "daa", "sam", "tsv", "paf"] + }, + "longread_qc_run_clip": { + "type": "boolean" + }, + "longread_qc_run_filter": { + "type": "boolean" + }, + "longread_qc_minlength": { + "type": "integer", + "default": 1000 + }, + "longread_qc_keepbppercent": { + "type": "integer", + "default": 90 + }, + "longread_qc_targetnbases": { + "type": "integer", + "default": 500000000 } } } diff --git a/subworkflows/local/longread_preprocessing.nf b/subworkflows/local/longread_preprocessing.nf index 2fa5f3b..5ae5417 100644 --- a/subworkflows/local/longread_preprocessing.nf +++ b/subworkflows/local/longread_preprocessing.nf @@ -4,6 +4,7 @@ include { FASTQC as FASTQC_PROCESSED } from '../../modules/nf-core/modules/fastqc/main' include { PORECHOP } from '../../modules/nf-core/modules/porechop/main' +include { FILTLONG } from '../../modules/nf-core/modules/filtlong/main' workflow LONGREAD_PREPROCESSING { take: @@ -13,20 +14,42 @@ workflow LONGREAD_PREPROCESSING { ch_versions = Channel.empty() ch_multiqc_files = Channel.empty() - PORECHOP ( reads ) + if ( params.longread_qc_run_clip && !params.longread_qc_run_filter ) { + PORECHOP ( reads ) - ch_processed_reads = PORECHOP.out.reads - .map { - meta, reads -> - def meta_new = meta.clone() - meta_new['single_end'] = 1 - [ meta_new, reads ] - } + ch_processed_reads = PORECHOP.out.reads + .map { + meta, reads -> + def meta_new = meta.clone() + meta_new['single_end'] = 1 + [ meta_new, reads ] - FASTQC_PROCESSED ( PORECHOP.out.reads ) - ch_versions = ch_versions.mix(PORECHOP.out.versions.first()) - ch_multiqc_files = ch_multiqc_files.mix( FASTQC_PROCESSED.out.zip ) + ch_versions = ch_versions.mix(PORECHOP.out.versions.first()) + } + } else if ( !params.longread_qc_run_clip && params.longread_qc_run_filter ) { + + ch_processed_reads = FILTLONG ( reads.map{ meta, reads -> [meta, [], reads ]} ) + ch_versions = ch_versions.mix(FILTLONG.out.versions.first()) + + } else { + PORECHOP ( reads ) + ch_clipped_reads = PORECHOP.out.reads + .map { + meta, reads -> + def meta_new = meta.clone() + meta_new['single_end'] = 1 + [ meta_new, reads ] + } + + ch_processed_reads = FILTLONG ( ch_clipped_reads.map{ meta, reads -> [meta, [], reads ]} ).reads + ch_versions = ch_versions.mix(PORECHOP.out.versions.first()) + ch_versions = ch_versions.mix(FILTLONG.out.versions.first()) + + } + + FASTQC_PROCESSED ( ch_processed_reads.dump(tag: "filtlong") ) + ch_multiqc_files = ch_multiqc_files.mix( FASTQC_PROCESSED.out.zip ) emit: reads = ch_processed_reads // channel: [ val(meta), [ reads ] ] diff --git a/subworkflows/local/shortread_adapterremoval.nf b/subworkflows/local/shortread_adapterremoval.nf index b573be9..e491423 100644 --- a/subworkflows/local/shortread_adapterremoval.nf +++ b/subworkflows/local/shortread_adapterremoval.nf @@ -29,7 +29,7 @@ workflow SHORTREAD_ADAPTERREMOVAL { * has to be exported in a separate channel and we must manually recombine when necessary. */ - if ( params.shortread_clipmerge_mergepairs && !params.shortread_clipmerge_excludeunmerged ) { + if ( params.shortread_qc_mergepairs && !params.shortread_qc_excludeunmerged ) { ch_concat_fastq = Channel.empty() .mix( @@ -54,7 +54,7 @@ workflow SHORTREAD_ADAPTERREMOVAL { ch_adapterremoval_reads_prepped = CAT_FASTQ.out.reads .mix(ADAPTERREMOVAL_SINGLE.out.singles_truncated) - } else if ( params.shortread_clipmerge_mergepairs && params.shortread_clipmerge_excludeunmerged ) { + } else if ( params.shortread_qc_mergepairs && params.shortread_qc_excludeunmerged ) { ch_concat_fastq = Channel.empty() .mix( diff --git a/subworkflows/local/shortread_fastp.nf b/subworkflows/local/shortread_fastp.nf index 6fed2ae..05e0f3d 100644 --- a/subworkflows/local/shortread_fastp.nf +++ b/subworkflows/local/shortread_fastp.nf @@ -21,9 +21,9 @@ workflow SHORTREAD_FASTP { FASTP_SINGLE ( ch_input_for_fastp.single, false, false ) // Last parameter here turns on merging of PE data - FASTP_PAIRED ( ch_input_for_fastp.paired, false, params.shortread_clipmerge_mergepairs ) + FASTP_PAIRED ( ch_input_for_fastp.paired, false, params.shortread_qc_mergepairs ) - if ( params.shortread_clipmerge_mergepairs ) { + if ( params.shortread_qc_mergepairs ) { ch_fastp_reads_prepped_pe = FASTP_PAIRED.out.reads_merged .map { meta, reads -> diff --git a/subworkflows/local/shortread_preprocessing.nf b/subworkflows/local/shortread_preprocessing.nf index b0ac25e..977a317 100644 --- a/subworkflows/local/shortread_preprocessing.nf +++ b/subworkflows/local/shortread_preprocessing.nf @@ -15,11 +15,11 @@ workflow SHORTREAD_PREPROCESSING { ch_versions = Channel.empty() ch_multiqc_files = Channel.empty() - if ( params.shortread_clipmerge_tool == "fastp" ) { + if ( params.shortread_qc_tool == "fastp" ) { ch_processed_reads = SHORTREAD_FASTP ( reads ).reads ch_versions = ch_versions.mix( SHORTREAD_FASTP.out.versions ) ch_multiqc_files = ch_multiqc_files.mix( SHORTREAD_FASTP.out.mqc ) - } else if ( params.shortread_clipmerge_tool == "adapterremoval" ) { + } else if ( params.shortread_qc_tool == "adapterremoval" ) { ch_processed_reads = SHORTREAD_ADAPTERREMOVAL ( reads ).reads ch_versions = ch_versions.mix( SHORTREAD_ADAPTERREMOVAL.out.versions ) ch_multiqc_files = ch_multiqc_files.mix( SHORTREAD_ADAPTERREMOVAL.out.mqc ) diff --git a/workflows/taxprofiler.nf b/workflows/taxprofiler.nf index a0046b2..2279fd5 100644 --- a/workflows/taxprofiler.nf +++ b/workflows/taxprofiler.nf @@ -19,8 +19,11 @@ for (param in checkPathParamList) { if (param) { file(param, checkIfExists: true // Check mandatory parameters if (params.input ) { ch_input = file(params.input) } else { exit 1, 'Input samplesheet not specified!' } if (params.databases) { ch_databases = file(params.databases) } else { exit 1, 'Input database sheet not specified!' } -if (params.shortread_clipmerge_mergepairs && params.run_malt ) log.warn "[nf-core/taxprofiler] MALT does not accept uncollapsed paired-reads. Pairs will be profiled as separate files." -if (params.shortread_clipmerge_excludeunmerged && !params.shortread_clipmerge_mergepairs) exit 1, "ERROR: [nf-core/taxprofiler] cannot include unmerged reads when merging not turned on. Please specify --shortread_clipmerge_mergepairs" + +if (params.shortread_qc_mergepairs && params.run_malt ) log.warn "[nf-core/taxprofiler] MALT does not accept uncollapsed paired-short reads. Pairs will be profiled as separate files." +if (params.shortread_qc_excludeunmerged && !params.shortread_qc_mergepairs) exit 1, "ERROR: [nf-core/taxprofiler] cannot include unmerged reads when merging not turned on. Please specify --shortread_qc_mergepairs" + +if ( (params.longread_qc_run_clip || params.longread_qc_run_filter) & !params.perform_longread_qc ) exit 1, "ERROR: [nf-core/taxprofiler] --longread_qc_run_clip or --longread_qc_run_filter requested but quality-control not turned on. Please specify --perform_long_qc" if (params.perform_shortread_hostremoval && !params.shortread_hostremoval_reference) { exit 1, "ERROR: [nf-core/taxprofiler] --shortread_hostremoval requested but no --shortread_hostremoval_reference FASTA supplied. Check input." } if (!params.shortread_hostremoval_reference && params.shortread_hostremoval_reference_index) { exit 1, "ERROR: [nf-core/taxprofiler] --shortread_hostremoval_index provided but no --shortread_hostremoval_reference FASTA supplied. Check input." } @@ -110,14 +113,14 @@ workflow TAXPROFILER { /* SUBWORKFLOW: PERFORM PREPROCESSING */ - if ( params.perform_shortread_clipmerge ) { + if ( params.perform_shortread_qc ) { ch_shortreads_preprocessed = SHORTREAD_PREPROCESSING ( INPUT_CHECK.out.fastq ).reads ch_versions = ch_versions.mix( SHORTREAD_PREPROCESSING.out.versions ) } else { ch_shortreads_preprocessed = INPUT_CHECK.out.fastq } - if ( params.perform_longread_clip ) { + if ( params.perform_longread_qc ) { ch_longreads_preprocessed = LONGREAD_PREPROCESSING ( INPUT_CHECK.out.nanopore ).reads .map { it -> [ it[0], [it[1]] ] } ch_versions = ch_versions.mix( LONGREAD_PREPROCESSING.out.versions ) @@ -211,11 +214,11 @@ workflow TAXPROFILER { ch_multiqc_files = ch_multiqc_files.mix(CUSTOM_DUMPSOFTWAREVERSIONS.out.mqc_yml.collect()) ch_multiqc_files = ch_multiqc_files.mix(FASTQC.out.zip.collect{it[1]}.ifEmpty([])) - if (params.perform_shortread_clipmerge) { + if (params.perform_shortread_qc) { ch_multiqc_files = ch_multiqc_files.mix( SHORTREAD_PREPROCESSING.out.mqc.collect{it[1]}.ifEmpty([]) ) } - if (params.perform_longread_clip) { + if (params.perform_longread_qc) { ch_multiqc_files = ch_multiqc_files.mix( LONGREAD_PREPROCESSING.out.mqc.collect{it[1]}.ifEmpty([]) ) } From 409470642141460daace239396d7fdc95b0580b5 Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Sun, 1 May 2022 07:24:58 +0200 Subject: [PATCH 192/789] Only create profiler input channels when profiler activate --- subworkflows/local/profiling.nf | 138 +++++++++++++++++--------------- 1 file changed, 72 insertions(+), 66 deletions(-) diff --git a/subworkflows/local/profiling.nf b/subworkflows/local/profiling.nf index 9389e19..d8e9c84 100644 --- a/subworkflows/local/profiling.nf +++ b/subworkflows/local/profiling.nf @@ -48,7 +48,7 @@ workflow PROFILING { } /* - PREPARE PROFILER INPUT CHANNELS + PREPARE PROFILER INPUT CHANNELS & RUN PROFILING */ // Each tool as a slightly different input structure and generally separate @@ -56,74 +56,26 @@ workflow PROFILING { // for each tool and make liberal use of multiMap to keep reads/databases // channel element order in sync with each other - // MALT: We groupTuple to have all samples in one channel for MALT as database - // loading takes a long time, so we only want to run it once per database - // TODO document somewhere we only accept illumina short reads for MALT? - ch_input_for_malt = ch_input_for_profiling.malt - .filter { it[0]['instrument_platform'] == 'ILLUMINA' } - .map { - it -> - def temp_meta = [ id: it[2]['db_name']] + it[2] - def db = it[3] - [ temp_meta, it[1], db ] - } - .groupTuple(by: [0,2]) - .multiMap { - it -> - reads: [ it[0], it[1].flatten() ] - db: it[2] - } - - // All subsequent tools can easily run on a per-sample basis - - ch_input_for_kraken2 = ch_input_for_profiling.kraken2 - .multiMap { - it -> - reads: [ it[0] + it[2], it[1] ] - db: it[3] - } - - ch_input_for_centrifuge = ch_input_for_profiling.centrifuge - .filter{ - if (it[0].is_fasta) log.warn "[nf-core/taxprofiler] Centrifuge currently does not accept FASTA files as input. Skipping Centrifuge for sample ${it[0].id}." - !it[0].is_fasta - } - .multiMap { - it -> - reads: [ it[0] + it[2], it[1] ] - db: it[3] - } - - ch_input_for_metaphlan3 = ch_input_for_profiling.metaphlan3 - .filter{ - if (it[0].is_fasta) log.warn "[nf-core/taxprofiler] MetaPhlAn3 currently does not accept FASTA files as input. Skipping MetaPhlAn3 for sample ${it[0].id}." - !it[0].is_fasta - } - .multiMap { - it -> - reads: [it[0] + it[2], it[1]] - db: it[3] - } + if ( params.run_malt ) { - ch_input_for_kaiju = ch_input_for_profiling.kaiju - .multiMap { - it -> - reads: [it[0] + it[2], it[1]] - db: it[3] - } - ch_input_for_diamond = ch_input_for_profiling.diamond - .multiMap { - it -> - reads: [it[0] + it[2], it[1]] - db: it[3] - } - - /* - RUN PROFILING - */ + // MALT: We groupTuple to have all samples in one channel for MALT as database + // loading takes a long time, so we only want to run it once per database + // TODO document somewhere we only accept illumina short reads for MALT? + ch_input_for_malt = ch_input_for_profiling.malt + .filter { it[0]['instrument_platform'] == 'ILLUMINA' } + .map { + it -> + def temp_meta = [ id: it[2]['db_name']] + it[2] + def db = it[3] + [ temp_meta, it[1], db ] + } + .groupTuple(by: [0,2]) + .multiMap { + it -> + reads: [ it[0], it[1].flatten() ] + db: it[2] - if ( params.run_malt ) { MALT_RUN ( ch_input_for_malt.reads, params.malt_mode, ch_input_for_malt.db ) ch_maltrun_for_megan = MALT_RUN.out.rma6 @@ -143,40 +95,94 @@ workflow PROFILING { ch_multiqc_files = ch_multiqc_files.mix( MALT_RUN.out.log.collect{it[1]}.ifEmpty([]) ) ch_versions = ch_versions.mix( MALT_RUN.out.versions.first(), MEGAN_RMA2INFO.out.versions.first() ) ch_raw_profiles = ch_raw_profiles.mix( MEGAN_RMA2INFO.out.txt ) + } if ( params.run_kraken2 ) { + + ch_input_for_kraken2 = ch_input_for_profiling.kraken2 + .multiMap { + it -> + reads: [ it[0] + it[2], it[1] ] + db: it[3] + } + KRAKEN2_KRAKEN2 ( ch_input_for_kraken2.reads, ch_input_for_kraken2.db ) ch_multiqc_files = ch_multiqc_files.mix( KRAKEN2_KRAKEN2.out.txt.collect{it[1]}.ifEmpty([]) ) ch_versions = ch_versions.mix( KRAKEN2_KRAKEN2.out.versions.first() ) ch_raw_profiles = ch_raw_profiles.mix( KRAKEN2_KRAKEN2.out.txt ) + } if ( params.run_centrifuge ) { + + ch_input_for_centrifuge = ch_input_for_profiling.centrifuge + .filter{ + if (it[0].is_fasta) log.warn "[nf-core/taxprofiler] Centrifuge currently does not accept FASTA files as input. Skipping Centrifuge for sample ${it[0].id}." + !it[0].is_fasta + } + .multiMap { + it -> + reads: [ it[0] + it[2], it[1] ] + db: it[3] + } + CENTRIFUGE_CENTRIFUGE ( ch_input_for_centrifuge.reads, ch_input_for_centrifuge.db, params.centrifuge_save_unaligned, params.centrifuge_save_aligned, params.centrifuge_sam_format ) CENTRIFUGE_KREPORT (CENTRIFUGE_CENTRIFUGE.out.results, ch_input_for_centrifuge.db) ch_versions = ch_versions.mix( CENTRIFUGE_CENTRIFUGE.out.versions.first() ) ch_raw_profiles = ch_raw_profiles.mix( CENTRIFUGE_KREPORT.out.kreport ) + } if ( params.run_metaphlan3 ) { + + ch_input_for_metaphlan3 = ch_input_for_profiling.metaphlan3 + .filter{ + if (it[0].is_fasta) log.warn "[nf-core/taxprofiler] MetaPhlAn3 currently does not accept FASTA files as input. Skipping MetaPhlAn3 for sample ${it[0].id}." + !it[0].is_fasta + } + .multiMap { + it -> + reads: [it[0] + it[2], it[1]] + db: it[3] + } + METAPHLAN3 ( ch_input_for_metaphlan3.reads, ch_input_for_metaphlan3.db ) ch_versions = ch_versions.mix( METAPHLAN3.out.versions.first() ) ch_raw_profiles = ch_raw_profiles.mix( METAPHLAN3.out.biom ) + } if ( params.run_kaiju ) { + + ch_input_for_kaiju = ch_input_for_profiling.kaiju + .multiMap { + it -> + reads: [it[0] + it[2], it[1]] + db: it[3] + } + KAIJU_KAIJU ( ch_input_for_kaiju.reads, ch_input_for_kaiju.db) KAIJU_KAIJU2TABLE (KAIJU_KAIJU.out.results, ch_input_for_kaiju.db, params.kaiju_taxon_name) ch_multiqc_files = ch_multiqc_files.mix( KAIJU_KAIJU2TABLE.out.summary.collect{it[1]}.ifEmpty([]) ) ch_versions = ch_versions.mix( KAIJU_KAIJU.out.versions.first() ) ch_raw_profiles = ch_raw_profiles.mix( KAIJU_KAIJU2TABLE.out.summary ) + } if ( params.run_diamond ) { + + ch_input_for_diamond = ch_input_for_profiling.diamond + .multiMap { + it -> + reads: [it[0] + it[2], it[1]] + db: it[3] + } + DIAMOND_BLASTX ( ch_input_for_diamond.reads, ch_input_for_diamond.db, params.diamond_output_format ) ch_versions = ch_versions.mix( DIAMOND_BLASTX.out.versions.first() ) ch_raw_profiles = ch_raw_profiles.mix( DIAMOND_BLASTX.out.output ) + } emit: From d5049a34e49c2a093039b83b183e48a81c6e9d60 Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Sun, 1 May 2022 07:28:29 +0200 Subject: [PATCH 193/789] Add missing close bracket --- subworkflows/local/profiling.nf | 1 + 1 file changed, 1 insertion(+) diff --git a/subworkflows/local/profiling.nf b/subworkflows/local/profiling.nf index d8e9c84..7fb3ce9 100644 --- a/subworkflows/local/profiling.nf +++ b/subworkflows/local/profiling.nf @@ -75,6 +75,7 @@ workflow PROFILING { it -> reads: [ it[0], it[1].flatten() ] db: it[2] + } MALT_RUN ( ch_input_for_malt.reads, params.malt_mode, ch_input_for_malt.db ) From a821f748ee89ade6e229edab28fa7f3399969596 Mon Sep 17 00:00:00 2001 From: ljmesi <37740329+ljmesi@users.noreply.github.com> Date: Tue, 3 May 2022 09:28:46 +0200 Subject: [PATCH 194/789] Add modules --- conf/modules.config | 41 ++++++++++++ modules.json | 14 +++- modules/nf-core/modules/metaphlan3/main.nf | 2 +- .../nf-core/modules/minimap2/align/main.nf | 48 ++++++++++++++ .../nf-core/modules/minimap2/align/meta.yml | 65 +++++++++++++++++++ .../nf-core/modules/minimap2/index/main.nf | 33 ++++++++++ .../nf-core/modules/minimap2/index/meta.yml | 30 +++++++++ .../nf-core/modules/samtools/bam2fq/main.nf | 56 ++++++++++++++++ .../nf-core/modules/samtools/bam2fq/meta.yml | 55 ++++++++++++++++ modules/nf-core/modules/samtools/view/main.nf | 44 +++++++++++++ .../nf-core/modules/samtools/view/meta.yml | 57 ++++++++++++++++ nf-core/modules/samtools/bam2fq/main.nf | 56 ++++++++++++++++ nf-core/modules/samtools/bam2fq/meta.yml | 55 ++++++++++++++++ 13 files changed, 554 insertions(+), 2 deletions(-) create mode 100644 modules/nf-core/modules/minimap2/align/main.nf create mode 100644 modules/nf-core/modules/minimap2/align/meta.yml create mode 100644 modules/nf-core/modules/minimap2/index/main.nf create mode 100644 modules/nf-core/modules/minimap2/index/meta.yml create mode 100644 modules/nf-core/modules/samtools/bam2fq/main.nf create mode 100644 modules/nf-core/modules/samtools/bam2fq/meta.yml create mode 100644 modules/nf-core/modules/samtools/view/main.nf create mode 100644 modules/nf-core/modules/samtools/view/meta.yml create mode 100644 nf-core/modules/samtools/bam2fq/main.nf create mode 100644 nf-core/modules/samtools/bam2fq/meta.yml diff --git a/conf/modules.config b/conf/modules.config index d8fb382..b707954 100644 --- a/conf/modules.config +++ b/conf/modules.config @@ -164,6 +164,47 @@ process { ] } + withName: MINIMAP2_INDEX { + ext.args = '-x map-ont' + publishDir = [ + path: { "${params.outdir}/minimap2/index" }, + mode: params.publish_dir_mode, + enabled: params.save_minimap2_hostremoval_index, + pattern: 'minimap2' + ] + } + + withName: MINIMAP2_ALIGN { + ext.prefix = { "${meta.id}_${meta.run_accession}" } + publishDir = [ + path: { "${params.outdir}/minimap2/align" }, + mode: params.publish_dir_mode, + enabled: params.save_minimap2_hostremoval_mapped, + pattern: '*.bam' + ] + } + + withName: SAMTOOLS_VIEW { + ext.args = '-f 4' + ext.prefix = { "${meta.id}.mapped.sorted" } + publishDir = [ + path: { "${params.outdir}/samtools/view" }, + mode: params.publish_dir_mode, + enabled: params.save_samtools_unmapped_bam, + pattern: '*.bam' + ] + } + + withName: SAMTOOLS_BAM2FQ { + ext.prefix = { "${meta.id}_${meta.run_accession}" } + publishDir = [ + path: { "${params.outdir}/samtools/bam2fq" }, + mode: params.publish_dir_mode, + enabled: params.save_minimap2_unmapped_fq, + pattern: '*.fq.gz' + ] + } + withName: BBMAP_BBDUK { ext.args = [ "entropy=${params.shortread_complexityfilter_entropy}", diff --git a/modules.json b/modules.json index a65926c..071234d 100644 --- a/modules.json +++ b/modules.json @@ -52,6 +52,12 @@ "git_sha": "2d38566eca4cc15142b2ffa7c11837569b39aece" }, "metaphlan3": { + "git_sha": "ed4dd1a928ebf4308efb720de878045f7773f8e2" + }, + "minimap2/align": { + "git_sha": "1a5a9e7b4009dcf34e6867dd1a5a1d9a718b027b" + }, + "minimap2/index": { "git_sha": "e745e167c1020928ef20ea1397b6b4d230681b4d" }, "multiqc": { @@ -63,9 +69,15 @@ "prinseqplusplus": { "git_sha": "f1c5384c31e985591716afdd732cf8c2ae29d05b" }, + "samtools/bam2fq": { + "git_sha": "897c33d5da084b61109500ee44c01da2d3e4e773" + }, + "samtools/view": { + "git_sha": "12afb6b0faf3cabf769c9a2a7dd477e3f066eac0" + }, "untar": { "git_sha": "e080f4c8acf5760039ed12ec1f206170f3f9a918" } } } -} +} \ No newline at end of file diff --git a/modules/nf-core/modules/metaphlan3/main.nf b/modules/nf-core/modules/metaphlan3/main.nf index 3fc6b27..bff0eb9 100644 --- a/modules/nf-core/modules/metaphlan3/main.nf +++ b/modules/nf-core/modules/metaphlan3/main.nf @@ -23,7 +23,7 @@ process METAPHLAN3 { script: def args = task.ext.args ?: '' def prefix = task.ext.prefix ?: "${meta.id}" - def input_type = ("$input".endsWith(".fastq.gz")) ? "--input_type fastq" : ("$input".contains(".fasta")) ? "--input_type fasta" : ("$input".endsWith(".bowtie2out.txt")) ? "--input_type bowtie2out" : "--input_type sam" + def input_type = ("$input".endsWith(".fastq.gz") || "$input".endsWith(".fq.gz")) ? "--input_type fastq" : ("$input".contains(".fasta")) ? "--input_type fasta" : ("$input".endsWith(".bowtie2out.txt")) ? "--input_type bowtie2out" : "--input_type sam" def input_data = ("$input_type".contains("fastq")) && !meta.single_end ? "${input[0]},${input[1]}" : "$input" def bowtie2_out = "$input_type" == "--input_type bowtie2out" || "$input_type" == "--input_type sam" ? '' : "--bowtie2out ${prefix}.bowtie2out.txt" diff --git a/modules/nf-core/modules/minimap2/align/main.nf b/modules/nf-core/modules/minimap2/align/main.nf new file mode 100644 index 0000000..08ac6ee --- /dev/null +++ b/modules/nf-core/modules/minimap2/align/main.nf @@ -0,0 +1,48 @@ +process MINIMAP2_ALIGN { + tag "$meta.id" + label 'process_medium' + + conda (params.enable_conda ? 'bioconda::minimap2=2.21 bioconda::samtools=1.12' : null) + container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? + 'https://depot.galaxyproject.org/singularity/mulled-v2-66534bcbb7031a148b13e2ad42583020b9cd25c4:1679e915ddb9d6b4abda91880c4b48857d471bd8-0' : + 'quay.io/biocontainers/mulled-v2-66534bcbb7031a148b13e2ad42583020b9cd25c4:1679e915ddb9d6b4abda91880c4b48857d471bd8-0' }" + + input: + tuple val(meta), path(reads) + path reference + val bam_format + val cigar_paf_format + val cigar_bam + + output: + tuple val(meta), path("*.paf"), optional: true, emit: paf + tuple val(meta), path("*.bam"), optional: true, emit: bam + path "versions.yml" , emit: versions + + when: + task.ext.when == null || task.ext.when + + script: + def args = task.ext.args ?: '' + def prefix = task.ext.prefix ?: "${meta.id}" + def input_reads = meta.single_end ? "$reads" : "${reads[0]} ${reads[1]}" + def bam_output = bam_format ? "-a | samtools sort | samtools view -@ ${task.cpus} -b -h -o ${prefix}.bam" : "-o ${prefix}.paf" + def cigar_paf = cigar_paf_format && !bam_format ? "-c" : '' + def set_cigar_bam = cigar_bam && bam_format ? "-L" : '' + """ + minimap2 \\ + $args \\ + -t $task.cpus \\ + $reference \\ + $input_reads \\ + $cigar_paf \\ + $set_cigar_bam \\ + $bam_output + + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + minimap2: \$(minimap2 --version 2>&1) + END_VERSIONS + """ +} diff --git a/modules/nf-core/modules/minimap2/align/meta.yml b/modules/nf-core/modules/minimap2/align/meta.yml new file mode 100644 index 0000000..991b39a --- /dev/null +++ b/modules/nf-core/modules/minimap2/align/meta.yml @@ -0,0 +1,65 @@ +name: minimap2_align +description: A versatile pairwise aligner for genomic and spliced nucleotide sequences +keywords: + - align + - fasta + - fastq + - genome + - paf + - reference +tools: + - minimap2: + description: | + A versatile pairwise aligner for genomic and spliced nucleotide sequences. + homepage: https://github.com/lh3/minimap2 + documentation: https://github.com/lh3/minimap2#uguide + licence: ["MIT"] +input: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - reads: + type: file + description: | + List of input FASTA or FASTQ files of size 1 and 2 for single-end + and paired-end data, respectively. + - reference: + type: file + description: | + Reference database in FASTA format. + - bam_format: + type: boolean + description: Specify that output should be in BAM format + - cigar_paf_format: + type: boolean + description: Specify that output CIGAR should be in PAF format + - cigar_bam: + type: boolean + description: | + Write CIGAR with >65535 ops at the CG tag. This is recommended when + doing XYZ (https://github.com/lh3/minimap2#working-with-65535-cigar-operations) +output: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - paf: + type: file + description: Alignment in PAF format + pattern: "*.paf" + - bam: + type: file + description: Alignment in BAM format + pattern: "*.bam" + - versions: + type: file + description: File containing software versions + pattern: "versions.yml" +authors: + - "@heuermh" + - "@sofstam" + - "@sateeshperi" + - "@jfy133" diff --git a/modules/nf-core/modules/minimap2/index/main.nf b/modules/nf-core/modules/minimap2/index/main.nf new file mode 100644 index 0000000..3dfeb86 --- /dev/null +++ b/modules/nf-core/modules/minimap2/index/main.nf @@ -0,0 +1,33 @@ +process MINIMAP2_INDEX { + label 'process_medium' + + conda (params.enable_conda ? 'bioconda::minimap2=2.21' : null) + container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? + 'https://depot.galaxyproject.org/singularity/minimap2:2.21--h5bf99c6_0' : + 'quay.io/biocontainers/minimap2:2.21--h5bf99c6_0' }" + + input: + path fasta + + output: + path "*.mmi" , emit: index + path "versions.yml" , emit: versions + + when: + task.ext.when == null || task.ext.when + + script: + def args = task.ext.args ?: '' + """ + minimap2 \\ + -t $task.cpus \\ + -d ${fasta.baseName}.mmi \\ + $args \\ + $fasta + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + minimap2: \$(minimap2 --version 2>&1) + END_VERSIONS + """ +} diff --git a/modules/nf-core/modules/minimap2/index/meta.yml b/modules/nf-core/modules/minimap2/index/meta.yml new file mode 100644 index 0000000..3bf9f04 --- /dev/null +++ b/modules/nf-core/modules/minimap2/index/meta.yml @@ -0,0 +1,30 @@ +name: minimap2_index +description: Provides fasta index required by minimap2 alignment. +keywords: + - index + - fasta + - reference +tools: + - minimap2: + description: | + A versatile pairwise aligner for genomic and spliced nucleotide sequences. + homepage: https://github.com/lh3/minimap2 + documentation: https://github.com/lh3/minimap2#uguide + licence: ["MIT"] +input: + - fasta: + type: file + description: | + Reference database in FASTA format. +output: + - mmi: + type: file + description: Minimap2 fasta index. + pattern: "*.mmi" + - versions: + type: file + description: File containing software versions + pattern: "versions.yml" +authors: + - "@yuukiiwa" + - "@drpatelh" diff --git a/modules/nf-core/modules/samtools/bam2fq/main.nf b/modules/nf-core/modules/samtools/bam2fq/main.nf new file mode 100644 index 0000000..554af48 --- /dev/null +++ b/modules/nf-core/modules/samtools/bam2fq/main.nf @@ -0,0 +1,56 @@ +process SAMTOOLS_BAM2FQ { + tag "$meta.id" + label 'process_low' + + conda (params.enable_conda ? "bioconda::samtools=1.15.1" : null) + container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? + 'https://depot.galaxyproject.org/singularity/samtools:1.15.1--h1170115_0' : + 'quay.io/biocontainers/samtools:1.15.1--h1170115_0' }" + + input: + tuple val(meta), path(inputbam) + val split + + output: + tuple val(meta), path("*.fq.gz"), emit: reads + path "versions.yml" , emit: versions + + when: + task.ext.when == null || task.ext.when + + script: + def args = task.ext.args ?: '' + def prefix = task.ext.prefix ?: "${meta.id}" + + if (split){ + """ + samtools \\ + bam2fq \\ + $args \\ + -@ $task.cpus \\ + -1 ${prefix}_1.fq.gz \\ + -2 ${prefix}_2.fq.gz \\ + -0 ${prefix}_other.fq.gz \\ + -s ${prefix}_singleton.fq.gz \\ + $inputbam + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + samtools: \$(echo \$(samtools --version 2>&1) | sed 's/^.*samtools //; s/Using.*\$//') + END_VERSIONS + """ + } else { + """ + samtools \\ + bam2fq \\ + $args \\ + -@ $task.cpus \\ + $inputbam | gzip > ${prefix}_interleaved.fq.gz + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + samtools: \$(echo \$(samtools --version 2>&1) | sed 's/^.*samtools //; s/Using.*\$//') + END_VERSIONS + """ + } +} diff --git a/modules/nf-core/modules/samtools/bam2fq/meta.yml b/modules/nf-core/modules/samtools/bam2fq/meta.yml new file mode 100644 index 0000000..319a60c --- /dev/null +++ b/modules/nf-core/modules/samtools/bam2fq/meta.yml @@ -0,0 +1,55 @@ +name: samtools_bam2fq +description: | + The module uses bam2fq method from samtools to + convert a SAM, BAM or CRAM file to FASTQ format +keywords: + - bam2fq + - samtools + - fastq +tools: + - samtools: + description: Tools for dealing with SAM, BAM and CRAM files + homepage: None + documentation: http://www.htslib.org/doc/1.1/samtools.html + tool_dev_url: None + doi: "" + licence: ["MIT"] + +input: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - inputbam: + type: file + description: BAM/CRAM/SAM file + pattern: "*.{bam,cram,sam}" + - split: + type: boolean + description: | + TRUE/FALSE value to indicate if reads should be separated into + /1, /2 and if present other, or singleton. + Note: choosing TRUE will generate 4 different files. + Choosing FALSE will produce a single file, which will be interleaved in case + the input contains paired reads. + +output: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - versions: + type: file + description: File containing software versions + pattern: "versions.yml" + - reads: + type: file + description: | + FASTQ files, which will be either a group of 4 files (read_1, read_2, other and singleton) + or a single interleaved .fq.gz file if the user chooses not to split the reads. + pattern: "*.fq.gz" + +authors: + - "@lescai" diff --git a/modules/nf-core/modules/samtools/view/main.nf b/modules/nf-core/modules/samtools/view/main.nf new file mode 100644 index 0000000..11cfb74 --- /dev/null +++ b/modules/nf-core/modules/samtools/view/main.nf @@ -0,0 +1,44 @@ +process SAMTOOLS_VIEW { + tag "$meta.id" + label 'process_medium' + + conda (params.enable_conda ? "bioconda::samtools=1.15.1" : null) + container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? + 'https://depot.galaxyproject.org/singularity/samtools:1.15.1--h1170115_0' : + 'quay.io/biocontainers/samtools:1.15.1--h1170115_0' }" + + input: + tuple val(meta), path(input), path(index) + path fasta + + output: + tuple val(meta), path("*.bam") , emit: bam , optional: true + tuple val(meta), path("*.cram"), emit: cram, optional: true + path "versions.yml" , emit: versions + + when: + task.ext.when == null || task.ext.when + + script: + def args = task.ext.args ?: '' + def args2 = task.ext.args2 ?: '' + def prefix = task.ext.prefix ?: "${meta.id}" + def reference = fasta ? "--reference ${fasta} -C" : "" + def file_type = input.getExtension() + if ("$input" == "${prefix}.${file_type}") error "Input and output names are the same, use \"task.ext.prefix\" to disambiguate!" + """ + samtools \\ + view \\ + --threads ${task.cpus-1} \\ + ${reference} \\ + $args \\ + $input \\ + $args2 \\ + > ${prefix}.${file_type} + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + samtools: \$(echo \$(samtools --version 2>&1) | sed 's/^.*samtools //; s/Using.*\$//') + END_VERSIONS + """ +} diff --git a/modules/nf-core/modules/samtools/view/meta.yml b/modules/nf-core/modules/samtools/view/meta.yml new file mode 100644 index 0000000..a8b43ec --- /dev/null +++ b/modules/nf-core/modules/samtools/view/meta.yml @@ -0,0 +1,57 @@ +name: samtools_view +description: filter/convert SAM/BAM/CRAM file +keywords: + - view + - bam + - sam + - cram +tools: + - samtools: + description: | + SAMtools is a set of utilities for interacting with and post-processing + short DNA sequence read alignments in the SAM, BAM and CRAM formats, written by Heng Li. + These files are generated as output by short read aligners like BWA. + homepage: http://www.htslib.org/ + documentation: hhttp://www.htslib.org/doc/samtools.html + doi: 10.1093/bioinformatics/btp352 + licence: ["MIT"] +input: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - input: + type: file + description: BAM/CRAM/SAM file + pattern: "*.{bam,cram,sam}" + - index: + type: optional file + description: BAM.BAI/CRAM.CRAI file + pattern: "*.{.bai,.crai}" + - fasta: + type: optional file + description: Reference file the CRAM was created with + pattern: "*.{fasta,fa}" +output: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - bam: + type: file + description: filtered/converted BAM/SAM file + pattern: "*.{bam,sam}" + - cram: + type: file + description: filtered/converted CRAM file + pattern: "*.cram" + - versions: + type: file + description: File containing software versions + pattern: "versions.yml" +authors: + - "@drpatelh" + - "@joseespinosa" + - "@FriederikeHanssen" diff --git a/nf-core/modules/samtools/bam2fq/main.nf b/nf-core/modules/samtools/bam2fq/main.nf new file mode 100644 index 0000000..5d6aa79 --- /dev/null +++ b/nf-core/modules/samtools/bam2fq/main.nf @@ -0,0 +1,56 @@ +process SAMTOOLS_BAM2FQ { + tag "$meta.id" + label 'process_low' + + conda (params.enable_conda ? "bioconda::samtools=1.15.1" : null) + container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? + 'https://depot.galaxyproject.org/singularity/samtools:1.15.1--h1170115_0' : + 'quay.io/biocontainers/samtools:1.15.1--h1170115_0' }" + + input: + tuple val(meta), path(inputbam) + val split + + output: + tuple val(meta), path("*.fq.gz"), emit: reads + path "versions.yml" , emit: versions + + when: + task.ext.when == null || task.ext.when + + script: + def args = task.ext.args ?: '' + def prefix = task.ext.prefix ?: "${meta.id}" + + if (split){ + """ + samtools \\ + bam2fq \\ + $args \\ + -@ $task.cpus \\ + -1 ${prefix}_1.fq.gz \\ + -2 ${prefix}_2.fq.gz \\ + -0 ${prefix}_other.fq.gz \\ + -s ${prefix}_singleton.fq.gz \\ + $inputbam + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + samtools: \$(echo \$(samtools --version 2>&1) | sed 's/^.*samtools //; s/Using.*\$//') + END_VERSIONS + """ + } else { + """ + samtools \\ + bam2fq \\ + $args \\ + -@ $task.cpus \\ + $inputbam >${prefix}_interleaved.fq.gz + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + samtools: \$(echo \$(samtools --version 2>&1) | sed 's/^.*samtools //; s/Using.*\$//') + END_VERSIONS + """ + } +} diff --git a/nf-core/modules/samtools/bam2fq/meta.yml b/nf-core/modules/samtools/bam2fq/meta.yml new file mode 100644 index 0000000..319a60c --- /dev/null +++ b/nf-core/modules/samtools/bam2fq/meta.yml @@ -0,0 +1,55 @@ +name: samtools_bam2fq +description: | + The module uses bam2fq method from samtools to + convert a SAM, BAM or CRAM file to FASTQ format +keywords: + - bam2fq + - samtools + - fastq +tools: + - samtools: + description: Tools for dealing with SAM, BAM and CRAM files + homepage: None + documentation: http://www.htslib.org/doc/1.1/samtools.html + tool_dev_url: None + doi: "" + licence: ["MIT"] + +input: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - inputbam: + type: file + description: BAM/CRAM/SAM file + pattern: "*.{bam,cram,sam}" + - split: + type: boolean + description: | + TRUE/FALSE value to indicate if reads should be separated into + /1, /2 and if present other, or singleton. + Note: choosing TRUE will generate 4 different files. + Choosing FALSE will produce a single file, which will be interleaved in case + the input contains paired reads. + +output: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - versions: + type: file + description: File containing software versions + pattern: "versions.yml" + - reads: + type: file + description: | + FASTQ files, which will be either a group of 4 files (read_1, read_2, other and singleton) + or a single interleaved .fq.gz file if the user chooses not to split the reads. + pattern: "*.fq.gz" + +authors: + - "@lescai" From 5e6be52fab87d6b6a7f14ce254f63b02ad682a63 Mon Sep 17 00:00:00 2001 From: ljmesi <37740329+ljmesi@users.noreply.github.com> Date: Tue, 3 May 2022 09:34:27 +0200 Subject: [PATCH 195/789] Implement hostremoval --- nextflow.config | 18 ++++++--- subworkflows/local/longread_hostremoval.nf | 47 ++++++++++++++++++++++ workflows/taxprofiler.nf | 17 ++++++-- 3 files changed, 72 insertions(+), 10 deletions(-) create mode 100644 subworkflows/local/longread_hostremoval.nf diff --git a/nextflow.config b/nextflow.config index 5644786..04273f1 100644 --- a/nextflow.config +++ b/nextflow.config @@ -81,12 +81,18 @@ params { save_runmerged_reads = false // Host Removal - perform_shortread_hostremoval = false - shortread_hostremoval_reference = null - shortread_hostremoval_index = null - save_hostremoval_index = false - save_hostremoval_mapped = false - save_hostremoval_unmapped = false + perform_shortread_hostremoval = false + shortread_hostremoval_reference = null + shortread_hostremoval_index = null + longread_hostremoval_index = null + save_hostremoval_index = false + save_hostremoval_mapped = false + save_hostremoval_unmapped = false + save_minimap2_hostremoval_index = false + save_minimap2_hostremoval_mapped = false + save_minimap2_hostremoval_unmapped = false + save_samtools_unmapped_bam = false + save_minimap2_unmapped_fq = false // MALT run_malt = false diff --git a/subworkflows/local/longread_hostremoval.nf b/subworkflows/local/longread_hostremoval.nf new file mode 100644 index 0000000..7db020b --- /dev/null +++ b/subworkflows/local/longread_hostremoval.nf @@ -0,0 +1,47 @@ +// +// Remove host reads via alignment and export off-target reads +// + +include { MINIMAP2_INDEX } from '../../modules/nf-core/modules/minimap2/index/main' +include { MINIMAP2_ALIGN } from '../../modules/nf-core/modules/minimap2/align/main' +include { SAMTOOLS_VIEW } from '../../modules/nf-core/modules/samtools/view/main' +include { SAMTOOLS_BAM2FQ } from '../../modules/nf-core/modules/samtools/bam2fq/main' + +workflow LONGREAD_HOSTREMOVAL { + take: + reads // [ [ meta ], [ reads ] ] + reference // /path/to/fasta + index // /path/to/index + + main: + ch_versions = Channel.empty() + ch_multiqc_files = Channel.empty() + + if ( !params.longread_hostremoval_index ) { + ch_minimap2_index = MINIMAP2_INDEX ( reference ).index + ch_versions = ch_versions.mix( MINIMAP2_INDEX.out.versions ) + } else { + ch_minimap2_index = index + } + + MINIMAP2_ALIGN ( reads, ch_minimap2_index, true, false, false ) + ch_versions = ch_versions.mix( MINIMAP2_ALIGN.out.versions.first() ) + ch_minimap2_mapped = MINIMAP2_ALIGN.out.bam + .map { + meta, reads -> + [ meta, reads, [] ] + } + + + SAMTOOLS_VIEW ( ch_minimap2_mapped , [] ) + ch_versions = ch_versions.mix( SAMTOOLS_VIEW.out.versions.first() ) + + SAMTOOLS_BAM2FQ ( SAMTOOLS_VIEW.out.bam, false ) + ch_versions = ch_versions.mix( SAMTOOLS_BAM2FQ.out.versions.first() ) + + + emit: + reads = SAMTOOLS_BAM2FQ.out.reads // channel: [ val(meta), [ reads ] ] + versions = ch_versions // channel: [ versions.yml ] +} + diff --git a/workflows/taxprofiler.nf b/workflows/taxprofiler.nf index a0046b2..9eb53a3 100644 --- a/workflows/taxprofiler.nf +++ b/workflows/taxprofiler.nf @@ -26,7 +26,8 @@ if (params.perform_shortread_hostremoval && !params.shortread_hostremoval_refere if (!params.shortread_hostremoval_reference && params.shortread_hostremoval_reference_index) { exit 1, "ERROR: [nf-core/taxprofiler] --shortread_hostremoval_index provided but no --shortread_hostremoval_reference FASTA supplied. Check input." } if (params.shortread_hostremoval_reference ) { ch_reference = file(params.shortread_hostremoval_reference) } -if (params.shortread_hostremoval_index ) { ch_reference_index = file(params.shortread_hostremoval_index ) } else { ch_reference_index = [] } +if (params.shortread_hostremoval_index ) { ch_shortread_reference_index = file(params.shortread_hostremoval_index ) } else { ch_shortread_reference_index = [] } +if (params.longread_hostremoval_index ) { ch_longread_reference_index = file(params.longread_hostremoval_index ) } else { ch_longread_reference_index = [] } /* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -52,6 +53,7 @@ include { DB_CHECK } from '../subworkflows/local/db_check' include { SHORTREAD_PREPROCESSING } from '../subworkflows/local/shortread_preprocessing' include { LONGREAD_PREPROCESSING } from '../subworkflows/local/longread_preprocessing' include { SHORTREAD_HOSTREMOVAL } from '../subworkflows/local/shortread_hostremoval' +include { LONGREAD_HOSTREMOVAL } from '../subworkflows/local/longread_hostremoval' include { SHORTREAD_COMPLEXITYFILTERING } from '../subworkflows/local/shortread_complexityfiltering' include { PROFILING } from '../subworkflows/local/profiling' @@ -141,16 +143,23 @@ workflow TAXPROFILER { */ if ( params.perform_shortread_hostremoval ) { - ch_shortreads_hostremoved = SHORTREAD_HOSTREMOVAL ( ch_shortreads_filtered, ch_reference, ch_reference_index ).reads + ch_shortreads_hostremoved = SHORTREAD_HOSTREMOVAL ( ch_shortreads_filtered, ch_reference, ch_shortread_reference_index ).reads ch_versions = ch_versions.mix(SHORTREAD_HOSTREMOVAL.out.versions) } else { ch_shortreads_hostremoved = ch_shortreads_filtered } + if ( params.perform_longread_hostremoval ) { + ch_longreads_hostremoved = LONGREAD_HOSTREMOVAL ( ch_longreads_preprocessed, ch_reference, ch_longread_reference_index ).reads + ch_versions = ch_versions.mix(LONGREAD_HOSTREMOVAL.out.versions) + } else { + ch_longreads_hostremoved = ch_longreads_preprocessed + } + if ( params.perform_runmerging ) { ch_reads_for_cat_branch = ch_shortreads_hostremoved - .mix( ch_longreads_preprocessed ) + .mix( ch_longreads_hostremoved ) .map { meta, reads -> def meta_new = meta.clone() @@ -182,7 +191,7 @@ workflow TAXPROFILER { } else { ch_reads_runmerged = ch_shortreads_hostremoved - .mix( ch_longreads_preprocessed, INPUT_CHECK.out.fasta ) + .mix( ch_longreads_hostremoved, INPUT_CHECK.out.fasta ) } /* From afdebaf09a41cfc6fd3f3d3455f3f69b1e1dc608 Mon Sep 17 00:00:00 2001 From: ljmesi <37740329+ljmesi@users.noreply.github.com> Date: Tue, 3 May 2022 10:15:11 +0200 Subject: [PATCH 196/789] Remove own modification to a module --- modules/nf-core/modules/samtools/bam2fq/main.nf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/nf-core/modules/samtools/bam2fq/main.nf b/modules/nf-core/modules/samtools/bam2fq/main.nf index 554af48..0dd1da9 100644 --- a/modules/nf-core/modules/samtools/bam2fq/main.nf +++ b/modules/nf-core/modules/samtools/bam2fq/main.nf @@ -45,7 +45,7 @@ process SAMTOOLS_BAM2FQ { bam2fq \\ $args \\ -@ $task.cpus \\ - $inputbam | gzip > ${prefix}_interleaved.fq.gz + $inputbam > ${prefix}_interleaved.fq.gz cat <<-END_VERSIONS > versions.yml "${task.process}": From fa1c13263573e5cda53fb2468e8c339ec0ad0ecf Mon Sep 17 00:00:00 2001 From: ljmesi <37740329+ljmesi@users.noreply.github.com> Date: Tue, 3 May 2022 11:03:25 +0200 Subject: [PATCH 197/789] Update nextflow_schema --- nextflow_schema.json | 67 ++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 61 insertions(+), 6 deletions(-) diff --git a/nextflow_schema.json b/nextflow_schema.json index f429d1b..d3878c1 100644 --- a/nextflow_schema.json +++ b/nextflow_schema.json @@ -10,7 +10,10 @@ "type": "object", "fa_icon": "fas fa-terminal", "description": "Define where the pipeline should find input data and save output data.", - "required": ["input", "outdir"], + "required": [ + "input", + "outdir" + ], "properties": { "input": { "type": "string", @@ -173,7 +176,14 @@ "description": "Method used to save pipeline results to output directory.", "help_text": "The Nextflow `publishDir` option specifies which intermediate files should be saved to the output directory. This option tells the pipeline what method should be used to move these files. See [Nextflow docs](https://www.nextflow.io/docs/latest/process.html#publishdir) for details.", "fa_icon": "fas fa-copy", - "enum": ["symlink", "rellink", "link", "copy", "copyNoFollow", "move"], + "enum": [ + "symlink", + "rellink", + "link", + "copy", + "copyNoFollow", + "move" + ], "hidden": true }, "email_on_fail": { @@ -294,7 +304,10 @@ "shortread_clipmerge_tool": { "type": "string", "default": "fastp", - "enum": ["fastp", "adapterremoval"] + "enum": [ + "fastp", + "adapterremoval" + ] }, "shortread_clipmerge_skipadaptertrim": { "type": "boolean" @@ -335,7 +348,10 @@ "shortread_complexityfilter_prinseqplusplus_mode": { "type": "string", "default": "entropy", - "enum": ["entropy", "dust"] + "enum": [ + "entropy", + "dust" + ] }, "shortread_complexityfilter_prinseqplusplus_dustscore": { "type": "number", @@ -388,7 +404,14 @@ "kaiju_taxon_name": { "type": "string", "default": "species", - "enum": ["phylum", "class", "order", "family", "genus", "species"] + "enum": [ + "phylum", + "class", + "order", + "family", + "genus", + "species" + ] }, "run_diamond": { "type": "boolean" @@ -396,7 +419,39 @@ "diamond_output_format": { "type": "string", "default": "tsv", - "enum": ["blast", "xml", "txt", "daa", "sam", "tsv", "paf"] + "enum": [ + "blast", + "xml", + "txt", + "daa", + "sam", + "tsv", + "paf" + ] + }, + "longread_hostremoval_index": { + "type": "string", + "default": null + }, + "save_minimap2_hostremoval_index": { + "type": "string", + "default": "false", + "description": "Flag for publishing minimap2 host removal index" + }, + "save_minimap2_hostremoval_mapped": { + "type": "string", + "default": "false", + "description": "Flag for publishinig bam file with all long reads mapped to a reference" + }, + "save_samtools_unmapped_bam": { + "type": "string", + "default": "false", + "description": "Flag for publishing bam for reads that did not map to the host reference" + }, + "save_minimap2_unmapped_fq": { + "type": "string", + "default": "false", + "description": "Flag for publishing fastq files for reads that did not map to the host reference" } } } From 4b2a3789cd7ba15ac41f32f6179bcc1665cb8e47 Mon Sep 17 00:00:00 2001 From: ljmesi <37740329+ljmesi@users.noreply.github.com> Date: Tue, 3 May 2022 11:03:48 +0200 Subject: [PATCH 198/789] Update default values for host removal parameters --- nextflow.config | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/nextflow.config b/nextflow.config index 04273f1..95daba9 100644 --- a/nextflow.config +++ b/nextflow.config @@ -81,18 +81,18 @@ params { save_runmerged_reads = false // Host Removal - perform_shortread_hostremoval = false - shortread_hostremoval_reference = null - shortread_hostremoval_index = null - longread_hostremoval_index = null - save_hostremoval_index = false - save_hostremoval_mapped = false - save_hostremoval_unmapped = false - save_minimap2_hostremoval_index = false - save_minimap2_hostremoval_mapped = false - save_minimap2_hostremoval_unmapped = false - save_samtools_unmapped_bam = false - save_minimap2_unmapped_fq = false + perform_shortread_hostremoval = false + shortread_hostremoval_reference = null + shortread_hostremoval_index = null + save_hostremoval_index = false + save_hostremoval_mapped = false + save_hostremoval_unmapped = false + longread_hostremoval_index = null + save_minimap2_hostremoval_index = false + save_minimap2_hostremoval_mapped = false + save_samtools_unmapped_bam = false + save_minimap2_unmapped_fq = false + // MALT run_malt = false From 17039ebc6b143870331c4d2f8976a0fe63de0736 Mon Sep 17 00:00:00 2001 From: ljmesi <37740329+ljmesi@users.noreply.github.com> Date: Tue, 3 May 2022 11:07:23 +0200 Subject: [PATCH 199/789] Fix type to boolean for flags --- nextflow_schema.json | 16 ++++++---------- 1 file changed, 6 insertions(+), 10 deletions(-) diff --git a/nextflow_schema.json b/nextflow_schema.json index d3878c1..257f5cb 100644 --- a/nextflow_schema.json +++ b/nextflow_schema.json @@ -431,27 +431,23 @@ }, "longread_hostremoval_index": { "type": "string", - "default": null + "default": "None" }, "save_minimap2_hostremoval_index": { - "type": "string", - "default": "false", + "type": "boolean", "description": "Flag for publishing minimap2 host removal index" }, "save_minimap2_hostremoval_mapped": { - "type": "string", - "default": "false", + "type": "boolean", "description": "Flag for publishinig bam file with all long reads mapped to a reference" }, "save_samtools_unmapped_bam": { - "type": "string", - "default": "false", + "type": "boolean", "description": "Flag for publishing bam for reads that did not map to the host reference" }, "save_minimap2_unmapped_fq": { - "type": "string", - "default": "false", + "type": "boolean", "description": "Flag for publishing fastq files for reads that did not map to the host reference" } } -} +} \ No newline at end of file From 58d4dec70be5ac5eb2356aac351593c27f77502a Mon Sep 17 00:00:00 2001 From: ljmesi <37740329+ljmesi@users.noreply.github.com> Date: Tue, 3 May 2022 11:09:54 +0200 Subject: [PATCH 200/789] Update samtools view --- modules.json | 2 +- modules/nf-core/modules/samtools/view/main.nf | 12 ++++++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/modules.json b/modules.json index 071234d..b568d9c 100644 --- a/modules.json +++ b/modules.json @@ -73,7 +73,7 @@ "git_sha": "897c33d5da084b61109500ee44c01da2d3e4e773" }, "samtools/view": { - "git_sha": "12afb6b0faf3cabf769c9a2a7dd477e3f066eac0" + "git_sha": "6b64f9cb6c3dd3577931cc3cd032d6fb730000ce" }, "untar": { "git_sha": "e080f4c8acf5760039ed12ec1f206170f3f9a918" diff --git a/modules/nf-core/modules/samtools/view/main.nf b/modules/nf-core/modules/samtools/view/main.nf index 11cfb74..55194e8 100644 --- a/modules/nf-core/modules/samtools/view/main.nf +++ b/modules/nf-core/modules/samtools/view/main.nf @@ -41,4 +41,16 @@ process SAMTOOLS_VIEW { samtools: \$(echo \$(samtools --version 2>&1) | sed 's/^.*samtools //; s/Using.*\$//') END_VERSIONS """ + + stub: + def prefix = task.ext.prefix ?: "${meta.id}" + """ + touch ${prefix}.bam + touch ${prefix}.cram + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + samtools: \$(echo \$(samtools --version 2>&1) | sed 's/^.*samtools //; s/Using.*\$//') + END_VERSIONS + """ } From c833d4fd9ae037e297eda9dea69045715fc4a064 Mon Sep 17 00:00:00 2001 From: ljmesi <37740329+ljmesi@users.noreply.github.com> Date: Tue, 3 May 2022 11:42:05 +0200 Subject: [PATCH 201/789] Fix issues found with prettier --- modules.json | 2 +- nextflow_schema.json | 45 +++++++------------------------------------- 2 files changed, 8 insertions(+), 39 deletions(-) diff --git a/modules.json b/modules.json index b568d9c..ce1fbc5 100644 --- a/modules.json +++ b/modules.json @@ -80,4 +80,4 @@ } } } -} \ No newline at end of file +} diff --git a/nextflow_schema.json b/nextflow_schema.json index 257f5cb..1902e27 100644 --- a/nextflow_schema.json +++ b/nextflow_schema.json @@ -10,10 +10,7 @@ "type": "object", "fa_icon": "fas fa-terminal", "description": "Define where the pipeline should find input data and save output data.", - "required": [ - "input", - "outdir" - ], + "required": ["input", "outdir"], "properties": { "input": { "type": "string", @@ -176,14 +173,7 @@ "description": "Method used to save pipeline results to output directory.", "help_text": "The Nextflow `publishDir` option specifies which intermediate files should be saved to the output directory. This option tells the pipeline what method should be used to move these files. See [Nextflow docs](https://www.nextflow.io/docs/latest/process.html#publishdir) for details.", "fa_icon": "fas fa-copy", - "enum": [ - "symlink", - "rellink", - "link", - "copy", - "copyNoFollow", - "move" - ], + "enum": ["symlink", "rellink", "link", "copy", "copyNoFollow", "move"], "hidden": true }, "email_on_fail": { @@ -304,10 +294,7 @@ "shortread_clipmerge_tool": { "type": "string", "default": "fastp", - "enum": [ - "fastp", - "adapterremoval" - ] + "enum": ["fastp", "adapterremoval"] }, "shortread_clipmerge_skipadaptertrim": { "type": "boolean" @@ -348,10 +335,7 @@ "shortread_complexityfilter_prinseqplusplus_mode": { "type": "string", "default": "entropy", - "enum": [ - "entropy", - "dust" - ] + "enum": ["entropy", "dust"] }, "shortread_complexityfilter_prinseqplusplus_dustscore": { "type": "number", @@ -404,14 +388,7 @@ "kaiju_taxon_name": { "type": "string", "default": "species", - "enum": [ - "phylum", - "class", - "order", - "family", - "genus", - "species" - ] + "enum": ["phylum", "class", "order", "family", "genus", "species"] }, "run_diamond": { "type": "boolean" @@ -419,15 +396,7 @@ "diamond_output_format": { "type": "string", "default": "tsv", - "enum": [ - "blast", - "xml", - "txt", - "daa", - "sam", - "tsv", - "paf" - ] + "enum": ["blast", "xml", "txt", "daa", "sam", "tsv", "paf"] }, "longread_hostremoval_index": { "type": "string", @@ -450,4 +419,4 @@ "description": "Flag for publishing fastq files for reads that did not map to the host reference" } } -} \ No newline at end of file +} From f4abbe280ab6497a220fde116f606d588b49bf73 Mon Sep 17 00:00:00 2001 From: ljmesi <37740329+ljmesi@users.noreply.github.com> Date: Tue, 3 May 2022 12:56:49 +0200 Subject: [PATCH 202/789] Fix back to nf-core modules version --- .../nf-core/modules/samtools/bam2fq/main.nf | 2 +- nf-core/modules/samtools/bam2fq/main.nf | 56 ------------------- nf-core/modules/samtools/bam2fq/meta.yml | 55 ------------------ 3 files changed, 1 insertion(+), 112 deletions(-) delete mode 100644 nf-core/modules/samtools/bam2fq/main.nf delete mode 100644 nf-core/modules/samtools/bam2fq/meta.yml diff --git a/modules/nf-core/modules/samtools/bam2fq/main.nf b/modules/nf-core/modules/samtools/bam2fq/main.nf index 0dd1da9..5d6aa79 100644 --- a/modules/nf-core/modules/samtools/bam2fq/main.nf +++ b/modules/nf-core/modules/samtools/bam2fq/main.nf @@ -45,7 +45,7 @@ process SAMTOOLS_BAM2FQ { bam2fq \\ $args \\ -@ $task.cpus \\ - $inputbam > ${prefix}_interleaved.fq.gz + $inputbam >${prefix}_interleaved.fq.gz cat <<-END_VERSIONS > versions.yml "${task.process}": diff --git a/nf-core/modules/samtools/bam2fq/main.nf b/nf-core/modules/samtools/bam2fq/main.nf deleted file mode 100644 index 5d6aa79..0000000 --- a/nf-core/modules/samtools/bam2fq/main.nf +++ /dev/null @@ -1,56 +0,0 @@ -process SAMTOOLS_BAM2FQ { - tag "$meta.id" - label 'process_low' - - conda (params.enable_conda ? "bioconda::samtools=1.15.1" : null) - container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/samtools:1.15.1--h1170115_0' : - 'quay.io/biocontainers/samtools:1.15.1--h1170115_0' }" - - input: - tuple val(meta), path(inputbam) - val split - - output: - tuple val(meta), path("*.fq.gz"), emit: reads - path "versions.yml" , emit: versions - - when: - task.ext.when == null || task.ext.when - - script: - def args = task.ext.args ?: '' - def prefix = task.ext.prefix ?: "${meta.id}" - - if (split){ - """ - samtools \\ - bam2fq \\ - $args \\ - -@ $task.cpus \\ - -1 ${prefix}_1.fq.gz \\ - -2 ${prefix}_2.fq.gz \\ - -0 ${prefix}_other.fq.gz \\ - -s ${prefix}_singleton.fq.gz \\ - $inputbam - - cat <<-END_VERSIONS > versions.yml - "${task.process}": - samtools: \$(echo \$(samtools --version 2>&1) | sed 's/^.*samtools //; s/Using.*\$//') - END_VERSIONS - """ - } else { - """ - samtools \\ - bam2fq \\ - $args \\ - -@ $task.cpus \\ - $inputbam >${prefix}_interleaved.fq.gz - - cat <<-END_VERSIONS > versions.yml - "${task.process}": - samtools: \$(echo \$(samtools --version 2>&1) | sed 's/^.*samtools //; s/Using.*\$//') - END_VERSIONS - """ - } -} diff --git a/nf-core/modules/samtools/bam2fq/meta.yml b/nf-core/modules/samtools/bam2fq/meta.yml deleted file mode 100644 index 319a60c..0000000 --- a/nf-core/modules/samtools/bam2fq/meta.yml +++ /dev/null @@ -1,55 +0,0 @@ -name: samtools_bam2fq -description: | - The module uses bam2fq method from samtools to - convert a SAM, BAM or CRAM file to FASTQ format -keywords: - - bam2fq - - samtools - - fastq -tools: - - samtools: - description: Tools for dealing with SAM, BAM and CRAM files - homepage: None - documentation: http://www.htslib.org/doc/1.1/samtools.html - tool_dev_url: None - doi: "" - licence: ["MIT"] - -input: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - inputbam: - type: file - description: BAM/CRAM/SAM file - pattern: "*.{bam,cram,sam}" - - split: - type: boolean - description: | - TRUE/FALSE value to indicate if reads should be separated into - /1, /2 and if present other, or singleton. - Note: choosing TRUE will generate 4 different files. - Choosing FALSE will produce a single file, which will be interleaved in case - the input contains paired reads. - -output: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - versions: - type: file - description: File containing software versions - pattern: "versions.yml" - - reads: - type: file - description: | - FASTQ files, which will be either a group of 4 files (read_1, read_2, other and singleton) - or a single interleaved .fq.gz file if the user chooses not to split the reads. - pattern: "*.fq.gz" - -authors: - - "@lescai" From 59c7f5a5b1b6a3e144a9b1c151e6f2a4c315342f Mon Sep 17 00:00:00 2001 From: ljmesi <37740329+ljmesi@users.noreply.github.com> Date: Thu, 5 May 2022 08:38:41 +0200 Subject: [PATCH 203/789] Update samtools/bam2fq --- modules.json | 4 ++-- modules/nf-core/modules/samtools/bam2fq/main.nf | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/modules.json b/modules.json index ce1fbc5..043e4ad 100644 --- a/modules.json +++ b/modules.json @@ -70,7 +70,7 @@ "git_sha": "f1c5384c31e985591716afdd732cf8c2ae29d05b" }, "samtools/bam2fq": { - "git_sha": "897c33d5da084b61109500ee44c01da2d3e4e773" + "git_sha": "5510ea39fe638594bc26ac34cadf4a84bf27d159" }, "samtools/view": { "git_sha": "6b64f9cb6c3dd3577931cc3cd032d6fb730000ce" @@ -80,4 +80,4 @@ } } } -} +} \ No newline at end of file diff --git a/modules/nf-core/modules/samtools/bam2fq/main.nf b/modules/nf-core/modules/samtools/bam2fq/main.nf index 5d6aa79..9301d1d 100644 --- a/modules/nf-core/modules/samtools/bam2fq/main.nf +++ b/modules/nf-core/modules/samtools/bam2fq/main.nf @@ -45,7 +45,7 @@ process SAMTOOLS_BAM2FQ { bam2fq \\ $args \\ -@ $task.cpus \\ - $inputbam >${prefix}_interleaved.fq.gz + $inputbam | gzip --no-name > ${prefix}_interleaved.fq.gz cat <<-END_VERSIONS > versions.yml "${task.process}": From 5b7b21415633c3df64cb2d88734d5863b4162a9c Mon Sep 17 00:00:00 2001 From: ljmesi <37740329+ljmesi@users.noreply.github.com> Date: Thu, 5 May 2022 08:40:53 +0200 Subject: [PATCH 204/789] Fix formatting with prettier --- modules.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules.json b/modules.json index 043e4ad..a55c88b 100644 --- a/modules.json +++ b/modules.json @@ -80,4 +80,4 @@ } } } -} \ No newline at end of file +} From d94534e8acee01575b589e88549ed64ab4fc4411 Mon Sep 17 00:00:00 2001 From: ljmesi <37740329+ljmesi@users.noreply.github.com> Date: Thu, 5 May 2022 09:07:33 +0200 Subject: [PATCH 205/789] Simplify params which control host removal publish --- conf/modules.config | 8 ++++---- nextflow.config | 6 +----- nextflow_schema.json | 16 ---------------- 3 files changed, 5 insertions(+), 25 deletions(-) diff --git a/conf/modules.config b/conf/modules.config index b707954..cd0fb04 100644 --- a/conf/modules.config +++ b/conf/modules.config @@ -169,7 +169,7 @@ process { publishDir = [ path: { "${params.outdir}/minimap2/index" }, mode: params.publish_dir_mode, - enabled: params.save_minimap2_hostremoval_index, + enabled: params.save_hostremoval_index, pattern: 'minimap2' ] } @@ -179,7 +179,7 @@ process { publishDir = [ path: { "${params.outdir}/minimap2/align" }, mode: params.publish_dir_mode, - enabled: params.save_minimap2_hostremoval_mapped, + enabled: params.save_hostremoval_mapped, pattern: '*.bam' ] } @@ -190,7 +190,7 @@ process { publishDir = [ path: { "${params.outdir}/samtools/view" }, mode: params.publish_dir_mode, - enabled: params.save_samtools_unmapped_bam, + enabled: params.save_hostremoval_unmapped, pattern: '*.bam' ] } @@ -200,7 +200,7 @@ process { publishDir = [ path: { "${params.outdir}/samtools/bam2fq" }, mode: params.publish_dir_mode, - enabled: params.save_minimap2_unmapped_fq, + enabled: params.save_hostremoval_unmapped, pattern: '*.fq.gz' ] } diff --git a/nextflow.config b/nextflow.config index 95daba9..8c99af2 100644 --- a/nextflow.config +++ b/nextflow.config @@ -84,14 +84,10 @@ params { perform_shortread_hostremoval = false shortread_hostremoval_reference = null shortread_hostremoval_index = null + longread_hostremoval_index = null save_hostremoval_index = false save_hostremoval_mapped = false save_hostremoval_unmapped = false - longread_hostremoval_index = null - save_minimap2_hostremoval_index = false - save_minimap2_hostremoval_mapped = false - save_samtools_unmapped_bam = false - save_minimap2_unmapped_fq = false // MALT diff --git a/nextflow_schema.json b/nextflow_schema.json index 1902e27..9e4cc6c 100644 --- a/nextflow_schema.json +++ b/nextflow_schema.json @@ -401,22 +401,6 @@ "longread_hostremoval_index": { "type": "string", "default": "None" - }, - "save_minimap2_hostremoval_index": { - "type": "boolean", - "description": "Flag for publishing minimap2 host removal index" - }, - "save_minimap2_hostremoval_mapped": { - "type": "boolean", - "description": "Flag for publishinig bam file with all long reads mapped to a reference" - }, - "save_samtools_unmapped_bam": { - "type": "boolean", - "description": "Flag for publishing bam for reads that did not map to the host reference" - }, - "save_minimap2_unmapped_fq": { - "type": "boolean", - "description": "Flag for publishing fastq files for reads that did not map to the host reference" } } } From 557d31dfd2fecbac2a415ddab780e6a3abc87168 Mon Sep 17 00:00:00 2001 From: ljmesi <37740329+ljmesi@users.noreply.github.com> Date: Thu, 5 May 2022 13:19:10 +0200 Subject: [PATCH 206/789] Add parameter for turning on longread host removal --- conf/test.config | 2 +- docs/usage.md | 2 +- nextflow.config | 2 +- nextflow_schema.json | 4 +++- 4 files changed, 6 insertions(+), 4 deletions(-) diff --git a/conf/test.config b/conf/test.config index a2464b2..6d04f60 100644 --- a/conf/test.config +++ b/conf/test.config @@ -28,7 +28,7 @@ params { perform_longread_clip = false perform_shortread_complexityfilter = true perform_shortread_hostremoval = true - shortread_hostremoval_reference = 'https://raw.githubusercontent.com/nf-core/test-datasets/modules/data/genomics/homo_sapiens/genome/genome.fasta' + perform_longread_hostremoval = true run_kaiju = true run_kraken2 = true run_malt = true diff --git a/docs/usage.md b/docs/usage.md index cee2bb6..537b94a 100644 --- a/docs/usage.md +++ b/docs/usage.md @@ -191,7 +191,7 @@ You can optionally save the FASTQ output of the run merging with the `--save_com #### Host Removal -Removal of possible-host reads from FASTQ files prior profiling can be activated with `--perform_shortread_hostremoval` +Removal of possible-host reads from FASTQ files prior profiling can be activated with `--perform_shortread_hostremoval` or `--perform_longread_hostremoval`. Similarly to complexity filtering, host-removal can be useful for runtime optimisation and reduction in misclassified reads. It is not always necessary to report classification of reads from a host when you already know the host of the sample, therefore you can gain a run-time and computational advantage by removing these prior typically resource-heavy profiling with more efficient methods. Furthermore, particularly with human samples, you can reduce the number of false positives during profiling that occur due to host-sequence contamination in reference genomes on public databases. diff --git a/nextflow.config b/nextflow.config index 8c99af2..4ac0c44 100644 --- a/nextflow.config +++ b/nextflow.config @@ -82,7 +82,7 @@ params { // Host Removal perform_shortread_hostremoval = false - shortread_hostremoval_reference = null + perform_longread_hostremoval = false shortread_hostremoval_index = null longread_hostremoval_index = null save_hostremoval_index = false diff --git a/nextflow_schema.json b/nextflow_schema.json index 9e4cc6c..d2eee95 100644 --- a/nextflow_schema.json +++ b/nextflow_schema.json @@ -362,7 +362,9 @@ "perform_shortread_hostremoval": { "type": "boolean" }, - "shortread_hostremoval_reference": { + "perform_longread_hostremoval": { + "type": "boolean" + }, "type": "string", "default": "None" }, From 6618e8cac65fe43d40d4952863698801f9b4507b Mon Sep 17 00:00:00 2001 From: ljmesi <37740329+ljmesi@users.noreply.github.com> Date: Thu, 5 May 2022 13:20:34 +0200 Subject: [PATCH 207/789] Change param to a more generic name --- conf/test.config | 1 + docs/usage.md | 2 +- nextflow.config | 1 + nextflow_schema.json | 1 + workflows/taxprofiler.nf | 8 ++++---- 5 files changed, 8 insertions(+), 5 deletions(-) diff --git a/conf/test.config b/conf/test.config index 6d04f60..a5244f9 100644 --- a/conf/test.config +++ b/conf/test.config @@ -29,6 +29,7 @@ params { perform_shortread_complexityfilter = true perform_shortread_hostremoval = true perform_longread_hostremoval = true + hostremoval_reference = 'https://raw.githubusercontent.com/nf-core/test-datasets/modules/data/genomics/homo_sapiens/genome/genome.fasta' run_kaiju = true run_kraken2 = true run_malt = true diff --git a/docs/usage.md b/docs/usage.md index 537b94a..1143da3 100644 --- a/docs/usage.md +++ b/docs/usage.md @@ -197,7 +197,7 @@ Similarly to complexity filtering, host-removal can be useful for runtime optimi nf-core/taxprofiler currently offers host-removal via alignment against a reference genome with Bowtie2, and the use of the unaligned reads for downstream profiling. -You can supply your reference genome in FASTA format with `--shortread_hostremoval_reference`. You can also optionally supply a directory containing pre-indexed Bowtie2 index files with `--shortread_hostremoval_index`, however nf-core/taxprofiler will generate this for you if necessary. Pre-supplying the directory of index files can greatly speed up the process, and these can be re-used. +You can supply your reference genome in FASTA format with `--hostremoval_reference`. You can also optionally supply a directory containing pre-indexed Bowtie2 index files with `--shortread_hostremoval_index`, however nf-core/taxprofiler will generate this for you if necessary. Pre-supplying the directory of index files can greatly speed up the process, and these can be re-used. > 💡 If you have multiple taxa or sequences you wish to remove (e.g., the host genome and then also PhiX - common quality-control reagent during sequencing) you can simply concatenate the FASTAs of each taxa or sequences into a single reference file. diff --git a/nextflow.config b/nextflow.config index 4ac0c44..ca9e280 100644 --- a/nextflow.config +++ b/nextflow.config @@ -83,6 +83,7 @@ params { // Host Removal perform_shortread_hostremoval = false perform_longread_hostremoval = false + hostremoval_reference = null shortread_hostremoval_index = null longread_hostremoval_index = null save_hostremoval_index = false diff --git a/nextflow_schema.json b/nextflow_schema.json index d2eee95..ab2108e 100644 --- a/nextflow_schema.json +++ b/nextflow_schema.json @@ -365,6 +365,7 @@ "perform_longread_hostremoval": { "type": "boolean" }, + "hostremoval_reference": { "type": "string", "default": "None" }, diff --git a/workflows/taxprofiler.nf b/workflows/taxprofiler.nf index 9eb53a3..81ea5d9 100644 --- a/workflows/taxprofiler.nf +++ b/workflows/taxprofiler.nf @@ -11,7 +11,7 @@ WorkflowTaxprofiler.initialise(params, log) // TODO nf-core: Add all file path parameters for the pipeline to the list below // Check input path parameters to see if they exist -def checkPathParamList = [ params.input, params.databases, params.shortread_hostremoval_reference, +def checkPathParamList = [ params.input, params.databases, params.hostremoval_reference, params.shortread_hostremoval_index, params.multiqc_config ] for (param in checkPathParamList) { if (param) { file(param, checkIfExists: true) } } @@ -22,10 +22,10 @@ if (params.databases) { ch_databases = file(params.databases) } else { exit 1, ' if (params.shortread_clipmerge_mergepairs && params.run_malt ) log.warn "[nf-core/taxprofiler] MALT does not accept uncollapsed paired-reads. Pairs will be profiled as separate files." if (params.shortread_clipmerge_excludeunmerged && !params.shortread_clipmerge_mergepairs) exit 1, "ERROR: [nf-core/taxprofiler] cannot include unmerged reads when merging not turned on. Please specify --shortread_clipmerge_mergepairs" -if (params.perform_shortread_hostremoval && !params.shortread_hostremoval_reference) { exit 1, "ERROR: [nf-core/taxprofiler] --shortread_hostremoval requested but no --shortread_hostremoval_reference FASTA supplied. Check input." } -if (!params.shortread_hostremoval_reference && params.shortread_hostremoval_reference_index) { exit 1, "ERROR: [nf-core/taxprofiler] --shortread_hostremoval_index provided but no --shortread_hostremoval_reference FASTA supplied. Check input." } +if (params.perform_shortread_hostremoval && !params.hostremoval_reference) { exit 1, "ERROR: [nf-core/taxprofiler] --shortread_hostremoval requested but no --hostremoval_reference FASTA supplied. Check input." } +if (!params.hostremoval_reference && params.hostremoval_reference_index) { exit 1, "ERROR: [nf-core/taxprofiler] --shortread_hostremoval_index provided but no --hostremoval_reference FASTA supplied. Check input." } -if (params.shortread_hostremoval_reference ) { ch_reference = file(params.shortread_hostremoval_reference) } +if (params.hostremoval_reference ) { ch_reference = file(params.hostremoval_reference) } if (params.shortread_hostremoval_index ) { ch_shortread_reference_index = file(params.shortread_hostremoval_index ) } else { ch_shortread_reference_index = [] } if (params.longread_hostremoval_index ) { ch_longread_reference_index = file(params.longread_hostremoval_index ) } else { ch_longread_reference_index = [] } From e3e55f57c26ba462ceb6795be55b312e615ca550 Mon Sep 17 00:00:00 2001 From: ljmesi <37740329+ljmesi@users.noreply.github.com> Date: Thu, 5 May 2022 14:02:24 +0200 Subject: [PATCH 208/789] Fix alignment Just made this change to see if the CI tests would fail again or if the failure was just a one of thing. --- workflows/taxprofiler.nf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/workflows/taxprofiler.nf b/workflows/taxprofiler.nf index 81ea5d9..1f2e9d1 100644 --- a/workflows/taxprofiler.nf +++ b/workflows/taxprofiler.nf @@ -47,7 +47,7 @@ ch_multiqc_custom_config = params.multiqc_config ? Channel.fromPath(params.multi // // SUBWORKFLOW: Consisting of a mix of local and nf-core/modules // -include { INPUT_CHECK } from '../subworkflows/local/input_check' +include { INPUT_CHECK } from '../subworkflows/local/input_check' include { DB_CHECK } from '../subworkflows/local/db_check' include { SHORTREAD_PREPROCESSING } from '../subworkflows/local/shortread_preprocessing' From b0faeedc60c654fe445909ceed569ee010c84837 Mon Sep 17 00:00:00 2001 From: Lauri Mesilaakso Date: Fri, 6 May 2022 08:20:31 +0200 Subject: [PATCH 209/789] Update workflows/taxprofiler.nf Co-authored-by: James A. Fellows Yates --- workflows/taxprofiler.nf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/workflows/taxprofiler.nf b/workflows/taxprofiler.nf index 1f2e9d1..7a6cd09 100644 --- a/workflows/taxprofiler.nf +++ b/workflows/taxprofiler.nf @@ -25,7 +25,7 @@ if (params.shortread_clipmerge_excludeunmerged && !params.shortread_clipmerge_me if (params.perform_shortread_hostremoval && !params.hostremoval_reference) { exit 1, "ERROR: [nf-core/taxprofiler] --shortread_hostremoval requested but no --hostremoval_reference FASTA supplied. Check input." } if (!params.hostremoval_reference && params.hostremoval_reference_index) { exit 1, "ERROR: [nf-core/taxprofiler] --shortread_hostremoval_index provided but no --hostremoval_reference FASTA supplied. Check input." } -if (params.hostremoval_reference ) { ch_reference = file(params.hostremoval_reference) } +if (params.hostremoval_reference ) { ch_reference = file(params.hostremoval_reference) } if (params.shortread_hostremoval_index ) { ch_shortread_reference_index = file(params.shortread_hostremoval_index ) } else { ch_shortread_reference_index = [] } if (params.longread_hostremoval_index ) { ch_longread_reference_index = file(params.longread_hostremoval_index ) } else { ch_longread_reference_index = [] } From 02517733aa2227d1bc6f4decdb607918de047b2d Mon Sep 17 00:00:00 2001 From: Lauri Mesilaakso Date: Fri, 6 May 2022 10:40:59 +0200 Subject: [PATCH 210/789] Update docs/usage.md Co-authored-by: James A. Fellows Yates --- docs/usage.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/usage.md b/docs/usage.md index 1143da3..4aa1d09 100644 --- a/docs/usage.md +++ b/docs/usage.md @@ -197,7 +197,7 @@ Similarly to complexity filtering, host-removal can be useful for runtime optimi nf-core/taxprofiler currently offers host-removal via alignment against a reference genome with Bowtie2, and the use of the unaligned reads for downstream profiling. -You can supply your reference genome in FASTA format with `--hostremoval_reference`. You can also optionally supply a directory containing pre-indexed Bowtie2 index files with `--shortread_hostremoval_index`, however nf-core/taxprofiler will generate this for you if necessary. Pre-supplying the directory of index files can greatly speed up the process, and these can be re-used. +You can supply your reference genome in FASTA format with `--hostremoval_reference`. You can also optionally supply a directory containing pre-indexed Bowtie2 index files with `--shortread_hostremoval_index` or `--longread_hostremoval_index`, however nf-core/taxprofiler will generate this for you if necessary. Pre-supplying the directory of index files can greatly speed up the process, and these can be re-used. > 💡 If you have multiple taxa or sequences you wish to remove (e.g., the host genome and then also PhiX - common quality-control reagent during sequencing) you can simply concatenate the FASTAs of each taxa or sequences into a single reference file. From 87a1d8051979040f7dd1b6f976b2bd0224a7bf24 Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Sat, 7 May 2022 05:22:35 +0200 Subject: [PATCH 211/789] Add working output for Kraken2/Centrifuge/DIAMOND --- conf/modules.config | 4 +- conf/test.config | 4 ++ modules.json | 6 +- .../nf-core/modules/diamond/blastx/main.nf | 33 ++++++--- .../nf-core/modules/diamond/blastx/meta.yml | 30 +++++++- .../nf-core/modules/kraken2/kraken2/main.nf | 23 ++++-- .../nf-core/modules/kraken2/kraken2/meta.yml | 25 +++++-- nextflow.config | 14 ++-- nextflow_schema.json | 71 ++++++++++++++----- subworkflows/local/profiling.nf | 34 ++++++--- workflows/taxprofiler.nf | 2 + 11 files changed, 181 insertions(+), 65 deletions(-) diff --git a/conf/modules.config b/conf/modules.config index cd0fb04..31d0fca 100644 --- a/conf/modules.config +++ b/conf/modules.config @@ -271,7 +271,7 @@ process { publishDir = [ path: { "${params.outdir}/kraken2/${meta.db_name}" }, mode: params.publish_dir_mode, - pattern: '*.{txt}' + pattern: '*.{txt,report,fastq.gz}' ] } @@ -289,7 +289,7 @@ process { publishDir = [ path: { "${params.outdir}/centrifuge/${meta.db_name}" }, mode: params.publish_dir_mode, - pattern: '*.txt' + pattern: '*.{txt,sam,gz}' ] ext.args = { "${meta.db_params}" } ext.prefix = params.perform_runmerging ? { "${meta.id}-${meta.db_name}" } : { "${meta.id}-${meta.run_accession}-${meta.db_name}" } diff --git a/conf/test.config b/conf/test.config index a5244f9..573db42 100644 --- a/conf/test.config +++ b/conf/test.config @@ -36,6 +36,10 @@ params { run_metaphlan3 = true run_centrifuge = true run_diamond = true + malt_save_reads = true + kraken2_save_reads = true + centrifuge_save_reads = true + diamond_save_reads = true } process { diff --git a/modules.json b/modules.json index a55c88b..5cad32e 100644 --- a/modules.json +++ b/modules.json @@ -28,7 +28,7 @@ "git_sha": "e745e167c1020928ef20ea1397b6b4d230681b4d" }, "diamond/blastx": { - "git_sha": "42564565b934eeb2449e35ec97ed13ff2a67f1de" + "git_sha": "bd3bfe0817246082525ab93707976676b1fe208b" }, "fastp": { "git_sha": "d0a1cbb703a130c19f6796c3fce24fbe7dfce789" @@ -43,7 +43,7 @@ "git_sha": "538dbac98ba9c8f799536cd5a617195501439457" }, "kraken2/kraken2": { - "git_sha": "e745e167c1020928ef20ea1397b6b4d230681b4d" + "git_sha": "abe025677cdd805cc93032341ab19885473c1a07" }, "malt/run": { "git_sha": "72b96f4e504eef673f2b5c13560a9d90b669129b" @@ -80,4 +80,4 @@ } } } -} +} \ No newline at end of file diff --git a/modules/nf-core/modules/diamond/blastx/main.nf b/modules/nf-core/modules/diamond/blastx/main.nf index 6703c1e..d327227 100644 --- a/modules/nf-core/modules/diamond/blastx/main.nf +++ b/modules/nf-core/modules/diamond/blastx/main.nf @@ -2,21 +2,26 @@ process DIAMOND_BLASTX { tag "$meta.id" label 'process_medium' - // Dimaond is limited to v2.0.9 because there is not a - // singularity version higher than this at the current time. - conda (params.enable_conda ? "bioconda::diamond=2.0.9" : null) + conda (params.enable_conda ? "bioconda::diamond=2.0.15" : null) container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/diamond:2.0.9--hdcc8f71_0' : - 'quay.io/biocontainers/diamond:2.0.9--hdcc8f71_0' }" + 'https://depot.galaxyproject.org/singularity/diamond:2.0.15--hb97b32f_0' : + 'quay.io/biocontainers/diamond:2.0.15--hb97b32f_0' }" input: tuple val(meta), path(fasta) path db - val outext + val out_ext + val blast_columns output: - tuple val(meta), path('*.{blast,xml,txt,daa,sam,tsv,paf}'), emit: output - path "versions.yml" , emit: versions + tuple val(meta), path('*.blast'), optional: true, emit: blast + tuple val(meta), path('*.xml') , optional: true, emit: xml + tuple val(meta), path('*.txt') , optional: true, emit: txt + tuple val(meta), path('*.daa') , optional: true, emit: daa + tuple val(meta), path('*.sam') , optional: true, emit: sam + tuple val(meta), path('*.tsv') , optional: true, emit: tsv + tuple val(meta), path('*.paf') , optional: true, emit: paf + path "versions.yml" , emit: versions when: task.ext.when == null || task.ext.when @@ -24,7 +29,8 @@ process DIAMOND_BLASTX { script: def args = task.ext.args ?: '' def prefix = task.ext.prefix ?: "${meta.id}" - switch ( outext ) { + def columns = blast_columns ? "${blast_columns}" : '' + switch ( out_ext ) { case "blast": outfmt = 0; break case "xml": outfmt = 5; break case "txt": outfmt = 6; break @@ -32,6 +38,11 @@ process DIAMOND_BLASTX { case "sam": outfmt = 101; break case "tsv": outfmt = 102; break case "paf": outfmt = 103; break + default: + outfmt = '6'; + out_ext = 'txt'; + log.warn("Unknown output file format provided (${out_ext}): selecting DIAMOND default of tabular BLAST output (txt)"); + break } """ DB=`find -L ./ -name "*.dmnd" | sed 's/.dmnd//'` @@ -41,9 +52,9 @@ process DIAMOND_BLASTX { --threads $task.cpus \\ --db \$DB \\ --query $fasta \\ - --outfmt ${outfmt} \\ + --outfmt ${outfmt} ${columns} \\ $args \\ - --out ${prefix}.${outext} + --out ${prefix}.${out_ext} cat <<-END_VERSIONS > versions.yml "${task.process}": diff --git a/modules/nf-core/modules/diamond/blastx/meta.yml b/modules/nf-core/modules/diamond/blastx/meta.yml index 5ee2d55..2dcd7bc 100644 --- a/modules/nf-core/modules/diamond/blastx/meta.yml +++ b/modules/nf-core/modules/diamond/blastx/meta.yml @@ -28,7 +28,7 @@ input: type: directory description: Directory containing the nucelotide blast database pattern: "*" - - outext: + - out_ext: type: string description: | Specify the type of output file to be generated. `blast` corresponds to @@ -38,10 +38,34 @@ input: pattern: "blast|xml|txt|daa|sam|tsv|paf" output: + - blast: + type: file + description: File containing blastp hits + pattern: "*.{blast}" + - xml: + type: file + description: File containing blastp hits + pattern: "*.{xml}" - txt: type: file - description: File containing blastx hits - pattern: "*.{blastx.txt}" + description: File containing hits in tabular BLAST format. + pattern: "*.{txt}" + - daa: + type: file + description: File containing hits DAA format + pattern: "*.{daa}" + - sam: + type: file + description: File containing aligned reads in SAM format + pattern: "*.{sam}" + - tsv: + type: file + description: Tab separated file containing taxonomic classification of hits + pattern: "*.{tsv}" + - paf: + type: file + description: File containing aligned reads in pairwise mapping format format + pattern: "*.{paf}" - versions: type: file description: File containing software versions diff --git a/modules/nf-core/modules/kraken2/kraken2/main.nf b/modules/nf-core/modules/kraken2/kraken2/main.nf index 3ec5df5..d400023 100644 --- a/modules/nf-core/modules/kraken2/kraken2/main.nf +++ b/modules/nf-core/modules/kraken2/kraken2/main.nf @@ -10,12 +10,15 @@ process KRAKEN2_KRAKEN2 { input: tuple val(meta), path(reads) path db + val save_output_fastqs + val save_reads_assignment output: - tuple val(meta), path('*classified*') , emit: classified - tuple val(meta), path('*unclassified*'), emit: unclassified - tuple val(meta), path('*report.txt') , emit: txt - path "versions.yml" , emit: versions + tuple val(meta), path('*classified*') , optional:true, emit: classified_reads_fastq + tuple val(meta), path('*unclassified*') , optional:true, emit: unclassified_reads_fastq + tuple val(meta), path('*classifiedreads*'), optional:true, emit: classified_reads_assignment + tuple val(meta), path('*report.txt') , emit: report + path "versions.yml" , emit: versions when: task.ext.when == null || task.ext.when @@ -26,19 +29,25 @@ process KRAKEN2_KRAKEN2 { 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_command = save_output_fastqs ? "--classified-out ${classified}" : "" + def unclassified_command = save_output_fastqs ? "--unclassified-out ${unclassified}" : "" + def readclassification_command = save_reads_assignment ? "--output ${prefix}.kraken2.classifiedreads.txt" : "" + def compress_reads_command = save_output_fastqs ? "pigz -p $task.cpus *.fastq" : "" + """ kraken2 \\ --db $db \\ --threads $task.cpus \\ - --unclassified-out $unclassified \\ - --classified-out $classified \\ --report ${prefix}.kraken2.report.txt \\ --gzip-compressed \\ + $unclassified_command \\ + $classified_command \\ + $readclassification_command \\ $paired \\ $args \\ $reads - pigz -p $task.cpus *.fastq + $compress_reads_command cat <<-END_VERSIONS > versions.yml "${task.process}": diff --git a/modules/nf-core/modules/kraken2/kraken2/meta.yml b/modules/nf-core/modules/kraken2/kraken2/meta.yml index 9d6a385..7129fe3 100644 --- a/modules/nf-core/modules/kraken2/kraken2/meta.yml +++ b/modules/nf-core/modules/kraken2/kraken2/meta.yml @@ -27,25 +27,40 @@ input: - db: type: directory description: Kraken2 database + - save_output_fastqs: + type: boolean + description: | + If true, optional commands are added to save classified and unclassified reads + as fastq files + - save_reads_assignment: + type: boolean + description: | + If true, an optional command is added to save a file reporting the taxonomic + classification of each input read output: - meta: type: map description: | Groovy Map containing sample information e.g. [ id:'test', single_end:false ] - - classified: + - classified_reads_fastq: type: file description: | - Reads classified to belong to any of the taxa + Reads classified as belonging to any of the taxa on the Kraken2 database. pattern: "*{fastq.gz}" - - unclassified: + - unclassified_reads_fastq: type: file description: | - Reads not classified to belong to any of the taxa + Reads not classified to any of the taxa on the Kraken2 database. pattern: "*{fastq.gz}" - - txt: + - classified_reads_assignment: + type: file + description: | + Kraken2 output file indicating the taxonomic assignment of + each input read + - report: type: file description: | Kraken2 report containing stats about classified diff --git a/nextflow.config b/nextflow.config index ca9e280..3f76d53 100644 --- a/nextflow.config +++ b/nextflow.config @@ -94,16 +94,17 @@ params { // MALT run_malt = false malt_mode = 'BlastN' - malt_generatemegansummary = false + malt_generate_megansummary = false + malt_save_reads = false // kraken2 - run_kraken2 = false + run_kraken2 = false + kraken2_save_reads = false + kraken2_save_readclassification = false // centrifuge run_centrifuge = false - centrifuge_save_unaligned = false - centrifuge_save_aligned = false - centrifuge_sam_format = false + centrifuge_save_reads = false // metaphlan3 run_metaphlan3 = false @@ -114,7 +115,8 @@ params { // diamond run_diamond = false - diamond_output_format = 'txt' + diamond_output_format = 'tsv' // TSV is only format with taxonomic information apparently + diamond_save_reads = false // this will override diamound output format so no taxonomic profile is generated! } // Load base.config by default for all pipelines diff --git a/nextflow_schema.json b/nextflow_schema.json index ab2108e..bb4b759 100644 --- a/nextflow_schema.json +++ b/nextflow_schema.json @@ -10,7 +10,10 @@ "type": "object", "fa_icon": "fas fa-terminal", "description": "Define where the pipeline should find input data and save output data.", - "required": ["input", "outdir"], + "required": [ + "input", + "outdir" + ], "properties": { "input": { "type": "string", @@ -173,7 +176,14 @@ "description": "Method used to save pipeline results to output directory.", "help_text": "The Nextflow `publishDir` option specifies which intermediate files should be saved to the output directory. This option tells the pipeline what method should be used to move these files. See [Nextflow docs](https://www.nextflow.io/docs/latest/process.html#publishdir) for details.", "fa_icon": "fas fa-copy", - "enum": ["symlink", "rellink", "link", "copy", "copyNoFollow", "move"], + "enum": [ + "symlink", + "rellink", + "link", + "copy", + "copyNoFollow", + "move" + ], "hidden": true }, "email_on_fail": { @@ -278,15 +288,6 @@ "run_centrifuge": { "type": "boolean" }, - "centrifuge_save_unaligned": { - "type": "boolean" - }, - "centrifuge_save_aligned": { - "type": "boolean" - }, - "centrifuge_sam_format": { - "type": "boolean" - }, "run_metaphlan3": { "type": "boolean", "description": "Enable MetaPhlAn for taxonomic profiling" @@ -294,7 +295,10 @@ "shortread_clipmerge_tool": { "type": "string", "default": "fastp", - "enum": ["fastp", "adapterremoval"] + "enum": [ + "fastp", + "adapterremoval" + ] }, "shortread_clipmerge_skipadaptertrim": { "type": "boolean" @@ -335,7 +339,10 @@ "shortread_complexityfilter_prinseqplusplus_mode": { "type": "string", "default": "entropy", - "enum": ["entropy", "dust"] + "enum": [ + "entropy", + "dust" + ] }, "shortread_complexityfilter_prinseqplusplus_dustscore": { "type": "number", @@ -385,13 +392,20 @@ "run_kaiju": { "type": "boolean" }, - "malt_generatemegansummary": { + "malt_generate_megansummary": { "type": "boolean" }, "kaiju_taxon_name": { "type": "string", "default": "species", - "enum": ["phylum", "class", "order", "family", "genus", "species"] + "enum": [ + "phylum", + "class", + "order", + "family", + "genus", + "species" + ] }, "run_diamond": { "type": "boolean" @@ -399,11 +413,34 @@ "diamond_output_format": { "type": "string", "default": "tsv", - "enum": ["blast", "xml", "txt", "daa", "sam", "tsv", "paf"] + "enum": [ + "blast", + "xml", + "txt", + "daa", + "sam", + "tsv", + "paf" + ] }, "longread_hostremoval_index": { "type": "string", "default": "None" + }, + "malt_save_reads": { + "type": "boolean" + }, + "kraken2_save_reads": { + "type": "boolean" + }, + "kraken2_save_readclassification": { + "type": "boolean" + }, + "centrifuge_save_reads": { + "type": "boolean" + }, + "diamond_save_reads": { + "type": "boolean" } } -} +} \ No newline at end of file diff --git a/subworkflows/local/profiling.nf b/subworkflows/local/profiling.nf index 7fb3ce9..18ea7fa 100644 --- a/subworkflows/local/profiling.nf +++ b/subworkflows/local/profiling.nf @@ -65,10 +65,18 @@ workflow PROFILING { ch_input_for_malt = ch_input_for_profiling.malt .filter { it[0]['instrument_platform'] == 'ILLUMINA' } .map { - it -> - def temp_meta = [ id: it[2]['db_name']] + it[2] - def db = it[3] - [ temp_meta, it[1], db ] + meta, reads, db_meta, db -> + def sam_format = params.malt_save_reads ? ' --alignments' : "" + // TODO No MALT SAM? + // TODO check all aligned reads published + // TODO try turning on/off aligned reads + // TODO wut? [9a/a441d6] Submitted process > NFCORE_TAXPROFILER:TAXPROFILER:PROFILING:MALT_RUN (null) + def temp_meta = [ id: meta['db_name'] ] + def new_db_meta = db_meta.clone() + new_db_meta['db_params'] = db_meta['db_params'] + sam_format + def new_meta = temp_meta + new_db_meta + + [ new_meta, reads, db ] } .groupTuple(by: [0,2]) .multiMap { @@ -92,7 +100,7 @@ workflow PROFILING { [ meta_new, rma ] } - MEGAN_RMA2INFO (ch_maltrun_for_megan, params.malt_generatemegansummary ) + MEGAN_RMA2INFO (ch_maltrun_for_megan, params.malt_generate_megansummary ) ch_multiqc_files = ch_multiqc_files.mix( MALT_RUN.out.log.collect{it[1]}.ifEmpty([]) ) ch_versions = ch_versions.mix( MALT_RUN.out.versions.first(), MEGAN_RMA2INFO.out.versions.first() ) ch_raw_profiles = ch_raw_profiles.mix( MEGAN_RMA2INFO.out.txt ) @@ -108,10 +116,10 @@ workflow PROFILING { db: it[3] } - KRAKEN2_KRAKEN2 ( ch_input_for_kraken2.reads, ch_input_for_kraken2.db ) - ch_multiqc_files = ch_multiqc_files.mix( KRAKEN2_KRAKEN2.out.txt.collect{it[1]}.ifEmpty([]) ) + KRAKEN2_KRAKEN2 ( ch_input_for_kraken2.reads, ch_input_for_kraken2.db, params.kraken2_save_reads, params.kraken2_save_readclassification ) + ch_multiqc_files = ch_multiqc_files.mix( KRAKEN2_KRAKEN2.out.report.collect{it[1]}.ifEmpty([]) ) ch_versions = ch_versions.mix( KRAKEN2_KRAKEN2.out.versions.first() ) - ch_raw_profiles = ch_raw_profiles.mix( KRAKEN2_KRAKEN2.out.txt ) + ch_raw_profiles = ch_raw_profiles.mix( KRAKEN2_KRAKEN2.out.report ) } @@ -128,7 +136,7 @@ workflow PROFILING { db: it[3] } - CENTRIFUGE_CENTRIFUGE ( ch_input_for_centrifuge.reads, ch_input_for_centrifuge.db, params.centrifuge_save_unaligned, params.centrifuge_save_aligned, params.centrifuge_sam_format ) + CENTRIFUGE_CENTRIFUGE ( ch_input_for_centrifuge.reads, ch_input_for_centrifuge.db, params.centrifuge_save_reads, params.centrifuge_save_reads, params.centrifuge_save_reads ) CENTRIFUGE_KREPORT (CENTRIFUGE_CENTRIFUGE.out.results, ch_input_for_centrifuge.db) ch_versions = ch_versions.mix( CENTRIFUGE_CENTRIFUGE.out.versions.first() ) ch_raw_profiles = ch_raw_profiles.mix( CENTRIFUGE_KREPORT.out.kreport ) @@ -180,9 +188,13 @@ workflow PROFILING { db: it[3] } - DIAMOND_BLASTX ( ch_input_for_diamond.reads, ch_input_for_diamond.db, params.diamond_output_format ) + // diamond only accepts single output file specification, therefore + // this will replace output file! + ch_diamond_reads_format = params.diamond_save_reads ? 'sam' : params.diamond_output_format + + DIAMOND_BLASTX ( ch_input_for_diamond.reads, ch_input_for_diamond.db, params.diamond_output_format, [] ) ch_versions = ch_versions.mix( DIAMOND_BLASTX.out.versions.first() ) - ch_raw_profiles = ch_raw_profiles.mix( DIAMOND_BLASTX.out.output ) + ch_raw_profiles = ch_raw_profiles.mix( DIAMOND_BLASTX.out.tsv ) } diff --git a/workflows/taxprofiler.nf b/workflows/taxprofiler.nf index 7a6cd09..c319296 100644 --- a/workflows/taxprofiler.nf +++ b/workflows/taxprofiler.nf @@ -29,6 +29,8 @@ if (params.hostremoval_reference ) { ch_reference = file(params.hostre if (params.shortread_hostremoval_index ) { ch_shortread_reference_index = file(params.shortread_hostremoval_index ) } else { ch_shortread_reference_index = [] } if (params.longread_hostremoval_index ) { ch_longread_reference_index = file(params.longread_hostremoval_index ) } else { ch_longread_reference_index = [] } +if (params.diamond_save_reads ) log.warn "[nf-core/taxprofiler] DIAMOND only allows output of a single format. Only aligned reads in SAM format will be produced, no taxonomic profiles will be available." + /* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ CONFIG FILES From 47a5ae0cff4060c12451beba47502dae5dbb9d17 Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Sat, 7 May 2022 06:09:05 +0200 Subject: [PATCH 212/789] Add FASTP complexity option --- conf/modules.config | 6 ++- conf/test.config | 1 + conf/test_nopreprocessing.config | 46 ++++++++++++++++ conf/test_noprofiling.config | 46 ++++++++++++++++ docs/usage.md | 4 +- nextflow.config | 3 ++ nextflow_schema.json | 52 ++++++++++++++++--- .../local/shortread_complexityfiltering.nf | 1 + workflows/taxprofiler.nf | 8 ++- 9 files changed, 153 insertions(+), 14 deletions(-) create mode 100644 conf/test_nopreprocessing.config create mode 100644 conf/test_noprofiling.config diff --git a/conf/modules.config b/conf/modules.config index cd0fb04..c834f4e 100644 --- a/conf/modules.config +++ b/conf/modules.config @@ -54,7 +54,8 @@ process { params.shortread_clipmerge_skipadaptertrim ? "--disable_adapter_trimming" : "", params.shortread_clipmerge_adapter1 ? "--adapter_sequence ${params.shortread_clipmerge_adapter1}" : "", // filtering options - "--length_required ${params.shortread_clipmerge_minlength}" + "--length_required ${params.shortread_clipmerge_minlength}", + params.perform_shortread_complexityfilter && params.shortread_complexityfilter_tool == 'fastp' ? "--low_complexity_filter --complexity_threshold ${params.shortread_complexityfilter_fastp_threshold}" : '' ].join(' ').trim() ext.prefix = { "${meta.id}_${meta.run_accession}" } publishDir = [ @@ -74,7 +75,8 @@ process { params.shortread_clipmerge_adapter1 ? "--adapter_sequence ${params.shortread_clipmerge_adapter1}" : "", params.shortread_clipmerge_adapter2 ? "--adapter_sequence_r2 ${params.shortread_clipmerge_adapter2}" : "--detect_adapter_for_pe", // filtering options - "--length_required ${params.shortread_clipmerge_minlength}" + "--length_required ${params.shortread_clipmerge_minlength}", + params.perform_shortread_complexityfilter && params.shortread_complexityfilter_tool == 'fastp' ? "--low_complexity_filter --complexity_threshold ${params.shortread_complexityfilter_fastp_threshold}" : '' ].join(' ').trim() ext.prefix = { "${meta.id}_${meta.run_accession}" } publishDir = [ diff --git a/conf/test.config b/conf/test.config index a5244f9..c687a86 100644 --- a/conf/test.config +++ b/conf/test.config @@ -29,6 +29,7 @@ params { perform_shortread_complexityfilter = true perform_shortread_hostremoval = true perform_longread_hostremoval = true + perform_runmerging = true hostremoval_reference = 'https://raw.githubusercontent.com/nf-core/test-datasets/modules/data/genomics/homo_sapiens/genome/genome.fasta' run_kaiju = true run_kraken2 = true diff --git a/conf/test_nopreprocessing.config b/conf/test_nopreprocessing.config new file mode 100644 index 0000000..e8d4ed9 --- /dev/null +++ b/conf/test_nopreprocessing.config @@ -0,0 +1,46 @@ +/* +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Nextflow config file for running minimal tests +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Defines input files and everything required to run a fast and simple pipeline test. + + Use as follows: + nextflow run nf-core/taxprofiler -profile test, --outdir + +---------------------------------------------------------------------------------------- +*/ + +params { + config_profile_name = 'Test profile' + config_profile_description = 'Minimal test dataset skipping all preprocessing to check pipeline function' + + // Limit resources so that this can run on GitHub Actions + max_cpus = 2 + max_memory = '6.GB' + max_time = '6.h' + + // Input data + // TODO nf-core: Specify the paths to your test data on nf-core/test-datasets + // TODO nf-core: Give any required params for the test so that command line flags are not needed + input = 'https://raw.githubusercontent.com/nf-core/test-datasets/taxprofiler/samplesheet.csv' + databases = 'https://raw.githubusercontent.com/nf-core/test-datasets/taxprofiler/database.csv' + perform_shortread_clipmerge = false + perform_longread_clip = false + perform_shortread_complexityfilter = false + perform_shortread_hostremoval = false + perform_longread_hostremoval = false + perform_runmerging = false + hostremoval_reference = 'https://raw.githubusercontent.com/nf-core/test-datasets/modules/data/genomics/homo_sapiens/genome/genome.fasta' + run_kaiju = true + run_kraken2 = true + run_malt = true + run_metaphlan3 = true + run_centrifuge = true + run_diamond = true +} + +process { + withName: MALT_RUN { + maxForks = 1 + } +} diff --git a/conf/test_noprofiling.config b/conf/test_noprofiling.config new file mode 100644 index 0000000..f908651 --- /dev/null +++ b/conf/test_noprofiling.config @@ -0,0 +1,46 @@ +/* +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Nextflow config file for running minimal tests +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Defines input files and everything required to run a fast and simple pipeline test. + + Use as follows: + nextflow run nf-core/taxprofiler -profile test, --outdir + +---------------------------------------------------------------------------------------- +*/ + +params { + config_profile_name = 'Test profile' + config_profile_description = 'Minimal test dataset without performing any profiling to check pipeline function' + + // Limit resources so that this can run on GitHub Actions + max_cpus = 2 + max_memory = '6.GB' + max_time = '6.h' + + // Input data + // TODO nf-core: Specify the paths to your test data on nf-core/test-datasets + // TODO nf-core: Give any required params for the test so that command line flags are not needed + input = 'https://raw.githubusercontent.com/nf-core/test-datasets/taxprofiler/samplesheet.csv' + databases = 'https://raw.githubusercontent.com/nf-core/test-datasets/taxprofiler/database.csv' + perform_shortread_clipmerge = true + perform_longread_clip = true + perform_shortread_complexityfilter = true + perform_shortread_hostremoval = true + perform_longread_hostremoval = true + perform_runmerging = true + hostremoval_reference = 'https://raw.githubusercontent.com/nf-core/test-datasets/modules/data/genomics/homo_sapiens/genome/genome.fasta' + run_kaiju = false + run_kraken2 = false + run_malt = false + run_metaphlan3 = false + run_centrifuge = false + run_diamond = false +} + +process { + withName: MALT_RUN { + maxForks = 1 + } +} diff --git a/docs/usage.md b/docs/usage.md index 4aa1d09..47ac952 100644 --- a/docs/usage.md +++ b/docs/usage.md @@ -183,11 +183,11 @@ Complexity filtering can be activated via the `--perform_shortread_complexityfil Complexity filtering is primarily a run-time optimisation step. It is not necessary for accurate taxonomic profiling, however it can speed up run-time of each tool by removing reads with low-diversity of nucleotides (e.g. with mono-nucleotide - `AAAAAAAA`, or di-nucleotide repeats `GAGAGAGAGAGAGAG`) that have a low-chance of giving an informative taxonomic ID as they can be associated with many different taxa. Removing these reads therefore saves computational time and resources. -There are currently two options for short-read complexity filtering: [`bbduk`](https://jgi.doe.gov/data-and-tools/software-tools/bbtools/bb-tools-user-guide/bbduk-guide/) and [`prinseq++`](https://jgi.doe.gov/data-and-tools/software-tools/bbtools/bb-tools-user-guide/bbduk-guide/). +There are currently three options for short-read complexity filtering: [`bbduk`](https://jgi.doe.gov/data-and-tools/software-tools/bbtools/bb-tools-user-guide/bbduk-guide/), [`prinseq++`](https://github.com/Adrian-Cantu/PRINSEQ-plus-plus), and [`fastp`](https://github.com/OpenGene/fastp#low-complexity-filter). The tools offer different algorithms and parameters for removing low complexity reads. We therefore recommend reviewing the pipeline's [parameter documentation](https://nf-co.re/taxprofiler/parameters) and the documentation of both tools (see links above) to decide on optimal methods and parameters for your dataset. -You can optionally save the FASTQ output of the run merging with the `--save_complexityfiltered_reads`. +You can optionally save the FASTQ output of the run merging with the `--save_complexityfiltered_reads`. If running with `fastp`, complexity filtering happens inclusively within the earlier shortread preprocessing step. Therefore there will not be an independent pipeline step for complexity filtering, and no independent FASTQ file (i.e. `--save_complexityfiltered_reads` will be ignored) - your complexity filtered reads will also be in the `fastp/` folder in the same file(s) as the preprocessed read. #### Host Removal diff --git a/nextflow.config b/nextflow.config index ca9e280..411e7a6 100644 --- a/nextflow.config +++ b/nextflow.config @@ -74,6 +74,7 @@ params { shortread_complexityfilter_bbduk_mask = false shortread_complexityfilter_prinseqplusplus_mode = 'entropy' shortread_complexityfilter_prinseqplusplus_dustscore = 0.5 + shortread_complexityfilter_fastp_threshold = 30 save_complexityfiltered_reads = false // run merging @@ -185,6 +186,8 @@ profiles { } test { includeConfig 'conf/test.config' } test_full { includeConfig 'conf/test_full.config' } + test_noprofiling { includeConfig 'conf/test_noprofiling.config' } + test_nopreprocessing { includeConfig 'conf/test_preprocessing.config' } } // Load igenomes.config if required diff --git a/nextflow_schema.json b/nextflow_schema.json index ab2108e..a0a830c 100644 --- a/nextflow_schema.json +++ b/nextflow_schema.json @@ -10,7 +10,10 @@ "type": "object", "fa_icon": "fas fa-terminal", "description": "Define where the pipeline should find input data and save output data.", - "required": ["input", "outdir"], + "required": [ + "input", + "outdir" + ], "properties": { "input": { "type": "string", @@ -173,7 +176,14 @@ "description": "Method used to save pipeline results to output directory.", "help_text": "The Nextflow `publishDir` option specifies which intermediate files should be saved to the output directory. This option tells the pipeline what method should be used to move these files. See [Nextflow docs](https://www.nextflow.io/docs/latest/process.html#publishdir) for details.", "fa_icon": "fas fa-copy", - "enum": ["symlink", "rellink", "link", "copy", "copyNoFollow", "move"], + "enum": [ + "symlink", + "rellink", + "link", + "copy", + "copyNoFollow", + "move" + ], "hidden": true }, "email_on_fail": { @@ -294,7 +304,10 @@ "shortread_clipmerge_tool": { "type": "string", "default": "fastp", - "enum": ["fastp", "adapterremoval"] + "enum": [ + "fastp", + "adapterremoval" + ] }, "shortread_clipmerge_skipadaptertrim": { "type": "boolean" @@ -319,7 +332,12 @@ }, "shortread_complexityfilter_tool": { "type": "string", - "default": "bbduk" + "default": "bbduk", + "enum": [ + "bbduk", + "prinseqplusplus", + "fastp" + ] }, "shortread_complexityfilter_bbduk_windowsize": { "type": "integer", @@ -335,7 +353,10 @@ "shortread_complexityfilter_prinseqplusplus_mode": { "type": "string", "default": "entropy", - "enum": ["entropy", "dust"] + "enum": [ + "entropy", + "dust" + ] }, "shortread_complexityfilter_prinseqplusplus_dustscore": { "type": "number", @@ -391,7 +412,14 @@ "kaiju_taxon_name": { "type": "string", "default": "species", - "enum": ["phylum", "class", "order", "family", "genus", "species"] + "enum": [ + "phylum", + "class", + "order", + "family", + "genus", + "species" + ] }, "run_diamond": { "type": "boolean" @@ -399,11 +427,19 @@ "diamond_output_format": { "type": "string", "default": "tsv", - "enum": ["blast", "xml", "txt", "daa", "sam", "tsv", "paf"] + "enum": [ + "blast", + "xml", + "txt", + "daa", + "sam", + "tsv", + "paf" + ] }, "longread_hostremoval_index": { "type": "string", "default": "None" } } -} +} \ No newline at end of file diff --git a/subworkflows/local/shortread_complexityfiltering.nf b/subworkflows/local/shortread_complexityfiltering.nf index 12686d7..a34440d 100644 --- a/subworkflows/local/shortread_complexityfiltering.nf +++ b/subworkflows/local/shortread_complexityfiltering.nf @@ -13,6 +13,7 @@ workflow SHORTREAD_COMPLEXITYFILTERING { ch_versions = Channel.empty() ch_multiqc_files = Channel.empty() + // fastp complexity filtering is activated via modules.conf in shortread_preprocessing if ( params.shortread_complexityfilter_tool == 'bbduk' ) { ch_filtered_reads = BBMAP_BBDUK ( reads, [] ).reads ch_versions = ch_versions.mix( BBMAP_BBDUK.out.versions.first() ) diff --git a/workflows/taxprofiler.nf b/workflows/taxprofiler.nf index 7a6cd09..b8b953b 100644 --- a/workflows/taxprofiler.nf +++ b/workflows/taxprofiler.nf @@ -19,9 +19,12 @@ for (param in checkPathParamList) { if (param) { file(param, checkIfExists: true // Check mandatory parameters if (params.input ) { ch_input = file(params.input) } else { exit 1, 'Input samplesheet not specified!' } if (params.databases) { ch_databases = file(params.databases) } else { exit 1, 'Input database sheet not specified!' } + if (params.shortread_clipmerge_mergepairs && params.run_malt ) log.warn "[nf-core/taxprofiler] MALT does not accept uncollapsed paired-reads. Pairs will be profiled as separate files." if (params.shortread_clipmerge_excludeunmerged && !params.shortread_clipmerge_mergepairs) exit 1, "ERROR: [nf-core/taxprofiler] cannot include unmerged reads when merging not turned on. Please specify --shortread_clipmerge_mergepairs" +if (params.shortread_complexityfilter_tool == 'fastp' && ( params.perform_shortread_clipmerge == false || params.shortread_clipmerge_tool != 'fastp' )) exit 1, "ERROR: [nf-core/taxprofiler] cannot use fastp complexity filtering if preprocessing not turned on and/or tool is not fastp. Please specify --perform_shortread_clipmerge and/or --shortread_clipmerge_tool 'fastp'" + if (params.perform_shortread_hostremoval && !params.hostremoval_reference) { exit 1, "ERROR: [nf-core/taxprofiler] --shortread_hostremoval requested but no --hostremoval_reference FASTA supplied. Check input." } if (!params.hostremoval_reference && params.hostremoval_reference_index) { exit 1, "ERROR: [nf-core/taxprofiler] --shortread_hostremoval_index provided but no --hostremoval_reference FASTA supplied. Check input." } @@ -131,7 +134,8 @@ workflow TAXPROFILER { SUBWORKFLOW: COMPLEXITY FILTERING */ - if ( params.perform_shortread_complexityfilter ) { + // fastp complexity filtering is activated via modules.conf in shortread_preprocessing + if ( params.perform_shortread_complexityfilter && params.shortread_complexityfilter_tool != 'fastp' ) { ch_shortreads_filtered = SHORTREAD_COMPLEXITYFILTERING ( ch_shortreads_preprocessed ).reads ch_versions = ch_versions.mix( SHORTREAD_COMPLEXITYFILTERING.out.versions ) } else { @@ -228,7 +232,7 @@ workflow TAXPROFILER { ch_multiqc_files = ch_multiqc_files.mix( LONGREAD_PREPROCESSING.out.mqc.collect{it[1]}.ifEmpty([]) ) } - if (params.perform_shortread_complexityfilter){ + if (params.perform_shortread_complexityfilter && params.shortread_complexityfilter_tool != 'fastp'){ ch_multiqc_files = ch_multiqc_files.mix( SHORTREAD_COMPLEXITYFILTERING.out.mqc.collect{it[1]}.ifEmpty([]) ) } From 0f651873dd711c2223a8f844a091deb1316f6979 Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Sat, 7 May 2022 06:12:24 +0200 Subject: [PATCH 213/789] Linting --- conf/modules.config | 4 ++-- nextflow_schema.json | 55 ++++++++++---------------------------------- 2 files changed, 14 insertions(+), 45 deletions(-) diff --git a/conf/modules.config b/conf/modules.config index c834f4e..0abff92 100644 --- a/conf/modules.config +++ b/conf/modules.config @@ -55,7 +55,7 @@ process { params.shortread_clipmerge_adapter1 ? "--adapter_sequence ${params.shortread_clipmerge_adapter1}" : "", // filtering options "--length_required ${params.shortread_clipmerge_minlength}", - params.perform_shortread_complexityfilter && params.shortread_complexityfilter_tool == 'fastp' ? "--low_complexity_filter --complexity_threshold ${params.shortread_complexityfilter_fastp_threshold}" : '' + params.perform_shortread_complexityfilter && params.shortread_complexityfilter_tool == 'fastp' ? "--low_complexity_filter --complexity_threshold ${params.shortread_complexityfilter_fastp_threshold}" : '' ].join(' ').trim() ext.prefix = { "${meta.id}_${meta.run_accession}" } publishDir = [ @@ -76,7 +76,7 @@ process { params.shortread_clipmerge_adapter2 ? "--adapter_sequence_r2 ${params.shortread_clipmerge_adapter2}" : "--detect_adapter_for_pe", // filtering options "--length_required ${params.shortread_clipmerge_minlength}", - params.perform_shortread_complexityfilter && params.shortread_complexityfilter_tool == 'fastp' ? "--low_complexity_filter --complexity_threshold ${params.shortread_complexityfilter_fastp_threshold}" : '' + params.perform_shortread_complexityfilter && params.shortread_complexityfilter_tool == 'fastp' ? "--low_complexity_filter --complexity_threshold ${params.shortread_complexityfilter_fastp_threshold}" : '' ].join(' ').trim() ext.prefix = { "${meta.id}_${meta.run_accession}" } publishDir = [ diff --git a/nextflow_schema.json b/nextflow_schema.json index a0a830c..74fab27 100644 --- a/nextflow_schema.json +++ b/nextflow_schema.json @@ -10,10 +10,7 @@ "type": "object", "fa_icon": "fas fa-terminal", "description": "Define where the pipeline should find input data and save output data.", - "required": [ - "input", - "outdir" - ], + "required": ["input", "outdir"], "properties": { "input": { "type": "string", @@ -176,14 +173,7 @@ "description": "Method used to save pipeline results to output directory.", "help_text": "The Nextflow `publishDir` option specifies which intermediate files should be saved to the output directory. This option tells the pipeline what method should be used to move these files. See [Nextflow docs](https://www.nextflow.io/docs/latest/process.html#publishdir) for details.", "fa_icon": "fas fa-copy", - "enum": [ - "symlink", - "rellink", - "link", - "copy", - "copyNoFollow", - "move" - ], + "enum": ["symlink", "rellink", "link", "copy", "copyNoFollow", "move"], "hidden": true }, "email_on_fail": { @@ -304,10 +294,7 @@ "shortread_clipmerge_tool": { "type": "string", "default": "fastp", - "enum": [ - "fastp", - "adapterremoval" - ] + "enum": ["fastp", "adapterremoval"] }, "shortread_clipmerge_skipadaptertrim": { "type": "boolean" @@ -333,11 +320,7 @@ "shortread_complexityfilter_tool": { "type": "string", "default": "bbduk", - "enum": [ - "bbduk", - "prinseqplusplus", - "fastp" - ] + "enum": ["bbduk", "prinseqplusplus", "fastp"] }, "shortread_complexityfilter_bbduk_windowsize": { "type": "integer", @@ -353,10 +336,7 @@ "shortread_complexityfilter_prinseqplusplus_mode": { "type": "string", "default": "entropy", - "enum": [ - "entropy", - "dust" - ] + "enum": ["entropy", "dust"] }, "shortread_complexityfilter_prinseqplusplus_dustscore": { "type": "number", @@ -412,14 +392,7 @@ "kaiju_taxon_name": { "type": "string", "default": "species", - "enum": [ - "phylum", - "class", - "order", - "family", - "genus", - "species" - ] + "enum": ["phylum", "class", "order", "family", "genus", "species"] }, "run_diamond": { "type": "boolean" @@ -427,19 +400,15 @@ "diamond_output_format": { "type": "string", "default": "tsv", - "enum": [ - "blast", - "xml", - "txt", - "daa", - "sam", - "tsv", - "paf" - ] + "enum": ["blast", "xml", "txt", "daa", "sam", "tsv", "paf"] }, "longread_hostremoval_index": { "type": "string", "default": "None" + }, + "shortread_complexityfilter_fastp_threshold": { + "type": "integer", + "default": 30 } } -} \ No newline at end of file +} From 3fa2181f498f5e1c994efb06be3a63f459dcf9cc Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Sat, 7 May 2022 06:15:15 +0200 Subject: [PATCH 214/789] Fix prinseq tool selection --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index a1ece72..7bb2076 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -38,7 +38,7 @@ jobs: - "--shortread_clipmerge_tool adapterremoval --shortread_clipmerge_mergepairs --shortread_clipmerge_excludeunmerged" - "--shortread_clipmerge_tool adapterremoval --shortread_clipmerge_mergepairs" - "--shortread_complexityfilter_tool bbduk" - - "--shortread_complexityfilter_tool prinseq" + - "--shortread_complexityfilter_tool prinseqplusplus" - "--perform_runmerging" - "--perform_runmerging --shortread_clipmerge_mergepairs" - "--shortread_complexityfilter false --perform_shortread_hostremoval" From d67543503b927f6af5bce9574ad8b428c53c0c46 Mon Sep 17 00:00:00 2001 From: "James A. Fellows Yates" Date: Sat, 7 May 2022 13:15:21 +0200 Subject: [PATCH 215/789] Apply suggestions from code review Co-authored-by: Moritz E. Beber --- conf/modules.config | 2 +- docs/usage.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/conf/modules.config b/conf/modules.config index 0abff92..5d8398e 100644 --- a/conf/modules.config +++ b/conf/modules.config @@ -55,7 +55,7 @@ process { params.shortread_clipmerge_adapter1 ? "--adapter_sequence ${params.shortread_clipmerge_adapter1}" : "", // filtering options "--length_required ${params.shortread_clipmerge_minlength}", - params.perform_shortread_complexityfilter && params.shortread_complexityfilter_tool == 'fastp' ? "--low_complexity_filter --complexity_threshold ${params.shortread_complexityfilter_fastp_threshold}" : '' + (params.perform_shortread_complexityfilter && params.shortread_complexityfilter_tool == 'fastp') ? "--low_complexity_filter --complexity_threshold ${params.shortread_complexityfilter_fastp_threshold}" : '' ].join(' ').trim() ext.prefix = { "${meta.id}_${meta.run_accession}" } publishDir = [ diff --git a/docs/usage.md b/docs/usage.md index 47ac952..54ffce0 100644 --- a/docs/usage.md +++ b/docs/usage.md @@ -185,7 +185,7 @@ Complexity filtering is primarily a run-time optimisation step. It is not necess There are currently three options for short-read complexity filtering: [`bbduk`](https://jgi.doe.gov/data-and-tools/software-tools/bbtools/bb-tools-user-guide/bbduk-guide/), [`prinseq++`](https://github.com/Adrian-Cantu/PRINSEQ-plus-plus), and [`fastp`](https://github.com/OpenGene/fastp#low-complexity-filter). -The tools offer different algorithms and parameters for removing low complexity reads. We therefore recommend reviewing the pipeline's [parameter documentation](https://nf-co.re/taxprofiler/parameters) and the documentation of both tools (see links above) to decide on optimal methods and parameters for your dataset. +The tools offer different algorithms and parameters for removing low complexity reads. We therefore recommend reviewing the pipeline's [parameter documentation](https://nf-co.re/taxprofiler/parameters) and the documentation of the tools (see links above) to decide on optimal methods and parameters for your dataset. You can optionally save the FASTQ output of the run merging with the `--save_complexityfiltered_reads`. If running with `fastp`, complexity filtering happens inclusively within the earlier shortread preprocessing step. Therefore there will not be an independent pipeline step for complexity filtering, and no independent FASTQ file (i.e. `--save_complexityfiltered_reads` will be ignored) - your complexity filtered reads will also be in the `fastp/` folder in the same file(s) as the preprocessed read. From aca7bc439dac189b8f4b33e7014859f7528d80bf Mon Sep 17 00:00:00 2001 From: "James A. Fellows Yates" Date: Thu, 12 May 2022 08:08:14 +0100 Subject: [PATCH 216/789] Update nextflow.config --- nextflow.config | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/nextflow.config b/nextflow.config index 411e7a6..4bcb1b1 100644 --- a/nextflow.config +++ b/nextflow.config @@ -130,11 +130,11 @@ try { // Load nf-core/taxprofiler custom profiles from different institutions. // Warning: Uncomment only if a pipeline-specific instititutional config already exists on nf-core/configs! -// try { -// includeConfig "${params.custom_config_base}/pipeline/taxprofiler.config" -// } catch (Exception e) { -// System.err.println("WARNING: Could not load nf-core/config/taxprofiler profiles: ${params.custom_config_base}/pipeline/taxprofiler.config") -// } +try { + includeConfig "${params.custom_config_base}/pipeline/taxprofiler.config" +} catch (Exception e) { + System.err.println("WARNING: Could not load nf-core/config/taxprofiler profiles: ${params.custom_config_base}/pipeline/taxprofiler.config") +} profiles { From 68d0cc00faaa50c45ec77a25158f3749d22d4f95 Mon Sep 17 00:00:00 2001 From: JIANHONG OU Date: Mon, 23 May 2022 08:05:06 -0400 Subject: [PATCH 217/789] add motus profile. --- conf/test.config | 1 + conf/test_nopreprocessing.config | 1 + conf/test_noprofiling.config | 1 + modules.json | 8 ++- .../nf-core/modules/motus/downloaddb/main.nf | 39 ++++++++++++ .../nf-core/modules/motus/downloaddb/meta.yml | 39 ++++++++++++ modules/nf-core/modules/motus/profile/main.nf | 54 ++++++++++++++++ .../nf-core/modules/motus/profile/meta.yml | 61 +++++++++++++++++++ nextflow.config | 5 ++ nextflow_schema.json | 11 ++++ .../execution_trace_2022-05-21_11-05-12.txt | 1 + subworkflows/local/db_check.nf | 21 ++++++- subworkflows/local/profiling.nf | 19 +++++- 13 files changed, 256 insertions(+), 5 deletions(-) create mode 100644 modules/nf-core/modules/motus/downloaddb/main.nf create mode 100644 modules/nf-core/modules/motus/downloaddb/meta.yml create mode 100644 modules/nf-core/modules/motus/profile/main.nf create mode 100644 modules/nf-core/modules/motus/profile/meta.yml create mode 100644 null/pipeline_info/execution_trace_2022-05-21_11-05-12.txt diff --git a/conf/test.config b/conf/test.config index c687a86..cf983ab 100644 --- a/conf/test.config +++ b/conf/test.config @@ -37,6 +37,7 @@ params { run_metaphlan3 = true run_centrifuge = true run_diamond = true + run_motus = true } process { diff --git a/conf/test_nopreprocessing.config b/conf/test_nopreprocessing.config index e8d4ed9..7658a2d 100644 --- a/conf/test_nopreprocessing.config +++ b/conf/test_nopreprocessing.config @@ -37,6 +37,7 @@ params { run_metaphlan3 = true run_centrifuge = true run_diamond = true + run_motus = true } process { diff --git a/conf/test_noprofiling.config b/conf/test_noprofiling.config index f908651..dffb44e 100644 --- a/conf/test_noprofiling.config +++ b/conf/test_noprofiling.config @@ -37,6 +37,7 @@ params { run_metaphlan3 = false run_centrifuge = false run_diamond = false + run_motus = false } process { diff --git a/modules.json b/modules.json index a55c88b..2fc7203 100644 --- a/modules.json +++ b/modules.json @@ -60,6 +60,12 @@ "minimap2/index": { "git_sha": "e745e167c1020928ef20ea1397b6b4d230681b4d" }, + "motus/downloaddb": { + "git_sha": "6393a085c5fcea11963774c041808df169907487" + }, + "motus/profile": { + "git_sha": "6b960f0e75bbb4d5bd301cd3875fa078d0eab4d1" + }, "multiqc": { "git_sha": "e745e167c1020928ef20ea1397b6b4d230681b4d" }, @@ -80,4 +86,4 @@ } } } -} +} \ No newline at end of file diff --git a/modules/nf-core/modules/motus/downloaddb/main.nf b/modules/nf-core/modules/motus/downloaddb/main.nf new file mode 100644 index 0000000..317624b --- /dev/null +++ b/modules/nf-core/modules/motus/downloaddb/main.nf @@ -0,0 +1,39 @@ +process MOTUS_DOWNLOADDB { + label 'process_low' + + conda (params.enable_conda ? "bioconda::motus=3.0.1" : null) + container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? + 'https://depot.galaxyproject.org/singularity/motus:3.0.1--pyhdfd78af_0': + 'quay.io/biocontainers/motus:3.0.1--pyhdfd78af_0' }" + + input: + path motus_downloaddb_script + + output: + path "db_mOTU/" , emit: db + path "versions.yml" , emit: versions + + when: + task.ext.when == null || task.ext.when + + script: + def args = task.ext.args ?: '' + def software = "${motus_downloaddb_script.simpleName}_copy.py" + """ + ## must copy script file to working directory, + ## otherwise the reference_db will be download to bin folder + ## other than current directory + cp $motus_downloaddb_script ${software} + python ${software} \\ + $args \\ + -t $task.cpus + + ## mOTUs version number is not available from command line. + ## mOTUs save the version number in index database folder. + ## mOTUs will check the database version is same version as exec version. + cat <<-END_VERSIONS > versions.yml + "${task.process}": + mOTUs: \$(grep motus db_mOTU/db_mOTU_versions | sed 's/motus\\t//g') + END_VERSIONS + """ +} diff --git a/modules/nf-core/modules/motus/downloaddb/meta.yml b/modules/nf-core/modules/motus/downloaddb/meta.yml new file mode 100644 index 0000000..64df5ee --- /dev/null +++ b/modules/nf-core/modules/motus/downloaddb/meta.yml @@ -0,0 +1,39 @@ +name: "motus_downloaddb" +description: Download the mOTUs database +keywords: + - classify + - metagenomics + - fastq + - taxonomic profiling + - database + - download +tools: + - "motus": + description: "The mOTU profiler is a computational tool that estimates relative taxonomic abundance of known and currently unknown microbial community members using metagenomic shotgun sequencing data." + homepage: "None" + documentation: "https://github.com/motu-tool/mOTUs/wiki" + tool_dev_url: "https://github.com/motu-tool/mOTUs" + doi: "10.1038/s41467-019-08844-4" + licence: "['GPL v3']" + +input: + - motus_downloaddb: + type: directory + description: | + The mOTUs downloadDB script source file. + It is the source file installed or + remote source in github such as https://raw.githubusercontent.com/motu-tool/mOTUs/master/motus/downloadDB.py + pattern: "downloadDB.py" + +output: + - versions: + type: file + description: File containing software versions + pattern: "versions.yml" + - db: + type: directory + description: The mOTUs database directory + pattern: "db_mOTU" + +authors: + - "@jianhong" diff --git a/modules/nf-core/modules/motus/profile/main.nf b/modules/nf-core/modules/motus/profile/main.nf new file mode 100644 index 0000000..6a1acd3 --- /dev/null +++ b/modules/nf-core/modules/motus/profile/main.nf @@ -0,0 +1,54 @@ +process MOTUS_PROFILE { + tag "$meta.id" + label 'process_medium' + + conda (params.enable_conda ? "bioconda::motus=3.0.1" : null) + container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? + 'https://depot.galaxyproject.org/singularity/motus:3.0.1--pyhdfd78af_0': + 'quay.io/biocontainers/motus:3.0.1--pyhdfd78af_0' }" + + input: + tuple val(meta), path(reads) + path db + + output: + tuple val(meta), path("*.out"), emit: out + tuple val(meta), path("*.bam"), optional: true, emit: bam + tuple val(meta), path("*.mgc"), optional: true, emit: mgc + path "versions.yml" , emit: versions + + when: + task.ext.when == null || task.ext.when + + script: + def args = task.ext.args ?: '' + def prefix = task.ext.prefix ?: "${meta.id}" + def inputs = reads[0].getExtension() == 'bam' ? + "-i ${reads}" : + reads[0].getExtension() == 'mgc' ? "-m $reads" : + meta.single_end ? + "-s $reads" : "-f ${reads[0]} -r ${reads[1]}" + def refdb = db ? "-db ${db}" : "" + """ + motus profile \\ + $args \\ + $inputs \\ + $refdb \\ + -t $task.cpus \\ + -n $prefix \\ + -o ${prefix}.out + + ## mOTUs version number is not available from command line. + ## mOTUs save the version number in index database folder. + ## mOTUs will check the database version is same version as exec version. + if [ "$db" == "" ]; then + VERSION=\$(echo \$(motus -h 2>&1) | sed 's/^.*Version: //; s/References.*\$//') + else + VERSION=\$(grep motus $db/db_mOTU_versions | sed 's/motus\\t//g') + fi + cat <<-END_VERSIONS > versions.yml + "${task.process}": + mOTUs: \$VERSION + END_VERSIONS + """ +} diff --git a/modules/nf-core/modules/motus/profile/meta.yml b/modules/nf-core/modules/motus/profile/meta.yml new file mode 100644 index 0000000..19803bd --- /dev/null +++ b/modules/nf-core/modules/motus/profile/meta.yml @@ -0,0 +1,61 @@ +name: "motus_profile" +description: Taxonomic meta-omics profiling using universal marker genes +keywords: + - classify + - metagenomics + - fastq + - taxonomic profiling +tools: + - "motus": + description: "Marker gene-based OTU (mOTU) profiling" + homepage: "https://motu-tool.org/" + documentation: "https://github.com/motu-tool/mOTUs/wiki" + tool_dev_url: "https://github.com/motu-tool/mOTUs" + doi: "10.1038/s41467-019-08844-4" + licence: "['GPL v3']" + +input: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - reads: + type: file + description: | + List of input fastq/fasta files of size 1 and 2 for single-end and paired-end data, + respectively. + Or the intermediate bam file mapped by bwa to the mOTUs database or + the output bam file from motus profile. + Or the intermediate mgc read counts table. + pattern: "*.{fastq,fq,fasta,fa,fastq.gz,fq.gz,fasta.gz,fa.gz,.bam,.mgc}" + - db: + type: directory + description: | + mOTUs database downloaded by `motus downloadDB` + +output: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - versions: + type: file + description: File containing software versions + pattern: "versions.yml" + - out: + type: file + description: Results with taxonomic classification of each read + pattern: "*.out" + - bam: + type: file + description: Optional intermediate sorted BAM file from BWA + pattern: "*.{bam}" + - mgc: + type: file + description: Optional intermediate mgc read count table file saved with `-M`. + pattern: "*.{mgc}" + +authors: + - "@jianhong" diff --git a/nextflow.config b/nextflow.config index 411e7a6..6c39ccd 100644 --- a/nextflow.config +++ b/nextflow.config @@ -116,6 +116,11 @@ params { // diamond run_diamond = false diamond_output_format = 'txt' + + // mOTUs + run_motus = false + download_motus_db = true + motus_downloaddb_script = 'https://raw.githubusercontent.com/motu-tool/mOTUs/master/motus/downloadDB.py' } // Load base.config by default for all pipelines diff --git a/nextflow_schema.json b/nextflow_schema.json index 74fab27..198a937 100644 --- a/nextflow_schema.json +++ b/nextflow_schema.json @@ -409,6 +409,17 @@ "shortread_complexityfilter_fastp_threshold": { "type": "integer", "default": 30 + }, + "run_motus": { + "type": "boolean" + }, + "download_motus_db": { + "type": "boolean" + }, + "motus_downloaddb_script": { + "type": "string", + "default": "https://raw.githubusercontent.com/motu-tool/mOTUs/master/motus/downloadDB.py", + "description": "mOTUs database download script path." } } } diff --git a/null/pipeline_info/execution_trace_2022-05-21_11-05-12.txt b/null/pipeline_info/execution_trace_2022-05-21_11-05-12.txt new file mode 100644 index 0000000..6b739ac --- /dev/null +++ b/null/pipeline_info/execution_trace_2022-05-21_11-05-12.txt @@ -0,0 +1 @@ +task_id hash native_id name status exit submit duration realtime %cpu peak_rss peak_vmem rchar wchar diff --git a/subworkflows/local/db_check.nf b/subworkflows/local/db_check.nf index f3464d5..95eeefc 100644 --- a/subworkflows/local/db_check.nf +++ b/subworkflows/local/db_check.nf @@ -2,8 +2,9 @@ // Check input samplesheet and get read channels // -include { DATABASE_CHECK } from '../../modules/local/database_check' -include { UNTAR } from '../../modules/nf-core/modules/untar/main' +include { DATABASE_CHECK } from '../../modules/local/database_check' +include { UNTAR } from '../../modules/nf-core/modules/untar/main' +include { MOTUS_DOWNLOADDB } from '../../modules/nf-core/modules/motus/downloaddb/main' workflow DB_CHECK { take: @@ -20,6 +21,22 @@ workflow DB_CHECK { .splitCsv ( header:true, sep:',' ) .map { create_db_channels(it) } + // Download database for mOTUs + if( params.run_motus ){ + check_motus_db = + parsed_samplesheet.filter{ it[0].tool == "motus" } + .ifEmpty{[]} + if( params.download_motus_db ){ + MOTUS_DOWNLOADDB( params.motus_downloaddb_script ) + check_motus_db = MOTUS_DOWNLOADDB.out.db + .map{[ + [tool: "motus", db_name: "db_mOTU", db_params: ''], + it + ]} + } + parsed_samplesheet = parsed_samplesheet.mix(check_motus_db) + } + ch_dbs_for_untar = parsed_samplesheet .branch { untar: it[1].toString().endsWith(".tar.gz") diff --git a/subworkflows/local/profiling.nf b/subworkflows/local/profiling.nf index 7fb3ce9..109598d 100644 --- a/subworkflows/local/profiling.nf +++ b/subworkflows/local/profiling.nf @@ -11,7 +11,7 @@ include { METAPHLAN3 } from '../../modules/nf-core/modules/meta include { KAIJU_KAIJU } from '../../modules/nf-core/modules/kaiju/kaiju/main' include { KAIJU_KAIJU2TABLE } from '../../modules/nf-core/modules/kaiju/kaiju2table/main' include { DIAMOND_BLASTX } from '../../modules/nf-core/modules/diamond/blastx/main' - +include { MOTUS_PROFILE } from '../../modules/nf-core/modules/motus/profile/main' workflow PROFILING { take: @@ -44,6 +44,7 @@ workflow PROFILING { centrifuge: it[2]['tool'] == 'centrifuge' kaiju: it[2]['tool'] == 'kaiju' diamond: it[2]['tool'] == 'diamond' + motus: it[2]['tool'] == 'motus' unknown: true } @@ -186,9 +187,23 @@ workflow PROFILING { } + if ( params.run_motus ) { + + ch_input_for_motus = ch_input_for_profiling.motus + .multiMap { + it -> + reads: [it[0] + it[2], it[1]] + db: it[3] + } + + MOTUS_PROFILE ( ch_input_for_motus.reads, ch_input_for_motus.db ) + ch_versions = ch_versions.mix( MOTUS_PROFILE.out.versions.first() ) + ch_raw_profiles = ch_raw_profiles.mix( MOTUS_PROFILE.out.out ) + + } + emit: profiles = ch_raw_profiles // channel: [ val(meta), [ reads ] ] - should be text files or biom versions = ch_versions // channel: [ versions.yml ] mqc = ch_multiqc_files } - From 4b3216c1cb494c8110c361df25524f7515cc531e Mon Sep 17 00:00:00 2001 From: JIANHONG OU Date: Tue, 24 May 2022 08:42:18 -0400 Subject: [PATCH 218/789] filter fasta inputs for mOTUs; fix the typo for nopreprocessing in nextflow.config. --- nextflow.config | 2 +- subworkflows/local/profiling.nf | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/nextflow.config b/nextflow.config index 6c39ccd..a8240d1 100644 --- a/nextflow.config +++ b/nextflow.config @@ -192,7 +192,7 @@ profiles { test { includeConfig 'conf/test.config' } test_full { includeConfig 'conf/test_full.config' } test_noprofiling { includeConfig 'conf/test_noprofiling.config' } - test_nopreprocessing { includeConfig 'conf/test_preprocessing.config' } + test_nopreprocessing { includeConfig 'conf/test_nopreprocessing.config' } } // Load igenomes.config if required diff --git a/subworkflows/local/profiling.nf b/subworkflows/local/profiling.nf index 109598d..2813bc7 100644 --- a/subworkflows/local/profiling.nf +++ b/subworkflows/local/profiling.nf @@ -190,6 +190,10 @@ workflow PROFILING { if ( params.run_motus ) { ch_input_for_motus = ch_input_for_profiling.motus + .filter{ + if (it[0].is_fasta) log.warn "[nf-core/taxprofiler] mOTUs currently does not accept FASTA files as input. Skipping mOTUs for sample ${it[0].id}." + !it[0].is_fasta + } .multiMap { it -> reads: [it[0] + it[2], it[1]] From f14141574e15b83165507c2223e17fd927d70018 Mon Sep 17 00:00:00 2001 From: JIANHONG OU Date: Wed, 25 May 2022 08:03:23 -0400 Subject: [PATCH 219/789] fix the end line issue for modules.json --- modules.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules.json b/modules.json index 2fc7203..d4172ae 100644 --- a/modules.json +++ b/modules.json @@ -86,4 +86,4 @@ } } } -} \ No newline at end of file +} From 74b48f091947e10de18d5f2565e9d0ac50be665e Mon Sep 17 00:00:00 2001 From: ZandraFagernas <47026226+ZandraFagernas@users.noreply.github.com> Date: Sat, 28 May 2022 13:29:24 +0200 Subject: [PATCH 220/789] Add files via upload --- docs/images/taxprofiler_logo.svg | 3223 ++++++++++++++++++++++++++++++ 1 file changed, 3223 insertions(+) create mode 100644 docs/images/taxprofiler_logo.svg diff --git a/docs/images/taxprofiler_logo.svg b/docs/images/taxprofiler_logo.svg new file mode 100644 index 0000000..0cb901d --- /dev/null +++ b/docs/images/taxprofiler_logo.svg @@ -0,0 +1,3223 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + taxfinder + + + + + + + + + + + + taxprofiler + / + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + taxfinder + + + + + + + + + + + + taxprofiler + / + + + + + + + + + + + + + + + + + + + + + + + + + + + + From 77da358e87818381006f6f009f3a8c9036295f8a Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Tue, 31 May 2022 12:45:38 +0200 Subject: [PATCH 221/789] Separate dark and light mode logos, add to README and add to MQC report --- README.md | 2 +- assets/multiqc_config.yml | 4 + docs/images/nf-core-taxprofiler_icon.png | Bin 0 -> 134012 bytes docs/images/nf-core-taxprofiler_icon.svg | 444 ++++ .../nf-core-taxprofiler_logo_custom_dark.png | Bin 0 -> 398775 bytes .../nf-core-taxprofiler_logo_custom_dark.svg | 2302 ++++++++++++++++ .../nf-core-taxprofiler_logo_custom_light.png | Bin 0 -> 443259 bytes .../nf-core-taxprofiler_logo_custom_light.svg | 2305 +++++++++++++++++ workflows/taxprofiler.nf | 3 + 9 files changed, 5059 insertions(+), 1 deletion(-) create mode 100644 docs/images/nf-core-taxprofiler_icon.png create mode 100644 docs/images/nf-core-taxprofiler_icon.svg create mode 100644 docs/images/nf-core-taxprofiler_logo_custom_dark.png create mode 100644 docs/images/nf-core-taxprofiler_logo_custom_dark.svg create mode 100644 docs/images/nf-core-taxprofiler_logo_custom_light.png create mode 100644 docs/images/nf-core-taxprofiler_logo_custom_light.svg diff --git a/README.md b/README.md index 722cccb..7f3932c 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# ![nf-core/taxprofiler](docs/images/nf-core-taxprofiler_logo_light.png#gh-light-mode-only) ![nf-core/taxprofiler](docs/images/nf-core-taxprofiler_logo_dark.png#gh-dark-mode-only) +# ![nf-core/taxprofiler](docs/images/nf-core-taxprofiler_logo_custom_light.png#gh-light-mode-only) ![nf-core/taxprofiler](docs/images/nf-core-taxprofiler_logo_custom_dark.png#gh-dark-mode-only) [![GitHub Actions CI Status](https://github.com/nf-core/taxprofiler/workflows/nf-core%20CI/badge.svg)](https://github.com/nf-core/taxprofiler/actions?query=workflow%3A%22nf-core+CI%22) [![GitHub Actions Linting Status](https://github.com/nf-core/taxprofiler/workflows/nf-core%20linting/badge.svg)](https://github.com/nf-core/taxprofiler/actions?query=workflow%3A%22nf-core+linting%22) diff --git a/assets/multiqc_config.yml b/assets/multiqc_config.yml index b0a0b1c..438fb42 100644 --- a/assets/multiqc_config.yml +++ b/assets/multiqc_config.yml @@ -9,3 +9,7 @@ report_section_order: order: -1001 export_plots: true + +custom_logo: "nf-core-taxprofiler_logo_custom_light.png" +custom_logo_url: https://nf-co.re/taxprofiler +custom_logo_title: "nf-core/taxprofiler" diff --git a/docs/images/nf-core-taxprofiler_icon.png b/docs/images/nf-core-taxprofiler_icon.png new file mode 100644 index 0000000000000000000000000000000000000000..c639fb67f5d7b820fdd1ba26c38643abbfc820c4 GIT binary patch literal 134012 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 z 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 Za*+tl0NEe58M~A+ykT;kc-86ge*ko{Q8EAk literal 0 HcmV?d00001 diff --git a/docs/images/nf-core-taxprofiler_icon.svg b/docs/images/nf-core-taxprofiler_icon.svg new file mode 100644 index 0000000..24e615f --- /dev/null +++ b/docs/images/nf-core-taxprofiler_icon.svg @@ -0,0 +1,444 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/images/nf-core-taxprofiler_logo_custom_dark.png b/docs/images/nf-core-taxprofiler_logo_custom_dark.png new file mode 100644 index 0000000000000000000000000000000000000000..6b089fc1392656a66025920f4b46ef87d8fe8d85 GIT binary patch literal 398775 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�IhigKWuY$;y__m5GLWP!q{etL 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 literal 0 HcmV?d00001 diff --git a/docs/images/nf-core-taxprofiler_logo_custom_dark.svg b/docs/images/nf-core-taxprofiler_logo_custom_dark.svg new file mode 100644 index 0000000..3d47b4c --- /dev/null +++ b/docs/images/nf-core-taxprofiler_logo_custom_dark.svg @@ -0,0 +1,2302 @@ + + + +taxfindertaxprofiler/ diff --git a/docs/images/nf-core-taxprofiler_logo_custom_light.png b/docs/images/nf-core-taxprofiler_logo_custom_light.png new file mode 100644 index 0000000000000000000000000000000000000000..2dc85b81a3d78ef077357222c27ca8f7d620e382 GIT binary patch literal 443259 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≶e)tFeODVv)@xsX=SvF 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 z z`MUqXy8>fqtky-4K%V!KW*y`*nv`!1i=NRAIVOBageSbLQ~|%qYPuX2CifU&7YQ@(;@VE^K@qG!yHE8d*8xsiNNUiZ9 z$g8&7G5pVnJz264ZW0o&8G+Vd%kaMkTkcaS)CZr!SNAe>n>WH=##T1TcEh-<^Vt>c zMh2tTuPB78#u0{2$ayvVEc;ibEM(PswA>>q-`}^dm=CYgo_SlArS;41tOx5Ls*~gF;fWS>fqcu<$~{b2zkzv(0r`6}^$mSVW~*RF zUWkA*i^a0B?rukjc6J@ypSVC0}%`muI}+v9_M3wsD&<=7^iGI*^ttxkj< zzD{rovK27ZvbMq9@)wAb_1XO6Y-W58ROzVH%N!hK7mO`Ybe*Pza~q zGo(fqz9sgF75T$vd^W;14MSWuM0ObyT=ey^|9YeJi0RZ(y#1$&_j3lxZO8BYc;XxB zAT>HVmN4cdJj-H)dx~ZX&_zKN97FKtF_l~VbS{kIF&fD-I2sXxuigW<*_{mm0RlZ5 z%EKL6?hw{LH-*zx+0?)Kq+_q)UVYqV8f;)DdgJ?2gzK&g!*J|qko+9wOR;Peg>Cb3w`&?+Ac`=9~>C8Y~K9OlqW zuPH2nGEU!seqYJ=tKWh{JVXK>ba%V@JcE(J@yuhVYFdP`&CBv8V>z=!zl{A7J!Nkp zRr&k-udTmg5fjfPfBK&{B@`)e)*H1a*j+u+MQRyk!zj+3Od6jdbdE`%y{<{S3SIH3 zYCMSnK|<)s^dnV~B#gXjmx~*78+xUIn3imX7r^r1jWQpLJ?YbIYC%{qvY1fm4o21j ziv%vt^6LT6Gfsj=MULLE1r1e0WZgxvA0YOjq5R7~R`KiSp1efqhhN|%wT+GRS*D}r z(|hiL$LU0gm2N^N-07KyCxT+Jy9WLhH90y`?0o9eu+H(g{=6H_{lBY7t&^P@la~1W z$v<&7!8=!Lx87e$`n!@ep#-s(F{;RuX!zG!?mVt$qlOmzkD@AvC1A^b2a4)qo-mBB z@*D}?_NNA}rwl|-#L=+W73&Z;grm=hHz*}&dUz2gU<%;*DQ1@g>8a$RD77Pch@2ZW ztpUf(Up#EtDx|4BZ}wC$B){|S33^zOelV=8CjHBf^;v>gL;FXl>t-JfRw`GnT-UDl z)7M;SrpIl*({3u~E>5=oz*~zJ1GZoyI#HUz2P8C0Yo1BjYtewfe2{DUdGh9KDRn;c z7PTfHRtDI%BP+OBcfX?x{saN#7l4J7k3Y`uC(j>kwHqT8M*pM~~+ z63Gh6)0~}`4YOH}Y3$vxvtajk(z_#)D7^fH5I`~}=3;Bu?@jyHZRf4$%sL-zw#ic1 za_SEeopVka&xU;hE28-7;Y|fY6v0Y?$d^WF+Or`*;rxj*iYl1V=?##00C5SRs7TW1 z@G*GDl7Nf_tsBUJK2ABii^ShGhc%lfTKuVqUt<_PXZvz2_TYIjwe<1_=tqL>ikyT0 z|4^zFW_3%SMbIOOKQn%`9e=!H%bPm`mxylJ@$`z@@4sQ)=ZaJj`Ge9{WQyvlUGLlIg3oP|g6~qsCo-oldV^&Eeb4EUx7bl$1Ce*i~o6u zeV~>2Hyykscm}&V&`z9xBsYvwx_)amy#gM@vAzG+544lDLAMvlYS8o)O8Dkx)JgWu zihhb-t>8AIt6De@NXWFWk1O)6zO=B>?Tnz_2JWQn)oijs!Fp)A|~vN7z=(yQoDC zWHgZ_K;p>PpR6DR+$sF!!_g;F!=RSOo&yzs#jh*T$00Rz5leppDYYSg;%ndSKK1qCh(^#Ci z3BT>%|CZ(4xfZxUzCS!%t+Gut@>pGX(}%|&8Z;&VC6)=R%ee09J9n+?9)>-l&!;Js zkHP*A@|;d2T~bip${~@R{s+no|FaZG(7}Fbk~&_|-AA7L!dj&3Vs!qiG*6gu5YjwN zQdK`-n}k3wlc@Iwi!v#2C}9oqne9OzrF`z^{{`VrL$ipSzc(TOJHjt7(BDSCNW;jm zRqKyVEP{A`m#~{v_ftd9_x-J`++NI(wNK(XZWf4e32Nj3yH zPZ6g9Z8%VC?XaRbaxnrB7Y|FHS@8vwnO)2Shy>gRZ7u^;4_a9=dXtfQsbPtaC&Psh z%*Ni(psC>ukj2EF)o)=mEimLIO?NWEoEGDvs<6u1ispax%Q86v>9qi84MI_ zL7y1EDtt8%#uHu;09)hMv8B&WQ4ZXJ5Lz{X?OJ}RnWi#xm$X;|BrH|VHDowmUfxOU z%r0U6`^&=uZ1hz`|Nn2leZqqZ3$FH4QGC5c{#xi;;BHL!Rar1|HL;-hKJ0kox|`?r9zGup!rd)Zm0Ykumvfa6A0^*!~(g z9af(3ZtLFicTw!mFONoZa<^GC$3TSrkF1znmnINkuRY((2i>Bn6#U}96`LM~3lD1W zl5Z$yyi(5UdI5$c1h--Xkb#5HfMKK~x+0Y$HGCZyu?^qGi4Vn|=qO$We8vg}s=bqr z@})NPma@$ZYqHu^egTL{9}w?2u};u@;E6r3upDe}{CvxCO~q=mj`@h2qA?>U_kX4weR&LtgMGOFSpJ1dE8#?7>khW zib6n^!VB#`exqUZyja~<-{oljp+GLzmymN6odq6L={5?|&R0sc1thB}oyL zwNbJw6=ThwUCE$q*~Y%4au-n}`&tIcR(8f#GVU_M*s=^s*$pBi48L^2R6MxGte|CG`p?1-ENKPaflX2`@qamZWOr2yip?Po z=Fvy;j3|0^!V#YLC?qd`3eJMX2Y7rN;)B1Gw#xf?B|+%#Bn@?RnaIlUxIhrp<(Q6; zjHr;f4+vxU$mG=IgaWsPW3H}4ub5K$I9}G_rLCQrNLI-`HCEL10}9i&4Lm84afbPP zg*kcoB__ja%>^}imrv`($Cm!Qf7i$UeD{;gL!D*Qe7R4X3tricTd13hS5_BV&Z+a2 zP`;e;TB%}7_opA64S;0Yczy71@(m4&7!XkZ+XV^a8I`&1HWxqgYz{a`FXIm&jL#Yl zhYRkJeW1u%$HQ9H3C>zngjvi=mHIeft;~ZHP0Y zZEm*rE&BKG8bA)*W(0RQgW`@eXxYZXU%c|~z3O|7nPsh)?*>gwN7pXs=A7X7m#D3x zP{P}YF6U;eeq>kQE(nvhpYS?!H|n%$`tn-iw$%~kxn=SVRmxNReS4-k11mnch)@n& zC6B_S>^7l5h$-A`;05_B)X9L<#1qp3ZUcWCI}E6)0{)i)LhZO^7r3K8|45~|U|CnV zgy9cZA??odOy(S1LH3w-=MoRoGi0b-^o4klzmW`7U7^p=R@8x(1uV&z7kTW`0|-V3 zh=qAGUiKBVLtU4MGpW7q4p$k0ys;JL9lA4Tz(o5H*nIXp#oleQbX?q~l$9(acddn7 z^)0+^Lw}feb)?>cZRi5^D^0ItedyY#agR3dvAm{hQO>vY79jz?pPx}zw}$KW2yzve zJkbWf6}b-RCkgIgGl4B;df^gf6gl)A0uP|i)40teJ@%XXF>C-HI|pGXYBZ4g+g}-; zf%p-A&b{OcUT{4K*6vw!Om`B06Fdg~RwP?e-#X$dkt;;-As0z=^#x+nw99?iMQLWUQyQSl$C&Ij%A&8>1+_W#)VG^@zGC!Xv#Gc7J&)h@U=CX` zYEyxUS-CNz1;oswo@T3^HvjtU*<+vC;&F#kt>!S7B@^Fzn@w)^9slG|{N~v8v1#zB zxnRc0%jXv3#@h*A(e1DTcXeK5-aR#(yMr@W7tq_;k=>X9UrS~$KDbLq$mCx@#73IH z-b4^w!F?Vh&wz?ed6L@k_%i#rrrB2_>oY@WhWR)3&$9gtsqz8ha{uifbWGxC48I6( z`bnnY8NNAWAFSG?L!$iZ-+U?HY$u2v3@A4cJCGs@LE)Fb?|hzxxxp1+q=H%6E?Ql; zj+s|q>@SOb$lA4Y@cgqI13NjxWpJLSK-MoYF=!K?6ZA4qc(eMGQNc)7olNO?t^M@F zx?X$#D%s1?g%;!2#T1*jXrEbJEEzx6Zo))>b3nzLQoOJ|(|i;RgbK^}<#`%P5EOC&5U2ut*xpD!w8T8pp!K-@ALmh; zDXrZbDdob9j#jfQih7Zw0N2it63`e)?n1c7CLT`2mNgheF7Tjj;}8cO64xLB7D2lA zDLyE<_g0oZW?0tgmQ~B1qv8MlKRSSSqe!f!;uNrV`Dkylu22f@Q|O5`Npb`~{tq6uk`X0qdr+JVT>d{pYx0u?>rQ zbz@$DX+(WfC-G2+pEE(*0Z^_Y8!IoB`r_=-P%d28Nejpuua9jw#$@7wk% zZ7(Vd?=FmRecjTlbj9OA8ay<2n=-*waW$-ugD&<2bagqKzpwEvv>!||Ys30hZSx=R z_PslkgZJ9d`7=KqQ`Sh$naHh3r&q2v2~m&dwv2vedKA?4i;4nUmHvGkb;vdV5ZBzv zg={zoh`c~{?jN0Jf}eikNr-9xD<$CJg*ehC!SpogB0?LZc1Hvvg5lrD8+Q-}#pog1 z!OzTpP&di!xcG$$TPEC6gKr^4TLRjhWn?Faa57kp1R1K7S}9VpkR_MxdNyI<={4KC zm^@9hg1o%Dp9%{Lg-S$|Wm<}Ti$!;J-|2qS{l?DJIBB^I{+uj~!CwWbU)+mQzsP$A z=m89+PKvYx>zzcv;AtUm7rZWe;OaBFq)dF$F zRehoo9&N#!Z%%G{KAcLS|50^ew1xRCQ{%lB%-HVK(e%)@WV6ip?)dnxh9=q@MlsV# zbARYoonPoFg=mvu^W;eLtUi|L9hwQ|SF#%7~mP&2!WJxo?Z{=H& zzh8TWqE(`>w=3eRw~F^#jd#Rgo!av=f4 zbI(E~)_V@z?j=yph(Nle7h$M&=TV73$Q=fN5-g*Y(Fzc9lk6%enpzUTalxy(l%>+@S7+>0mo6#cFhG`PTZ(0EBd19`(UK(t zLicW6JwGV+)$JelIAll z8~8hPmshu(wSh?Bk~6-0+|n%Fa-wtflLuYC>rW*uy}p}RmMh0F811&xmXB{A^b7vF zU@zF6?3IPQQ^dif3Ryyead!oj0XrmRt7*y&FcoR?vf7>U@cfNKVzVb6xVpZX}Bn{<(XuJcXEK3j`P$dtNn4rA@q%skICvw3E?QcZM!&}8I zl@oAe(HH_yWu(#;7{?n0PRk#EMv8O{L&YDkJ(@*VRx}Zh)u`>PyO2Y$LX<~GPderk zr0{;p-n&?K8-w33B}n*(Blpes4=Y512|DZ}EqG%91!mVRDT?@@{_gJIF?Dry_O)S2 z0;G#Zl)%mn*#WX2q=MVY7vf=%g`Fj9=$O0(rS>n-dBWs!SE{TiS1_96W#8h<2le8I z0-hcV`X%8j*7xfoCl~4fw=N_R-j5vKI&1s0io5scUH(^9ozG!ozsT419}Z4CrR)3d zvEA(4dy{m^Hr=6Djq$@l*~7{-}mlXb2R{gLvE%E7Nsk-lcTXt87wtUg<^jzc_9UBr;iOIqjqD#7OMb7y(msUgI zmO|(RJd2r2?9-7VogNZUIR*#ULh9Nam>$U*4Jp#-e>u(eH;}P(>z_A3)eXf-%aSfu z8J{r?-~M8kUEfm_HTTtGUEA=t31xL496}xcq_7lObX{Z7As96vN;snsj|Z~ zhF*C>Y@+GD%L#&y1@=2^LrPbgk(|*-9yP$Qp#HMQrcVRl@}BC-4W=XM7>D!N9)M*H zL{^b!B9n(P(8{G=(=WTj0b%xIY$GM)D_Zp<7ocZZ+H#xLQy!^Xp=q`pL>^<$@d1a%FZ`De;gr>UxBj3m|V4Xm$2e+cThn zc&L7^XJwp4*AX6RwVpd=GTBiRSTN@hcx6L$5h(s(KC5f5N`zf5*kTp67f)VY6!JpI z5gEv8h~bU3p&|7<|3QX4ZNmi@>=k+MC)Wq4Hj)|l4bn*)w~mss8faCG%DJ=fy@}q; zQ^X+ATU}++Y5D47>|>qG?N;`F8BLY@X2_ zxhF#|ye4qKkMVi5!?VjVpS}8VVj^KwABPGgoSwvCmq+w-OYI}?6#(rdMUo-$C?Bw0 zPb9YK^7T2|+S=lN`ffZ`Xw%&xP$NpJ#3w3RLnU;b_+-b&$13%?P}YIVVupOHySeGC zC>0_ZhE9q>uXg|<>8bAOs?$R!MhypWrZU!L z@@}_mptU8I3VD@^td)E`^0u%IHB~UwBY1!B2zHJ3s+e`trdLjdDo;^^*YOrZxndCY z_3Jo8{s^v+P{<04*Prm(+K!PT;WSpwr#Oy>#zHF_J1lA1F0Fz5NYL`sX-(?=(25Mh zGqck)+g#O<3*V#;fsfLIxhlfUN1r$aTRIkBt`57kk|-GX#_&w75~&i(sDxk>>49qe z8;vtNYWmtJcj2Z7`-q3Y1IDdL=sU=PU1q`5#~Tt{wyrijhbE{~%v=tX%Rz4)n5YS_ zh|jx>ICtpsSGfmnvPHQL(F$#@I|Nd=YzG^tZO^5Zz4o{7#Cq2x8o@{5;!&`u1j){l z1qDjbm%3D=I;YMS^-tM_iZ@7`*i_96fj)tARN_~VQ91rg;D~@+(4wNSVxe2_VVNL3 zrP8~WP8V@}_4D{7JW5Bn@mfB5m>{gH|X@s&!W&Lo}>^EAN|9yCs ztk4$;i#?k~gBzbX(VWGB^6Q$TGPKYGXCA!0$v#pE+dB|v{Y);OyUHI;@^MZZpW7ke z#A|EON#?+NJ`_~SZXibj0^M)GMCpMKcCoXdwp+mlB(9m|%7<{cq1S?Gb++s`<9SAP z4cPYV#HI7w23SYlQ{8?nQ#aqbz?hC&eDqlWS)k?~L^1J+PD{{`%K* zLmtlIpSQP|Z2Fd2Y?Ka|kgt_49%<9O-leGIv8KCJCSNq!r&WfDz_+~j}w;v#fu!5E!fXgU3G-^g2~*5`fTu{n_h1S(_J4P+lJTB zw5wOl<0r?0*UOAFZ=E3j!whrCDrJTp!WB?9RyVc?+i>!s4sk(0a5HUM-tdACjW0Dv zS;3uXRr49EyH*=t^e2EZ6RLdb_0+Ms`ac@Z=j_FtOFn0(ex*rbte-Ezs2t{@c1Ub4 zyPeRSi9hB+Zzj)3q5Vrmo@CVr<%>K~Yn_q8oGbCmH9Qgnqbdyf`S|#Ft?!blInoC{ zlChefA3b_x>_&%A9;DWuaWt;7IClEUEg_5tHBbnheAZD2mwp#}R?`d`h~X<&j!9lD z=Q(`X)D;>^rgcFd6flL0C87h`yVpqHJ_%ah#F`V=UUf<3CiJC%_(tTB>xtT75|6Gf z>^L5FFI@0P@)*X?XWjWF;UU&o;>oR-iDGy|nUdz@*0EdYyyQOU4P&_#M|ID?Jyp#PKCrGQAaz>w1$}~MGlV@ z8*gS&VN2-Sfn8q6-LQZ~&#*ptb-^3+6W(XM{}oC+u<^cWo3dWy1*VfW4L-EOh`39&{S(0M?DX7)iQ`OF&`Pj4b{!q>PLyK01>BQ#9Oy!7RBtUUcNn+ zH>vLtt?oHtk6^0{Ml$3FM7eoFmPz1)1#vjEymU)3j3iB}W}A51S}aOb(G*1+inQF>ag-6quDj5-N z*}m-SW3w~pCYC##t4>DAf!nfy%B{JICrIqsv&VUg7EW9n`EEbea9c;Zq^+8m^S?wh zlqzV%+2s&usQw=yI#7Hte?CoZ)(Rvc9GD`AKuyqVx|n1*-`S1S;Zu`ey8yZZ0AfQj z+!Nw+FG`aMW_gDKy36IKf11y|wjP{MHWrf=BBfkL1%|Pe4&ByWZ8PL_?Yq~o`yMxI z$a_hP!pZNmQQgaV&QeT++5a^D+>c7tLcedP0>5nwf4%fV`22;G+DFE@tsN)-e6U;p z^j=a~l=7~gsBS&*M|w}Z`Eplxv6H~0A!fYXp9$qc1RV`21$Y-PdOd_v@=sn><^kVg zUepUi3ZKcnO(n6V56W#^5I~!sZz+B%zE z?BTOI&_vg-KkB+y61jkX!psZczc7GqU* z3McdlS)}YkReuP;h&w(fh~$bp&YW%*Wz^=}qwArQ-B4MHt?u-xbIYxQtwEoijW8vo z;97iKjgyl)WgcC_snQ0Np+9l$4EPCggLuz}iGe5D7LyH{ZQSAgd1G>t`(#by_>NCr z#7JnRZ1c<_} zg6O2H*|~Q5A>5`vOtH?gDjIHTq6?4H76n^lmWaYbE?DR%vFd~iei>&m=sr2HGqq@| zeaLKu5hJWExbUQpafN(7?AUi0K8yQei|LAdk=u z-B}G2lm2>p#=-K}hG&TCt5>JEP!oG0l{QY>RrceA%dWvd#BG%ROCICCy6|x`xJKm3 zw$b`8V7X49BeL{!mE`2)PUTM0qH_Ymvs=honveMJ`uO;Kq~4`ji9h*{QMUJ{+gT-i zq22}g(e3*K_Ku&P{d_`fdkzk=^gf}O*efW;KzlTsUn99%%O&^<;b2C}^Q@;0=zH|2 zng+O;UF4Y$poOPxxJ~hBwXMvDYJz37>k|i=gC}nIycc)7Hc%#ynaOL^+nP#t==*;> zG11P{+i!{^BX*Es4rJg(n0)KCE4z&vMnHq%tV;~UP_lEALr&iiXenk01&V|JSbD7| zRu$Afia+$UUa@?s7hC=s9u~X2vVSA^WuoG#PcUCR00VYZGn^;7+CS}wVj|278uq}1 zKYBE#p|5wKk)~9-#DlYj&U_ExmME7#>;8JMXceE9Y<5gJ+-P*X)Oaa)JWoUOi@|xZ z!z6`s8^Z^M_DpYn!EHkcGOMww+t!5mL>;@0#VUUvGN0T-tT7(`(-duA`Qdo#F0}gG z+5U(AdqZyXr0ljiK7ahtP}!{uuQYKNP1}-*BZTIrS1XB|PYzm^$sF1-X+Mx*)?g@2GS2DBb1 z4y5my3?B|=8BK2<7LSRm`C1L*7{1d6D%UvhR%a%C@t-F(SVZlxcR9iS>w_&+r*0tt z9c>?HClOP6b?Q(?;~1zETF5i8VdoSiT8bkE16#ZJczjGAat)=+Z9zR7bVf=kOt9X8 z>?6iFS3=a38cpdGR2j=)DEX!(Js@zC@SvwcqkqT6E50iA^2Q)RldOD2SQApT!A4iE zDPR_n{^9iw?>sSSOK1dyo_gN)s1|4f4ZchTdrxZqi^!6ncUz982eabS>HHHT`%X=-2#K%odS zx@1(9-CCRP{!if5ddODK?D~B1L*n8-PiVMOBrMewd*K-!mr^0uMm~0~B&$BnQaQwt0rXC(q8dfc*GuQJyw5+U3UT053;*;(zYwH zBZjg4?CMCKmy1_x1GzB+nx82~Tfz!No}>yvu@37esv4|wD84Y(P?O5)`4#x& zpVAn94L*ts=n_$wwQO30jR$=Vz*1<~Ig6vH`T8SxmlsRC=rtqukqX*IQI}qr6GGi+ zR=cljH#Ro%0_f_kUV~BN8kmxp?OOsrkgb%@oh$w_F)tL`$yAEB_EB)cL}Cb_ooMI1ZZ?EU&*3`EtHQ zQD27Tv8mnxVD>IBacp~|j}i#PpA9lzK;#=?anM#FVbON2Wu?8*765NBagAH36_c`6 z3p)*@q8IzfBk;KG*i1Z)g7+|)J6}SiGKOA>&>)9~3+JNUqc`uDdG&OVAtg30iAD3` zrD0Hy(&SNNOdhm+q}7pDs`BqvtxaLes}m-7pmaZkoq(RulP55)F-wDBiuzWQC)#^! zG3lEdCT3-VKz>GSD6)00(k)q0Hu`6K$0mwXhjLquZ`e~te_^}c)vuKn{^_-rGklZ- zzLT+ksE#EpD*blp^XVVT0oSaD|LnHQD&KrPIf~yf*LR{{Ysg?1SO-Xzl2)A=pV;@3 z$#iI)s9f{cSIY4xTp#B2D@t1s!ipAj z6X=5)5l3ZQ@I_esjFU9{(kQe`$y8_yR#IZ$V|fRTpE!nFvl_oaK? zXTJ8%GthHT1T&`%3_5y*Mo;Vmm>A<3K^!*AHFPQHoyHOU(O&$111ra8)JVhG5Cwwc zht9QQN8oF`aMm8{x7;BVTcy>#B>WaCXwP=i3QaTu%kdIy&y^&+64Z(|Q~6=jEVnGK zV=?}K8fOIqZ%|tH3A3E$yMwiVYJHt&M`To#(wDo9ap{SSWJ0O|!~~WK;q~eu%x9b z&pgA4!}@1pT|DUKR7M;m5R-|ze^OL!Ob2VlCqox1PD_<^!x_B;K@21z;y6^S8mYbb z()TL^)%fCNLsk_WQ|U>~Jq>VL`OeQ*b3xOOtAEwkWxfl@k8Rn4sy<|Z6kzL{=gOH| z4=(($KkBZ~L;hVpE#BqDi7pb&Lg>qD9fnzkL6q6)=zN$hzLS2%jyhhnIM>s>vCNmc zF&H>d+kME){Tx+zpmwjM$Y5X^VN;#j(NZir@SY6F+vU)$$beKb(-u5}wK@Aq(8*iBQBbxO_kUTI(`p{l&+};$*$4s(Z zSmZ=w00h^zQ@OLE9M7XmU_pJQGB_SrtsRyk4a35sO1lfN%U+n_qx`?_ANxV8BJgXj zzDukv02UBfyIElvepEu~VNsk^N6Yt8Z2@g1+~3tYV}`4TeEjrEn?z{g2rWX0Dz#Cr zg}ne0g*~wSSFh?hi8!j_tcS^QR_ZQg%e@?haPEo3qQq)e^>1bvgaFmzyZ>dEfQ7JQ zJalKRAO>HdkO1Fog=pLRnNO|txzTa?`K0GR0X!Pt!)@m~c^bEQzKDf2B=lnw3&g<_ zKe|{N-2J{%>Cg}%Rc`BS{P>??veN)8R#oEc^J=ymj~J~psk99rv>=c& zRh@5J46gP+>BT*Ng|_jG5H85@GHp&Ubp#YR%QN~2_IcPVkqeR~zgwMHal$P&$<|}D4UwU^|{7yHX`qaRu|JEPn{D512`_pAmeA35t_v!ZRLJd>rRl=Hl#*t+mAebl}qGS&VM?t z@W)KP%su=3qp_*bcWV1%y>cXm?!|hW``@j#`B`oqGkO#gubDJVdy2U1<5Io&{VBnY z*xmxiQRImj*=ZLhS<|na@RB2YIqQ`O2YS>?z*)R@-w8(e>@9==VF$Q=M=rp><#HtzIrRrYi+qh63T5aJV_Ts#)a^Klu`d+f)(G z3f&uSIPPl&Av1=_to!{4g`6S@R9pAM6KeJ+JNHV}a(dPgLMq#Bs`&>qptC zli#|)%G&e|GG6kG7F}jfhhz&_{oY4h7oJFci7PEj2i z>W0ANXn}=Wmh9Q7Qq?HepZJ!S5ntX-zB&K^S2%l>v28fq=33<_it6NTcO#zWQ=BG` zYs5tR3tGPp3uZ_$>^4&QCO>p3Bs>}0@J#9UHsRTEZqm9<==IG!uL#myoS8B zc5DQd;g64k@jBDtTxp>FKHauB2a|qtN82q28PB;sQPL0#&$r8f}fJ43G4{3Fk>z+@Z*LtD-Qk=@dopCWhL z7uru42+lsMW@Vjw07wnVv&5OdSgHbHgem(-J7h_7!`dM@2#Q>&;Tg@wbL{7CLB)Nd za_S}mbhRM zFX52)%(mdw!wCdjx%>M&ag&N_rJfiN3`QJK6GUxy@KkpYp@tBa%YNknd`p zsTWKI=Iz2B0Vn9;0MeRR;y4_efx+76VC^rn7fF_kYpj+M9;dgX-fGb{zC%z^;YQbk z=BnI%wvw|zAM5Dyy;A_yDM)owkRUz&A(v7z1nF-rUJ=@&I4>%>0}B4qb!kF}b_@d9 zf23RlCa+^EfVZt~XTioX)072L8;bK!p;zZ+cC`mw-Wt>w{YX$OSS#qo)_$#nstX3Q zhq@Unx4pKBx~S0B_M)_wP!Ha+-^m*Yf5?*X!8x3Q-t6Tky`R;|e|Dg^6Jad@UH zwAJ6my2f<@%K)SUTl8isRK>48BPv4&#v-24`eq*b6RDu%Ui<%Bbic+5Ax35FF522> z#WLVh%3R)G@;l=3Y{(=-V*ctb6rWUgxcRX-mZjVgccXZx;2Nu%DQwI!-1w{D$q?(n zD|FGIN>#gr!s}WA8{gD@UpETX{^W$XH+>KX+{q`wTH;@C)36(Qvg||;oF!G>NgF3V z;u3$|JH4sS_huOJr>a0d-4|`SruiU zy(hn+1tk*9rVi~cttatRp$?*!%8Q_!MO&3!P3jwu!B5ு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�o~o*j8y01BFOz|SCV(9otv4s`r3@* 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

Ut|teMwh~C^9{7dE%!G^jR6Sg`o61wp+juNQFY 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 Ugw94=49Q5LDCz0hx!5cH4L;$z$N&HU literal 0 HcmV?d00001 diff --git a/docs/images/taxprofiler_tube.png b/docs/images/taxprofiler_tube.png new file mode 100644 index 0000000000000000000000000000000000000000..0d0a4aa2d240c993185e43e075e0988943b93b70 GIT binary patch literal 663369 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%0A0*kr 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

(yGPZTH?ZLWq(fzBn`W?A6(Jlct%J@va~b#R-mp zL=~Fmg^kkfuE3VwNJ%esfw2<8n>-G8kL)QSyUt<5vLXe|a6O7@>$%R5{Hp;$V3UuZ z&lVB8?}+)J_-Ufl=5m3BCn@O6rwLSfZh5&l0IP@H_MR z4o$*Xz^{h|j50Lp!C~T%t;Mp{TPxu9X2K)MMI0!Pf{ypb6RADn+76vJ<;J1ND4Us8 zCC04!OwHY$%_SK`Gh{{zZohlDJ!fvmcU1zi?!xJ`Seg*f^!prW3q}n5#`00*al(|Gjp_4~0cOVVzOwiz$VN6He$FOd`X$cduy(qH~QJ4|AC zgD@f2$--)P>+zztb=C7wxpdpx2D07sLYAtBY}yO^$BRApj#>QCuj+VY${=^|1}WA% zuTfWTJ~YnW+_Zat(ukFn3SUBawXbntT1>ShRqtLfZ+^-b(B;2|Oz&)o_5ZDOJ4l9pP^zKE1tjTyj{`Ll6R~7CTjb=F`;msLuL4RrFcncoUH41 z8c|V#wbnzlZ~BpJdWJRHIYXnY2>I7O?>j|0VIDT>^PWaH?rbf4WTQeqbz^>}Bzc#b zz#*zwbNt--|Gm`}5)nb5abEH3I?q_7rC=H#zxW}UPp35N;#eaMoOO!(Ewel}I}-VL z4zzk}o`$KVKR!u4uUNuv3`_QHg%OdM)=++TypP!15IPj3h(v$y>u(kRS+;$ZaJmCG z@#K@4Mc!xLJT^Uwa8i==9|F$z5MMlXXSh40(#52W6Bi*&aG7M~&*K3}7*tp-ocw4c z?3(&RM%u*u`zTJhxQzC*n7BD7j2wCyFO?W4At^>wBs^vcQ10GguHqBhVZtE7QYZ7NMB46D5a!l7~WoD45N5w8JCahDKNt)Gu6IK?y zD@u`oG}Kl&WG9d^1=Y9}nXXjgls($!xa+j*XeO~hj6f2W1-%}hTq|((cl?+l5GmNH zb28HZ=)S|XlPaFYh0VEJV!EpcJ!TwoyLtk)vB~P;M(*yI+7evA8k(jlW4k|Gtzebn zkv7X~Mguc4@;H&;S+bLTm2k$`U%Bnhu0L^$pOu??!>|Ulh74e~PY8fyuaQ-~`}3-@ z9Z8Iu^EM-W;t*JW%s`sF>29jI>H`<-fgLxw7zKg*c(--l=b==J)DkMGh2hfoS2()H z_}p6X)zm2_Gd>kQZz&5+(Cw39IS$f*-|?eA78Any;=6NeW#-Gq%Oeu{Ar%}< ziIMaiv`iTux)H2 zE4Sa7AQ9X9(91E&AU-A2^QO3%hH2lF+;=BNx!@@ic!En}nBc+JtLDqgIns$;>cKZM z-RcZt4cdki2A6V(?LuBeIAp`fe71 z+Nl6yT7X{=isWk64t$1{7a;*s?3*|+b;Mg7jP&=<3ivxVKaUH2iyZ{Xz2}2VO(sj! zvgtFG-KhjqId(rUF|n@>=nRcvGPiEM{=^*e&t!tzFJkUfPN8YgAF+)#N(pwn;%L7} zE!L5kuA7aQGIOUuyl&+n7)CM3%aGeI;`~E84K7KERtz~f z_5=!F#$l&QlTSJgkBPDwxw{DLwT#CWR^@m&RGt1NI@p?ils+en4&@Ulnk+)@eVkIR z;fU+85j{s$*Eba-)h-^$VdT0BUP;~r!Knlr7w^GaYZeZirp`WQ(V?>$d64fNU4}1 zPM>@Qv-Ljtz{SLve z#%bGftN9FC4+pT?wux84bvqCtGrbQS79vcFgw$ImvhOGJ*UE784;-WYWm0%LV%Qa` zvUyXgc*_=^5%Ifc!0cHqYkZ&lJ5@+8ca%#U5(v+?&y7Qy=>2uJ_#sa+xnUr%wpZ1% z{3wq-62x9}IN2HCdm6N>N#Xi#)2XtxsHxv2z6;DD&*4@$dNTB6p0d=Ii~zPIxx>2B z9UrNWQ7zc+Y7Vrs=L;Ds-8Kcz<6;CcCVQIU768|-CLgtN(yuvgmz375dJtklc4-9lz(;QgMpC793VtlxqZF&s_vzO9sTiPF!}tN z_+jKm^R|tER|TwesVOziZZ7f0-Y4H+3%kYYOWrx6;rbLS!;pQa_br%nR4bK@^hGgC z$tMJZRjntDdC}q~^OG!A3cK@VCR&PpFJVImHzrC;!-zdq8h%54$5TFm|M4_Nt80>> z4qk~jwyvv<+;WULTA0aJw*818scqdmHZV{w+G6zGaeLwrb6MVydo}b?O_=xaQIICX zx#YeK6GPMFDey(dL!zbjuH@PwR8lY!@RHsg_d0K5b9%7j*H+p899+|`B0_aK`{WIk zVlSgM3y~WGF+{&~R{Z9So^)|?Y9j+if*V)HA+gf`Tp5Y0sri$g#)pyi_G1tSdroovaq^e<*M;+B@emB zJhXzA?X(9QGweAcB}m!-_E4c9$RB?HB;n76;{bJQcE8kz$%7XeC4rCMp0p>#Xjh(KI|9^ubl+2UBn7BAEInpe3sF4?^&d`U&6ptwg$=(ykdfUo`2(~yq}b^E{|B+Fu;!7@y;2Ui41F2Z$$=#-3aVW6iM@Y>!$@@p}O(hG*1 z2f}%|eZIL_%If&+zRG0B?n!eDu!QMjJp|T|%W~-ArFX>16Z;71w#tW&V0S#+-NyyO zGJhoZCl2_EP)@j4N^zKn$6eA6EsoA=@r8S6E{y=*Y$k*lp)In#l+_;^YpBd@fMXPv zioTc>04H^7*{nG(8nSC=HxCB~2WF6h7mdfmAW#Pw<3;@X;do0Aes|RxO56rde+~I( zwh-K?%$|t7C8^~&M^9q-AQo+^7$n+VxXwn4=NDV;L66l1In3LH>luBU)3qYD`bel@ zA4*lnNt1v+iQ_hsPw)u1JApY3n^i)zAdD=$ti@{N&DV#$hnb2pdEL!*n-`*70r$1J z#u#C4#YjFSxILgSMNCXgAUOaq(2z*u^SeisBnGk;UU30bRV$R8mIndJD;xD?D1gD- zv`kb}H@yfMc=Vy*-20pkVzv$x zK~Fc_=H*q2zh}wJQrPvni&-5cE~OPor^P*KL<^+x(di{tmfjt!E#|eA|iNvMUuw3w(` z^t4O65#1h`v2ThS*m2>En7T9AsTY30QX(dgp{k;O+9N3O8#^Zqe0221#$IP97;NHK)0W#i$^ z!A5Nn+isUh6>NmdFGCG{Bc#u^3KkU?Pxvy}))n;_#v&kA01fXxJArDqcr2;bXuU|8gpCKk4;ju&KBK) z(-+_-zZ*0$v?5O&^mhTWgc*KktpSK6&lf!x-H{50Y!3`s^x}g_uh#HaV#JWEq>7Q9 z+~nBjGa;nro&;ikDgh7S+TIf)cD%7Q3n}ChlqKfFU<@rc z6!+cR?AwQj6O49Ak$n)yB|d0@q&t*op{Sm2=YZYp|( z!h)tu{ZEG9?5C6sH7hbPPncwucivTPL;I(LRfo@J*yiN}V6agryYqKsNE_`$X(M@N z9o!q|tCyE08uaV8W7b%`trhsZ_{a-!CeDiM*#{hhkq{fmOD+4T7(+$?P?fFK$uip8 z?CHZ!#xDbSSSd&IX#c5H7*V>qx;o@_gkI>?6#uFc5FL#ifBFAx!__R7uU z!vw2fq|2f%q;@4GlX@eYT5y_idz*QCT;k1oa2y&=YwJI^DehyJ-XpgJ1Raoh2bBpO z73VpgmH>9R89^jnIKqhAE07SS5mm%&E~Bev3=hV zOC6Jbj8n0(WJSXPLzp9enZ!{UDrpsIn;G2x0PHnZsKYj7q$k9rrKKg0S%+blC&vFi z8&p>-y}JbD-Q+0%D^{-j9DlqXEtWV>p7aaN*Q1S3A$<$)WfIj!ULmeH!Aiq`G>s+{ zKN6QR8ZxYYIN_r83QRa8o;}Sf&ED+f@dm;d&2R%2*FvNMApv;17hp0pOsR^wrCuWMhR+VWR%ab-GM>TZAFPxk6m${hsYCNFbv(yjcNiB$5nyP1$U4|maBa$MH|xK& z$+0x$RxHE-l^Z{G4xaaiUOMGP_qqn2#i@J8&pCUvp}Eq36QIuRkXbQ*kln07n5xGsW`c)6S?B0>}7xB|~LVcvTp34V2H( z;-0UR1Uq-Kr#F!Eo|pN9)JAU$TPw^^0D(3^IoIP1`Ko$BTGfIsR8P68O%0H#fwa`k_0-b#o$(#J}ECl}hq?XTS7`S0FW8&K6l zmb~|#9ZQsl8HV%{OE}rkz1Q1wIA-q+%-Ld7rw`4zikqk6IFO0E;6&)%Bz|Hh3GB_R zfr|`!`9i$UR<&TZ)uf^3W7cY`6N1j|0ytVW^~aFyczw9oM3k`rctJ+j&ktm4A(f^2 zb`A{ATlc+2%Z86G;f=z>n&q zm(I#03g3DExTw0hv$yw_OpHL^>MN6}QeyjYR$fJTEJ+1TSq|82t1!m5uzTc*A5g_* z=)w3D_WPD2NrFtekQRrx^ab*KGBJ{$!>WJ8t+D)YOuEoooZ1Awvw$7kd+mjCBtC%< z)I{I2jgaJ0zED0(daB})tk=_vY2aOMcBvMGnPmhmJ)3Z-cBJIzUjTknJ&sMWeQ+>N z+Yrl!Al}dD1QDao2W7|E2p*v8)&tiY193SLAx=jK`;c^A-@d#%>AlMV6)Fvwo*o4Q zsw=1Dv#+YFs{{H`Uq6IQ>}ov-qzF1-AR;~o)olSBX}U|U_u)@IM_YS)dn*Di?(01V zV6W%0Q(De0yV&e7F_wxwubCHAz_1^FLHY1y<>buA;;9dyT4w=$1w0Cc63+=kVi=kO zp;?pc)LOP1y?CB`3r7ugq9J#wy^t)@=XJkeD2X_KAe4)L?1Nr8(C{5Vr!6%nCntNk zyR*{-2!Ji{L`Zj`8I&0rBx@1M^?+>!FXF*SfXSp(c^=T65LJc8IVL`pg!BmXc`P?I zi14dQ0W0?|!pYwLOeI|hoT`AJ4~K4*Va|F@|1x#(XP7}%YOF*>%0Y$HbO0Bb2xc1_ zp6Rbl+0|iagR2GzOqA5XeoVgELk}~*P4teWiBH?&)eRr4dNp=0Te+C7^JZ&hQ&P&X z;^tR&h;Qn_D#gMq=P;XQU_4GjZMg{wAYu8&wayl~oa$*NK-eOG?eWSfO@Ar4qR4@le>ATF^umcWTU% zDk6Ol%(9z5U_*&RfAwYNgN8~;0WUV2vuxoL(I{d5oJF;zE$M9*I04!8M|Y9CDqE^y zXb|Xu#*k3xyP(wd4jp5>6(QDR3N*p8&kw0dy~e?&iJohm4RN#vjyG)~=O}1A=&0oG z?vAucLX%t)819f5q|)=_(<&!?L`iwa2}Ab7)!M;g_58dE9w95cnee=bz!}SSygFuZ zL#@4E%Q5+`P>ymM|NKRqiM3~esd2&hTa$nXgts$ymoK}-g1@NV_{8swO@Ow`Nm2uU zi<}hcd9Gi-yq;Z^6C`y(2pvIexlyptQgf1_dthJy;p-70@o=DL*t+8&x$-9-$SX); z%-PZ!_BaA6OkA^m24wRh2xm=GzXd*&XYg52S5NfVPA7PKT#VigNbYd_fw&4<&OihW z-!zmQW&%jq+9TYo(G6xRF7ca7hWc&xgN3igmd^+ihz|$@^tfLS;F{=hF>3jAFXE)g z1eG-CYf^MT7-XVDj_SpOm zCBXiRNH@^l#*~94Kl>c0hmjNi0lTIQq1sC5VV7Xiam3|vmK~r(N}K*Mn=uqST0*ZM z>fv~Ww0<)5h1ZVfqtvX>X~ob)e3-s~1bI-M@TtYgWA`gAXutVXj&0>q&7fn4l0l3y zm_7p3n+)!qSvKkiZa@6DZi3Jl+AkrS0jaSIr0y3V0~d}!cH1o8T>ox^)}2hNQ11;i zrmGf5l?SF^GVEVd;AG%LF$I4WGlbnph#OqNkUnRj-P<0xB?-?HmUEbDt>`mD^AYzI zWc=R8q+=htD(Aq;ZRBi0OG$-LZ3XZl2Ep4P)-_r!ycS4m@d#H0xbkudzywro%Eye? z$H7S|1BXx_cdYj}1hb>WnnzF@(%wHcZk|``>*}jd zinzo1O3$GWEoA2i=0V%KiCO3xI3^FLN)jH1Gu5)h47=Lgb`mHke))#XFCCPl;=6J3 z@nLe0_fC&;Fq4S&E!(p32=Iq#&z{!X0r#;{1sE7}kaOrj)4=s$J3G4;kVK7wUZ!$} z_I;mZ|()b!Ft`FG92+s z`4qhFCa6cZPcI=xpIs$EzvkKyaA(#CkZVNpdyG=Y)9=A@UYtzy_CokI!?)k+N`8HN zpbQvJ0YUpvc3-;w`u6sbuUvVeG=kiwQ1n72v2ccO+HyN6#ShHwL*16qB)J&l){m&b zI%2IYl4HxqX+RU z3#W0+f(ruNz;H^!f#a86w;2NqIUd$e97_9!qO1pY`=LSc7KC-TxbtZKbx5kuhP4_8 z{S@yZclfz!b7A>Tms5WO{9gF1W#~x}r38lOgJ0DIDpIGe?R3-^6UX88`kotK#Z2te zL|=7MGf2*@S3v?tK44J8j+3m;$Jpj6a~X|RFi3M z5jAAI$&z>uEI@Yn&v1x;2lC<ul$Sk-*os*bb5^q99gmHl+gOPv;rx}5z}*XbJdL{ zwme^&yXsvfJ#7kAQBoL|dOanSt+GYG_$NxH<>xvx>eKAePmKXa=fo-Rbw%kkpHFT^ zR_>G=#EJu9IBU^!VmmejY1;_vZdJ#>ZX0xG>p#ch@pe00Z}7T?53$w)cG?U zardvJ*ED0lt_h^S_+NeWKA-0A05`Hd;IgV*Y;xWlePhP596A+?o~$~XciT9Tze;M! zxXTDCbGXsh%mgigtd38G%-{~YVJI)r87#;POdhRR}7%e&Gf*dJX#4WrfI!XrKGPmK=hoR^jXK!b(yb$`U(EgP_KcRfyik4YnB+?95eAX$MhpLZaDJvhVd~v@ zFh7qSb&22FZFAr>KZFtq(+)s>;A5qG*^oLP%@bOeN)r&^nqs*j| z#SN)4EM{T=2XT;-SC#LTrmdZwczPG0r-X~4^MMP~onarpv)i_e{P1G}L+#{nN_7w0iz$;RRRUz}$*tiq)TD z4!41I&iJ;YB9FdOSYv)ZC;S(-T&&FfCh22AO4Zcu*5lch7R?2bleR0R(5z<$9Z*9d zuPy?HXa$|=1#PA;0utRbV}Eb!IA^}FL(jml{NlLhy__Bdc|M#zU7;+!vl8drZ(&tc zytlhG3C1_){$D-|#y{gol084pR}c@fZZc%ejf|2^%aT5LFJ<94>#nHnosYz90>Ryv zW7TWb*S5&D`&o+T7UJ0^e{!s91{J+DimZowNuWxWV1Q zxHmQ)ENt3fDJ~gI3>_)&xpX!|UmP$>; zr}+54g0$Svkx@~bqa)J!l#uiY(3+M&Uyyuu4sBx&!TvF7l@WEO9lTyQ|&q#*M< z@)=X8AqqbcYNM@rfjKJ27~|)p#iR3iqKCt_GdOjM)22*XE3z#O;ZQ+V&E46PXnaZ>9cuIVx2idEr|^3C;DF)9MX}py3VizSC>*1td!8%g*J^5+GcS#xq`M-Z zi7saDw0{$z3K>6} z3ojQ8jcaB4&r#V5Qy^?fY4)j2WMM`@Hv}%X(dS2dmZij{G2>wNwdDrCA94^*TBH4o*+{TceH7^+Ey?F7WXJ;@Aex}d9 z1LCU=Ie;nvPtpRa2)-sL&w!uZpj*b_5sc2iwmSTLfk>bGwc4ebOrlDIc#wG{2e;Fa zE4UQr+s5fNyn4mijQ|ve6>KlxG7T|axs$Mf#VN*b07elyUkSUrC*pxJFER6}? ze(Uq*%^M;#CDePa4@Jh>mUH4EPb#?k$=|8j0n%MFp!cD1kh(j>2QvUHfwZ!T#_0h^ zIJbNzv!qd1Q#0HJ4jlr~7DBI_Imjclq@Y6u?tc9H2#eGubbEh)jBEhSI1s6VI&>fW z-~tdJOieJ_nbAgghoP)pU0ra74GO?Im_tz0+?k;+XggTi*#%nchMuckm5}X{hZeme z2kh{YNE{x)qeF@)Lv5b?&-PHBKh0;Vobi5^V%FhBeXtCb^mSphK~EI33&uzUMK^?Y zg%3-iB(K?UG(4u|xuuHiX&}%^2rF|6f|S;E-2{N1fXTGMBfEuPs+AQ4I}q$q19)W$JF-Ty*lL7!))b? z08n~E-)_|~nF{E{OJlX>pnia~TrQ{bdve0+sxZ4vy+HbdW|^b`DFe60gJh=47e^l> zeE=}KxkZ-NAZ*QlvFewp=>Kd{iJ}rs=PKArx!_A+94W!O7C@(mOFwF(}-`VNUmh`xj+9g_9}N@y9h z&K9;vZ4rU)yHI12Cjo@bWrB*Azz4tMi|v=(=ZmzVrkEGVEDC_%_5glI4+7;dB-%Hq z2Oh|OOq)xlBd5c+*@?(4uCPMMP%98*jvyFLuw6LU7dM0h>W`L{MOrYuxcvue`Mq{P zm=Ke5)x0`aO;gkNS)#`7`4!jtD1=R%TfI4h@F8_z2uMlZI*1&UHauw@{|dm}UoZ#E z0RbA4U!qRITm7~s$k!@$_teE09!*z>DNv{lYR|H3jp}w_wW0whL<}sty*r_@vf!nM z1Ms?@bQ4ogdv2-lYzE(nwTli@V5st&K$ary+9%|)P~yo)o_+3P=aG9;zSmYX>Z8bt z$Xg4#_~mbXSRPrqj8`pCuYz3hXHuQdaAs8w#wuKaiSoiur5Kn3J?HK9EH3D#kO&&` zbBfa|W{-viv6$YtSW+~`xFS+?G?1>6@K~s7WBYnwtdyr4;16-5AN*X@3+mnBL>D+t zx5LeNkh+ILd=up99QIy&kV!CuL6W~}MXe@?DHZ{{KK^}TmI*Nc)fr(}V71Z-q>M2! zgPuklfMa=1bI`sg0K8K;;83BCn^cd71Zp2~PAq;v4H+hWxpfB*K| z|6XvMd9c!0>D@S!8T~7#;G_v|ak6~kiV9hBJ;hwWA+bHx&OM>avI}sU(`O}eXCNu^Mk${JLY8-+)i~;kK{9#QQTMB3htB)d6Qek4PkrlmLun1^y~V+$q!l6z7+(gP`(Z z(%%h(j7Ijh0I+XeneJdpU|?p>1^+pIp{g_2K*DCYQb%N9kNFoqwUoah7~u4TOr5m0 z=IlBQb&bw^W4U-BFRKgyxR(JHu`Ez2IM%Yfwx$LB>_x`4L6^*_P%77d-q(~Ty%gH? zmWDnc(!P-LM-+<6`nnXeS>ic9ElOJY`s;c`<`&q`e1-A^F4^?nfEa%E0maz7RE25% zi&W%mpL}_pY-{@&6W75u)4WofK+N_`rT}-C^nx|2thVqc1{UQpK1W+?jhSJW-cXv)P^hTJDK)dh zHOSwc!WiP}Hxyi`(D90j!I}}*wIhe~c$Ko*s_y#c^-^5-p z_U$muhHh=;N937B!(gQ@!TK4KfIN53!qk6$Qz zQRm2yIienjPmz~zZQ>hovPZ&*BbDqj>+-nvr=vhQOi;D*HkD%Pit`!xKampOC&$Avzhjm zr1s4nY|-+n;<;}r*(wSGgOPj&?EvYfLW@fO(TrzH0J3pIMMisac=fh4EcEkp#x*QD zIr{IC&SyfA)opFg!uiPm&k`y|b6S22MC$f%CsU#v*7WAEoC^=bVp!RRLfX|+I!-ABfIi# zQzegDQt+uM-=ds7Ud!FHu>y7tfu)XzlL9fziB)gr=gq^yqL!We?Z;{|R1&4QAdF+7Nthfv4=FAMdYKjrn;dTz>l^6?n$cADNkvo&9j<`hvV_v$u$ALsaC&e3+9jk9jx z?Ss|+SMrnQDPyxKrp76STXD=WcNK5mw9;QNHzn?N>Z3(m6C}u+1Bx+U>58{52%sN ze9>4~h7{UjePO6fyr;HS?f}&>NBh4}W(7-8_Af>k7xTbB89|UHDsk9n|IaKm%8jC2 z*{>SO-??y~lK-P*&X^P`&;}`-U`Rd5kP@nwlEPq?{+{J#^Bnf~v6Q-bI060}=q^2Z zm!eS1lE_Tq(8_?QNT|aBj`%y1gtG?l5Q&G=Zz5no`D_w=f)Wn21;{m}&6-4lS z$_L+Cn}rLwW0xwgXj4;DcNCa5?7qnX&6mSRjtFs{@Ok)unarz-(Y!TH6#NQx?v+6M zoa}3=2nD$aMNz((`2S&-{4iz>>voFfBJiiO=P?_2j3b&$>q=&ij^&1T`v`NGznU}U zUnhKl&Pz22J`ne$AJ0NZmjR=qEFtg!wK zf^I>T4|Z79!qLNyP%@*yB4^LZvemy)Q%_+UJ==`gWn{H10kleg+4!jEHcbiq+f*-Uu}Mw60xy9H2JdG|?2>1>!gm(D13uR>H0*pUth%4?8U5 z^`%*Dq9a|!ylf9pcU5ca>|DdDOjz(&peSS803+Uc6PUiaBFZHwUs_D=aTb0m{XXP6 zVP?+DVzjV5N_9F*E@dZR{$SHN{d4AgQ3CBLV^*nl2{^+H9%Nw|OVVQFDe>!9THqku zynXw2Lia_8p<;wAlI^O=HL@9)X0t*ISUJ#@4ZVB!F6oWdy?d_^OGV3eAY|lL&VoDN zCE*)a$52oTk^)43L{m283YPRoJOARGd@!zBN?(T!Is&Gfh%6x#F>kz9VSR?ZQs^DgKqEDZLeiYt)fm@ zIaR2Rcwm_qkYcxFfJ!Exj@9V=Q8mRBfdWoDuu=63CIa}Y zUxDOusR=KN9NINAJo$Sy>|VaDm|swJ(jMOx@dlW zo~=PqPR`cZ%G})Cw?S53{)6oy5+~{hbsd^l|Lf+7|9e>EGr#)cES0gTms;SLGsd;Q zIb0HtWyY_mIeivbNGvBiM|n7E+ACH2Ip)&Oowh3jU+Dpk1}|EZ!WG@h64 z0C$>(uGuFkd+34@F~mPOA959jPb=ecQI|+}YNd zYmsYIzHaPG@#lnvV=3U=ITK7zKoocqJ;>>WfG)9}Kz^b&5 zhUPg&2r>%@=q$~SHOERmuwR@u%Qkj?j)!WFp+2V7B+4@LVFZ}?e}3N4MqG zN$Dp)awfo`A+SkLw`+Z}l5~p0=HYicn>;Vaw@;Zed8Q>K$rKLA6_)x}6v##zJU0Jw z*@2b#NM<#iSC%Q*$WrK1Q<0Lo`=J#x*gm3LBgeFkT2>WtyCwgcaZ9SYJjT+f0?tz$ zIFKA2eYmQsY8Vl!z+vnOJv}|e?%grMH)n~l$tOQdX`VfMR_C=XgI6ty-uUC+OeS)yQyL{edMO+9zppLpkZR#HhHtj{kU> zV@pqG;nkRNGr@iCG3&jK58(&rP6_VTd!H9}En9W(qX>eVr64(XW+DEfu`w^^!gi4T zocLB!Qu0K^y=1&}%`H0)f8+48xc@S0{C)@|Q9l2IVq5-!lPBoTojuv*$7QkU9suo}N-tv7eD~}@nAiT%M7@(#B6fq6Si&dzAkq<*r@PNM6bC%bH4) zl62jzy2$d8aw|zMRnh+yGW-*2S@ItKzHpc%gXEdw!*9p)RU#p62zUj>E;RO+MsA{{6$af4_;T(qR~nm4%FZG|3(e zY7w7DEyKN8b~3b1>Gsn<3IFE-^fWbt0Bb39w9bzE{sc({(nK!i46QrQK~5n7pw1__ z?pHW2F$@;CWB;vE{Q0tT>d)_FPFd;mIsCTOlX#@HTh3nWnw*KBFz^rPt5dq;d7sNP z-?NT&?8)(B4RM__26FOPa#eOx&~TA`FxU+I;h_|-@u~) zwM_&`1S{i*wzjrWev+(@and`pj~;&Z)p(t#+u8q3-<;13cw7HK*m_jx&*f?I7oJ<} zJ#$lKJeM0Uoz&!kfD{$C9(#Xc&Np(iF8!t#r(N`Jc+yurjHGldZ~t>Cmol|@F230! zDIswM0!Nk>o2hh7fS;cqX2PcY{Aq)yQ%77&3^*kMFm!M}KKBX11;K*{HJi*oF!kpO zh+m^v54X49XmjKJ`;bHpy7HM_g+-l{!tKo?I?R-nC22zv=Tv@to>O_dea`1JQymSP z>nDTzXG|TaFIBO>Yrnxc_%MPG3R;9Q!^WB1a2qyUd_7oJ?Uc5?#xd1CiJ(~OAR z*irkjrqCppGXt7SJwAHFZZmj0BPR!eL*_pf^vNeL|a@o$S0q!Z=Nn$#(6 zkj>JH4+tKepga0T`F96ezAjvnEk!r%6r+T+ad~Y>uyBwv>K8k=^k*YCx1^kB!V^7* zOGT*?`r$GOho+WR7@7p*=-ii85JX#$=_Xsk!<3^iU(4-{j1Uy0Y?PkY7od-#rYjUL(VxSS?;=_ifd6qO<=y1T^eZ zMTObM^4qvWLbC9YJtEhA9#Xm5{_-q}vrj-|vEJTWz-5`-EZ)N)m#mSllX^bMS0~RZ z-C?XV1!S;Q(Polg+a6TKqO>Cx+m1QZ(E4~z4LPpw0~m06xmRJ|k!`0U#$I_XtSrs7 zp*!TNGCj$=ga2Ugzn4eS`&!P6n(z3)(;(aPtkhS!6#o2|%K?1}k`3~oS@>*f*x#+r ztJv&Ya$j1MKO>oNv5H}W9?X#`Q>}kaJP)l-R>R91CZTNVO$*!s%kdth+J`Ix{n+Fh zX4uvOR)3u||0v&6%$7QxSM#>E=F#^ERjDUI6qncdPM?*N54ac?A2!vLK7tQ(2V)@F zAd8y!cIm0vYsQx}Qtw~O&Oc17HzP9K?8}!NUS3|qFg65UV*eq8Iu_%t;sC>c0L|R@ z^V7U|F?M-ng@9%#4>oSxm;$+t)v%=K{TxxCdeQ!G+C?uRm74E^X>hEsjN>aFE5_e9 z?{O4#Mu(q#Tf>vcH!iE?s{Mrttd8>i<5`p(_tbLNMhu%q?N0{pe)haF`|^QP8Mb1{ zT+0Wkxzg2>Cj>@IrV#?{w!b3FkAX-V-@_Y#uDRrPW@hHI~1 zES@$E`!u*WrQg^ziKWPsoXw=fq0`NOUFo;Cb@14e^gc%X0C-c+O}*97PdtQQ{|6iM zV%KfMch|>B{@z-dkeO^#7H8Alb7Pc`SuNLz#Xp&oi+MCESsOfYYIX8RnPthUs+Yj* zXF~?P+)(akBF7Mcm8^m<)>A!eRFLHxO_;g2dX#)#jMboiRKn{V%X<0ntEZN#C@gYL z{e3#H8i@XHND!5#mYg|NPsj5&)R$Sibst4E*B7|pu&0lL{BdgD;~(}x=8i#P2j%v& zqq17iRHjN%VpdL^6mO1@e{HgmA;Ms{4SEqWj#Kg<$vPQ~~SMDnOOG4OP{<*4fS9od2TnqCE} zeP2|wrQ>ZK!y`8_x3hlA?GX?<-d%8#c15MLREx~;XhPDH$a-N^21-``tEUY?O?8-& zm2f%Axm6{6hnp0oYwh0#+Aa+-F;4(y*Uxk01n*|32eYY_*GKz)@7GSmnzAPvzD$498BrEj{1L4ri z#C9NYivD;P`L-P$r^<|%QIZ@ck(D^B_WRCko=sDj4S#5QdyXNZZj|RmzoDvmm$dm* z(2AHY$*-MjMkx!TODD!Xb8bfEm=xHL<#fE)W5VKC44^2{S*+Geak`Pccb}d*^#RSA zry<88yN`Ew)PxbJ2tPIvNIp+!Nkxx{{WtKcRERjGh~9+QN>><^0>K46HCrmXwH`1j zUEy=}qk~DX8dUaE{Z5yMm~;Fyr<9(DjyoWf*=>`n7JWc8}QF{oP~ z$vtqan_KkP44>d`kIyXHvOk1$3f34{Z13e*yeN)8&D%J7>BTjd$Z3uBH#zMhl@K_> zSbMIH7VSOwZ+9@05V~3RQ4(f}|EFxYq-k%T1A3tHpr&YjA!g?ByDkk3w5IFwWl!uO zt|$6s@-*N3Lhox+SZz(`A4dFL9QTB$68I{~l#bXnil%gPH|dtjuv-U?y9S7vmNjb? z#Z#vzkQ&NNJPmd(V%W!y(zMOHluhx5C^jCkP!fAnE~0z(jg;}=?*~Crb^;Qf70L>) zE&qELTOz%XU4Il2`h+?1i%HiXFsu9$@CK;bbUHL(Z>>_GW7P*)eZ$Z%3+g}kBw6i} zu#xk{jLe41+u|MTW&IjLSX=o7RlaC*$Mw8d&n!OSgty39T4hwZHnGe#!U8Y z-5;>$@qzbhr`jI?>ml~0Od2hbe|~OYw!3qOx^pKPW7mJp z%e$FCPMoGE&WkOqv=j4I<^WnpX3ZI#j zo+d-pYPlmp+`o_t*f}@$xRo?8pE873ccv5NIYG*OwJ`)U!V8H`FMSE!b!Nz3N^^eH zymAW7_Y=0%AybRibRZiGYDU5{2V;QPo( z8c-moZuQ-J_bd>1I`gl^IgEFu1mQ^U>Wv#VBx4GzGl*thqcW1Ex!CfY`Nk*E`0*kb<*W zOP3_h%Ab^uh2kWy&Sz^C>Gi9d-{fM&{#5FV*D0W-j>JK0X9=RYF z%$k6Uw!jQbR-C=kagBt6>t9)3W@33NVh0U>G`K=@&~62`{rABrBapvPO^{>Z=huR3 zjpz((NmM)tX_?`}%yW%26c_k%>YJJgDDDI>j8tDAIHT!;UYC#hH$ zn((?`cYat}>i$A5d~WP>5{fg^&JvRk`+2W?6vZh#b+bBv+-edM5{YB*Bkb@yr=ai& zGs&~)T74cr-UW}axbxz0QcLvN+d>&kvV_2kogEw%H9j3isA^EuYHTBc)9dkU`01ERNpW}NwvmSGOZhjZT}KE#9+OOwu5S0m~p1w+$~ zt#QPS0QG6xc%rdIMELH-Os(m6NBxpPi)epIB5=R^+G@uWUL0Ywf<~PkbBa&-8%?}w zF?+cQ?K&B7f0!<0&P2q=AG_L>uX2#j>Juh)e=5G|ctSht`?>0;!Z%y5(isP=j5N@l zUV7rMTVG-@-kvFrudSI{R8LiFL=*Bkkk~Z|Rh^=%`gy``=s^#N$59to zP~_sQ20zq#1LI*ERWDtNN2SnbV+fb1T7kV;XafzO)l(D=p-H?5&v;PA!ss}p=C_IV zynS0gXoroF93{&S?+z9Z&-4Y+l)+=!=gaEwdU-H-fhKY|# z-CqApBm-rnKKgK)FhKBAmWh1!QPOeEVQbaNU#iOt#sf&x;%ojo2zabbgOS}#`hv!5XZ~7e&)-23g~#B(VWg4w2;X`8eyM;CPLFjb&al)4y$)qJ zYy}X@#ipToR%kbNo6WTReit#On>v^?a%WruZn+n^iZx!eEjJ&SkCeDb7{ zMw)tgc{v$5xjMAh7PN?p1o!t#ft6Q^5=sHvix+mj;9B2Z7*mg+iwQwK4X(T2A&ke2 z-q6sHvb%5;97Idtxie-%3Yv1VvW<9qIX9+EB_$y zeC9oRRQ&7LuL91~$v7E+C8917@HrLkJ@b#zq?AWUdsXO<9-V=i-vZP~$C=BZIyy_; zOLc!?hRVpRYMlLP4%U%cz&`oIK-3vm9rO*|!4CSK#oPTJem4B0&P?NbtuOS`aG2VF zbNXme9lJqMGNL@SfyPtXjN;iRcvM3HxrC01&VEt5!FqKd1idU%CCi=?{YZi9P1tB_ z_LJ#gln6v10BXN-3RB>cfse)Ma28L<$hoKdD%Y<0x<@_3LX~$LP>_>T#fd4l`tKeV z3EB-jEU+JrMJ`T*9Bo=n+V$aLCZ*7*zEM~0iu^wm)8RPvWctRr;qMyRf!~#U$W;CE zP{=T_8^mruyv^}dK$Ic-N|6o_zx~(b4j&r_f?qu2 zwHo+3k+7qIitkUzL*C1rf57xR5RurPz>5asl%%}zhV4k}3BuXjS>jrViG+voPO%+G z4!<|ZLPpUeY8xjn` z#-)III{n1t6(A}9iOnt;2%?s*!y8)vz|XG@v-Xp5=8V?Xty{GZ=^~6hq7~F20N8B9 zvB8FCZ7@y~yrTYV+p4delJ_Z8kRoT0LI^S!)`Qx~6%vxTx^Ql3ps_}@ui1V!)_krN z1D3gvp&INeM50tnT0!?!mr$HD*aVa@1E<&srbO5d7mVBg`YsDgfl8snn5vA7jBi6v zp<{*{PM`YyPnKOYYnH1h4fCHrUf>%Z9(Kk+2ekybefZ3p1dGekNQ!VUr(+=Wa>)q* zW`sTEdpl?^kDKci0zYJDy_=~3ji4MUhrGcdfU0f2D zqOvHtmiF-pl9QZM&B#{E3nZ$+X%m*!EUbqC^Z02c?qMG<)s@Y)SP$m8!49Ttu^(?Z z7_t1PPWi9e_4TPs?{<-ef8}~W$xevo%>hy*Bo7I`k+`^#wv2|^)2AX7F=Vh65QPWk z7J|t4a*Wb2_L0y zo>dEKJYKl>()9~9E?l_KQ9?&z6oNdFg1w~ecGdU({U)4GbP}R%$aXB453_UcU_}^S zUYJT%O}H=5Ed&cD!6%NFELnxVh}cI*M+ZTE_S|QLn-roBLiWlNUPE*vz8Rq-sILR% zW$kPx;l5Y}KQDN~sTiDh7TfPHLx&N~_;DNx8q&k=>gvjURq*gHPz5`dqyhawG{3mUIsf4~5Slc~cP>O>T?>rt#qTn@2RKxvK3*{Zx|z zGpAtO0O56lj?dxb?>O_5&Hr;k!=aEpFP>oORuss&CdnjBa0qTCIcG8%@MLEI^=we9 z%i;8>V+jlqk*rIw2by&!xSfwbRf(m0W8D0*C5zqn9m6nqNNnsg{bSBS<+kVFLVgzv zCEy1}Y=8I_hQvZ}{V?9O0UQ%zFo9-{9<7WH`pE;^NF(x53bgWY+KnX2-c{ArX;>ag z+tyiEn`RGV&Q9L9Z{K)uC?-(Cy=pAy6rBB~1Fif;HY4gHoSui!^9hZok4LVP#TMV3 zON9v;Ty4YTYm{4`(7-~VjHHQDgodGKYs;5?+e%P6oYc!F1ZO{+zPIFr$pDAP+B(JD zf^(SIUQku+bnoJ!n{=9HYSDy<>ZWVJmM044JWHPY7!y+(zPB^a`q{em>-7s>ao@Ui zOQ+Bwz0#GE-QW}67cV+8*dDmxch7P18=*ROL`6J(`W!F$RI|fn>nWh;E2uuO9z!c< zaLhyuW_R#M&LJFHv~yIm>y%)U#Z!ZK<>AQltel*U!>f3hy1!k^m>#dN1W^Ggnv2K} zNad@;Bw0Ao?lI1+$!&0dJKmiJw#5wnFl1Y|a&nw__zTC+ znZrC5Zbe8bC@FbxQcY6T-GJh!wm7G26XPb5!`U(7_XY|cFZdDY8DOtwcom?sKLx1^ zAsg$nZc1R`R$Nwf7ZTk^WXgavv4I{OOQ?W7d_8{xMF&L(DKpP2>z)^Q8T?&ygrO3L zpjt%~J5Cq?n6Wj_66Q;Ir`2)er zE@zgId@-a&;d6Guu3Lp)22St8i8&@dc2J3OP_f>_$u-~m`r^J6-?YFsgcIpoQXfO z)d`9`h&dtG3Nr8v!^y(e5ZW|g{zxFAc>mHy2Xbnjk2oeC_UpmvFyNl!ye*aY4L!P& zyBphYRJY0H(S&~dO{95<)tUx|_=TE^jB9(_(0Mw@^@09=OyChDG~(?^7}Da zf(60rw?`@^eAW1FG2e-EYHC3aqwQG4JBBe}pcPm=2#?_V_e%uF2%o8WM^*x&U&hOq zFWI&|&a%bs=n?T{hffW-1lT!QEk!j|BmD`{4ujP+Xg($)r=-*hn0~#tjC2K@RX}`M znJBU609e&A2#1+}o$^p5|245~lqc;AN@0;ALL*A`7oZ!k-W9O;&&$c(uk2gH*>GlM z9;7Hg+n>EMEOMHB#oz;?MSZL@SDhGVCoOFOBnRLdP-(mqd=Xr=5bl>x&Aqe#IKr5F zQ-A>r!T$a+$;r$F0fRTFj2i6A1Pw`;5hf4)XwQs;jJmS)3YT>HgoQ&elE~?h1T?NNz@$HRIsmP8z z@YMJG#%|oWF-+|K>Fjd`{7Vb!s=fo$-vg`*nx9Ta*fHoAPf!No{9l2`lya zN31{nk1lmO1SB066n}RQD(}xPcEg>9_?`x%r2u$nU+$+uH&hAn8jm?7<8URF~)wPx>0{+ zN^mZS;skMY9mV@SJGX3{!Uir)1(8q%`xIvlo-@P$=0#4TZ}M{Ie(Zj16qDm|g%1yK ziouQU|C>uH&8AN&C3t1RAPxpgu*-e8i2>f3A!P7o@KG}r+t{yQ>w)pFv+aKKMxri^ zQylQV6G;jODHo4n4x43BET0Q1rBLJ+?A7s58b^PGkONLC&46BtlhqmQUTrCeVdOoIDR&+P z{3iq{1xa5Vx|@bhi8#RO-gBS%EZci+RuEtaS_Y)6d*>>y>^K6abNH4FqHW1A zG=v}W8ctE`pxgOwL^As64IIH@k2d>cP(4=KB1ve;nueccq?DTSKdBzQ3R2oT|i0f67Lr?1?r zCeDn5#-Uw*`|^>r>ivJq9`)y1oVpe!d3rRn8Nu~(;S5X0fk9kxWog|izb1p5&OeHH zJtqIx(cz(Aqew{B6>X?@m%z3Ob19~-m5uprB+>je6S_JfJRC*Z#3!E6Tv)3VBwRY~ z|K;it;X)l&-O5p(1w$=9*!BAcAeu#H$8R>|{u={CkM!PeTO);U-NfM!AR}>#BD}qH z91T_}FOKnAwk!Jy{gUzJcES8G!YtV=HXuS^2!ew&@t?NFoUWtY=v4*)zv{cn{PODO zQ^aoxE-qW>BqO6#gV5ANEWjCJx1~*M20YiW2r(&$dV|G{ZJ{*B#K;JU&G~_s@LUrx z;KZd>)Nd5U2=xT9V!h-*g9t#F)DSENhm3oPT2#pCB_Zhm8+|@hinIz36Wa$|8llp( z(51ez>>%tU$O2=p=DJ~m2e`yZzRJEe38c}7uQ`0Z4cudajSg7EK$JhktrZo~tPPK4 zFw|(IwU}{QV?_3RSSZMaXkhs}*LqzM%kE zReQILLZ%Zfw1;d9z8E4G3JSdfPQjPB+o5ya9A8KK~EBuGEo-;?=<9~M#!>a;ciHkIgLJ7qFbZ&`DC=} zo}IfXD1!P|;pC(W+Q8xOE(_0x@#Uy)_DDga(LZLR$7^p4L(W|3JMC3#a7J}7G@;E8 zEx2WRP!vM*%kbT749)5&@tlotHY3!wcd@^|YK ziE`QLo854mv&x0vTDv?^QW;y&nnx-kPIdow(^=)99sA$hrG9h&NxRCYW36`2RW3F( z9#D*Zdw_@W$(4%}v9VH*G9}}p&z2b+zWCrt`!0&zyArnd(5+7Iy*zQjG)(Nq_{cZa zS)H53?0xUbOsCjjq9%S+b%7#-Hod`7wN!c5J*~#l3`=-DoUl|T*l9f1x`i_PhzODx zH3(faN3-vuqGA!aj5ZxDctCw(D);Gw%n9~Ae$x#@3pB&f7A!@oo0*w;0E@ZlbOQPK z{rmST-uUbdu9sC%kU-|Uekdn0Aixs>(osaQF*|N4E@UIV(umb+SS-e6GTLWMQzX?Jfs)jIIbjRIWZ3ii+GKT3HdY8{Sy@L(ILljF_? zSTP&@)==`2Ro_{6{8nfL&vV0412gy4)zzQV(`o|uyx%+D3J?#*Ez4G((Ra-P?pF{)&-2sFOHg~;>);U$`!)z2~ zORr*M>7VQ7DSgck52r%0OiFU4^*I&tHiMHJgmk%x3&SIbW?vMaaRmF-i_`e6w=W&Pji`MfF&en??OUmYGc77j#%p*dad6uv zYi1lmvxE>te>jpxjE^u|MxNHmk2OJ@o6-ev>}N z&F744w|_jo=dliT!9jX@(Tf{$9+8yfZJw&zQIU$m3$3b~%3)sRxnslD9MZj>vn z3Z+~1d>XA4|9loby{C_lPmJzidQ~d%a3AkKKQdP_ir2=`k&?F5wx0|siUYLhZ`O;u zA1vrSJl(CnxX67Fwlg(;pgErw`~?L~;D>&l6qPS5+qS;S&4oSAt5-`;j|MlUo!W^~ zrwofjK37VX5dIfw-qqDrL0b0@4NYo3L}G;T90EJt80k}GUKp01T-51?(Pd8q<+kxc zl(Cr&)#wX}wYcNu6|8kHNDz%fz1Q$EahR>%wBl&4ATr{G<{c&n6}BG|IxtZ*wWDNZ zR`)L19+lUZOik}%MU>Ul$k{AIiSewitfH?K~M5Q6NG%b@hWNKCB=rkbj?(M8ZroIy9>*ci(^9SxA z!;Znx2qA~noz2wL^h#$A3k@yp1xw52MJEl7{aM-B z*v*gHs$E=Mej@geu!|p>=qY8-PYexh8|jVLtgWk4AD7jHwZaA+U5%5dH6Qq*m1Zkk znx4iGfk@A+&Ko=3ym|Ea@oiXrZ-FUU4xE~9(KJkAtyxaU6 zQ;ZPoByReD=x@id>)0+7Z*i@DC~Lf1vtPZE!lj~~*mCgT!LH()l-O_lHoYEVhvT_W zTkm&$N=rk-ak-vm!{*JEH8o^rW@h}3<20wNy1aqmf-QFKR_77Rpvp+LJt~SYw$YDr z-@YTfybx{^B&vdqwymH z!S?6PrM&gGkl7y*y3fy>*`UJN^zwHhQc%xLq73Z?OBj1l2xJZ!po|xc&~JHjs>;jH z+K)okVTdYq7}F{5vlbZuIIqMI#pC>ZtgK{#jEbz8Atx_gy2MNiPp>y?kXP$|+#w!4 z-mQ7Y@$aawFkzPgTs)%y;f5Y+&ouV2fNf(V1Pv*`W%W*)+E1S-2;)!ZT2EehSQw7k z+lZ>?UX9@h0~3>RXO3Ce8CL-m+mFzi7mau;Fnlfo>qI>Y+cYik5W4v|AfY7m*d_lG zqEF>uOD8Rz6%BAwe%;z{y6*BT(uwVjhW{caSCK`v2Sc}^!9nJcQFGGUZ6qaE$-B4i z_P5Pg_kBhD7Vqs_Bkt4%NBhYPNRBU((yea4<84i%m(nt_UFO8CqRWeEH^wP@wKo~P zSCs!3aHqZIj_*~uQK4-5FDy5`Lvqb@S+M=y-yh7+$HKA|0dOAkUIAh5U_M^)>qFmP;QLNnR0^bCOXzJX`LH}?~J9II?Y z8#gECSyW;iw%=vY-$SjMqIRJkz>oumgXM*!pNd~D78B){XZ5Yn3xnW??nOpMR%n@< zv+C*TsgbFz^FX)i17BB+a31O@T^pH0fb~JKa{(3$Z$CdAO3kg7dR9WMk$D^2bL3s0 zL7de5z_<9d|81=+(V3aoQcBJ=@%l)_P8++NM`H_5YRn^LQ*}?Kmf-MkZML8Vh)-`p z$*YrnDZD0(>w`KFOl#)gJ~ z`uFeO-zqLHt{K4_R{VJ*AR^*;LCTv5aLen_>>UivyoC$_8nX=Op4_MT74H*CDB;b$}TApIB$c79_)_ zGdltPL&tUp3qPuuIf(v<>QL^W@ISC2nM<~FC)?P@?;?EmObpu&kxj20;>hE&XOfUe z&7LD+q}{l~W&QH0ZOj-3E&c7gS6QNe*#pbN_MS*OH{(M@BYn#j^cT~@*J!*AcjnL~ zl|K2CypX=MAe8O1rSkT!;kwK9KS`&nyL%FId5_T3i=|J&+~5N$>l;de$~#;4{=^Bw zTQ_|PiHEF0cB_`8cVy%N@e15l7Cn!!?>r==%3Gg(LS1^?4u!!M|;WT*7M(iqqI!U&U!CBfAac4_ADm$OwwrA7 zNKQ^x_2OFZk(9&)U&aHJvE?J%FE>P0K}MLwb_z*VGGn^wEH>j=^1TVX*|mt$PH<%VJv{03(XgeCaFs}NXI7Bu|Th9)45-CQ}!C}$vIgfoS9z0cw zmp(j*UzD}m%n}1JnORwh%BzJeZoS9z=WH;~Yy*p3iIsZ6 z!XmA8p=RASFbEG2tm#=;WG}D*kABrcj2_Y<`q?|Hp>uLrb@5YBP%uA?6uObs`1ygo zl=I^7xH~t{Qyey0tQ|0NLaqV!?KYDPrtt7^hN!in#-oj# z2M@2q0!$-#_*xk2y>8E~ZYEtEpXl!lW4@+FHsSpiq@c?)j4T~2LS$;af;=93b?nlcu zc%Swcoy?s22Q1S9>Kp6+J|Zj^9d8fw4#OU-n*{TP2omZ z$W5Y7+a-SCd%`@tG+bM&kZ_P<>-%@_lm!f$`chBOxy>ITNX6Mr^l0otw%7--aYEoS zXc?X2{VD5}_;;pZ`BsX`8JBn>O<}b5LpkJ6~ z(X`Z{BEa?YQlHx|eWBNJ%Y!F64`+wQq}uUz$v3&&R$!Gj=iQX}Z2hT6>y)IZ3J&%= zxRD9nTsOUEwZlAN-$!x|{~wOrRnrk=3z4F6HY+WEt4{jJ_Trm)s1$djh!Mwf>I~m4 zA#wNZ|3DVjU~E93if^!hR^ust+Ho0?h6fgVU)+1jzLV!w^Ur~0+$bL2Z~M9;6SK*s zZODgm?&*z$}^IZ8za=HGg$^lH-y4z%zl8<6J4$;KZ7%T-)@zdURD1V%Q4~^Fe zYFJ>kMr3Un+uH&DrEN0u^5RxjC*xIFkQN%@qqHAw-;E)~Ha0f9gbasHr?S1wMBI{F zQVGpc?gwkPVbdlQnfsmKZ2I`x?lOM+Lzw4*ck*+U+4XCHA92Xmat)M=o$H;bDwa*J z7~;-14nhh2ihA+q+?-~N?w-DH-#nSlMKRL=U(LfwoxAAV1~;N!f&Er^)yu}a3$KCN zhYcX~z{%nZm78iK_%c*C+w4_YKuO?@`#XMz{id_Cxp3DMJiN&N`)Qy!?c4r7SmxN3 zjw}Xv)KfV^0t0V@Y={HqOBf$R>W~r>TL+KjN&YkFP`~YFQ0lt$YA7u0XD^~2G1~2G zeo6`p5D>$B7&6p0V0lz2i52Z2e;_vXI}Iw5t<~&m5+yUXweopV{m{o_bKZy4-r06 z>{rpT2szv^8aQ2GT+J0GpP!SHDrQ#DKdyHvUIWAKegFP9#d@_Hyf+NjVrmB+Nq1(f z_cd5dhbaB~XYrc(wwKO_53_UFGkrU@Cwi<}bYg+Ml08Lr>dLU!lSdZiNyT)kJ6KB{ zvvT4?RP#5s+^s!(_x!=V_Bz{0^wyb|H6@a%W+cXPWNcr1c5I9@Z{1z1bw3=|#Y(Mb zx82_DpMTq5)SqTZxZz`D5N$}SXmLGzM%+kq`Hk%+jDNs4t2FG;7l-!CD8g`Aq#5pA z!|*?tLnUQlVF7|HH2_2z+*B_iGb}^YV0}hMNqG-lpvLf2vpzeo>X8j%tHxrh*DR?A zm>jtnS4{fzjHw0wRegQ0rWSSWw*72nU?e055sdn<6g-W=bL}O!)L=x&{^_KnLyfNY zdkAdIyiY_$MAsp#YOX6O8VGe#O#7;yFr*JCNY2ML6j~~{O!$N>!W@^Wnjx`={v~ zvLmio_5As--@e7RAmrOK(9^HOAkfX|L?$QU;O4Hx7pZ{wO>YItG9+sA@=Q=?k6ItX z_$9}j?c=i*T(~C?Jqld)3wqif8E2jfT$i(d4r)8r7)fn!R~ai<%i%V*8VMLtg@azl zE9Sn?d%X_oOKvL!-q@kAw6ruG3$t(7C9O++$<}UeZegeG7zuU_)q^qEl=l2yW%LYeD(4RG$|M2MD`kQ=jTSQb3 zvon9v7H-%@7bc_FJ2bL=g!+_|t+bu+#r41zvM8>{PR%J9fC4BX@+|E` zRn6b_C&1P1-`y5}$%=o)@OoRCoc_HAl$BBNgl z7i`-I&~7WUAfg}CpTO!tp$EjgEq5eH69iH@9`PMi;JqkG)CK0C4LbiwwY0r{-Rs`H zdlkB(q9gNW5nB+7b;)E`cQsQ`n&B7AG-555+5m&A_aP(2J1sw zCo^u#FqDR;hXaOY`-v~KjEq(8dQVVS!#8sQLBGAkRS-I>2TByy=iG3}^7HfeV#28; z=&=n;kL3~wJ_RJ>hU%-9mOS%A-rn1*fsi5KRe%k5(kp<#}U3=9q)#cf*% z=UKGvfbz$7zK0!IL}B=?@Nx-(ux%E`=^_~AyaCf2ru$$(P}-o3|X!>zAX6Bb)WyANot$=oW6RvwuV5_d8BCB=~ym%;tq zqP_Qhsm!|e4$Q;q{&n5eZ3+hBpF6VAF4%f%}$(dy>Bdk ztHQ;o*H$#Pd&%nq?NQ_C1yQ55w#D?D7x*4Kthf33$@=$#$91VjKpTLk;x_Po`N#Cf zWCQ^=*F$%hzG?p-NDzGF^0&TBiw~wxm#5AZIUS)HojY|tg+fuM==QbdGq z^(|1@#cri9U+zLRQ~`c{;~*h}%?~F%L*$6D@8-K5*wgy*f;h0QO7`6zo56ZoqR}t5 z4poNdS!bOSmwa%-Ydw6%i5c60{; zTkLeYapMRdA0+~EIVw`g$~)`Vuis5gtuq=XL0^td#A!F6P;Lj`xXsKD^@nsKhhT_x znjNJY?n%NxOHdZjs$9G7#%Uq%^f0r*XNR#v&6dYd_B&?G_2=EE^*)IUe%s%x+9NV)MhvN}g`+?gD*hYM?pN?{H zy!3|tHaqoQ~)8OKi!Fa!ucm7=#GZfmXnqci5LWK(b4>&5qJz1vcjaPlP&jniV;$L=i;bZ35@+r+*8 z#68l@1MBETj<;;Ram1$gpiwW`|I~tyTrn*9-Me>XnC`Z{n~bF~Mtt*X{n6dQ7JpDQ z>v|mjM7dwOzN(7*$J#GLH-kgpjE#Fozji!okmZSi>JjMv{jsFgja-B|vat;ve|_JwAA~hTGWK*ab}Rm7bE~ zp{E46K^Z6sYE5zw!Ly8D5e}bc4gMBkUBYrbgWxvtUA^r%D*#b{Yl>Pb$1I#L7cicY ztlBFo?$xVTWYq?QmQ7fNhO~GQdB7IDMW81tCb*x-rG072Aw~pmQh>BVL~TN6X~o81 z{QyCZ^J*uL!n2bukqqd9>L;l@71o6l>Hf?G(9F0k2II3g9B+L9oSuD2=bpU<4WpKN z-rsxUo>W38B%D#$?BtE7LEaG~j#Df!J)0VTbJNdX*V{TfsllGe-If%A*EHQtSY9Ij zTxZv@;o!eI^~gxc9y&Tdh=LUW^2bN8;4VODxdPYel`GHBU;^J}3szPy zY=j`OK$QKcZ4D}?0%ovjYGS^(FI>dlR$1sp=i#wv-HwV;qo5wmi7x&51Jf7$alFn|PNm1DKx1jn=O91StaB*TGLvK@+Ax2rvpHrdL1n zW{nA{oTjUJ8o7f;dxQPJ3e8^_-LIj&^U|vn(ubX-pLT#XR(lKnbHiP}-89?&MSs!x zC|O0PyYpodsq<6Yr427@wY@A46r|EgW5^CIugOfUxMqCbn16x)t3i`~dP}VBTkZq% zqdYI!Xy$d7F7)b@8x7!;9@2@{vX%oYt-_g`hUT~Sevj)Z_96d*N}4uDEjP(j7QKxA`(KGSYK$W`1)0QheNHZwVqR z#J7#>!wny$ISX-cDCfArJVvH(UjOdh7MMKCKtAun>d49AS;n!%a<^lHH)`+Mt$qmt z01IRq`QmykkVbSvmuG^|z6kj?HiKOaW{mB~RbGhy1|x(hhm~!1*bXI>q1H)|Tk zG7@7lZAM{`MbqqEIcv0Y?beG+PToQopv@Z`92|g{?_%X@w7K@TSky#V!zIN|F!dl_ zj_~sz0Ig9C4nm?02H`UBwHvDe!2JUQ<7~QWYqvx5Vig&<*pqhI#N+~)>?f{2sk3r& z-k_hAO&}^foal>2_xVQ67kVtGV3@muElV#XRP@Gz0{sllIt?ToaOlHgENQ=tJ0wUx z4GU^9H8lz$A)${LmkS5L7982;IrZK4G!d=A!F#^|&C{{``ihd0Z^hc@fG=-OZ8=I$ zyY+`hK4jq2^XuOHQXv15u z*Fzg+8N8Yw;h%xckhawyD0BCH3HSQGOYwEvrjcqX$y+1gI=I3wclInP(8-Yk zE6hXCSZof`(#kmky})p|bOJ@zOU!&suqcAjHP#q8{Vg)E+^G1;PzVC6Wqs9t8>{bN z;%_wJrg^b)DrQg((AWs^o!=dDE%mGb@o%02+Muw1x3n?1xafp&CjECQ5?yOxDeNQRBA& z6_8!Wuq|Te)^IKpvZA6QiE2ALJ5Dqz%`YsJL-PmK?*#<~Kn?7(AWT@|!;8Ys)5^}S zVtYYg67H*}(|AT=u(fN9P>bQ|15^6~OIEyny9w{4#V$};k+MBC+>wY)PLQJ%(pW=z$qP4{4QoiXI&+snUPy!uaxP#J!+y4{jm+hIMo zuKNZBp>=B4i9ozb_IDsw5ny`hXnY|2fJH*oW$&E|K^u+;E(%l@+-BpIe!${X_lC10}mFm0^Wuf22YSb+4v40|z)scE;6PtReqmqS^)w)AL zYtKsm7N1y(D#M(=)x>wA`)il?luAjLy7heSp|cBJzH_3K?(I{${YNkUNDAY+xuZn) zHCgMa3c+UG&+Qin=C)0K{m4~h$44w@CyYj@0Mt~05uYFjKut=@$&o?uCoS4;tt2N` z0Sf_8084=q#PgQaY_p0 zK^b~)?gN~r*!zNFBaAh$>>J|<71qdRjIP7X5JEv`uu>+-UI^!M{~uT19mr+dzOSKr zq^)7J$qL!oZ7Z8ZMn%dfWMxG|N|9_?S=nSo$|#TQy|R<6jLOW2-*Hjz`+k3)Kk~j0 zKJL$bU)Ob>=W!nAaYS2{vtLI#=IrXa7J!lqCd@VhZ)6Ko#~nQzaAXB`!`&Vf6h&Bf zmyFpRI!3QoRaFJ>Ufl?0{8NzoW82qmQM%&k>&rxUzYXVXW)rB=?1woxD2q}5n=j1U zX3nvff->NkO6LtDZEd`liH85X0x*$#qUgYe_kwyApB=k6-G(wnmcyvK>sAD zZip#`;HCIXA7EVMj_tIy-yV1!h+3`JRNiCqSTW%oN9|8Q33~WgM%SBEn{v^#MF+VM z@H97yRW#97fiChM*}HG3APN#OE2&f4&m|~5h?^@uvG2mq96qcg^72(GR;LI$SZ1L3 z@)>u{5dG)EFp5aG+*Dq}s>tY_Chb05_4_Pd-Bqy9S8n#wl@9fEeZ^)Kg*I;{#a-8L`N{7#|GMt?pM8kG ztQ1%n#zHQEwxB9j?$cYnxuNN|52oLLQiwUuw)x#be%`{8N8X!-deWPVD>x32LB>241|u8-IWuWt6ry#ER9n2P{b1CCr;iK!ndQ20dc zCf1=9tQIGcT66mIm69gp{3NjipJg|o9w`L{Nfej3I*wZ&s%+au#q~Z?Ba}-Xu}pjM zf`UMDPoCUI^@_aZL2xhwFyIr0-*KRB7v=OXhx4sWqSl+OXl9%MaDmgXdthK4AWKXo z5?WBiP(0lU8Klzk^715sX=-9;eU$Ok4mYK#^u&jt9B| zt(jfta35=n)i3Be0ezCrc<}h~}hIl!l`lam44~g+M%u3tlJ&5`FVL&?CTFh$cfLWVI7)vYP-tI%L@@fNuMsW z>2MM%c8C*k4RpK}1bCYPv5~hT8~2E=Lph$5I4yw1iKf^l6f4_8EKq$P)_J!Jx4lt% zQ}25mFO9c7wr*jK?V$N_gHlW6Wmishy7Rqp=g#qo3xAWN1{(*;SB9!B)FpfgE2%qH z^9@`YkdLMImSS8-Z5mP6UeM`oKKYcUWIYvsazE{tRok|&^xW+ja!I>zjl!t@H7!{K zu6w?ErQJFI#g6EjBdDToFn@M(TKV|x%BPFmmV$0y&gITqEaOH!GoHgiKzz}e7^!=T zi3Gz`5zkm}Ys3{Mc{T#~G49 z6$a=+DoXrYbIMaJJk}?qs0DL~06Jwu(5hXx$Fwf$ACx*zQ3JAx5e(`nT8^pmn5U^l zK-}7oVLNIxcK7fp}svv=mysoBdWCe)iYZOUz)92>jq@4s_lu50mI;u&y}YB0(} z2Ei;n(q2j0+s`RaUql~yyf_PDPDah(8*^D{A3S&vUXLQTFo7VG+r+LMM+2=U09lQ# zAOra#-!fkPv^h>i(sC8u6&ym$bY<@_kLrL44$ZCs=|kR^K!pHPJMdaThB%_>eh|71 zuU$uON!X)Do8U>MTK~CUfvh(0S9I1~8WMp7Ahg(>k(cTrO}g9FpAZRx^LY$uSFH@x z#X-2~_WV!Dd8Ahn7GNPh0C(K5*En*_pytJK0>n{wtl6SQvzvKH0`GL$k0N{ zY52I>-Drig?6D2L{lb6I8Y;eI$?Xq~9WNTKd=({PHkT3pR!KGRUf^{j3imk*=E#W) zSyCH^XIB2Y7W02sqH<|+8R1OPc21{X-7mqli9#{v_^Kzcy^0=xo^fmK7L}I~>Wd51 z`e=YgP%(*$GLR9+)_y|~9}OVpD2Fir#L*~>b|@jZK5=)?YzVxGgaD^xkdBdIq0_?n zUhICU!C)l#yAXHo>LKs`lA)S&qLqn*_}Sbdr^S-fasqQ*O241Qv=?=dMH|L7uV z4Bfd57U}ua%amv3an5{TwDr#*>wQBL9A#sa)0^+>oUNdBhpG%8F7#BDwvHQbAxh>ZV+KS!Wd&OPG^}_fh#_f ziq)du<8#2vr?!ClPo>n82TT$)KFzEQjNdo|IKK$~202^j=JDJwBbt$!f~r-4cl?`Q zqFRidu%E}_Nk;K3Et1n>QLsOBcPFHFB_cOcZDVQqFPH+UP~a&ZhkBddIVt->KkVsq^3wk7uCFK5#j9b)HJHSZOc#;MpUCX*s(k%wu-a zei`$qjrFV0S;Jl&&sHrc!2iJesrQ-8*t_xPb_dX`T0O;Q$^7BVxfS$hd@7swYp)Nv z7LbEJyZ-iZd!?W_cu;TNw9jN0?I3gF(}yKBA9K}r zK26ivm9rs&sPBHC2?X|ZKQNX{$egjdygz4WWeK9y zK}exsC8{R;hCC748FU~o9RqH4#uzFz+c5{MJj<!z2EhV8;rz4TM0c0S^IGmawLNJ6-6w3$;I&PRwCx0FaU4HU6R*bp zYi@3RRj%Wl02vk2dUs37OcVkj{z+T6C{b<$hKu;d%8-?o#x~gs0yfIcz|ZG1vjjp8 zv#@O5z%yDG{rJoz8iSj+Z+F2Y(t3~l-Jjq>sZR~rh)bae@~xS$&7?r}2i!mVlevO| z!uuHy508kazPpT#jY)2SD2;ta^)!yH|8XOH2-0=Mtx=@{dh+!4K6rHDi_0&oZXD>3 zr+P+5la(Y)dHDH@NIkP<%N-1MG8{D{6q@6xcaX4vAV_`w{P}{as*QkRu!~P4xI@b6 zg1f-za~Q&)B%&-PvwmM@aL9i|(0=Cka^C(E;L`VW2n zK>P60AD$o-M9eS{Mu_|hp`ypp#Ut%me}7k$_Tl)sb?eq0Lov2_$Bs3a2XY^3hKAt; zx0$7-s=ZihHSKdGZGNABqC?h$WA?5dZmDL1f~ui3<1yDq1+$lCQyedEsIj9_l+C@! z@E31M{SEyl>;&Xb&I z2Ufg(4Lf>=ds9=Hx?T|=K@XB@IAl&Azw@i|)1gC$NUH-*6^n5+moY1jfriwR-PxpU z!|DEI<}%4)ktggI7tj0G_VOjgc*qsd0AZsn1|Ins6McT!A3;G$#f(j~1xW_61Ri@} z#NZOjCBhrtymRN;H(JS-xwy1QB(ei-SzH+Ppx(Car`XVqt~_@P-R-EYtz~o7okU#0bR!9a==MzSPBH_a z-PYK+9q;fSxckJO!}6z8HAVnk1103L9#-4+A|Zhti_sHRvD4!3ojCbb=)QpbWKGhF zW{y9^U^Qw=E@#8hV=sT4*(lsgOYLy;-Azg(^vlT0_X?@#&a60H_FaPa;e$&BH7o@U z?KL5av}5yw7A6euWV*A#-AHlyp0FGA<`zSZhkJ7W8M}MJC6&&-T`?f$R(rmR*sY8S z<+nR1{^fXFQw%P7MA4nH@>H9~zB($il3gC7dEACp~W@>S};t7}d1GP_R9_SfeX zo!@uO3bTy%S6=AW&Ck2@mMpotkU;*^zf*x@G zMgaj{-h1Q^jf`~n_EKWT59Oo(H@%Yb@{<^Hg4B`O_f9bkX`ydV#$Qm9OM)nYA)0-@ zYzrTbO9N*y|M}%Kp--dy!MGC!*8TyxL=jU+eAinc5V$A$TNpSl%rs?*k5Iw(fEz1Q zIQwU`Vt`{Ve~q=HK|t%ltQGDbHmLkf%NFv}7)sg=_gtNb_3inIi>>E83WgJ$PxJq7MymDq zb?@>L!S`9HiB2w6c^>>hW0ewi2#j`^e)jkS|6;r`V@ugExQ3_%(SR|GV_*L52$?S$ zYmPK-xb-Y)u~mTojs~l9#=ObpKg=Z6ZlB&`eex>KI$gVR*0V+4KM}~Z^&dM9hrI$f zUel!nh4{G))CPf?w5Q-OP1$f)+#XR)zfm3E>?^6aZZb!H;tp3d2+XC<3%8O{8@gSm z4Sv#v;aw*K2Q$atI{WUWn5o{-@hAcx(ZNCJm3h=9qkNI=>w=5}TK~I*^^f>|r4q%y zd)8gVAo^?eJ6hv<1@eDCSL^|Vhyt8LyGqV3|5DUHvh@4(?_V;yI=_BCwdP3Xp9i__ z6JL(W8XkI_%T5OSc;hM~qt)Y92Cg{Pcabt|>NZoA_cHvVnn_Xc);&drobx_8emLi! zL?4RQab=4w2rc;Z+u2s_q)i0NjqR^4oocbqt@GV+lH!73VZ(yne$U(W|M_dUzLJZ( z%E&cEtrco%$+n&u8=784XTfas=dneURdsdk1s&D()B&ZTcLQ#=_41a*uIw2l=+C&D~y*|b!M%2uEW0X@)ZVynPzxZX#3%3x^)l~!U z2FgW&i2fih1alO0*Z=RsXm27Ucd1QY)nTq$I=^Or&$`pmzQW|_@{4Uf;50K}?qCM= z0NBpH_45D;A%Jc69Xz-SZ31UiHkZsyeg*~x(ky`376Xuw`_Hya>-?c|u<^66ebI5A zFe*}hAE5ulNA>WR+~VJ-$d=G}&-vdCI0K)hvK}$vt%=PF7YV;vvIM4?WTyH3w|{M> zwH&;Y8dm-d-j?l5FCH`*{ilCTmGSzJ+L27URogbMdMvzB!|=iA%j|45u0@7y22a%= zb00ftS28?VU3X(3-+FAtXG^}CsFVfcKaYT{$>T?s&}Kd!faM?*#));@Q zN&QN*?oO_E3vU}LsHZ&IwIQv${L)Fw%96yS%!dyj(EKJr1yR1Y{^z!RQ&&H0JXkQ+ zZCxMSMY(#a!Rh+)eT^u4nYe~0ND6dqTSsTU1Izh+g7KQE8&49PqK@e(#vbV-PdaYu zHh%{o!zO-{A74GbWC~&Xo%2x3JXgMitIKEmTdEryD^sfSZVsSXf0&vwv>k)KMQVN* z4fIrAlv7_E*<9GrCA=}Ve#NT{?z4`6A1p#e0+mA%`3RP1P_H78IP^fvOd(z9E8s~> zv5;#uG}$$>dpAfE)Xmh(AL_sV=IR@6$k=O|J*yOXr~PbUBlGeb$5WS?>`SLTa#Lhg zptRmH2_d18|H{U5KMcRe{O1WaEj_`z#o8;4uH`Om$;@4Ba@$p{oUm>S&dgQ6SAKkf z(qz{Pno=AnH~8r(jOMbcm>&$uMu>>0g>#TK@LRv@Eb+g z<~pgbytXhqqIK}k-uurNRV~*?&c2a2Q##jLS06e1pQrKyPeqpF&ciNe=Nn}Iu`cgF zVGWVx{kKzO>8b2qO}D)N7_en#3>8E?xAM3dy~W_c3tE$^eN9N`j+=G`fTNh`!qDVrYAA2N}T zYK8Ej(0+7HO5y;iq8q$boUFbtulx4)^6 zRh}mAXByv_e5IrCUORP^gp(VyZA(hOl)K!es|J+n>qUO4CEPi7L4hxA(m7MrprGo} z!wF+_m9wpe{51PS?Z=T@fI(5#VZ)n=Ke&gR~_2;V+ZM^}t*)RKj<9Q3lJ4^4# z?OjnX&;9w%@~I$o;oK&+pgR@HvKK4%tl?3KTV^lR8oK|%A1Rzk(<~}y&ew9eieEud zLb_&&@#&g>kjH!Mo5&sCj642Sui)2^F%>=MlXcsIGWCeq4yw;^uAJ$Vl2TPXEVMR_5l%QK;9V zTSN+Gv|@~=7hWUNB+PJ9jsT)3aiYDw{jvqhM0D3TZ{F;T~7MJd7a=Hzmw4)C{_CIp2Qw43JR%x?-L6ae%0iG^y#wqZFICTe_`E+EZBP}%GT4{~#F z0V$4*+?4gVzqQ!}YQ;z7x!k}NNFxi?Qtdz&3D1~5d=IIZXTHACmN%4?wm{zb4%8zr zqD%_lGu%p=!hnP^w;|QP|I^~r+_{aWX*!>d-e$hus;nuq_ClHGfrl^B1S8h1b6c

)7;^XtIFG`<6F?%=kFo4ax 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 glGsfkBAdti+IgfYOMAq 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 ai9Oluq?qrCj|CI8pYm?iT?so5pZ!1bq*tB* literal 0 HcmV?d00001 diff --git a/docs/images/taxprofiler_tube.svg b/docs/images/taxprofiler_tube.svg new file mode 100644 index 0000000..0ea3460 --- /dev/null +++ b/docs/images/taxprofiler_tube.svg @@ -0,0 +1,4407 @@ + + + +SEQUENCINGQUALITY CONTROLfastqfastqfastqfasta(ADAPTER TRIMMING & MERGING)(COMPLEXITY FILTERING)(HOST REMOVAL)(RUN MERGING)TAXONOMIC CLASSIFICATIONSUMMARY STATISTICSfastpAdapterRemovalBBDukPRINSEQ++Short ReadsAll ReadsProfileMultiple databasesLog FilesLong ReadsBowtie2catminimap2FiltlongMultiQCKronaPorechopBrackenKraken2KrakenUniqCentrifugeKaijumOTUsMetaPhlAn3MALTDIAMONDFastQCFastQCFastQC(LENGTH FILTERING)taxfindertaxprofiler/dbtsvtsvtsvtsvtsvtsvtsvtsvtsvtsvMANDATORY STEP(OPTIONAL STEP)htmlhtml From 832d981976da4a49041d72fa519b3e56ff517543 Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Wed, 7 Sep 2022 12:22:17 +0200 Subject: [PATCH 339/789] Don't have per sample directory as unnecessary if file names are unique with the db in them --- conf/modules.config | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/conf/modules.config b/conf/modules.config index 7c1ceba..e367a67 100644 --- a/conf/modules.config +++ b/conf/modules.config @@ -268,7 +268,7 @@ process { // one run with multiple samples, so fix ID to just db name to ensure clean log name ext.prefix = { "${meta.db_name}" } publishDir = [ - path: { "${params.outdir}/malt/${meta.db_name}/${ext.prefix}" }, + path: { "${params.outdir}/malt/${meta.db_name}/" }, mode: params.publish_dir_mode, pattern: '*.{rma6,log,sam}' ] @@ -278,7 +278,7 @@ process { ext.args = "-c2c Taxonomy" ext.prefix = { "${meta.id}" } publishDir = [ - path: { "${params.outdir}/malt/${meta.db_name}/${ext.prefix}" }, + path: { "${params.outdir}/malt/${meta.db_name}/" }, mode: params.publish_dir_mode, pattern: '*.{txt.gz,megan}' ] @@ -288,7 +288,7 @@ process { ext.args = { "${meta.db_params}" } ext.prefix = params.perform_runmerging ? { "${meta.id}-${meta.db_name}" } : { "${meta.id}-${meta.run_accession}-${meta.db_name}" } publishDir = [ - path: { "${params.outdir}/kraken2/${meta.db_name}/${ext.prefix}" }, + path: { "${params.outdir}/kraken2/${meta.db_name}/" }, mode: params.publish_dir_mode, pattern: '*.{txt,report,fastq.gz}' ] @@ -297,7 +297,7 @@ process { withName: KRONA_CLEANUP { ext.prefix = params.perform_runmerging ? { "${meta.id}-${meta.db_name}" } : { "${meta.id}-${meta.run_accession}-${meta.db_name}" } publishDir = [ - path: { "${params.outdir}/krona/${ext.prefix}" }, + path: { "${params.outdir}/krona/" }, mode: params.publish_dir_mode, pattern: '*.{html}' ] @@ -306,7 +306,7 @@ process { withName: KRONA_KTIMPORTTEXT { ext.prefix = { "${meta.tool}-${meta.id}" } publishDir = [ - path: { "${params.outdir}/krona/${ext.prefix}" }, + path: { "${params.outdir}/krona/" }, mode: params.publish_dir_mode, pattern: '*.{html}' ] @@ -321,7 +321,7 @@ process { ext.args = "-i" ext.prefix = { "${meta.tool}-${meta.id}" } publishDir = [ - path: { "${params.outdir}/krona/${ext.prefix}" }, + path: { "${params.outdir}/krona/" }, mode: params.publish_dir_mode, pattern: '*.{html}' ] @@ -331,7 +331,7 @@ process { ext.args = { "${meta.db_params}" } ext.prefix = params.perform_runmerging ? { "${meta.id}-${meta.db_name}" } : { "${meta.id}-${meta.run_accession}-${meta.db_name}" } publishDir = [ - path: { "${params.outdir}/metaphlan3/${meta.db_name}/${ext.prefix}" }, + path: { "${params.outdir}/metaphlan3/${meta.db_name}/" }, mode: params.publish_dir_mode, pattern: '*.{biom,txt}' ] @@ -339,7 +339,7 @@ process { withName: CENTRIFUGE_CENTRIFUGE { publishDir = [ - path: { "${params.outdir}/centrifuge/${meta.db_name}/${ext.prefix}" }, + path: { "${params.outdir}/centrifuge/${meta.db_name}/" }, mode: params.publish_dir_mode, pattern: '*.{txt,sam,gz}' ] @@ -352,7 +352,7 @@ process { ext.args = { "${meta.db_params}" } ext.prefix = params.perform_runmerging ? { "${meta.id}-${meta.db_name}.centrifuge" } : { "${meta.id}-${meta.run_accession}-${meta.db_name}.centrifuge" } publishDir = [ - path: { "${params.outdir}/centrifuge/${meta.db_name}/${ext.prefix}" }, + path: { "${params.outdir}/centrifuge/${meta.db_name}/" }, mode: params.publish_dir_mode, pattern: '*.{txt}' ] @@ -361,7 +361,7 @@ process { withName: KAIJU_KAIJU { ext.prefix = params.perform_runmerging ? { "${meta.id}-${meta.db_name}" } : { "${meta.id}-${meta.run_accession}-${meta.db_name}" } publishDir = [ - path: { "${params.outdir}/kaiju/${meta.db_name}/${ext.prefix}" }, + path: { "${params.outdir}/kaiju/${meta.db_name}/" }, mode: params.publish_dir_mode, pattern: '*.tsv' ] @@ -385,7 +385,7 @@ process { ext.args = { "${meta.db_params}" } ext.prefix = params.perform_runmerging ? { "${meta.id}-${meta.db_name}" } : { "${meta.id}-${meta.run_accession}-${meta.db_name}" } publishDir = [ - path: { "${params.outdir}/diamond/${meta.db_name}/${ext.prefix}" }, + path: { "${params.outdir}/diamond/${meta.db_name}/" }, mode: params.publish_dir_mode, pattern: '*.{blast,xml,txt,daa,sam,tsv,paf,log}' ] @@ -394,7 +394,7 @@ process { withName: MOTUS_PROFILE { ext.prefix = params.perform_runmerging ? { "${meta.id}-${meta.db_name}" } : { "${meta.id}-${meta.run_accession}-${meta.db_name}" } publishDir = [ - path: { "${params.outdir}/motus/${meta.db_name}/${ext.prefix}" }, + path: { "${params.outdir}/motus/${meta.db_name}/" }, mode: params.publish_dir_mode ] } From bbd8049ca1690fbd40f9785d7af93768cc0b50da Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Wed, 7 Sep 2022 13:44:08 +0200 Subject: [PATCH 340/789] Remove duplicated multqic mixing --- workflows/taxprofiler.nf | 2 -- 1 file changed, 2 deletions(-) diff --git a/workflows/taxprofiler.nf b/workflows/taxprofiler.nf index 28d248b..a47b803 100644 --- a/workflows/taxprofiler.nf +++ b/workflows/taxprofiler.nf @@ -271,8 +271,6 @@ workflow TAXPROFILER { ch_multiqc_files = ch_multiqc_files.mix( STANDARDISATION_PROFILES.out.mqc.collect{it[1]}.ifEmpty([]) ) } - ch_multiqc_files = ch_multiqc_files.mix( PROFILING.out.mqc.collect{it[1]}.ifEmpty([]) ) - // TODO create multiQC module for metaphlan MULTIQC ( ch_multiqc_files.collect() From d11257b330dc69b8c96af5c22293b258e4ee63fa Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Thu, 8 Sep 2022 08:08:36 +0200 Subject: [PATCH 341/789] Module update --- modules.json | 232 ++++++++++-------- modules/nf-core/modules/bbmap/bbduk/meta.yml | 1 + modules/nf-core/modules/bowtie2/align/main.nf | 104 ++++---- .../nf-core/modules/bowtie2/align/meta.yml | 11 + modules/nf-core/modules/cat/fastq/main.nf | 33 ++- .../custom/dumpsoftwareversions/main.nf | 8 +- .../templates/dumpsoftwareversions.py | 14 +- modules/nf-core/modules/fastp/main.nf | 22 +- modules/nf-core/modules/fastp/meta.yml | 4 +- modules/nf-core/modules/fastqc/main.nf | 12 + modules/nf-core/modules/gunzip/main.nf | 10 + .../nf-core/modules/kraken2/kraken2/main.nf | 22 +- .../modules/krakentools/kreport2krona/main.nf | 4 +- .../metaphlan3/{ => metaphlan3}/main.nf | 5 +- .../metaphlan3/{ => metaphlan3}/meta.yml | 6 + modules/nf-core/modules/multiqc/main.nf | 28 ++- modules/nf-core/modules/multiqc/meta.yml | 8 + modules/nf-core/modules/samtools/view/main.nf | 2 +- modules/nf-core/modules/untar/main.nf | 27 +- subworkflows/local/profiling.nf | 2 +- subworkflows/local/shortread_hostremoval.nf | 2 +- workflows/taxprofiler.nf | 2 +- 22 files changed, 353 insertions(+), 206 deletions(-) rename modules/nf-core/modules/metaphlan3/{ => metaphlan3}/main.nf (94%) rename modules/nf-core/modules/metaphlan3/{ => metaphlan3}/meta.yml (82%) diff --git a/modules.json b/modules.json index 33c0c10..ecac44a 100644 --- a/modules.json +++ b/modules.json @@ -3,104 +3,140 @@ "homePage": "https://github.com/nf-core/taxprofiler", "repos": { "nf-core/modules": { - "adapterremoval": { - "git_sha": "879d42c5e28661fe0a5e744c9e2c515868f9e08a" - }, - "bbmap/bbduk": { - "git_sha": "e745e167c1020928ef20ea1397b6b4d230681b4d" - }, - "bowtie2/align": { - "git_sha": "e745e167c1020928ef20ea1397b6b4d230681b4d" - }, - "bowtie2/build": { - "git_sha": "e745e167c1020928ef20ea1397b6b4d230681b4d" - }, - "cat/fastq": { - "git_sha": "e745e167c1020928ef20ea1397b6b4d230681b4d" - }, - "centrifuge/centrifuge": { - "git_sha": "d2726fcf75063960f06b36d2229a4c0966614108" - }, - "centrifuge/kreport": { - "git_sha": "734d0db6079a4aa43b6509b207e5d6feb35d4838" - }, - "custom/dumpsoftwareversions": { - "git_sha": "e745e167c1020928ef20ea1397b6b4d230681b4d" - }, - "diamond/blastx": { - "git_sha": "3531824af826c16cd252bc5aa82ae169b244ebaa" - }, - "fastp": { - "git_sha": "d0a1cbb703a130c19f6796c3fce24fbe7dfce789" - }, - "fastqc": { - "git_sha": "e745e167c1020928ef20ea1397b6b4d230681b4d" - }, - "filtlong": { - "git_sha": "957cb9b83668075f4af101fc99502908cca487e3" - }, - "gunzip": { - "git_sha": "9aadd9a6d3f5964476582319b3a1c54a3e3fe7c9" - }, - "kaiju/kaiju": { - "git_sha": "8856f127c58f6af479128be8b8df4d42e442ddbe" - }, - "kaiju/kaiju2krona": { - "git_sha": "2f0b19240430de6807b1232e6d9d0e8084e8a28f" - }, - "kaiju/kaiju2table": { - "git_sha": "538dbac98ba9c8f799536cd5a617195501439457" - }, - "kraken2/kraken2": { - "git_sha": "abe025677cdd805cc93032341ab19885473c1a07" - }, - "krakentools/kreport2krona": { - "git_sha": "8b2a473f586bed003e72d2b183acc43fc0ddc422" - }, - "krona/ktimporttaxonomy": { - "git_sha": "0e9fd9370ad1845870b8a9c63fcc47d999a1739e" - }, - "krona/ktimporttext": { - "git_sha": "cdefbec66999c0b49d8bfeea9d6f9d19056635a2" - }, - "malt/run": { - "git_sha": "be8d7b3293cac26cc63e4dbfb364deb8ed6ec7e5" - }, - "megan/rma2info": { - "git_sha": "2d38566eca4cc15142b2ffa7c11837569b39aece" - }, - "metaphlan3": { - "git_sha": "ed4dd1a928ebf4308efb720de878045f7773f8e2" - }, - "minimap2/align": { - "git_sha": "1a5a9e7b4009dcf34e6867dd1a5a1d9a718b027b" - }, - "minimap2/index": { - "git_sha": "e745e167c1020928ef20ea1397b6b4d230681b4d" - }, - "motus/merge": { - "git_sha": "b02e648c221e1da17cb589eefe297e61ec9e9c49" - }, - "motus/profile": { - "git_sha": "b6ed584443ad68ac41e6975994139454a4f23c18" - }, - "multiqc": { - "git_sha": "e745e167c1020928ef20ea1397b6b4d230681b4d" - }, - "porechop": { - "git_sha": "b78e19b9dae3671db2c7d4346fe04452c1debfab" - }, - "prinseqplusplus": { - "git_sha": "f1c5384c31e985591716afdd732cf8c2ae29d05b" - }, - "samtools/bam2fq": { - "git_sha": "5510ea39fe638594bc26ac34cadf4a84bf27d159" - }, - "samtools/view": { - "git_sha": "6b64f9cb6c3dd3577931cc3cd032d6fb730000ce" - }, - "untar": { - "git_sha": "e080f4c8acf5760039ed12ec1f206170f3f9a918" + "git_url": "https://github.com/nf-core/modules.git", + "modules": { + "adapterremoval": { + "branch": "master", + "git_sha": "879d42c5e28661fe0a5e744c9e2c515868f9e08a" + }, + "bbmap/bbduk": { + "branch": "master", + "git_sha": "848ee9a215d02d80be033bfa60881700f2bd914c" + }, + "bowtie2/align": { + "branch": "master", + "git_sha": "848ee9a215d02d80be033bfa60881700f2bd914c" + }, + "bowtie2/build": { + "branch": "master", + "git_sha": "e745e167c1020928ef20ea1397b6b4d230681b4d" + }, + "cat/fastq": { + "branch": "master", + "git_sha": "b034029b59b1198075da8019074bc02051a6100e" + }, + "centrifuge/centrifuge": { + "branch": "master", + "git_sha": "d2726fcf75063960f06b36d2229a4c0966614108" + }, + "centrifuge/kreport": { + "branch": "master", + "git_sha": "734d0db6079a4aa43b6509b207e5d6feb35d4838" + }, + "custom/dumpsoftwareversions": { + "branch": "master", + "git_sha": "5e7b1ef9a5a2d9258635bcbf70fcf37dacd1b247" + }, + "diamond/blastx": { + "branch": "master", + "git_sha": "3531824af826c16cd252bc5aa82ae169b244ebaa" + }, + "fastp": { + "branch": "master", + "git_sha": "7e8ad566883449e7939062b5e2bcf53fc1e0002f" + }, + "fastqc": { + "branch": "master", + "git_sha": "49b18b1639f4f7104187058866a8fab33332bdfe" + }, + "filtlong": { + "branch": "master", + "git_sha": "957cb9b83668075f4af101fc99502908cca487e3" + }, + "gunzip": { + "branch": "master", + "git_sha": "fa37e0662690c4ec4260dae282fbce08777503e6" + }, + "kaiju/kaiju": { + "branch": "master", + "git_sha": "8856f127c58f6af479128be8b8df4d42e442ddbe" + }, + "kaiju/kaiju2krona": { + "branch": "master", + "git_sha": "2f0b19240430de6807b1232e6d9d0e8084e8a28f" + }, + "kaiju/kaiju2table": { + "branch": "master", + "git_sha": "538dbac98ba9c8f799536cd5a617195501439457" + }, + "kraken2/kraken2": { + "branch": "master", + "git_sha": "409a308ba46284d8ebb48c2c1befd6f6433db3f7" + }, + "krakentools/kreport2krona": { + "branch": "master", + "git_sha": "233fa70811a03a4cecb2ece483b5c8396e2cee1d" + }, + "krona/ktimporttaxonomy": { + "branch": "master", + "git_sha": "0e9fd9370ad1845870b8a9c63fcc47d999a1739e" + }, + "krona/ktimporttext": { + "branch": "master", + "git_sha": "cdefbec66999c0b49d8bfeea9d6f9d19056635a2" + }, + "malt/run": { + "branch": "master", + "git_sha": "be8d7b3293cac26cc63e4dbfb364deb8ed6ec7e5" + }, + "megan/rma2info": { + "branch": "master", + "git_sha": "2d38566eca4cc15142b2ffa7c11837569b39aece" + }, + "metaphlan3/metaphlan3": { + "branch": "master", + "git_sha": "940d7fe9d63962e0e2ba0987e2893fb0aff832e3" + }, + "minimap2/align": { + "branch": "master", + "git_sha": "1a5a9e7b4009dcf34e6867dd1a5a1d9a718b027b" + }, + "minimap2/index": { + "branch": "master", + "git_sha": "e745e167c1020928ef20ea1397b6b4d230681b4d" + }, + "motus/merge": { + "branch": "master", + "git_sha": "b02e648c221e1da17cb589eefe297e61ec9e9c49" + }, + "motus/profile": { + "branch": "master", + "git_sha": "b6ed584443ad68ac41e6975994139454a4f23c18" + }, + "multiqc": { + "branch": "master", + "git_sha": "5138acca0985ca01c38a1c4fba917d83772b1106" + }, + "porechop": { + "branch": "master", + "git_sha": "b78e19b9dae3671db2c7d4346fe04452c1debfab" + }, + "prinseqplusplus": { + "branch": "master", + "git_sha": "f1c5384c31e985591716afdd732cf8c2ae29d05b" + }, + "samtools/bam2fq": { + "branch": "master", + "git_sha": "5510ea39fe638594bc26ac34cadf4a84bf27d159" + }, + "samtools/view": { + "branch": "master", + "git_sha": "5e7b1ef9a5a2d9258635bcbf70fcf37dacd1b247" + }, + "untar": { + "branch": "master", + "git_sha": "5e7b1ef9a5a2d9258635bcbf70fcf37dacd1b247" + } } } } diff --git a/modules/nf-core/modules/bbmap/bbduk/meta.yml b/modules/nf-core/modules/bbmap/bbduk/meta.yml index 6abd3d9..d79b9d0 100644 --- a/modules/nf-core/modules/bbmap/bbduk/meta.yml +++ b/modules/nf-core/modules/bbmap/bbduk/meta.yml @@ -4,6 +4,7 @@ keywords: - trimming - adapter trimming - quality trimming + - fastq tools: - bbmap: description: BBMap is a short read aligner, as well as various other bioinformatic tools. diff --git a/modules/nf-core/modules/bowtie2/align/main.nf b/modules/nf-core/modules/bowtie2/align/main.nf index 7e8a965..c74e376 100644 --- a/modules/nf-core/modules/bowtie2/align/main.nf +++ b/modules/nf-core/modules/bowtie2/align/main.nf @@ -1,77 +1,71 @@ process BOWTIE2_ALIGN { tag "$meta.id" - label 'process_high' + label "process_high" - conda (params.enable_conda ? 'bioconda::bowtie2=2.4.4 bioconda::samtools=1.14 conda-forge::pigz=2.6' : null) - container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/mulled-v2-ac74a7f02cebcfcc07d8e8d1d750af9c83b4d45a:4d235f41348a00533f18e47c9669f1ecb327f629-0' : - 'quay.io/biocontainers/mulled-v2-ac74a7f02cebcfcc07d8e8d1d750af9c83b4d45a:4d235f41348a00533f18e47c9669f1ecb327f629-0' }" + conda (params.enable_conda ? "bioconda::bowtie2=2.4.4 bioconda::samtools=1.15.1 conda-forge::pigz=2.6" : null) + container "${ workflow.containerEngine == "singularity" && !task.ext.singularity_pull_docker_container ? + "https://depot.galaxyproject.org/singularity/mulled-v2-ac74a7f02cebcfcc07d8e8d1d750af9c83b4d45a:1744f68fe955578c63054b55309e05b41c37a80d-0" : + "quay.io/biocontainers/mulled-v2-ac74a7f02cebcfcc07d8e8d1d750af9c83b4d45a:1744f68fe955578c63054b55309e05b41c37a80d-0" }" input: tuple val(meta), path(reads) path index val save_unaligned + val sort_bam output: - tuple val(meta), path('*.bam') , emit: bam - tuple val(meta), path('*.log') , emit: log - tuple val(meta), path('*fastq.gz'), emit: fastq, optional:true + tuple val(meta), path("*.bam") , emit: bam + tuple val(meta), path("*.log") , emit: log + tuple val(meta), path("*fastq.gz"), emit: fastq, optional:true path "versions.yml" , emit: versions when: task.ext.when == null || task.ext.when script: - def args = task.ext.args ?: '' - def args2 = task.ext.args2 ?: '' + def args = task.ext.args ?: "" + def args2 = task.ext.args2 ?: "" def prefix = task.ext.prefix ?: "${meta.id}" - if (meta.single_end) { - def unaligned = save_unaligned ? "--un-gz ${prefix}.unmapped.fastq.gz" : '' - """ - INDEX=`find -L ./ -name "*.rev.1.bt2" | sed 's/.rev.1.bt2//'` - bowtie2 \\ - -x \$INDEX \\ - -U $reads \\ - --threads $task.cpus \\ - $unaligned \\ - $args \\ - 2> ${prefix}.bowtie2.log \\ - | samtools view -@ $task.cpus $args2 -bhS -o ${prefix}.bam - - cat <<-END_VERSIONS > versions.yml - "${task.process}": - bowtie2: \$(echo \$(bowtie2 --version 2>&1) | sed 's/^.*bowtie2-align-s version //; s/ .*\$//') - samtools: \$(echo \$(samtools --version 2>&1) | sed 's/^.*samtools //; s/Using.*\$//') - pigz: \$( pigz --version 2>&1 | sed 's/pigz //g' ) - END_VERSIONS - """ + def unaligned = "" + def reads_args = "" + if (meta.single_end) { + unaligned = save_unaligned ? "--un-gz ${prefix}.unmapped.fastq.gz" : "" + reads_args = "-U ${reads}" } else { - def unaligned = save_unaligned ? "--un-conc-gz ${prefix}.unmapped.fastq.gz" : '' - """ - INDEX=`find -L ./ -name "*.rev.1.bt2" | sed 's/.rev.1.bt2//'` - bowtie2 \\ - -x \$INDEX \\ - -1 ${reads[0]} \\ - -2 ${reads[1]} \\ - --threads $task.cpus \\ - $unaligned \\ - $args \\ - 2> ${prefix}.bowtie2.log \\ - | samtools view -@ $task.cpus $args2 -bhS -o ${prefix}.bam - + unaligned = save_unaligned ? "--un-conc-gz ${prefix}.unmapped.fastq.gz" : "" + reads_args = "-1 ${reads[0]} -2 ${reads[1]}" + } - if [ -f ${prefix}.unmapped.fastq.1.gz ]; then - mv ${prefix}.unmapped.fastq.1.gz ${prefix}.unmapped_1.fastq.gz - fi - if [ -f ${prefix}.unmapped.fastq.2.gz ]; then - mv ${prefix}.unmapped.fastq.2.gz ${prefix}.unmapped_2.fastq.gz - fi + def samtools_command = sort_bam ? 'sort' : 'view' - cat <<-END_VERSIONS > versions.yml - "${task.process}": - bowtie2: \$(echo \$(bowtie2 --version 2>&1) | sed 's/^.*bowtie2-align-s version //; s/ .*\$//') - samtools: \$(echo \$(samtools --version 2>&1) | sed 's/^.*samtools //; s/Using.*\$//') - pigz: \$( pigz --version 2>&1 | sed 's/pigz //g' ) - END_VERSIONS - """ - } + """ + INDEX=`find -L ./ -name "*.rev.1.bt2" | sed "s/.rev.1.bt2//"` + [ -z "\$INDEX" ] && INDEX=`find -L ./ -name "*.rev.1.bt2l" | sed "s/.rev.1.bt2l//"` + [ -z "\$INDEX" ] && echo "Bowtie2 index files not found" 1>&2 && exit 1 + + bowtie2 \\ + -x \$INDEX \\ + $reads_args \\ + --threads $task.cpus \\ + $unaligned \\ + $args \\ + 2> ${prefix}.bowtie2.log \\ + | samtools $samtools_command $args2 --threads $task.cpus -o ${prefix}.bam - + + if [ -f ${prefix}.unmapped.fastq.1.gz ]; then + mv ${prefix}.unmapped.fastq.1.gz ${prefix}.unmapped_1.fastq.gz + fi + + if [ -f ${prefix}.unmapped.fastq.2.gz ]; then + mv ${prefix}.unmapped.fastq.2.gz ${prefix}.unmapped_2.fastq.gz + fi + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + bowtie2: \$(echo \$(bowtie2 --version 2>&1) | sed 's/^.*bowtie2-align-s version //; s/ .*\$//') + samtools: \$(echo \$(samtools --version 2>&1) | sed 's/^.*samtools //; s/Using.*\$//') + pigz: \$( pigz --version 2>&1 | sed 's/pigz //g' ) + END_VERSIONS + """ } diff --git a/modules/nf-core/modules/bowtie2/align/meta.yml b/modules/nf-core/modules/bowtie2/align/meta.yml index f80421e..42ba0f9 100644 --- a/modules/nf-core/modules/bowtie2/align/meta.yml +++ b/modules/nf-core/modules/bowtie2/align/meta.yml @@ -2,7 +2,9 @@ name: bowtie2_align description: Align reads to a reference genome using bowtie2 keywords: - align + - map - fasta + - fastq - genome - reference tools: @@ -29,6 +31,15 @@ input: type: file description: Bowtie2 genome index files pattern: "*.ebwt" + - save_unaligned: + type: boolean + description: | + Save reads that do not map to the reference (true) or discard them (false) + (default: false) + - sort_bam: + type: boolean + description: use samtools sort (true) or samtools view (false) + pattern: "true or false" output: - bam: type: file diff --git a/modules/nf-core/modules/cat/fastq/main.nf b/modules/nf-core/modules/cat/fastq/main.nf index bf0877c..d275f19 100644 --- a/modules/nf-core/modules/cat/fastq/main.nf +++ b/modules/nf-core/modules/cat/fastq/main.nf @@ -4,8 +4,8 @@ process CAT_FASTQ { conda (params.enable_conda ? "conda-forge::sed=4.7" : null) container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://containers.biocontainers.pro/s3/SingImgsRepo/biocontainers/v1.2.0_cv1/biocontainers_v1.2.0_cv1.img' : - 'biocontainers/biocontainers:v1.2.0_cv1' }" + 'https://depot.galaxyproject.org/singularity/ubuntu:20.04' : + 'ubuntu:20.04' }" input: tuple val(meta), path(reads, stageAs: "input*/*") @@ -48,4 +48,33 @@ process CAT_FASTQ { """ } } + + stub: + def prefix = task.ext.prefix ?: "${meta.id}" + def readList = reads.collect{ it.toString() } + if (meta.single_end) { + if (readList.size > 1) { + """ + touch ${prefix}.merged.fastq.gz + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + cat: \$(echo \$(cat --version 2>&1) | sed 's/^.*coreutils) //; s/ .*\$//') + END_VERSIONS + """ + } + } else { + if (readList.size > 2) { + """ + touch ${prefix}_1.merged.fastq.gz + touch ${prefix}_2.merged.fastq.gz + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + cat: \$(echo \$(cat --version 2>&1) | sed 's/^.*coreutils) //; s/ .*\$//') + END_VERSIONS + """ + } + } + } diff --git a/modules/nf-core/modules/custom/dumpsoftwareversions/main.nf b/modules/nf-core/modules/custom/dumpsoftwareversions/main.nf index 327d510..34b50b9 100644 --- a/modules/nf-core/modules/custom/dumpsoftwareversions/main.nf +++ b/modules/nf-core/modules/custom/dumpsoftwareversions/main.nf @@ -1,11 +1,11 @@ process CUSTOM_DUMPSOFTWAREVERSIONS { - label 'process_low' + label 'process_single' // Requires `pyyaml` which does not have a dedicated container but is in the MultiQC container - conda (params.enable_conda ? "bioconda::multiqc=1.11" : null) + conda (params.enable_conda ? 'bioconda::multiqc=1.13a' : null) container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/multiqc:1.11--pyhdfd78af_0' : - 'quay.io/biocontainers/multiqc:1.11--pyhdfd78af_0' }" + 'https://depot.galaxyproject.org/singularity/multiqc:1.13a--pyhdfd78af_1' : + 'quay.io/biocontainers/multiqc:1.13a--pyhdfd78af_1' }" input: path versions diff --git a/modules/nf-core/modules/custom/dumpsoftwareversions/templates/dumpsoftwareversions.py b/modules/nf-core/modules/custom/dumpsoftwareversions/templates/dumpsoftwareversions.py index 787bdb7..d139039 100644 --- a/modules/nf-core/modules/custom/dumpsoftwareversions/templates/dumpsoftwareversions.py +++ b/modules/nf-core/modules/custom/dumpsoftwareversions/templates/dumpsoftwareversions.py @@ -1,10 +1,9 @@ #!/usr/bin/env python +import yaml import platform from textwrap import dedent -import yaml - def _make_versions_html(versions): html = [ @@ -59,12 +58,11 @@ versions_by_module = {} for process, process_versions in versions_by_process.items(): module = process.split(":")[-1] try: - if versions_by_module[module] != process_versions: - raise AssertionError( - "We assume that software versions are the same between all modules. " - "If you see this error-message it means you discovered an edge-case " - "and should open an issue in nf-core/tools. " - ) + assert versions_by_module[module] == process_versions, ( + "We assume that software versions are the same between all modules. " + "If you see this error-message it means you discovered an edge-case " + "and should open an issue in nf-core/tools. " + ) except KeyError: versions_by_module[module] = process_versions diff --git a/modules/nf-core/modules/fastp/main.nf b/modules/nf-core/modules/fastp/main.nf index 5c9e3b8..d9134e1 100644 --- a/modules/nf-core/modules/fastp/main.nf +++ b/modules/nf-core/modules/fastp/main.nf @@ -13,7 +13,7 @@ process FASTP { val save_merged output: - tuple val(meta), path('*.trim.fastq.gz') , optional:true, emit: reads + tuple val(meta), path('*.fastp.fastq.gz') , optional:true, emit: reads tuple val(meta), path('*.json') , emit: json tuple val(meta), path('*.html') , emit: html tuple val(meta), path('*.log') , emit: log @@ -28,19 +28,23 @@ process FASTP { def args = task.ext.args ?: '' // Added soft-links to original fastqs for consistent naming in MultiQC def prefix = task.ext.prefix ?: "${meta.id}" + // Use single ended for interleaved. Add --interleaved_in in config. if (meta.single_end) { def fail_fastq = save_trimmed_fail ? "--failed_out ${prefix}.fail.fastq.gz" : '' """ - [ ! -f ${prefix}.fastq.gz ] && ln -s $reads ${prefix}.fastq.gz - fastp \\ + [ ! -f ${prefix}.fastq.gz ] && ln -sf $reads ${prefix}.fastq.gz + cat ${prefix}.fastq.gz \\ + | fastp \\ + --stdin \\ + --stdout \\ --in1 ${prefix}.fastq.gz \\ - --out1 ${prefix}.trim.fastq.gz \\ --thread $task.cpus \\ --json ${prefix}.fastp.json \\ --html ${prefix}.fastp.html \\ $fail_fastq \\ $args \\ - 2> ${prefix}.fastp.log + 2> ${prefix}.fastp.log \\ + | gzip -c > ${prefix}.fastp.fastq.gz cat <<-END_VERSIONS > versions.yml "${task.process}": fastp: \$(fastp --version 2>&1 | sed -e "s/fastp //g") @@ -50,13 +54,13 @@ process FASTP { def fail_fastq = save_trimmed_fail ? "--unpaired1 ${prefix}_1.fail.fastq.gz --unpaired2 ${prefix}_2.fail.fastq.gz" : '' def merge_fastq = save_merged ? "-m --merged_out ${prefix}.merged.fastq.gz" : '' """ - [ ! -f ${prefix}_1.fastq.gz ] && ln -s ${reads[0]} ${prefix}_1.fastq.gz - [ ! -f ${prefix}_2.fastq.gz ] && ln -s ${reads[1]} ${prefix}_2.fastq.gz + [ ! -f ${prefix}_1.fastq.gz ] && ln -sf ${reads[0]} ${prefix}_1.fastq.gz + [ ! -f ${prefix}_2.fastq.gz ] && ln -sf ${reads[1]} ${prefix}_2.fastq.gz fastp \\ --in1 ${prefix}_1.fastq.gz \\ --in2 ${prefix}_2.fastq.gz \\ - --out1 ${prefix}_1.trim.fastq.gz \\ - --out2 ${prefix}_2.trim.fastq.gz \\ + --out1 ${prefix}_1.fastp.fastq.gz \\ + --out2 ${prefix}_2.fastp.fastq.gz \\ --json ${prefix}.fastp.json \\ --html ${prefix}.fastp.html \\ $fail_fastq \\ diff --git a/modules/nf-core/modules/fastp/meta.yml b/modules/nf-core/modules/fastp/meta.yml index 3274e41..598c336 100644 --- a/modules/nf-core/modules/fastp/meta.yml +++ b/modules/nf-core/modules/fastp/meta.yml @@ -15,7 +15,7 @@ input: - meta: type: map description: | - Groovy Map containing sample information + Groovy Map containing sample information. Use 'single_end: true' to specify single ended or interleaved FASTQs. Use 'single_end: false' for paired-end reads. e.g. [ id:'test', single_end:false ] - reads: type: file @@ -38,7 +38,7 @@ output: - reads: type: file description: The trimmed/modified/unmerged fastq reads - pattern: "*trim.fastq.gz" + pattern: "*fastp.fastq.gz" - json: type: file description: Results in JSON format diff --git a/modules/nf-core/modules/fastqc/main.nf b/modules/nf-core/modules/fastqc/main.nf index ed6b8c5..0573036 100644 --- a/modules/nf-core/modules/fastqc/main.nf +++ b/modules/nf-core/modules/fastqc/main.nf @@ -44,4 +44,16 @@ process FASTQC { END_VERSIONS """ } + + stub: + def prefix = task.ext.prefix ?: "${meta.id}" + """ + touch ${prefix}.html + touch ${prefix}.zip + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + fastqc: \$( fastqc --version | sed -e "s/FastQC v//g" ) + END_VERSIONS + """ } diff --git a/modules/nf-core/modules/gunzip/main.nf b/modules/nf-core/modules/gunzip/main.nf index 61bf1af..7036704 100644 --- a/modules/nf-core/modules/gunzip/main.nf +++ b/modules/nf-core/modules/gunzip/main.nf @@ -31,4 +31,14 @@ process GUNZIP { gunzip: \$(echo \$(gunzip --version 2>&1) | sed 's/^.*(gzip) //; s/ Copyright.*\$//') END_VERSIONS """ + + stub: + gunzip = archive.toString() - '.gz' + """ + touch $gunzip + cat <<-END_VERSIONS > versions.yml + "${task.process}": + gunzip: \$(echo \$(gunzip --version 2>&1) | sed 's/^.*(gzip) //; s/ Copyright.*\$//') + END_VERSIONS + """ } diff --git a/modules/nf-core/modules/kraken2/kraken2/main.nf b/modules/nf-core/modules/kraken2/kraken2/main.nf index d400023..43a1679 100644 --- a/modules/nf-core/modules/kraken2/kraken2/main.nf +++ b/modules/nf-core/modules/kraken2/kraken2/main.nf @@ -14,11 +14,11 @@ process KRAKEN2_KRAKEN2 { val save_reads_assignment output: - tuple val(meta), path('*classified*') , optional:true, emit: classified_reads_fastq - tuple val(meta), path('*unclassified*') , optional:true, emit: unclassified_reads_fastq - tuple val(meta), path('*classifiedreads*'), optional:true, emit: classified_reads_assignment - tuple val(meta), path('*report.txt') , emit: report - path "versions.yml" , emit: versions + tuple val(meta), path('*.classified{.,_}*') , optional:true, emit: classified_reads_fastq + tuple val(meta), path('*.unclassified{.,_}*') , optional:true, emit: unclassified_reads_fastq + tuple val(meta), path('*classifiedreads.txt') , optional:true, emit: classified_reads_assignment + tuple val(meta), path('*report.txt') , emit: report + path "versions.yml" , emit: versions when: task.ext.when == null || task.ext.when @@ -29,9 +29,9 @@ process KRAKEN2_KRAKEN2 { 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_command = save_output_fastqs ? "--classified-out ${classified}" : "" - def unclassified_command = save_output_fastqs ? "--unclassified-out ${unclassified}" : "" - def readclassification_command = save_reads_assignment ? "--output ${prefix}.kraken2.classifiedreads.txt" : "" + def classified_option = save_output_fastqs ? "--classified-out ${classified}" : "" + def unclassified_option = save_output_fastqs ? "--unclassified-out ${unclassified}" : "" + def readclassification_option = save_reads_assignment ? "--output ${prefix}.kraken2.classifiedreads.txt" : "" def compress_reads_command = save_output_fastqs ? "pigz -p $task.cpus *.fastq" : "" """ @@ -40,9 +40,9 @@ process KRAKEN2_KRAKEN2 { --threads $task.cpus \\ --report ${prefix}.kraken2.report.txt \\ --gzip-compressed \\ - $unclassified_command \\ - $classified_command \\ - $readclassification_command \\ + $unclassified_option \\ + $classified_option \\ + $readclassification_option \\ $paired \\ $args \\ $reads diff --git a/modules/nf-core/modules/krakentools/kreport2krona/main.nf b/modules/nf-core/modules/krakentools/kreport2krona/main.nf index 3bf46ee..1fcb1e4 100644 --- a/modules/nf-core/modules/krakentools/kreport2krona/main.nf +++ b/modules/nf-core/modules/krakentools/kreport2krona/main.nf @@ -1,9 +1,8 @@ -def VERSION = '1.2' // Version information not provided by tool on CLI - process KRAKENTOOLS_KREPORT2KRONA { tag "$meta.id" label 'process_low' + // WARN: Version information not provided by tool on CLI. Please update version string below when bumping container versions. conda (params.enable_conda ? "bioconda::krakentools=1.2" : null) container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? 'https://depot.galaxyproject.org/singularity/krakentools:1.2--pyh5e36f6f_0': @@ -22,6 +21,7 @@ process KRAKENTOOLS_KREPORT2KRONA { script: def args = task.ext.args ?: '' def prefix = task.ext.prefix ?: "${meta.id}" + def VERSION = '1.2' // WARN: Version information not provided by tool on CLI. Please update this string when bumping container versions. """ kreport2krona.py \\ -r ${kreport} \\ diff --git a/modules/nf-core/modules/metaphlan3/main.nf b/modules/nf-core/modules/metaphlan3/metaphlan3/main.nf similarity index 94% rename from modules/nf-core/modules/metaphlan3/main.nf rename to modules/nf-core/modules/metaphlan3/metaphlan3/main.nf index bff0eb9..e56f102 100644 --- a/modules/nf-core/modules/metaphlan3/main.nf +++ b/modules/nf-core/modules/metaphlan3/metaphlan3/main.nf @@ -28,15 +28,18 @@ process METAPHLAN3 { def bowtie2_out = "$input_type" == "--input_type bowtie2out" || "$input_type" == "--input_type sam" ? '' : "--bowtie2out ${prefix}.bowtie2out.txt" """ + BT2_DB=`find -L "${metaphlan_db}" -name "*rev.1.bt2" -exec dirname {} \\;` + metaphlan \\ --nproc $task.cpus \\ $input_type \\ $input_data \\ $args \\ $bowtie2_out \\ - --bowtie2db ${metaphlan_db} \\ + --bowtie2db \$BT2_DB \\ --biom ${prefix}.biom \\ --output_file ${prefix}_profile.txt + cat <<-END_VERSIONS > versions.yml "${task.process}": metaphlan3: \$(metaphlan --version 2>&1 | awk '{print \$3}') diff --git a/modules/nf-core/modules/metaphlan3/meta.yml b/modules/nf-core/modules/metaphlan3/metaphlan3/meta.yml similarity index 82% rename from modules/nf-core/modules/metaphlan3/meta.yml rename to modules/nf-core/modules/metaphlan3/metaphlan3/meta.yml index d10a27d..093de5b 100644 --- a/modules/nf-core/modules/metaphlan3/meta.yml +++ b/modules/nf-core/modules/metaphlan3/metaphlan3/meta.yml @@ -24,6 +24,12 @@ input: type: file description: Metaphlan 3.0 can classify the metagenome from a variety of input data types, including FASTQ files (single-end and paired-end), FASTA, bowtie2-produced SAM files (produced from alignments to the MetaPHlAn marker database) and intermediate bowtie2 alignment files (bowtie2out) pattern: "*.{fastq.gz, fasta, fasta.gz, sam, bowtie2out.txt}" + - metaphlan_db: + type: file + description: | + Directory containing pre-downloaded and uncompressed MetaPhlAn3 database downloaded from: http://cmprod1.cibio.unitn.it/biobakery3/metaphlan_databases/. + Note that you will also need to specify `--index` and the database version name (e.g. 'mpa_v31_CHOCOPhlAn_201901') in your module.conf ext.args for METAPHLAN3_METAPHLAN3! + pattern: "*/" output: - meta: diff --git a/modules/nf-core/modules/multiqc/main.nf b/modules/nf-core/modules/multiqc/main.nf index 1264aac..1e7d6af 100644 --- a/modules/nf-core/modules/multiqc/main.nf +++ b/modules/nf-core/modules/multiqc/main.nf @@ -1,13 +1,14 @@ process MULTIQC { label 'process_medium' - conda (params.enable_conda ? 'bioconda::multiqc=1.12' : null) + conda (params.enable_conda ? 'bioconda::multiqc=1.13a' : null) container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/multiqc:1.12--pyhdfd78af_0' : - 'quay.io/biocontainers/multiqc:1.12--pyhdfd78af_0' }" + 'https://depot.galaxyproject.org/singularity/multiqc:1.13a--pyhdfd78af_1' : + 'quay.io/biocontainers/multiqc:1.13a--pyhdfd78af_1' }" input: - path multiqc_files + path multiqc_files, stageAs: "?/*" + tuple path(multiqc_config), path(multiqc_logo) output: path "*multiqc_report.html", emit: report @@ -20,8 +21,25 @@ process MULTIQC { script: def args = task.ext.args ?: '' + def config = multiqc_config ? "--config $multiqc_config" : '' """ - multiqc -f $args . + multiqc \\ + --force \\ + $config \\ + $args \\ + . + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + multiqc: \$( multiqc --version | sed -e "s/multiqc, version //g" ) + END_VERSIONS + """ + + stub: + """ + touch multiqc_data + touch multiqc_plots + touch multiqc_report.html cat <<-END_VERSIONS > versions.yml "${task.process}": diff --git a/modules/nf-core/modules/multiqc/meta.yml b/modules/nf-core/modules/multiqc/meta.yml index 6fa891e..bf3a27f 100644 --- a/modules/nf-core/modules/multiqc/meta.yml +++ b/modules/nf-core/modules/multiqc/meta.yml @@ -17,6 +17,14 @@ input: type: file description: | List of reports / files recognised by MultiQC, for example the html and zip output of FastQC + - multiqc_config: + type: file + description: Config yml for MultiQC + pattern: "*.{yml,yaml}" + - multiqc_logo: + type: file + description: Logo file for MultiQC + pattern: "*.{png}" output: - report: type: file diff --git a/modules/nf-core/modules/samtools/view/main.nf b/modules/nf-core/modules/samtools/view/main.nf index 55194e8..59ded5c 100644 --- a/modules/nf-core/modules/samtools/view/main.nf +++ b/modules/nf-core/modules/samtools/view/main.nf @@ -1,6 +1,6 @@ process SAMTOOLS_VIEW { tag "$meta.id" - label 'process_medium' + label 'process_low' conda (params.enable_conda ? "bioconda::samtools=1.15.1" : null) container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? diff --git a/modules/nf-core/modules/untar/main.nf b/modules/nf-core/modules/untar/main.nf index dc43fb7..4128652 100644 --- a/modules/nf-core/modules/untar/main.nf +++ b/modules/nf-core/modules/untar/main.nf @@ -1,11 +1,11 @@ process UNTAR { tag "$archive" - label 'process_low' + label 'process_single' - conda (params.enable_conda ? "conda-forge::tar=1.32" : null) + conda (params.enable_conda ? "conda-forge::sed=4.7" : null) container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://containers.biocontainers.pro/s3/SingImgsRepo/biocontainers/v1.2.0_cv1/biocontainers_v1.2.0_cv1.img' : - 'biocontainers/biocontainers:v1.2.0_cv1' }" + 'https://depot.galaxyproject.org/singularity/ubuntu:20.04' : + 'ubuntu:20.04' }" input: tuple val(meta), path(archive) @@ -21,12 +21,29 @@ process UNTAR { def args = task.ext.args ?: '' def args2 = task.ext.args2 ?: '' untar = archive.toString() - '.tar.gz' + """ + mkdir output + tar \\ + -C output --strip-components 1 \\ -xzvf \\ $args \\ $archive \\ - $args2 \\ + $args2 + + mv output ${untar} + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + untar: \$(echo \$(tar --version 2>&1) | sed 's/^.*(GNU tar) //; s/ Copyright.*\$//') + END_VERSIONS + """ + + stub: + untar = archive.toString() - '.tar.gz' + """ + touch $untar cat <<-END_VERSIONS > versions.yml "${task.process}": diff --git a/subworkflows/local/profiling.nf b/subworkflows/local/profiling.nf index 17c96f1..ccda0d4 100644 --- a/subworkflows/local/profiling.nf +++ b/subworkflows/local/profiling.nf @@ -7,7 +7,7 @@ include { MEGAN_RMA2INFO as MEGAN_RMA2INFO_TSV } from '../../modules/nf-core/mo include { KRAKEN2_KRAKEN2 } from '../../modules/nf-core/modules/kraken2/kraken2/main' include { CENTRIFUGE_CENTRIFUGE } from '../../modules/nf-core/modules/centrifuge/centrifuge/main' include { CENTRIFUGE_KREPORT } from '../../modules/nf-core/modules/centrifuge/kreport/main' -include { METAPHLAN3 } from '../../modules/nf-core/modules/metaphlan3/main' +include { METAPHLAN3 } from '../../modules/nf-core/modules/metaphlan3/metaphlan3/main' include { KAIJU_KAIJU } from '../../modules/nf-core/modules/kaiju/kaiju/main' include { KAIJU_KAIJU2TABLE } from '../../modules/nf-core/modules/kaiju/kaiju2table/main' include { DIAMOND_BLASTX } from '../../modules/nf-core/modules/diamond/blastx/main' diff --git a/subworkflows/local/shortread_hostremoval.nf b/subworkflows/local/shortread_hostremoval.nf index 505f989..c5f15c7 100644 --- a/subworkflows/local/shortread_hostremoval.nf +++ b/subworkflows/local/shortread_hostremoval.nf @@ -22,7 +22,7 @@ workflow SHORTREAD_HOSTREMOVAL { ch_bowtie2_index = index.first() } - BOWTIE2_ALIGN ( reads, ch_bowtie2_index, true ) + BOWTIE2_ALIGN ( reads, ch_bowtie2_index, true, false ) ch_versions = ch_versions.mix( BOWTIE2_ALIGN.out.versions.first() ) ch_multiqc_files = ch_multiqc_files.mix( BOWTIE2_ALIGN.out.log ) diff --git a/workflows/taxprofiler.nf b/workflows/taxprofiler.nf index 2bd6c01..292d50f 100644 --- a/workflows/taxprofiler.nf +++ b/workflows/taxprofiler.nf @@ -269,7 +269,7 @@ workflow TAXPROFILER { // TODO create multiQC module for metaphlan MULTIQC ( - ch_multiqc_files.collect() + ch_multiqc_files.collect(), [[], []] ) multiqc_report = MULTIQC.out.report.toList() ch_versions = ch_versions.mix(MULTIQC.out.versions) From fc26948950266286f24d53e3e1c3f87bb51e4a95 Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Thu, 8 Sep 2022 12:49:38 +0200 Subject: [PATCH 342/789] Fix MultiQC --- conf/test_nothing.config | 2 +- modules.json | 2 +- modules/nf-core/modules/multiqc/main.nf | 3 ++- modules/nf-core/modules/multiqc/meta.yml | 7 +++++-- workflows/taxprofiler.nf | 14 ++++++-------- 5 files changed, 15 insertions(+), 13 deletions(-) diff --git a/conf/test_nothing.config b/conf/test_nothing.config index 5cd89eb..c0ecece 100644 --- a/conf/test_nothing.config +++ b/conf/test_nothing.config @@ -12,7 +12,7 @@ params { config_profile_name = 'Test profile' - config_profile_description = 'Minimal test dataset without performing any preprocessing nor profiling to check pipeline function. Useful when you only wish to test a single profiler without having to 'opt-out' of all the others' + config_profile_description = "Minimal test dataset without performing any preprocessing nor profiling to check pipeline function. Useful when you only wish to test a single profiler without having to 'opt-out' of all the others" // Limit resources so that this can run on GitHub Actions max_cpus = 2 diff --git a/modules.json b/modules.json index ecac44a..5a62e0c 100644 --- a/modules.json +++ b/modules.json @@ -115,7 +115,7 @@ }, "multiqc": { "branch": "master", - "git_sha": "5138acca0985ca01c38a1c4fba917d83772b1106" + "git_sha": "16eee433b87b303bda650131ac5a0b1ad725e166" }, "porechop": { "branch": "master", diff --git a/modules/nf-core/modules/multiqc/main.nf b/modules/nf-core/modules/multiqc/main.nf index 1e7d6af..c8e6ace 100644 --- a/modules/nf-core/modules/multiqc/main.nf +++ b/modules/nf-core/modules/multiqc/main.nf @@ -8,7 +8,8 @@ process MULTIQC { input: path multiqc_files, stageAs: "?/*" - tuple path(multiqc_config), path(multiqc_logo) + path(multiqc_config) + path(multiqc_logo) output: path "*multiqc_report.html", emit: report diff --git a/modules/nf-core/modules/multiqc/meta.yml b/modules/nf-core/modules/multiqc/meta.yml index bf3a27f..a1029f3 100644 --- a/modules/nf-core/modules/multiqc/meta.yml +++ b/modules/nf-core/modules/multiqc/meta.yml @@ -12,6 +12,7 @@ tools: homepage: https://multiqc.info/ documentation: https://multiqc.info/docs/ licence: ["GPL-3.0-or-later"] + input: - multiqc_files: type: file @@ -19,12 +20,13 @@ input: List of reports / files recognised by MultiQC, for example the html and zip output of FastQC - multiqc_config: type: file - description: Config yml for MultiQC + description: Optional config yml for MultiQC pattern: "*.{yml,yaml}" - multiqc_logo: type: file - description: Logo file for MultiQC + description: Optional logo file for MultiQC pattern: "*.{png}" + output: - report: type: file @@ -46,3 +48,4 @@ authors: - "@abhi18av" - "@bunop" - "@drpatelh" + - "@jfy133" diff --git a/workflows/taxprofiler.nf b/workflows/taxprofiler.nf index 292d50f..8c98595 100644 --- a/workflows/taxprofiler.nf +++ b/workflows/taxprofiler.nf @@ -42,8 +42,7 @@ if (params.run_malt && params.run_krona && !params.krona_taxonomy_directory) log ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */ -ch_multiqc_config = file("$projectDir/assets/multiqc_config.yml", checkIfExists: true) -ch_multiqc_custom_config = params.multiqc_config ? Channel.fromPath(params.multiqc_config) : Channel.empty() +ch_multiqc_config = params.multiqc_config ? file( params.multiqc_config, checkIfExists: true ) : file("$projectDir/assets/multiqc_config.yml", checkIfExists: true) /* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -93,7 +92,7 @@ def multiqc_report = [] workflow TAXPROFILER { ch_versions = Channel.empty() - ch_taxprofiler_logo = Channel.fromPath("$projectDir/docs/images/nf-core-taxprofiler_logo_custom_light.png") + ch_multiqc_logo= Channel.fromPath("$projectDir/docs/images/nf-core-taxprofiler_logo_custom_light.png") /* SUBWORKFLOW: Read in samplesheet, validate and stage input files @@ -241,14 +240,11 @@ workflow TAXPROFILER { ch_workflow_summary = Channel.value(workflow_summary) ch_multiqc_files = Channel.empty() - ch_multiqc_files = ch_multiqc_files.mix(Channel.from(ch_multiqc_config)) - ch_multiqc_files = ch_multiqc_files.mix(ch_multiqc_custom_config.collect().ifEmpty([])) + ch_multiqc_files = ch_multiqc_files.mix(ch_workflow_summary.collectFile(name: 'workflow_summary_mqc.yaml')) ch_multiqc_files = ch_multiqc_files.mix(CUSTOM_DUMPSOFTWAREVERSIONS.out.mqc_yml.collect()) ch_multiqc_files = ch_multiqc_files.mix(FASTQC.out.zip.collect{it[1]}.ifEmpty([])) - ch_multiqc_files = ch_multiqc_files.mix(ch_taxprofiler_logo.ifEmpty([])) - if (params.perform_shortread_qc) { ch_multiqc_files = ch_multiqc_files.mix( SHORTREAD_PREPROCESSING.out.mqc.collect{it[1]}.ifEmpty([]) ) } @@ -269,7 +265,9 @@ workflow TAXPROFILER { // TODO create multiQC module for metaphlan MULTIQC ( - ch_multiqc_files.collect(), [[], []] + ch_multiqc_files.collect(), + ch_multiqc_config, + ch_multiqc_logo ) multiqc_report = MULTIQC.out.report.toList() ch_versions = ch_versions.mix(MULTIQC.out.versions) From 60224e9149b0212aa63d8af0785b71b8c2935224 Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Thu, 8 Sep 2022 14:25:23 +0200 Subject: [PATCH 343/789] Patch fastp until I have an OK on the module update --- modules.json | 3 ++- modules/nf-core/modules/fastp/fastp.diff | 33 ++++++++++++++++++++++++ modules/nf-core/modules/fastp/main.nf | 7 ++--- 3 files changed, 39 insertions(+), 4 deletions(-) create mode 100644 modules/nf-core/modules/fastp/fastp.diff diff --git a/modules.json b/modules.json index 5a62e0c..3b8cab2 100644 --- a/modules.json +++ b/modules.json @@ -43,7 +43,8 @@ }, "fastp": { "branch": "master", - "git_sha": "7e8ad566883449e7939062b5e2bcf53fc1e0002f" + "git_sha": "7e8ad566883449e7939062b5e2bcf53fc1e0002f", + "patch": "modules/nf-core/modules/fastp/fastp.diff" }, "fastqc": { "branch": "master", diff --git a/modules/nf-core/modules/fastp/fastp.diff b/modules/nf-core/modules/fastp/fastp.diff new file mode 100644 index 0000000..a05d486 --- /dev/null +++ b/modules/nf-core/modules/fastp/fastp.diff @@ -0,0 +1,33 @@ +Changes in module 'nf-core/modules/fastp' +--- modules/nf-core/modules/fastp/main.nf ++++ modules/nf-core/modules/fastp/main.nf +@@ -33,9 +33,8 @@ + def fail_fastq = save_trimmed_fail ? "--failed_out ${prefix}.fail.fastq.gz" : '' + """ + [ ! -f ${prefix}.fastq.gz ] && ln -sf $reads ${prefix}.fastq.gz +- cat ${prefix}.fastq.gz \\ +- | fastp \\ +- --stdin \\ ++ ++ fastp \\ + --stdout \\ + --in1 ${prefix}.fastq.gz \\ + --thread $task.cpus \\ +@@ -45,6 +44,7 @@ + $args \\ + 2> ${prefix}.fastp.log \\ + | gzip -c > ${prefix}.fastp.fastq.gz ++ + cat <<-END_VERSIONS > versions.yml + "${task.process}": + fastp: \$(fastp --version 2>&1 | sed -e "s/fastp //g") +@@ -69,6 +69,7 @@ + --detect_adapter_for_pe \\ + $args \\ + 2> ${prefix}.fastp.log ++ + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + +************************************************************ diff --git a/modules/nf-core/modules/fastp/main.nf b/modules/nf-core/modules/fastp/main.nf index d9134e1..abbdbad 100644 --- a/modules/nf-core/modules/fastp/main.nf +++ b/modules/nf-core/modules/fastp/main.nf @@ -33,9 +33,8 @@ process FASTP { def fail_fastq = save_trimmed_fail ? "--failed_out ${prefix}.fail.fastq.gz" : '' """ [ ! -f ${prefix}.fastq.gz ] && ln -sf $reads ${prefix}.fastq.gz - cat ${prefix}.fastq.gz \\ - | fastp \\ - --stdin \\ + + fastp \\ --stdout \\ --in1 ${prefix}.fastq.gz \\ --thread $task.cpus \\ @@ -45,6 +44,7 @@ process FASTP { $args \\ 2> ${prefix}.fastp.log \\ | gzip -c > ${prefix}.fastp.fastq.gz + cat <<-END_VERSIONS > versions.yml "${task.process}": fastp: \$(fastp --version 2>&1 | sed -e "s/fastp //g") @@ -69,6 +69,7 @@ process FASTP { --detect_adapter_for_pe \\ $args \\ 2> ${prefix}.fastp.log + cat <<-END_VERSIONS > versions.yml "${task.process}": From f087136ec94d293710519c0a3205819a12d95453 Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Fri, 9 Sep 2022 11:12:47 +0200 Subject: [PATCH 344/789] use proper working FASTP module --- modules.json | 2 +- modules/nf-core/modules/fastp/fastp.diff | 33 ------------------------ modules/nf-core/modules/fastp/main.nf | 30 ++++++++++++++++----- modules/nf-core/modules/fastp/meta.yml | 3 ++- 4 files changed, 27 insertions(+), 41 deletions(-) delete mode 100644 modules/nf-core/modules/fastp/fastp.diff diff --git a/modules.json b/modules.json index 3b8cab2..7e7ea07 100644 --- a/modules.json +++ b/modules.json @@ -43,7 +43,7 @@ }, "fastp": { "branch": "master", - "git_sha": "7e8ad566883449e7939062b5e2bcf53fc1e0002f", + "git_sha": "2c70c1c1951aaf884d2e8d8d9c871db79f7b35aa", "patch": "modules/nf-core/modules/fastp/fastp.diff" }, "fastqc": { diff --git a/modules/nf-core/modules/fastp/fastp.diff b/modules/nf-core/modules/fastp/fastp.diff deleted file mode 100644 index a05d486..0000000 --- a/modules/nf-core/modules/fastp/fastp.diff +++ /dev/null @@ -1,33 +0,0 @@ -Changes in module 'nf-core/modules/fastp' ---- modules/nf-core/modules/fastp/main.nf -+++ modules/nf-core/modules/fastp/main.nf -@@ -33,9 +33,8 @@ - def fail_fastq = save_trimmed_fail ? "--failed_out ${prefix}.fail.fastq.gz" : '' - """ - [ ! -f ${prefix}.fastq.gz ] && ln -sf $reads ${prefix}.fastq.gz -- cat ${prefix}.fastq.gz \\ -- | fastp \\ -- --stdin \\ -+ -+ fastp \\ - --stdout \\ - --in1 ${prefix}.fastq.gz \\ - --thread $task.cpus \\ -@@ -45,6 +44,7 @@ - $args \\ - 2> ${prefix}.fastp.log \\ - | gzip -c > ${prefix}.fastp.fastq.gz -+ - cat <<-END_VERSIONS > versions.yml - "${task.process}": - fastp: \$(fastp --version 2>&1 | sed -e "s/fastp //g") -@@ -69,6 +69,7 @@ - --detect_adapter_for_pe \\ - $args \\ - 2> ${prefix}.fastp.log -+ - - cat <<-END_VERSIONS > versions.yml - "${task.process}": - -************************************************************ diff --git a/modules/nf-core/modules/fastp/main.nf b/modules/nf-core/modules/fastp/main.nf index abbdbad..11ea4db 100644 --- a/modules/nf-core/modules/fastp/main.nf +++ b/modules/nf-core/modules/fastp/main.nf @@ -26,14 +26,14 @@ process FASTP { script: def args = task.ext.args ?: '' - // Added soft-links to original fastqs for consistent naming in MultiQC def prefix = task.ext.prefix ?: "${meta.id}" + def fail_fastq = save_trimmed_fail && meta.single_end ? "--failed_out ${prefix}.fail.fastq.gz" : save_trimmed_fail && !meta.single_end ? "--unpaired1 ${prefix}_1.fail.fastq.gz --unpaired2 ${prefix}_2.fail.fastq.gz" : '' + // Added soft-links to original fastqs for consistent naming in MultiQC // Use single ended for interleaved. Add --interleaved_in in config. - if (meta.single_end) { - def fail_fastq = save_trimmed_fail ? "--failed_out ${prefix}.fail.fastq.gz" : '' + if ( task.ext.args?.contains('--interleaved_in') ) { """ [ ! -f ${prefix}.fastq.gz ] && ln -sf $reads ${prefix}.fastq.gz - + fastp \\ --stdout \\ --in1 ${prefix}.fastq.gz \\ @@ -45,13 +45,32 @@ process FASTP { 2> ${prefix}.fastp.log \\ | gzip -c > ${prefix}.fastp.fastq.gz + cat <<-END_VERSIONS > versions.yml + "${task.process}": + fastp: \$(fastp --version 2>&1 | sed -e "s/fastp //g") + END_VERSIONS + """ + } else if (meta.single_end) { + """ + [ ! -f ${prefix}.fastq.gz ] && ln -sf $reads ${prefix}.fastq.gz + + fastp \\ + --stdout \\ + --in1 ${prefix}.fastq.gz \\ + --out1 ${prefix}.fastp.fastq.gz \\ + --thread $task.cpus \\ + --json ${prefix}.fastp.json \\ + --html ${prefix}.fastp.html \\ + $fail_fastq \\ + $args \\ + 2> ${prefix}.fastp.log + cat <<-END_VERSIONS > versions.yml "${task.process}": fastp: \$(fastp --version 2>&1 | sed -e "s/fastp //g") END_VERSIONS """ } else { - def fail_fastq = save_trimmed_fail ? "--unpaired1 ${prefix}_1.fail.fastq.gz --unpaired2 ${prefix}_2.fail.fastq.gz" : '' def merge_fastq = save_merged ? "-m --merged_out ${prefix}.merged.fastq.gz" : '' """ [ ! -f ${prefix}_1.fastq.gz ] && ln -sf ${reads[0]} ${prefix}_1.fastq.gz @@ -69,7 +88,6 @@ process FASTP { --detect_adapter_for_pe \\ $args \\ 2> ${prefix}.fastp.log - cat <<-END_VERSIONS > versions.yml "${task.process}": diff --git a/modules/nf-core/modules/fastp/meta.yml b/modules/nf-core/modules/fastp/meta.yml index 598c336..2368fde 100644 --- a/modules/nf-core/modules/fastp/meta.yml +++ b/modules/nf-core/modules/fastp/meta.yml @@ -21,7 +21,8 @@ input: type: file description: | List of input FastQ files of size 1 and 2 for single-end and paired-end data, - respectively. + respectively. If you wish to run interleaved paired-end data, supply as single-end data + but with `--interleaved_in` in your `modules.conf`'s `ext.args` for the module. - save_trimmed_fail: type: boolean description: Specify true to save files that failed to pass trimming thresholds ending in `*.fail.fastq.gz` From b28052f1eca545c98a578f43f593382d913b00e2 Mon Sep 17 00:00:00 2001 From: "James A. Fellows Yates" Date: Fri, 9 Sep 2022 11:15:25 +0200 Subject: [PATCH 345/789] Remove patch from modules.json --- modules.json | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/modules.json b/modules.json index 7e7ea07..385149a 100644 --- a/modules.json +++ b/modules.json @@ -43,8 +43,7 @@ }, "fastp": { "branch": "master", - "git_sha": "2c70c1c1951aaf884d2e8d8d9c871db79f7b35aa", - "patch": "modules/nf-core/modules/fastp/fastp.diff" + "git_sha": "2c70c1c1951aaf884d2e8d8d9c871db79f7b35aa" }, "fastqc": { "branch": "master", From a764bc4807fbd7771de6868977d522bd2b7faa5e Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Fri, 9 Sep 2022 13:57:06 +0200 Subject: [PATCH 346/789] Start works - need updated module though t have meta --- conf/modules.config | 11 +++++- modules.json | 4 +++ .../metaphlan3/mergemetaphlantables/main.nf | 33 ++++++++++++++++++ .../metaphlan3/mergemetaphlantables/meta.yml | 34 +++++++++++++++++++ .../local/standardisation_profiles.nf | 21 ++++++++++-- 5 files changed, 100 insertions(+), 3 deletions(-) create mode 100644 modules/nf-core/modules/metaphlan3/mergemetaphlantables/main.nf create mode 100644 modules/nf-core/modules/metaphlan3/mergemetaphlantables/meta.yml diff --git a/conf/modules.config b/conf/modules.config index e367a67..d4bd038 100644 --- a/conf/modules.config +++ b/conf/modules.config @@ -327,7 +327,7 @@ process { ] } - withName: METAPHLAN3 { + withName: METAPHLAN3_METAPHLAN3 { ext.args = { "${meta.db_params}" } ext.prefix = params.perform_runmerging ? { "${meta.id}-${meta.db_name}" } : { "${meta.id}-${meta.run_accession}-${meta.db_name}" } publishDir = [ @@ -337,6 +337,15 @@ process { ] } + withName: METAPHLAN3_MERGEMETAPHLANTABLES { + ext.prefix = { "${meta.id}_combined_reports" } + publishDir = [ + path: { "${params.outdir}/metaphlan3/" }, + mode: params.publish_dir_mode, + pattern: '*.{txt}' + ] + } + withName: CENTRIFUGE_CENTRIFUGE { publishDir = [ path: { "${params.outdir}/centrifuge/${meta.db_name}/" }, diff --git a/modules.json b/modules.json index 3b8cab2..cbbae85 100644 --- a/modules.json +++ b/modules.json @@ -94,6 +94,10 @@ "branch": "master", "git_sha": "2d38566eca4cc15142b2ffa7c11837569b39aece" }, + "metaphlan3/mergemetaphlantables": { + "branch": "master", + "git_sha": "940d7fe9d63962e0e2ba0987e2893fb0aff832e3" + }, "metaphlan3/metaphlan3": { "branch": "master", "git_sha": "940d7fe9d63962e0e2ba0987e2893fb0aff832e3" diff --git a/modules/nf-core/modules/metaphlan3/mergemetaphlantables/main.nf b/modules/nf-core/modules/metaphlan3/mergemetaphlantables/main.nf new file mode 100644 index 0000000..6fd05e3 --- /dev/null +++ b/modules/nf-core/modules/metaphlan3/mergemetaphlantables/main.nf @@ -0,0 +1,33 @@ +process METAPHLAN3_MERGEMETAPHLANTABLES { + label 'process_single' + + conda (params.enable_conda ? 'bioconda::metaphlan=3.0.12' : null) + container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? + 'https://depot.galaxyproject.org/singularity/metaphlan:3.0.12--pyhb7b1952_0' : + 'quay.io/biocontainers/metaphlan:3.0.12--pyhb7b1952_0' }" + + input: + path(profiles) + + output: + tuple path("${prefix}.txt") , emit: txt + path "versions.yml" , emit: versions + + when: + task.ext.when == null || task.ext.when + + script: + def args = task.ext.args ?: '' + prefix = task.ext.prefix ?: "merged_abundance_table" + """ + merge_metaphlan_tables.py \\ + $args \\ + -o ${prefix}.txt \\ + ${profiles} + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + metaphlan3: \$(metaphlan --version 2>&1 | awk '{print \$3}') + END_VERSIONS + """ +} diff --git a/modules/nf-core/modules/metaphlan3/mergemetaphlantables/meta.yml b/modules/nf-core/modules/metaphlan3/mergemetaphlantables/meta.yml new file mode 100644 index 0000000..c94be25 --- /dev/null +++ b/modules/nf-core/modules/metaphlan3/mergemetaphlantables/meta.yml @@ -0,0 +1,34 @@ +name: "metaphlan3_mergemetaphlantables" +description: Merges output abundance tables from MetaPhlAn3 +keywords: + - metagenomics + - classification + - merge + - table + - profiles +tools: + - metaphlan3: + description: Identify clades (phyla to species) present in the metagenome obtained from a microbiome sample and their relative abundance + homepage: https://huttenhower.sph.harvard.edu/metaphlan/ + documentation: https://github.com/biobakery/MetaPhlAn + doi: "10.7554/eLife.65088" + licence: ["MIT License"] + +input: + - profiles: + type: file + description: List of per-sample MetaPhlAn3 taxonomic abundance tables + pattern: "*" + +output: + - versions: + type: file + description: File containing software versions + pattern: "versions.yml" + - txt: + type: txt + description: Combined MetaPhlAn3 table + pattern: "*.txt" + +authors: + - "@jfy133" diff --git a/subworkflows/local/standardisation_profiles.nf b/subworkflows/local/standardisation_profiles.nf index 8be6020..6d404be 100644 --- a/subworkflows/local/standardisation_profiles.nf +++ b/subworkflows/local/standardisation_profiles.nf @@ -2,8 +2,9 @@ // Standardise output files e.g. aggregation // -include { KAIJU_KAIJU2TABLE } from '../../modules/nf-core/modules/kaiju/kaiju2table/main' -include { MOTUS_MERGE } from '../../modules/nf-core/modules/motus/merge/main' +include { KAIJU_KAIJU2TABLE } from '../../modules/nf-core/modules/kaiju/kaiju2table/main' +include { MOTUS_MERGE } from '../../modules/nf-core/modules/motus/merge/main' +include { METAPHLAN3_MERGEMETAPHLANTABLES } from '../../modules/nf-core/modules/metaphlan3/mergemetaphlantables/main' workflow STANDARDISATION_PROFILES { take: @@ -23,6 +24,7 @@ workflow STANDARDISATION_PROFILES { ch_input_profiles = profiles .branch { motus: it[0]['tool'] == 'motus' + metaphlan3: it[0]['tool'] == 'metaphlan3' unknown: true } @@ -58,6 +60,21 @@ workflow STANDARDISATION_PROFILES { ch_multiqc_files = ch_multiqc_files.mix( KAIJU_KAIJU2TABLE.out.summary ) ch_versions = ch_versions.mix( KAIJU_KAIJU2TABLE.out.versions ) + // MetaPhlAn3 + ch_profiles_for_metaphlan3 = ch_input_profiles.metaphlan3 + .map { [it[0]['db_name'], it[1]] } + .groupTuple() + .map { + [it[1]] + } + + METAPHLAN3_MERGEMETAPHLANTABLES ( ch_profiles_for_metaphlan3 ) + ch_standardised_tables = ch_standardised_tables.mix( METAPHLAN3_MERGEMETAPHLANTABLES.out.txt ) + ch_multiqc_files = ch_multiqc_files.mix( METAPHLAN3_MERGEMETAPHLANTABLES.out.txt ) + ch_versions = ch_versions.mix( METAPHLAN3_MERGEMETAPHLANTABLES.out.versions ) + + // mOTUs + // mOTUs has a 'single' database, and cannot create custom ones. // Therefore removing db info here, and publish merged at root mOTUs results // directory From c8dbf5be47b388d9b711859c820d2c9fd1c5f6ef Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Tue, 13 Sep 2022 15:47:28 +0200 Subject: [PATCH 347/789] Adds KRAKEN_COMBINEKREPORTS for 'native' multi-sample OTU --- conf/modules.config | 9 ++++ modules.json | 4 ++ .../krakentools/combinekreports/main.nf | 34 +++++++++++++++ .../krakentools/combinekreports/meta.yml | 43 +++++++++++++++++++ .../local/standardisation_profiles.nf | 19 +++++++- 5 files changed, 108 insertions(+), 1 deletion(-) create mode 100644 modules/nf-core/modules/krakentools/combinekreports/main.nf create mode 100644 modules/nf-core/modules/krakentools/combinekreports/meta.yml diff --git a/conf/modules.config b/conf/modules.config index e367a67..f31eff5 100644 --- a/conf/modules.config +++ b/conf/modules.config @@ -294,6 +294,15 @@ process { ] } + withName: KRAKENTOOLS_COMBINEKREPORTS { + ext.prefix = { "${meta.id}_combined_reports" } + publishDir = [ + path: { "${params.outdir}/kraken2/" }, + mode: params.publish_dir_mode, + pattern: '*.{txt}' + ] + } + withName: KRONA_CLEANUP { ext.prefix = params.perform_runmerging ? { "${meta.id}-${meta.db_name}" } : { "${meta.id}-${meta.run_accession}-${meta.db_name}" } publishDir = [ diff --git a/modules.json b/modules.json index 385149a..aa358fc 100644 --- a/modules.json +++ b/modules.json @@ -73,6 +73,10 @@ "branch": "master", "git_sha": "409a308ba46284d8ebb48c2c1befd6f6433db3f7" }, + "krakentools/combinekreports": { + "branch": "master", + "git_sha": "ee0346b4d14ffdc15ce7e093ca1363cd07c9bd78" + }, "krakentools/kreport2krona": { "branch": "master", "git_sha": "233fa70811a03a4cecb2ece483b5c8396e2cee1d" diff --git a/modules/nf-core/modules/krakentools/combinekreports/main.nf b/modules/nf-core/modules/krakentools/combinekreports/main.nf new file mode 100644 index 0000000..849f39c --- /dev/null +++ b/modules/nf-core/modules/krakentools/combinekreports/main.nf @@ -0,0 +1,34 @@ +process KRAKENTOOLS_COMBINEKREPORTS { + label 'process_low' + + conda (params.enable_conda ? "bioconda::krakentools=1.2" : null) + container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? + 'https://depot.galaxyproject.org/singularity/krakentools:1.2--pyh5e36f6f_0': + 'quay.io/biocontainers/krakentools:1.2--pyh5e36f6f_0' }" + + input: + tuple val(meta), path(kreports) + + output: + tuple val(meta), path("*.txt"), emit: txt + 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 VERSION = '1.2' // WARN: Version information not provided by tool on CLI. Please update this string when bumping container versions. + """ + combine_kreports.py \\ + -r ${kreports} \\ + -o ${prefix}.txt \\ + ${args} + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + combine_kreports.py: ${VERSION} + END_VERSIONS + """ +} diff --git a/modules/nf-core/modules/krakentools/combinekreports/meta.yml b/modules/nf-core/modules/krakentools/combinekreports/meta.yml new file mode 100644 index 0000000..213fc8c --- /dev/null +++ b/modules/nf-core/modules/krakentools/combinekreports/meta.yml @@ -0,0 +1,43 @@ +name: krakentools_combinekreports +description: Takes a Kraken report file and prints out a krona-compatible TEXT file +keywords: + - kraken + - krakentools + - metagenomics + - table + - combining + - merging +tools: + - krakentools: + description: KrakenTools is a suite of scripts to be used for post-analysis of Kraken/KrakenUniq/Kraken2/Bracken results. Please cite the relevant paper if using KrakenTools with any of the listed programs. + homepage: https://github.com/jenniferlu717/KrakenTools + licence: ["GPL v3"] + +input: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - kreports: + type: file + description: List of kraken-style report files + pattern: "*.{txt,kreport}" + +output: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - versions: + type: file + description: File containing software versions + pattern: "versions.yml" + - txt: + type: file + description: Combined kreport file of all input files + pattern: "*.txt" + +authors: + - "@jfy133" diff --git a/subworkflows/local/standardisation_profiles.nf b/subworkflows/local/standardisation_profiles.nf index 8be6020..14fb718 100644 --- a/subworkflows/local/standardisation_profiles.nf +++ b/subworkflows/local/standardisation_profiles.nf @@ -3,7 +3,8 @@ // include { KAIJU_KAIJU2TABLE } from '../../modules/nf-core/modules/kaiju/kaiju2table/main' -include { MOTUS_MERGE } from '../../modules/nf-core/modules/motus/merge/main' +include { KRAKENTOOLS_COMBINEKREPORTS } from '../../modules/nf-core/modules/krakentools/combinekreports/main' +include { MOTUS_MERGE } from '../../modules/nf-core/modules/motus/merge/main' workflow STANDARDISATION_PROFILES { take: @@ -23,6 +24,7 @@ workflow STANDARDISATION_PROFILES { ch_input_profiles = profiles .branch { motus: it[0]['tool'] == 'motus' + kraken2: it[0]['tool'] == 'kraken2' unknown: true } @@ -58,6 +60,21 @@ workflow STANDARDISATION_PROFILES { ch_multiqc_files = ch_multiqc_files.mix( KAIJU_KAIJU2TABLE.out.summary ) ch_versions = ch_versions.mix( KAIJU_KAIJU2TABLE.out.versions ) + // Kraken2 + + // Collect and replace id for db_name for prefix + ch_profiles_for_kraken2 = ch_input_profiles.kraken2 + .map { [it[0]['db_name'], it[1]] } + .groupTuple(sort: {-it.size()} ) + .map { + [[id:it[0]], it[1]] + } + + KRAKENTOOLS_COMBINEKREPORTS ( ch_profiles_for_kraken2 ) + ch_standardised_tables = ch_standardised_tables.mix( KRAKENTOOLS_COMBINEKREPORTS.out.txt ) + ch_multiqc_files = ch_multiqc_files.mix( KRAKENTOOLS_COMBINEKREPORTS.out.txt ) + ch_versions = ch_versions.mix( KRAKENTOOLS_COMBINEKREPORTS.out.versions ) + // mOTUs has a 'single' database, and cannot create custom ones. // Therefore removing db info here, and publish merged at root mOTUs results // directory From c6645082409f633368a18eaa2a7159971b8b104c Mon Sep 17 00:00:00 2001 From: Sofia Stamouli <91951607+sofstam@users.noreply.github.com> Date: Tue, 13 Sep 2022 15:56:06 +0200 Subject: [PATCH 348/789] Update usage.md --- docs/usage.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/docs/usage.md b/docs/usage.md index 3971c58..3ab6237 100644 --- a/docs/usage.md +++ b/docs/usage.md @@ -410,3 +410,9 @@ We recommend adding the following line to your environment to limit this (typica ```bash NXF_OPTS='-Xms1g -Xmx4g' ``` + +## Troubleshooting and FAQs + +### I get a warning during centrifuge_kreport process when running taxprofiler on a minimal dataset. + +When a sample has no hits, `centrifuge` classifier exits with exit code `255`. The pipeline does not fail and this is provided as a `WARN`. From 05e9d92444d4689c172d2df3176bf180482fa5aa Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Tue, 13 Sep 2022 16:47:19 +0200 Subject: [PATCH 349/789] Add centrigue kreports --- conf/modules.config | 13 +++++++-- .../local/standardisation_profiles.nf | 27 ++++++++++++++++--- 2 files changed, 35 insertions(+), 5 deletions(-) diff --git a/conf/modules.config b/conf/modules.config index f31eff5..2dd163f 100644 --- a/conf/modules.config +++ b/conf/modules.config @@ -295,7 +295,7 @@ process { } withName: KRAKENTOOLS_COMBINEKREPORTS { - ext.prefix = { "${meta.id}_combined_reports" } + ext.prefix = { "kraken2_${meta.id}_combined_reports" } publishDir = [ path: { "${params.outdir}/kraken2/" }, mode: params.publish_dir_mode, @@ -367,6 +367,15 @@ process { ] } + withName: KRAKENTOOLS_COMBINEKREPORTS_CENTRIFUGE { + ext.prefix = { "centrifuge_${meta.id}_combined_reports" } + publishDir = [ + path: { "${params.outdir}/centrifuge/" }, + mode: params.publish_dir_mode, + pattern: '*.{txt}' + ] + } + withName: KAIJU_KAIJU { ext.prefix = params.perform_runmerging ? { "${meta.id}-${meta.db_name}" } : { "${meta.id}-${meta.run_accession}-${meta.db_name}" } publishDir = [ @@ -378,7 +387,7 @@ process { } withName: KAIJU_KAIJU2TABLE { - ext.prefix = { "${meta.id}_combined_reports" } + ext.prefix = { "kaiju_${meta.id}_combined_reports" } publishDir = [ path: { "${params.outdir}/kaiju/" }, mode: params.publish_dir_mode, diff --git a/subworkflows/local/standardisation_profiles.nf b/subworkflows/local/standardisation_profiles.nf index 14fb718..269a22c 100644 --- a/subworkflows/local/standardisation_profiles.nf +++ b/subworkflows/local/standardisation_profiles.nf @@ -2,9 +2,10 @@ // Standardise output files e.g. aggregation // -include { KAIJU_KAIJU2TABLE } from '../../modules/nf-core/modules/kaiju/kaiju2table/main' -include { KRAKENTOOLS_COMBINEKREPORTS } from '../../modules/nf-core/modules/krakentools/combinekreports/main' -include { MOTUS_MERGE } from '../../modules/nf-core/modules/motus/merge/main' +include { KRAKENTOOLS_COMBINEKREPORTS as KRAKENTOOLS_COMBINEKREPORTS_CENTRIFUGE } from '../../modules/nf-core/modules/krakentools/combinekreports/main' +include { KAIJU_KAIJU2TABLE } from '../../modules/nf-core/modules/kaiju/kaiju2table/main' +include { KRAKENTOOLS_COMBINEKREPORTS } from '../../modules/nf-core/modules/krakentools/combinekreports/main' +include { MOTUS_MERGE } from '../../modules/nf-core/modules/motus/merge/main' workflow STANDARDISATION_PROFILES { take: @@ -25,6 +26,7 @@ workflow STANDARDISATION_PROFILES { .branch { motus: it[0]['tool'] == 'motus' kraken2: it[0]['tool'] == 'kraken2' + centrifuge: it[0]['tool'] == 'centrifuge' unknown: true } @@ -45,6 +47,23 @@ workflow STANDARDISATION_PROFILES { Standardise and aggregate */ + // CENTRIFUGE + + // Collect and replace id for db_name for prefix + // Have to sort by size to ensure first file actually has hits otherwise + // the script fails + ch_profiles_for_centrifuge = ch_input_profiles.centrifuge + .map { [it[0]['db_name'], it[1]] } + .groupTuple(sort: {-it.size()} ) + .map { + [[id:it[0]], it[1]] + } + + KRAKENTOOLS_COMBINEKREPORTS_CENTRIFUGE ( ch_profiles_for_centrifuge ) + ch_standardised_tables = ch_standardised_tables.mix( KRAKENTOOLS_COMBINEKREPORTS_CENTRIFUGE.out.txt ) + ch_multiqc_files = ch_multiqc_files.mix( KRAKENTOOLS_COMBINEKREPORTS_CENTRIFUGE.out.txt ) + ch_versions = ch_versions.mix( KRAKENTOOLS_COMBINEKREPORTS_CENTRIFUGE.out.versions ) + // Kaiju // Collect and replace id for db_name for prefix @@ -63,6 +82,8 @@ workflow STANDARDISATION_PROFILES { // Kraken2 // Collect and replace id for db_name for prefix + // Have to sort by size to ensure first file actually has hits otherwise + // the script fails ch_profiles_for_kraken2 = ch_input_profiles.kraken2 .map { [it[0]['db_name'], it[1]] } .groupTuple(sort: {-it.size()} ) From 0072c29a6f963be7396a9b5fee7edec67bfb83f0 Mon Sep 17 00:00:00 2001 From: Sofia Stamouli <91951607+sofstam@users.noreply.github.com> Date: Tue, 13 Sep 2022 18:12:14 +0200 Subject: [PATCH 350/789] Update docs/usage.md Co-authored-by: James A. Fellows Yates --- docs/usage.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/usage.md b/docs/usage.md index 3ab6237..ead0ea2 100644 --- a/docs/usage.md +++ b/docs/usage.md @@ -413,6 +413,6 @@ NXF_OPTS='-Xms1g -Xmx4g' ## Troubleshooting and FAQs -### I get a warning during centrifuge_kreport process when running taxprofiler on a minimal dataset. +### I get a warning during centrifuge_kreport process with exit status 255. When a sample has no hits, `centrifuge` classifier exits with exit code `255`. The pipeline does not fail and this is provided as a `WARN`. From ded6d7ab1f5b595b10cdaf6c5d68b00a30500e18 Mon Sep 17 00:00:00 2001 From: Sofia Stamouli <91951607+sofstam@users.noreply.github.com> Date: Tue, 13 Sep 2022 18:13:00 +0200 Subject: [PATCH 351/789] Update docs/usage.md Co-authored-by: James A. Fellows Yates --- docs/usage.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/docs/usage.md b/docs/usage.md index ead0ea2..8ae5257 100644 --- a/docs/usage.md +++ b/docs/usage.md @@ -415,4 +415,8 @@ NXF_OPTS='-Xms1g -Xmx4g' ### I get a warning during centrifuge_kreport process with exit status 255. -When a sample has no hits, `centrifuge` classifier exits with exit code `255`. The pipeline does not fail and this is provided as a `WARN`. +When a sample has insufficient hits for abundance estimation, the resulting `report.txt` file will be empty. + +When trying to convert this to a kraken-style report, the conversion tool will exit with a status code `255`, and provide a `WARN`. + +This is **not** an error nor a failure of the pipeline, just your sample has no hits to the provided database when using centrifuge. From abbbf9c7ab7eb6ead310bbe9a47706b933c00ac2 Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Wed, 14 Sep 2022 11:16:28 +0200 Subject: [PATCH 352/789] Update to use tar module compatible for our test databases --- modules.json | 6 +++--- modules/nf-core/modules/untar/main.nf | 23 +++++++++++++++++------ modules/nf-core/modules/untar/meta.yml | 8 +++++--- 3 files changed, 25 insertions(+), 12 deletions(-) diff --git a/modules.json b/modules.json index aa358fc..c503b74 100644 --- a/modules.json +++ b/modules.json @@ -107,7 +107,7 @@ }, "minimap2/index": { "branch": "master", - "git_sha": "e745e167c1020928ef20ea1397b6b4d230681b4d" + "git_sha": "73e062cf5e0ef346f65d73009b1b656299359fc5" }, "motus/merge": { "branch": "master", @@ -119,7 +119,7 @@ }, "multiqc": { "branch": "master", - "git_sha": "16eee433b87b303bda650131ac5a0b1ad725e166" + "git_sha": "5587389874dac9c9953a2ab6f01d49af81969492" }, "porechop": { "branch": "master", @@ -139,7 +139,7 @@ }, "untar": { "branch": "master", - "git_sha": "5e7b1ef9a5a2d9258635bcbf70fcf37dacd1b247" + "git_sha": "393dbd6ddafe3f18eac02893dd4a21e4d45de679" } } } diff --git a/modules/nf-core/modules/untar/main.nf b/modules/nf-core/modules/untar/main.nf index 4128652..007871b 100644 --- a/modules/nf-core/modules/untar/main.nf +++ b/modules/nf-core/modules/untar/main.nf @@ -25,12 +25,23 @@ process UNTAR { """ mkdir output - tar \\ - -C output --strip-components 1 \\ - -xzvf \\ - $args \\ - $archive \\ - $args2 + ## Ensures --strip-components only applied when top level of tar contents is a directory + ## If just files or multiple directories, place all in output + if [[ \$(tar -tzf ${archive} | grep "/\$" | wc -l) -eq 1 ]]; then + tar \\ + -C output --strip-components 1 \\ + -xzvf \\ + $args \\ + $archive \\ + $args2 + else + tar \\ + -C output \\ + -xzvf \\ + $args \\ + $archive \\ + $args2 + fi mv output ${untar} diff --git a/modules/nf-core/modules/untar/meta.yml b/modules/nf-core/modules/untar/meta.yml index d426919..ea7a3f3 100644 --- a/modules/nf-core/modules/untar/meta.yml +++ b/modules/nf-core/modules/untar/meta.yml @@ -26,9 +26,9 @@ output: Groovy Map containing sample information e.g. [ id:'test', single_end:false ] - untar: - type: file - description: - pattern: "*.*" + type: directory + description: Directory containing contents of archive + pattern: "*/" - versions: type: file description: File containing software versions @@ -36,3 +36,5 @@ output: authors: - "@joseespinosa" - "@drpatelh" + - "@matthdsm" + - "@jfy133" From 5414ae2e554c834269573ea7c792fd4f5147ee3f Mon Sep 17 00:00:00 2001 From: "James A. Fellows Yates" Date: Wed, 14 Sep 2022 11:20:40 +0200 Subject: [PATCH 353/789] Apply suggestions from code review --- modules.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules.json b/modules.json index c503b74..242e8e8 100644 --- a/modules.json +++ b/modules.json @@ -107,7 +107,7 @@ }, "minimap2/index": { "branch": "master", - "git_sha": "73e062cf5e0ef346f65d73009b1b656299359fc5" + "git_sha": "e745e167c1020928ef20ea1397b6b4d230681b4d" }, "motus/merge": { "branch": "master", @@ -119,7 +119,7 @@ }, "multiqc": { "branch": "master", - "git_sha": "5587389874dac9c9953a2ab6f01d49af81969492" + "git_sha": "16eee433b87b303bda650131ac5a0b1ad725e166" }, "porechop": { "branch": "master", From 5f3eee9a4a2115c5b7e55fdddedad39c540d2cfb Mon Sep 17 00:00:00 2001 From: Rafal Stepien Date: Tue, 16 Aug 2022 15:46:22 -0400 Subject: [PATCH 354/789] Add working version of PEP-nf-core integration --- README.md | 6 +- assets/samplesheet_schema.yaml | 55 ++++ bin/check_samplesheet.py | 236 ------------------ bin/detect_reads.py | 125 ++++++++++ conf/test.config | 6 + conf/test_pep.config | 50 ++++ docs/usage.md | 3 + lib/WorkflowMain.groovy | 2 +- modules.json | 8 + modules/local/samplesheet_check.nf | 6 +- modules/nf-core/modules/eido/convert/main.nf | 37 +++ modules/nf-core/modules/eido/convert/meta.yml | 36 +++ modules/nf-core/modules/eido/validate/main.nf | 32 +++ .../nf-core/modules/eido/validate/meta.yml | 38 +++ nextflow.config | 2 + nextflow_schema.json | 7 +- subworkflows/local/input_check.nf | 9 +- workflows/taxprofiler.nf | 23 +- 18 files changed, 434 insertions(+), 247 deletions(-) create mode 100644 assets/samplesheet_schema.yaml delete mode 100755 bin/check_samplesheet.py create mode 100644 bin/detect_reads.py create mode 100644 conf/test_pep.config create mode 100644 modules/nf-core/modules/eido/convert/main.nf create mode 100644 modules/nf-core/modules/eido/convert/meta.yml create mode 100644 modules/nf-core/modules/eido/validate/main.nf create mode 100644 modules/nf-core/modules/eido/validate/meta.yml diff --git a/README.md b/README.md index 672c2a9..5f4c886 100644 --- a/README.md +++ b/README.md @@ -67,7 +67,11 @@ On release, automated continuous integration tests run the pipeline on a full-si > - If you are using `singularity`, please use the [`nf-core download`](https://nf-co.re/tools/#downloading-pipelines-for-offline-use) command to download images first, before running the pipeline. Setting the [`NXF_SINGULARITY_CACHEDIR` or `singularity.cacheDir`](https://www.nextflow.io/docs/latest/singularity.html?#singularity-docker-hub) Nextflow options enables you to store and re-use the images from a central location for future pipeline runs. > - If you are using `conda`, it is highly recommended to use the [`NXF_CONDA_CACHEDIR` or `conda.cacheDir`](https://www.nextflow.io/docs/latest/conda.html) settings to store the environments in a central location for future pipeline runs. -4. Start running your own analysis! +4. You can also run the pipeline using PEP format as an input by running following command: + ```console + nextflow run main.nf -profile test_pep,docker --outdir + ``` +5. Start running your own analysis! ```console nextflow run nf-core/taxprofiler --input samplesheet.csv --databases database.csv --outdir --run_ --run_ -profile diff --git a/assets/samplesheet_schema.yaml b/assets/samplesheet_schema.yaml new file mode 100644 index 0000000..3b1e978 --- /dev/null +++ b/assets/samplesheet_schema.yaml @@ -0,0 +1,55 @@ +description: A schema for validation of samplesheet.csv for taxprofiler pipeline. +imports: + - https://schema.databio.org/pep/2.1.0.yaml +properties: + samples: + type: array + items: + type: object + properties: + sample: + type: string + description: "Sample identifier." + pattern: "^\\S*$" + run_accession: + type: string + description: "Run accession number." + instrument_platform: + type: string + description: "Name of the platform that sequenced the samples." + enum: + [ + "ABI_SOLID", + "BGISEQ", + "CAPILLARY", + "COMPLETE_GENOMICS", + "DNBSEQ", + "HELICOS", + "ILLUMINA", + "ION_TORRENT", + "LS454", + "OXFORD_NANOPORE", + "PACBIO_SMRT", + ] + fastq1: + type: ["string", "null"] + description: "FASTQ file for read 1." + pattern: "^[\\S]+.(fq\\.gz|fastq\\.gz)$" + fastq2: + type: ["string", "null"] + description: "FASTQ file for read 2." + pattern: "^[\\S]+.(fq\\.gz|fastq\\.gz)$" + fasta: + type: ["string", "null"] + description: "Path to FASTA file." + pattern: "^[\\S]+.(fa\\.gz|fasta\\.gz)$" + required: + - sample + - run_accession + - instrument_platform + files: + - fastq1 + - fastq2 + - fasta +required: + - samples diff --git a/bin/check_samplesheet.py b/bin/check_samplesheet.py deleted file mode 100755 index ca54ed9..0000000 --- a/bin/check_samplesheet.py +++ /dev/null @@ -1,236 +0,0 @@ -#!/usr/bin/env python - -from distutils import extension -import os -import sys -import errno -import argparse - - -def parse_args(args=None): - Description = "Reformat nf-core/taxprofiler samplesheet file and check its contents." - - Epilog = "Example usage: python check_samplesheet.py " - - parser = argparse.ArgumentParser(description=Description, epilog=Epilog) - parser.add_argument("FILE_IN", help="Input samplesheet file.") - parser.add_argument("FILE_OUT", help="Output file.") - return parser.parse_args(args) - - -def make_dir(path): - if len(path) > 0: - try: - os.makedirs(path) - except OSError as exception: - if exception.errno != errno.EEXIST: - raise exception - - -def print_error(error, context="Line", context_str=""): - error_str = "ERROR: Please check samplesheet -> {}".format(error) - if context != "" and context_str != "": - error_str = "ERROR: Please check samplesheet -> {}\n{}: '{}'".format( - error, context.strip(), context_str.strip() - ) - print(error_str) - sys.exit(1) - - -def check_samplesheet(file_in, file_out): - """ - This function checks that the samplesheet follows the following structure: - - sample,run_accession,instrument_platform,fastq_1,fastq_2,fasta - 2611,ERR5766174,ILLUMINA,,,ERX5474930_ERR5766174_1.fa.gz - 2612,ERR5766176,ILLUMINA,ERX5474932_ERR5766176_1.fastq.gz,ERX5474932_ERR5766176_2.fastq.gz, - 2612,ERR5766174,ILLUMINA,ERX5474936_ERR5766180_1.fastq.gz,, - 2613,ERR5766181,ILLUMINA,ERX5474937_ERR5766181_1.fastq.gz,ERX5474937_ERR5766181_2.fastq.gz, - """ - - FQ_EXTENSIONS = (".fq.gz", ".fastq.gz") - FA_EXTENSIONS = ( - ".fa", - ".fa.gz", - ".fasta", - ".fasta.gz", - ".fna", - ".fna.gz", - ".fas", - ".fas.gz", - ) - INSTRUMENT_PLATFORMS = [ - "ABI_SOLID", - "BGISEQ", - "CAPILLARY", - "COMPLETE_GENOMICS", - "DNBSEQ", - "HELICOS", - "ILLUMINA", - "ION_TORRENT", - "LS454", - "OXFORD_NANOPORE", - "PACBIO_SMRT", - ] - - sample_mapping_dict = {} - with open(file_in, "r") as fin: - - ## Check header - MIN_COLS = 4 - HEADER = [ - "sample", - "run_accession", - "instrument_platform", - "fastq_1", - "fastq_2", - "fasta", - ] - header = [x.strip('"') for x in fin.readline().strip().split(",")] - - ## Check for missing mandatory columns - missing_columns = list(set(HEADER) - set(header)) - if len(missing_columns) > 0: - print( - "ERROR: Missing required column header -> {}. Note some columns can otherwise be empty. See pipeline documentation (https://nf-co.re/taxprofiler/usage).".format( - ",".join(missing_columns) - ) - ) - sys.exit(1) - - ## Find locations of mandatory columns - header_locs = {} - for i in HEADER: - header_locs[i] = header.index(i) - - ## Check sample entries - for line in fin: - - ## Pull out only relevant columns for downstream checking - line_parsed = [x.strip().strip('"') for x in line.strip().split(",")] - lspl = [line_parsed[i] for i in header_locs.values()] - - # Check valid number of columns per row - if len(lspl) < len(HEADER): - print_error( - "Invalid number of columns (minimum = {})!".format(len(HEADER)), - "Line", - line, - ) - num_cols = len([x for x in lspl if x]) - if num_cols < MIN_COLS: - print_error( - "Invalid number of populated columns (minimum = {})!".format(MIN_COLS), - "Line", - line, - ) - - ## Check sample name entries - - ( - sample, - run_accession, - instrument_platform, - fastq_1, - fastq_2, - fasta, - ) = lspl[: len(HEADER)] - sample = sample.replace(" ", "_") - if not sample: - print_error("Sample entry has not been specified!", "Line", line) - - ## Check FastQ file extension - for fastq in [fastq_1, fastq_2]: - if fastq: - if fastq.find(" ") != -1: - print_error("FastQ file contains spaces!", "Line", line) - if not fastq.endswith(FQ_EXTENSIONS): - print_error( - f"FastQ file does not have extension {' or '.join(list(FQ_EXTENSIONS))} !", - "Line", - line, - ) - if fasta: - if fasta.find(" ") != -1: - print_error("FastA file contains spaces!", "Line", line) - if not fasta.endswith(FA_EXTENSIONS): - print_error( - f"FastA file does not have extension {' or '.join(list(FA_EXTENSIONS))}!", - "Line", - line, - ) - sample_info = [] - - # Check run_accession - if not run_accession: - print_error("Run accession has not been specified!", "Line", line) - else: - sample_info.append(run_accession) - - # Check instrument_platform - if not instrument_platform: - print_error("Instrument platform has not been specified!", "Line", line) - else: - if instrument_platform not in INSTRUMENT_PLATFORMS: - print_error( - f"Instrument platform {instrument_platform} is not supported!", - f"List of supported platforms {', '.join(INSTRUMENT_PLATFORMS)}", - "Line", - line, - ) - sample_info.append(instrument_platform) - - ## Auto-detect paired-end/single-end - if sample and fastq_1 and fastq_2: ## Paired-end short reads - sample_info.extend(["0", fastq_1, fastq_2, fasta]) - elif sample and fastq_1 and not fastq_2: ## Single-end short/long fastq reads - sample_info.extend(["1", fastq_1, fastq_2, fasta]) - elif sample and fasta and not fastq_1 and not fastq_2: ## Single-end long reads - sample_info.extend(["1", fastq_1, fastq_2, fasta]) - elif fasta and (fastq_1 or fastq_2): - print_error( - "FastQ and FastA files cannot be specified together in the same library!", - "Line", - line, - ) - else: - print_error("Invalid combination of columns provided!", "Line", line) - - ## Create sample mapping dictionary = { sample: [ run_accession, instrument_platform, single_end, fastq_1, fastq_2 , fasta ] } - if sample not in sample_mapping_dict: - sample_mapping_dict[sample] = [sample_info] - else: - if sample_info in sample_mapping_dict[sample]: - print_error("Samplesheet contains duplicate rows!", "Line", line) - else: - sample_mapping_dict[sample].append(sample_info) - - ## Write validated samplesheet with appropriate columns - HEADER_OUT = [ - "sample", - "run_accession", - "instrument_platform", - "single_end", - "fastq_1", - "fastq_2", - "fasta", - ] - if len(sample_mapping_dict) > 0: - out_dir = os.path.dirname(file_out) - make_dir(out_dir) - with open(file_out, "w") as fout: - fout.write(",".join(HEADER_OUT) + "\n") - for sample in sorted(sample_mapping_dict.keys()): - for idx, val in enumerate(sample_mapping_dict[sample]): - fout.write(f"{sample},{','.join(val)}\n") - else: - print_error("No entries to process!", "Samplesheet: {}".format(file_in)) - - -def main(args=None): - args = parse_args(args) - check_samplesheet(args.FILE_IN, args.FILE_OUT) - - -if __name__ == "__main__": - sys.exit(main()) diff --git a/bin/detect_reads.py b/bin/detect_reads.py new file mode 100644 index 0000000..8a1430e --- /dev/null +++ b/bin/detect_reads.py @@ -0,0 +1,125 @@ +#!/usr/bin/env python + +import argparse +import csv +import sys +from typing import List, NoReturn + + +def parse_args(args=None) -> argparse.Namespace: + """ + Reformatting is based on detecting whether the reads are paired or single end. + Script appends appropriate column to samplesheet.csv file. + """ + Description = "Reformat nf-core/taxprofiler samplesheet file." + Epilog = "Example usage: python detect_reads.py " + + parser = argparse.ArgumentParser(description=Description, epilog=Epilog) + parser.add_argument("FILE_IN", help="Input samplesheet file.") + parser.add_argument("FILE_OUT", help="Output file.") + return parser.parse_args(args) + + +class ReadsModifier: + def __init__(self): + self.headers = None + self.sample_index = None + self.fastq_1_index = None + self.fastq_2_index = None + self.fasta_index = None + + def detect_reads_and_reformat(self, input_file_path: str, output_file_path: str) -> NoReturn: + NEW_COLUMN_NAME = "single_end" + new_file_rows = [] + + with open(input_file_path, "r") as input_file: + csv_reader = csv.reader(input_file, delimiter=",") + self.headers = next(csv_reader) + self.headers.append(NEW_COLUMN_NAME) + + self._infer_column_indexes() + + for samplesheet_row in csv_reader: + + if self._is_paired_end_short_read(samplesheet_row): + new_file_rows.append([*samplesheet_row, "0"]) + + elif self._is_single_end_short_long_read(samplesheet_row): + new_file_rows.append([*samplesheet_row, "1"]) + + elif self._is_single_end_long_read(samplesheet_row): + new_file_rows.append([*samplesheet_row, "1"]) + + elif self._is_error_row(samplesheet_row): + self.print_error( + "FastQ and FastA files cannot be specified together in the same library!", + "Line", + ",".join(samplesheet_row), + ) + else: + self.print_error("Invalid combination of columns provided!", "Line", ",".join(samplesheet_row)) + + self.save_reformatted_samplesheet([self.headers] + new_file_rows, output_file_path) + + def _get_row_values(self, samplesheet_row): + """ + This method extracts data from the columns for given row of samplesheet table, based on + previously infered column indexes. + """ + sample = samplesheet_row[self.sample_index] + fastq_1 = samplesheet_row[self.fastq_1_index] if self.fastq_1_index else None + fastq_2 = samplesheet_row[self.fastq_2_index] if self.fastq_2_index else None + fasta = samplesheet_row[self.fasta_index] if self.fasta_index else None + return sample, fastq_1, fastq_2, fasta + + def _infer_column_indexes(self): + """ + This method infers indexes of necessary columns from samplesheet table + """ + self.sample_index = self.headers.index("sample") + self.fastq_1_index = self.headers.index("fastq_1") if "fastq_1" in self.headers else None + self.fastq_2_index = self.headers.index("fastq_2") if "fastq_2" in self.headers else None + self.fasta_index = self.headers.index("fasta") if "fasta" in self.headers else None + + def _is_paired_end_short_read(self, samplesheet_row: List) -> bool: + sample, fastq_1, fastq_2, _ = self._get_row_values(samplesheet_row) + return sample and fastq_1 and fastq_2 + + def _is_single_end_short_long_read(self, samplesheet_row: List) -> bool: + sample, fastq_1, fastq_2, _ = self._get_row_values(samplesheet_row) + return sample and fastq_1 and not fastq_2 + + def _is_single_end_long_read(self, samplesheet_row: List) -> bool: + sample, fastq_1, fastq_2, fasta = self._get_row_values(samplesheet_row) + return sample and fasta and not fastq_1 and not fastq_2 + + def _is_error_row(self, samplesheet_row: List) -> bool: + sample, fastq_1, fastq_2, fasta = self._get_row_values(samplesheet_row) + return fasta and (fastq_1 or fastq_2) + + @staticmethod + def print_error(error: str, context: str = "Line", context_str: str = ""): + error_str = "ERROR: Please check samplesheet -> {}".format(error) + if context != "" and context_str != "": + error_str = "ERROR: Please check samplesheet -> {}\n{}: '{}'".format( + error, context.strip(), context_str.strip() + ) + print(error_str) + sys.exit(1) + + @staticmethod + def save_reformatted_samplesheet(new_file_rows: List[List], output_file_path: str) -> NoReturn: + """ + Write new samplesheet. + """ + with open(output_file_path, "w") as output_file: + csv.writer(output_file).writerows(new_file_rows) + + +def main(args=None): + args = parse_args(args) + ReadsModifier().detect_reads_and_reformat(args.FILE_IN, args.FILE_OUT) + + +if __name__ == "__main__": + sys.exit(main()) diff --git a/conf/test.config b/conf/test.config index a39a107..d5dcd67 100644 --- a/conf/test.config +++ b/conf/test.config @@ -57,4 +57,10 @@ process { withName: MEGAN_RMA2INFO_KRONA { maxForks = 1 } + withName: 'EIDO_VALIDATE' { + ext.args = '--st-index sample' + } + withName: 'EIDO_CONVERT' { + ext.args = '--st-index sample' + } } diff --git a/conf/test_pep.config b/conf/test_pep.config new file mode 100644 index 0000000..e3428fd --- /dev/null +++ b/conf/test_pep.config @@ -0,0 +1,50 @@ +params { + config_profile_name = 'Test PEP profile' + config_profile_description = 'Minimal test dataset to check pipeline function with PEP file as an input.' + + // Limit resources so that this can run on GitHub Actions + max_cpus = 2 + max_memory = '6.GB' + max_time = '6.h' + + // Input data + input = null + pep = 'https://raw.githubusercontent.com/nf-core/test-datasets/modules/data/delete_me/pep/test_pep_format_files/config.yaml' + databases = 'https://raw.githubusercontent.com/nf-core/test-datasets/taxprofiler/database.csv' + perform_shortread_qc = true + perform_longread_qc = true + perform_shortread_complexityfilter = true + perform_shortread_hostremoval = true + perform_longread_hostremoval = true + perform_runmerging = true + hostremoval_reference = 'https://raw.githubusercontent.com/nf-core/test-datasets/modules/data/genomics/homo_sapiens/genome/genome.fasta' + run_kaiju = true + run_kraken2 = true + run_malt = true + run_metaphlan3 = true + run_centrifuge = true + run_diamond = true + run_motus = false + run_krona = true + krona_taxonomy_directory = 'https://raw.githubusercontent.com/nf-core/test-datasets/modules/data/genomics/sarscov2/metagenome/krona_taxonomy.tab' + malt_save_reads = true + kraken2_save_reads = true + centrifuge_save_reads = true + diamond_save_reads = true +} + + +process { + withName: MALT_RUN { + maxForks = 1 + } + withName: MEGAN_RMA2INFO { + maxForks = 1 + } + withName: 'EIDO_VALIDATE' { + ext.args = '--st-index sample' + } + withName: 'EIDO_CONVERT' { + ext.args = '--st-index sample' + } +} diff --git a/docs/usage.md b/docs/usage.md index 8ae5257..cd4b749 100644 --- a/docs/usage.md +++ b/docs/usage.md @@ -277,6 +277,9 @@ If `-profile` is not specified, the pipeline will run locally and expect all sof - `test` - A profile with a complete configuration for automated testing - Includes links to test data so needs no other parameters +- `test_pep` + - A profile with a complete configuration for running a pipeline with PEP as input + - Includes links to test data so needs no other parameters ### `-resume` diff --git a/lib/WorkflowMain.groovy b/lib/WorkflowMain.groovy index c90cf49..b9dd514 100755 --- a/lib/WorkflowMain.groovy +++ b/lib/WorkflowMain.groovy @@ -74,7 +74,7 @@ class WorkflowMain { NfcoreTemplate.awsBatch(workflow, params) // Check input has been provided - if (!params.input) { + if (!params.input && !params.pep) { log.error "Please provide an input samplesheet to the pipeline e.g. '--input samplesheet.csv'" System.exit(1) } diff --git a/modules.json b/modules.json index 385149a..feed11f 100644 --- a/modules.json +++ b/modules.json @@ -41,6 +41,14 @@ "branch": "master", "git_sha": "3531824af826c16cd252bc5aa82ae169b244ebaa" }, + "eido/convert": { + "branch": "master", + "git_sha": "c9b29c76869d9713130a13a418c1e8b5aecfb80d" + }, + "eido/validate": { + "branch": "master", + "git_sha": "8c0127e071711cb0a2648a6bdf881637a9d7eadc" + }, "fastp": { "branch": "master", "git_sha": "2c70c1c1951aaf884d2e8d8d9c871db79f7b35aa" diff --git a/modules/local/samplesheet_check.nf b/modules/local/samplesheet_check.nf index dea4362..f048351 100644 --- a/modules/local/samplesheet_check.nf +++ b/modules/local/samplesheet_check.nf @@ -13,11 +13,9 @@ process SAMPLESHEET_CHECK { path '*.csv' , emit: csv path "versions.yml", emit: versions - script: // This script is bundled with the pipeline, in nf-core/taxprofiler/bin/ + script: // detect_reads.py script is bundled with the pipeline, in nf-core/taxprofiler/bin/ """ - check_samplesheet.py \\ - $samplesheet \\ - samplesheet.valid.csv + python3 $projectDir/bin/detect_reads.py $samplesheet samplesheet_validated.csv cat <<-END_VERSIONS > versions.yml "${task.process}": diff --git a/modules/nf-core/modules/eido/convert/main.nf b/modules/nf-core/modules/eido/convert/main.nf new file mode 100644 index 0000000..40cd57a --- /dev/null +++ b/modules/nf-core/modules/eido/convert/main.nf @@ -0,0 +1,37 @@ +process EIDO_CONVERT { + tag '$samplesheet' + label 'process_single' + + conda (params.enable_conda ? "conda-forge::eido=0.1.9" : null) + container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? + 'https://containers.biocontainers.pro/s3/SingImgsRepo/eido/0.1.9_cv1/eido_0.1.9_cv1.sif' : + 'biocontainers/eido:0.1.9_cv1' }" + + input: + path samplesheet + val format + + output: + path "versions.yml" , emit: versions + path "${prefix}.${format}" , emit: samplesheet_converted + + when: + task.ext.when == null || task.ext.when + + script: + def args = task.ext.args ?: '' + prefix = task.ext.prefix ?: "samplesheet_converted" + """ + eido \\ + convert \\ + -f $format \\ + $samplesheet \\ + $args \\ + -p samples=${prefix}.${format} + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + eido: \$(echo \$(eido --version 2>&1) | sed 's/^.*eido //;s/ .*//' )) + END_VERSIONS + """ +} diff --git a/modules/nf-core/modules/eido/convert/meta.yml b/modules/nf-core/modules/eido/convert/meta.yml new file mode 100644 index 0000000..0cf354a --- /dev/null +++ b/modules/nf-core/modules/eido/convert/meta.yml @@ -0,0 +1,36 @@ +name: "eido_convert" +description: Convert any PEP project or Nextflow samplesheet to any format +keywords: + - eido + - convert + - PEP + - format + - samplesheet +tools: + - "eido": + description: "Convert any PEP project or Nextflow samplesheet to any format" + homepage: "http://eido.databio.org/en/latest/" + documentation: "http://eido.databio.org/en/latest/" + doi: "10.1093/gigascience/giab077" + licence: "BSD-2-Clause" + +input: + - samplesheet: + type: file + description: Nextflow samplesheet or PEP project + pattern: "*.{yaml,yml,csv}" + - format: + type: value + description: Extension of an output file + +output: + - versions: + type: file + description: File containing software versions + pattern: "versions.yml" + - samplesheet_converted: + type: file + description: PEP project or samplesheet converted to csv file + +authors: + - "@rafalstepien" diff --git a/modules/nf-core/modules/eido/validate/main.nf b/modules/nf-core/modules/eido/validate/main.nf new file mode 100644 index 0000000..bc6a111 --- /dev/null +++ b/modules/nf-core/modules/eido/validate/main.nf @@ -0,0 +1,32 @@ +process EIDO_VALIDATE { + tag '$samplesheet' + label 'process_single' + + conda (params.enable_conda ? "conda-forge::eido=0.1.9" : null) + container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? + 'https://containers.biocontainers.pro/s3/SingImgsRepo/eido/0.1.9_cv2/eido_0.1.9_cv2.sif' : + 'biocontainers/eido:0.1.9_cv2' }" + + input: + path samplesheet + path schema + + output: + path "versions.yml" , emit: versions + path "*.log" , emit: log + + when: + task.ext.when == null || task.ext.when + + script: + def args = task.ext.args ?: '' + def prefix = task.ext.prefix ?: "validation" + """ + eido validate $args $samplesheet -s $schema -e > ${prefix}.log + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + eido: \$(echo \$(eido --version 2>&1) | sed 's/^.*eido //;s/ .*//' )) + END_VERSIONS + """ +} diff --git a/modules/nf-core/modules/eido/validate/meta.yml b/modules/nf-core/modules/eido/validate/meta.yml new file mode 100644 index 0000000..962f59e --- /dev/null +++ b/modules/nf-core/modules/eido/validate/meta.yml @@ -0,0 +1,38 @@ +name: "eido_validate" +description: Validate samplesheet or PEP config against a schema +keywords: + - eido + - validate + - schema + - format + - pep +tools: + - "validate": + description: "Validate samplesheet or PEP config against a schema." + homepage: "http://eido.databio.org/en/latest/" + documentation: "http://eido.databio.org/en/latest/" + doi: "10.1093/gigascience/giab077" + licence: "BSD-2-Clause" + +input: + - samplesheet: + type: file + description: Samplesheet or PEP file to be validated + pattern: "*.{yaml,yml,csv}" + - schema: + type: file + description: Schema that the samplesheet will be validated against + pattern: "*.{yaml,yml}" + +output: + - versions: + type: file + description: File containing software versions + pattern: "versions.yml" + - log: + type: file + description: File containing validation log. + pattern: "*.log" + +authors: + - "@rafalstepien" diff --git a/nextflow.config b/nextflow.config index df5b90b..f3c7756 100644 --- a/nextflow.config +++ b/nextflow.config @@ -12,6 +12,7 @@ params { // TODO nf-core: Specify your pipeline's command line flags // Input options input = null + pep = null // References @@ -227,6 +228,7 @@ profiles { test_nopreprocessing { includeConfig 'conf/test_nopreprocessing.config' } test_nothing { includeConfig 'conf/test_nothing.config' } test_motus { includeConfig 'conf/test_motus.config' } + test_pep { includeConfig 'conf/test_pep.config' } } diff --git a/nextflow_schema.json b/nextflow_schema.json index eb839ec..e8690f2 100644 --- a/nextflow_schema.json +++ b/nextflow_schema.json @@ -10,8 +10,13 @@ "type": "object", "fa_icon": "fas fa-terminal", "description": "Define where the pipeline should find input data and save output data.", - "required": ["input", "databases", "outdir"], + "required": ["outdir", "databases"], "properties": { + "pep": { + "type": "string", + "format": "file-path", + "pattern": "^\\S+\\.yaml$" + }, "input": { "type": "string", "format": "file-path", diff --git a/subworkflows/local/input_check.nf b/subworkflows/local/input_check.nf index eb21b9d..5db1520 100644 --- a/subworkflows/local/input_check.nf +++ b/subworkflows/local/input_check.nf @@ -3,13 +3,18 @@ // include { SAMPLESHEET_CHECK } from '../../modules/local/samplesheet_check' +include { EIDO_VALIDATE } from '../../modules/nf-core/modules/eido/validate/main' +include { EIDO_CONVERT } from '../../modules/nf-core/modules/eido/convert/main' workflow INPUT_CHECK { take: - samplesheet // file: /path/to/samplesheet.csv + samplesheet_or_pep_config // file: /path/to/samplesheet.csv or /path/to/pep/config.yaml + base_dir // file: path to PEP directory main: - parsed_samplesheet = SAMPLESHEET_CHECK ( samplesheet ) + EIDO_VALIDATE ( samplesheet_or_pep_config, file("$projectDir/assets/samplesheet_schema.yaml") ) + converted_samplesheet = EIDO_CONVERT ( samplesheet_or_pep_config, "csv" ) + parsed_samplesheet = SAMPLESHEET_CHECK ( converted_samplesheet.samplesheet_converted ) .csv .splitCsv ( header:true, sep:',' ) .branch { diff --git a/workflows/taxprofiler.nf b/workflows/taxprofiler.nf index 223ba15..1f38214 100644 --- a/workflows/taxprofiler.nf +++ b/workflows/taxprofiler.nf @@ -17,7 +17,26 @@ def checkPathParamList = [ params.input, params.databases, params.hostremoval_re for (param in checkPathParamList) { if (param) { file(param, checkIfExists: true) } } // Check mandatory parameters -if (params.input ) { ch_input = file(params.input) } else { exit 1, 'Input samplesheet not specified!' } +if (params.input) { + ch_input = file(params.input) + ch_input_basedir = [] + +} else if (params.pep) { + + if ( params.pep.startsWith("http://") || params.pep.startsWith("https://") ) { + ch_input = file(params.pep) + ch_input_basedir = [] + } + + else { + ch_input = file(params.pep) + ch_input_basedir = new File(params.pep).getParent() + } + +} else { + exit 1, 'Input samplesheet or PEP config not specified!' +} + if (params.databases) { ch_databases = file(params.databases) } else { exit 1, 'Input database sheet not specified!' } if (params.shortread_qc_mergepairs && params.run_malt ) log.warn "[nf-core/taxprofiler] MALT does not accept uncollapsed paired-reads. Pairs will be profiled as separate files." @@ -98,7 +117,7 @@ workflow TAXPROFILER { SUBWORKFLOW: Read in samplesheet, validate and stage input files */ INPUT_CHECK ( - ch_input + ch_input, ch_input_basedir ) ch_versions = ch_versions.mix(INPUT_CHECK.out.versions) From 23a33a63ccd163e08cc4cfe9ed34e4682575967e Mon Sep 17 00:00:00 2001 From: "James A. Fellows Yates" Date: Thu, 15 Sep 2022 08:11:37 +0200 Subject: [PATCH 355/789] Update README.md --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index 672c2a9..ddbaddf 100644 --- a/README.md +++ b/README.md @@ -12,6 +12,8 @@ ## Introduction +> ⚠️ This pipeline is still under development! While the pipeline is usable, not all functionality will be available! + **nf-core/taxprofiler** is a bioinformatics best-practice analysis pipeline for taxonomic profiling of shotgun metagenomic data. It allows for in-parallel profiling with multiple profiling tools against multiple databases, produces standardised output tables. From 21ae9d85c3ca05adb2b48a72389abd4195fd21a2 Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Thu, 15 Sep 2022 12:29:54 +0200 Subject: [PATCH 356/789] Ensure merge metaphlan3 tables happens on per database basis --- modules.json | 4 ++-- .../modules/metaphlan3/mergemetaphlantables/main.nf | 6 +++--- .../modules/metaphlan3/mergemetaphlantables/meta.yml | 10 ++++++++++ modules/nf-core/modules/metaphlan3/metaphlan3/main.nf | 2 +- modules/nf-core/modules/metaphlan3/metaphlan3/meta.yml | 2 +- subworkflows/local/profiling.nf | 8 ++++---- subworkflows/local/standardisation_profiles.nf | 2 +- 7 files changed, 22 insertions(+), 12 deletions(-) diff --git a/modules.json b/modules.json index cbbae85..7c02b3e 100644 --- a/modules.json +++ b/modules.json @@ -96,11 +96,11 @@ }, "metaphlan3/mergemetaphlantables": { "branch": "master", - "git_sha": "940d7fe9d63962e0e2ba0987e2893fb0aff832e3" + "git_sha": "36bcd675ae76a379a38165898a203f4915823f4f" }, "metaphlan3/metaphlan3": { "branch": "master", - "git_sha": "940d7fe9d63962e0e2ba0987e2893fb0aff832e3" + "git_sha": "978087354eb72ac1f6e18a3f790fad9bc4d05840" }, "minimap2/align": { "branch": "master", diff --git a/modules/nf-core/modules/metaphlan3/mergemetaphlantables/main.nf b/modules/nf-core/modules/metaphlan3/mergemetaphlantables/main.nf index 6fd05e3..7c37eca 100644 --- a/modules/nf-core/modules/metaphlan3/mergemetaphlantables/main.nf +++ b/modules/nf-core/modules/metaphlan3/mergemetaphlantables/main.nf @@ -7,10 +7,10 @@ process METAPHLAN3_MERGEMETAPHLANTABLES { 'quay.io/biocontainers/metaphlan:3.0.12--pyhb7b1952_0' }" input: - path(profiles) + tuple val(meta), path(profiles) output: - tuple path("${prefix}.txt") , emit: txt + tuple val(meta), path("${prefix}.txt") , emit: txt path "versions.yml" , emit: versions when: @@ -18,7 +18,7 @@ process METAPHLAN3_MERGEMETAPHLANTABLES { script: def args = task.ext.args ?: '' - prefix = task.ext.prefix ?: "merged_abundance_table" + prefix = task.ext.prefix ?: "${meta.id}" """ merge_metaphlan_tables.py \\ $args \\ diff --git a/modules/nf-core/modules/metaphlan3/mergemetaphlantables/meta.yml b/modules/nf-core/modules/metaphlan3/mergemetaphlantables/meta.yml index c94be25..365973e 100644 --- a/modules/nf-core/modules/metaphlan3/mergemetaphlantables/meta.yml +++ b/modules/nf-core/modules/metaphlan3/mergemetaphlantables/meta.yml @@ -15,12 +15,22 @@ tools: licence: ["MIT License"] input: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] - profiles: type: file description: List of per-sample MetaPhlAn3 taxonomic abundance tables pattern: "*" output: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] - versions: type: file description: File containing software versions diff --git a/modules/nf-core/modules/metaphlan3/metaphlan3/main.nf b/modules/nf-core/modules/metaphlan3/metaphlan3/main.nf index e56f102..1453466 100644 --- a/modules/nf-core/modules/metaphlan3/metaphlan3/main.nf +++ b/modules/nf-core/modules/metaphlan3/metaphlan3/main.nf @@ -1,4 +1,4 @@ -process METAPHLAN3 { +process METAPHLAN3_METAPHLAN3 { tag "$meta.id" label 'process_high' diff --git a/modules/nf-core/modules/metaphlan3/metaphlan3/meta.yml b/modules/nf-core/modules/metaphlan3/metaphlan3/meta.yml index 093de5b..659d83a 100644 --- a/modules/nf-core/modules/metaphlan3/metaphlan3/meta.yml +++ b/modules/nf-core/modules/metaphlan3/metaphlan3/meta.yml @@ -1,4 +1,4 @@ -name: metaphlan3 +name: metaphlan3_metaphlan3 description: MetaPhlAn is a tool for profiling the composition of microbial communities from metagenomic shotgun sequencing data. keywords: - metagenomics diff --git a/subworkflows/local/profiling.nf b/subworkflows/local/profiling.nf index 37b4a2c..c2ef508 100644 --- a/subworkflows/local/profiling.nf +++ b/subworkflows/local/profiling.nf @@ -7,7 +7,7 @@ include { MEGAN_RMA2INFO as MEGAN_RMA2INFO_TSV } from '../../modules/nf-core/mo include { KRAKEN2_KRAKEN2 } from '../../modules/nf-core/modules/kraken2/kraken2/main' include { CENTRIFUGE_CENTRIFUGE } from '../../modules/nf-core/modules/centrifuge/centrifuge/main' include { CENTRIFUGE_KREPORT } from '../../modules/nf-core/modules/centrifuge/kreport/main' -include { METAPHLAN3 } from '../../modules/nf-core/modules/metaphlan3/metaphlan3/main' +include { METAPHLAN3_METAPHLAN3 } from '../../modules/nf-core/modules/metaphlan3/metaphlan3/main' include { KAIJU_KAIJU } from '../../modules/nf-core/modules/kaiju/kaiju/main' include { DIAMOND_BLASTX } from '../../modules/nf-core/modules/diamond/blastx/main' include { MOTUS_PROFILE } from '../../modules/nf-core/modules/motus/profile/main' @@ -168,9 +168,9 @@ workflow PROFILING { db: it[3] } - METAPHLAN3 ( ch_input_for_metaphlan3.reads, ch_input_for_metaphlan3.db ) - ch_versions = ch_versions.mix( METAPHLAN3.out.versions.first() ) - ch_raw_profiles = ch_raw_profiles.mix( METAPHLAN3.out.biom ) + METAPHLAN3_METAPHLAN3 ( ch_input_for_metaphlan3.reads, ch_input_for_metaphlan3.db ) + ch_versions = ch_versions.mix( METAPHLAN3_METAPHLAN3.out.versions.first() ) + ch_raw_profiles = ch_raw_profiles.mix( METAPHLAN3_METAPHLAN3.out.profile ) } diff --git a/subworkflows/local/standardisation_profiles.nf b/subworkflows/local/standardisation_profiles.nf index 6d404be..a557bff 100644 --- a/subworkflows/local/standardisation_profiles.nf +++ b/subworkflows/local/standardisation_profiles.nf @@ -65,7 +65,7 @@ workflow STANDARDISATION_PROFILES { .map { [it[0]['db_name'], it[1]] } .groupTuple() .map { - [it[1]] + [[id:it[0]], it[1]] } METAPHLAN3_MERGEMETAPHLANTABLES ( ch_profiles_for_metaphlan3 ) From 19a195ed147ce775260b86c4d939966b51b40634 Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Thu, 15 Sep 2022 12:30:39 +0200 Subject: [PATCH 357/789] Append profiler to resulting file --- conf/modules.config | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/conf/modules.config b/conf/modules.config index d4bd038..01e0e17 100644 --- a/conf/modules.config +++ b/conf/modules.config @@ -338,7 +338,7 @@ process { } withName: METAPHLAN3_MERGEMETAPHLANTABLES { - ext.prefix = { "${meta.id}_combined_reports" } + ext.prefix = { "metaphlan3_${meta.id}_combined_reports" } publishDir = [ path: { "${params.outdir}/metaphlan3/" }, mode: params.publish_dir_mode, From 768f9980d8b9296068ff4e02b6a6e4a90e83effd Mon Sep 17 00:00:00 2001 From: Rafal Stepien Date: Thu, 15 Sep 2022 12:31:49 -0400 Subject: [PATCH 358/789] Add pep_input_base_dir to workflow. Just need to update modules --- README.md | 8 +++----- assets/samplesheet_schema.yaml | 6 +++--- docs/usage.md | 4 ++++ subworkflows/local/input_check.nf | 6 +++--- workflows/taxprofiler.nf | 8 ++++---- 5 files changed, 17 insertions(+), 15 deletions(-) diff --git a/README.md b/README.md index 5f4c886..6f64c5a 100644 --- a/README.md +++ b/README.md @@ -67,16 +67,14 @@ On release, automated continuous integration tests run the pipeline on a full-si > - If you are using `singularity`, please use the [`nf-core download`](https://nf-co.re/tools/#downloading-pipelines-for-offline-use) command to download images first, before running the pipeline. Setting the [`NXF_SINGULARITY_CACHEDIR` or `singularity.cacheDir`](https://www.nextflow.io/docs/latest/singularity.html?#singularity-docker-hub) Nextflow options enables you to store and re-use the images from a central location for future pipeline runs. > - If you are using `conda`, it is highly recommended to use the [`NXF_CONDA_CACHEDIR` or `conda.cacheDir`](https://www.nextflow.io/docs/latest/conda.html) settings to store the environments in a central location for future pipeline runs. -4. You can also run the pipeline using PEP format as an input by running following command: - ```console - nextflow run main.nf -profile test_pep,docker --outdir - ``` -5. Start running your own analysis! +4. Start running your own analysis! ```console nextflow run nf-core/taxprofiler --input samplesheet.csv --databases database.csv --outdir --run_ --run_ -profile ``` + Note pipeline supports both CSV and PEP input sample sheets. Find out more [here](http://pep.databio.org/en/2.1.0/specification/). + ## Documentation The nf-core/taxprofiler pipeline comes with documentation about the pipeline [usage](https://nf-co.re/taxprofiler/usage), [parameters](https://nf-co.re/taxprofiler/parameters) and [output](https://nf-co.re/taxprofiler/output). diff --git a/assets/samplesheet_schema.yaml b/assets/samplesheet_schema.yaml index 3b1e978..88ff451 100644 --- a/assets/samplesheet_schema.yaml +++ b/assets/samplesheet_schema.yaml @@ -33,15 +33,15 @@ properties: ] fastq1: type: ["string", "null"] - description: "FASTQ file for read 1." + description: "Optional FASTQ file for read 1 of paired-end sequenced libraries." pattern: "^[\\S]+.(fq\\.gz|fastq\\.gz)$" fastq2: type: ["string", "null"] - description: "FASTQ file for read 2." + description: "Optional FASTQ file for read 2 of paired-end sequenced libraries." pattern: "^[\\S]+.(fq\\.gz|fastq\\.gz)$" fasta: type: ["string", "null"] - description: "Path to FASTA file." + description: "Optional FASTA file." pattern: "^[\\S]+.(fa\\.gz|fasta\\.gz)$" required: - sample diff --git a/docs/usage.md b/docs/usage.md index cd4b749..252c84d 100644 --- a/docs/usage.md +++ b/docs/usage.md @@ -22,6 +22,10 @@ This samplesheet is then specified on the command line as follows: --input '[path to samplesheet file]' --databases '[path to database sheet file]' ``` +Note pipeline supports both CSV and PEP input sample sheets. Find out more [here](http://pep.databio.org/en/2.1.0/specification/). +When using PEP as an input, the `samplesheet.csv` must be placed in the same folder +as `config.yaml` file. A path to `samplesheet.csv` within the config must be absolute. + ### Multiple runs of the same sample The `sample` identifiers have to be the same when you have re-sequenced the same sample more than once e.g. to increase sequencing depth. The pipeline will concatenate different runs FASTQ files of the same sample before performing profiling, when `--perform_runmerging` is supplied. Below is an example for the same sample sequenced across 3 lanes: diff --git a/subworkflows/local/input_check.nf b/subworkflows/local/input_check.nf index 5db1520..0a07538 100644 --- a/subworkflows/local/input_check.nf +++ b/subworkflows/local/input_check.nf @@ -9,11 +9,11 @@ include { EIDO_CONVERT } from '../../modules/nf-core/modules/eido/convert/main' workflow INPUT_CHECK { take: samplesheet_or_pep_config // file: /path/to/samplesheet.csv or /path/to/pep/config.yaml - base_dir // file: path to PEP directory + ch_pep_input_base_dir main: - EIDO_VALIDATE ( samplesheet_or_pep_config, file("$projectDir/assets/samplesheet_schema.yaml") ) - converted_samplesheet = EIDO_CONVERT ( samplesheet_or_pep_config, "csv" ) + EIDO_VALIDATE ( samplesheet_or_pep_config, file("$projectDir/assets/samplesheet_schema.yaml"), ch_pep_input_base_dir ) + converted_samplesheet = EIDO_CONVERT ( samplesheet_or_pep_config, "csv", ch_pep_input_base_dir ) parsed_samplesheet = SAMPLESHEET_CHECK ( converted_samplesheet.samplesheet_converted ) .csv .splitCsv ( header:true, sep:',' ) diff --git a/workflows/taxprofiler.nf b/workflows/taxprofiler.nf index 1f38214..76cc83c 100644 --- a/workflows/taxprofiler.nf +++ b/workflows/taxprofiler.nf @@ -19,18 +19,18 @@ for (param in checkPathParamList) { if (param) { file(param, checkIfExists: true // Check mandatory parameters if (params.input) { ch_input = file(params.input) - ch_input_basedir = [] + ch_pep_input_base_dir = [] } else if (params.pep) { if ( params.pep.startsWith("http://") || params.pep.startsWith("https://") ) { ch_input = file(params.pep) - ch_input_basedir = [] + ch_pep_input_base_dir = [] } else { ch_input = file(params.pep) - ch_input_basedir = new File(params.pep).getParent() + ch_pep_input_base_dir = new File(params.pep).getParent() } } else { @@ -117,7 +117,7 @@ workflow TAXPROFILER { SUBWORKFLOW: Read in samplesheet, validate and stage input files */ INPUT_CHECK ( - ch_input, ch_input_basedir + ch_input, ch_pep_input_base_dir ) ch_versions = ch_versions.mix(INPUT_CHECK.out.versions) From 4e7857e2edbfed4776c0775859084b045316b5d8 Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Fri, 16 Sep 2022 08:36:34 +0200 Subject: [PATCH 359/789] Standardise mOTUs table merge --- conf/modules.config | 2 ++ modules.json | 6 +++--- modules/nf-core/modules/motus/merge/main.nf | 13 +++++++------ subworkflows/local/standardisation_profiles.nf | 13 ++++++++++++- 4 files changed, 24 insertions(+), 10 deletions(-) diff --git a/conf/modules.config b/conf/modules.config index 2dd163f..3bd9a32 100644 --- a/conf/modules.config +++ b/conf/modules.config @@ -418,6 +418,8 @@ process { } withName: MOTUS_MERGE { + ext.args = { params.generate_biom_output ? "-B" : "" } + ext.prefix = { "motus_${meta.id}_combined_reports" } publishDir = [ path: { "${params.outdir}/motus/" }, mode: params.publish_dir_mode diff --git a/modules.json b/modules.json index 242e8e8..3149225 100644 --- a/modules.json +++ b/modules.json @@ -99,7 +99,7 @@ }, "metaphlan3/metaphlan3": { "branch": "master", - "git_sha": "940d7fe9d63962e0e2ba0987e2893fb0aff832e3" + "git_sha": "978087354eb72ac1f6e18a3f790fad9bc4d05840" }, "minimap2/align": { "branch": "master", @@ -107,11 +107,11 @@ }, "minimap2/index": { "branch": "master", - "git_sha": "e745e167c1020928ef20ea1397b6b4d230681b4d" + "git_sha": "73e062cf5e0ef346f65d73009b1b656299359fc5" }, "motus/merge": { "branch": "master", - "git_sha": "b02e648c221e1da17cb589eefe297e61ec9e9c49" + "git_sha": "8372df6fb2a7638adacae070860685373be61e1f" }, "motus/profile": { "branch": "master", diff --git a/modules/nf-core/modules/motus/merge/main.nf b/modules/nf-core/modules/motus/merge/main.nf index 01ca5a2..dcab92f 100644 --- a/modules/nf-core/modules/motus/merge/main.nf +++ b/modules/nf-core/modules/motus/merge/main.nf @@ -1,6 +1,7 @@ VERSION = '3.0.1' process MOTUS_MERGE { + tag "$meta.id" label 'process_low' conda (params.enable_conda ? "bioconda::motus=3.0.1" : null) @@ -9,14 +10,14 @@ process MOTUS_MERGE { 'quay.io/biocontainers/motus:3.0.1--pyhdfd78af_0' }" input: - path input + tuple val(meta), path(input) path db // to stop docker saying it can't find it... would have to have the module in upstream steps anyway path profile_version_yml, stageAs: 'profile_version.yml' val biom_format output: - path("*.txt") , optional: true, emit: txt - path("*.biom"), optional: true, emit: biom + tuple val(meta), path("*.txt") , optional: true, emit: txt + tuple val(meta), path("*.biom"), optional: true, emit: biom path "versions.yml" , emit: versions when: @@ -24,16 +25,16 @@ process MOTUS_MERGE { script: def args = task.ext.args ?: '' - def prefix = 'motus_merged' + def prefix = task.ext.prefix ?: "${meta.id}" def cmd_input = input.size() > 1 ? "-i ${input.join(',')}" : input.isDirectory() ? "-d ${input}" : "-i ${input}" - def output = biom_format ? "-B -o ${prefix}.biom" : "-o ${prefix}.txt" + def suffix = task.ext.args?.contains("-B") ? "biom" : "txt" """ motus \\ merge \\ -db $db \\ ${cmd_input} \\ $args \\ - ${output} + -o ${prefix}.${suffix} ## Take version from the mOTUs/profile module output, as cannot reconstruct ## version without having database staged in this directory. diff --git a/subworkflows/local/standardisation_profiles.nf b/subworkflows/local/standardisation_profiles.nf index 269a22c..a82b59d 100644 --- a/subworkflows/local/standardisation_profiles.nf +++ b/subworkflows/local/standardisation_profiles.nf @@ -96,10 +96,21 @@ workflow STANDARDISATION_PROFILES { ch_multiqc_files = ch_multiqc_files.mix( KRAKENTOOLS_COMBINEKREPORTS.out.txt ) ch_versions = ch_versions.mix( KRAKENTOOLS_COMBINEKREPORTS.out.versions ) + // mOTUs + // mOTUs has a 'single' database, and cannot create custom ones. // Therefore removing db info here, and publish merged at root mOTUs results // directory - MOTUS_MERGE ( ch_input_profiles.motus.map{it[1]}.collect(), ch_input_databases.motus.map{it[1]}, motu_version, params.generate_biom_output ) + + ch_profiles_for_motus = ch_input_profiles.motus + .map { [it[0]['db_name'], it[1]] } + .groupTuple() + .map { + [[id:it[0]], it[1]] + } + + MOTUS_MERGE ( ch_profiles_for_motus, ch_input_databases.motus.map{it[1]}, motu_version, [] ) + if ( params.generate_biom_output ) { ch_standardised_tables = ch_standardised_tables.mix ( MOTUS_MERGE.out.biom ) } else { From 2c83b367a7eebbda6ff64539925e321de10befa5 Mon Sep 17 00:00:00 2001 From: "James A. Fellows Yates" Date: Fri, 16 Sep 2022 09:28:42 +0200 Subject: [PATCH 360/789] Apply suggestions from code review --- modules.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules.json b/modules.json index 3149225..913c795 100644 --- a/modules.json +++ b/modules.json @@ -99,7 +99,7 @@ }, "metaphlan3/metaphlan3": { "branch": "master", - "git_sha": "978087354eb72ac1f6e18a3f790fad9bc4d05840" + "git_sha": "940d7fe9d63962e0e2ba0987e2893fb0aff832e3" }, "minimap2/align": { "branch": "master", @@ -107,7 +107,7 @@ }, "minimap2/index": { "branch": "master", - "git_sha": "73e062cf5e0ef346f65d73009b1b656299359fc5" + "git_sha": "e745e167c1020928ef20ea1397b6b4d230681b4d" }, "motus/merge": { "branch": "master", From c5cc21d29e0cc06482be02450210d85c33ea85bd Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Fri, 16 Sep 2022 10:25:24 +0200 Subject: [PATCH 361/789] Update motus merge module to remove unused channel --- modules.json | 2 +- modules/nf-core/modules/motus/merge/main.nf | 1 - modules/nf-core/modules/motus/merge/meta.yml | 3 --- subworkflows/local/standardisation_profiles.nf | 2 +- 4 files changed, 2 insertions(+), 6 deletions(-) diff --git a/modules.json b/modules.json index 3149225..64fc39e 100644 --- a/modules.json +++ b/modules.json @@ -111,7 +111,7 @@ }, "motus/merge": { "branch": "master", - "git_sha": "8372df6fb2a7638adacae070860685373be61e1f" + "git_sha": "54ff289487244bf15543ecfa62bd4df49be72b73" }, "motus/profile": { "branch": "master", diff --git a/modules/nf-core/modules/motus/merge/main.nf b/modules/nf-core/modules/motus/merge/main.nf index dcab92f..a050c7a 100644 --- a/modules/nf-core/modules/motus/merge/main.nf +++ b/modules/nf-core/modules/motus/merge/main.nf @@ -13,7 +13,6 @@ process MOTUS_MERGE { tuple val(meta), path(input) path db // to stop docker saying it can't find it... would have to have the module in upstream steps anyway path profile_version_yml, stageAs: 'profile_version.yml' - val biom_format output: tuple val(meta), path("*.txt") , optional: true, emit: txt diff --git a/modules/nf-core/modules/motus/merge/meta.yml b/modules/nf-core/modules/motus/merge/meta.yml index c9c7711..02d11d0 100644 --- a/modules/nf-core/modules/motus/merge/meta.yml +++ b/modules/nf-core/modules/motus/merge/meta.yml @@ -35,9 +35,6 @@ input: this itself without having the motus database present and configured with the tool so here we take it from what is already reported by the upstream module. pattern: "versions.yml" - - biom_format: - type: boolean - description: Whether to save output OTU table in biom format output: - versions: diff --git a/subworkflows/local/standardisation_profiles.nf b/subworkflows/local/standardisation_profiles.nf index a82b59d..9a867d1 100644 --- a/subworkflows/local/standardisation_profiles.nf +++ b/subworkflows/local/standardisation_profiles.nf @@ -109,7 +109,7 @@ workflow STANDARDISATION_PROFILES { [[id:it[0]], it[1]] } - MOTUS_MERGE ( ch_profiles_for_motus, ch_input_databases.motus.map{it[1]}, motu_version, [] ) + MOTUS_MERGE ( ch_profiles_for_motus, ch_input_databases.motus.map{it[1]}, motu_version ) if ( params.generate_biom_output ) { ch_standardised_tables = ch_standardised_tables.mix ( MOTUS_MERGE.out.biom ) From f43c54317ccdbb4798708b751206d59eaeeb2f02 Mon Sep 17 00:00:00 2001 From: "James A. Fellows Yates" Date: Fri, 16 Sep 2022 15:20:47 +0200 Subject: [PATCH 362/789] Update subworkflows/local/standardisation_profiles.nf Co-authored-by: Sofia Stamouli <91951607+sofstam@users.noreply.github.com> --- subworkflows/local/standardisation_profiles.nf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/subworkflows/local/standardisation_profiles.nf b/subworkflows/local/standardisation_profiles.nf index f63c10a..c8c364d 100644 --- a/subworkflows/local/standardisation_profiles.nf +++ b/subworkflows/local/standardisation_profiles.nf @@ -5,7 +5,7 @@ include { KAIJU_KAIJU2TABLE } from '../../modules/nf-core/modules/kaiju/kaiju2table/main' include { KRAKENTOOLS_COMBINEKREPORTS } from '../../modules/nf-core/modules/krakentools/combinekreports/main' include { KRAKENTOOLS_COMBINEKREPORTS as KRAKENTOOLS_COMBINEKREPORTS_CENTRIFUGE } from '../../modules/nf-core/modules/krakentools/combinekreports/main' -include { METAPHLAN3_MERGEMETAPHLANTABLES } from '../../modules/nf-core/modules/metaphlan3/mergemetaphlantables/main' +include { METAPHLAN3_MERGEMETAPHLANTABLES } from '../../modules/nf-core/modules/metaphlan3/mergemetaphlantables/main' include { MOTUS_MERGE } from '../../modules/nf-core/modules/motus/merge/main' workflow STANDARDISATION_PROFILES { From 93493468649e3f1504ca1b15eaaaf85b4555b876 Mon Sep 17 00:00:00 2001 From: Rafal Stepien Date: Fri, 16 Sep 2022 09:08:28 -0400 Subject: [PATCH 363/789] Remove --pep parameter and leave just --input --- README.md | 2 +- conf/modules.config | 8 +++++++ conf/test_pep.config | 9 +------- lib/WorkflowMain.groovy | 4 ++-- modules.json | 4 ++-- modules/nf-core/modules/eido/convert/main.nf | 1 + modules/nf-core/modules/eido/convert/meta.yml | 3 +++ modules/nf-core/modules/eido/validate/main.nf | 1 + .../nf-core/modules/eido/validate/meta.yml | 3 +++ nextflow.config | 1 - nextflow_schema.json | 9 ++------ workflows/taxprofiler.nf | 21 +++++++++---------- 12 files changed, 34 insertions(+), 32 deletions(-) diff --git a/README.md b/README.md index 6f64c5a..d1e6f33 100644 --- a/README.md +++ b/README.md @@ -73,7 +73,7 @@ On release, automated continuous integration tests run the pipeline on a full-si nextflow run nf-core/taxprofiler --input samplesheet.csv --databases database.csv --outdir --run_ --run_ -profile ``` - Note pipeline supports both CSV and PEP input sample sheets. Find out more [here](http://pep.databio.org/en/2.1.0/specification/). +Note pipeline supports both CSV and PEP input sample sheets. Find out more [here](http://pep.databio.org/en/2.1.0/specification/). ## Documentation diff --git a/conf/modules.config b/conf/modules.config index e367a67..0efd251 100644 --- a/conf/modules.config +++ b/conf/modules.config @@ -421,4 +421,12 @@ process { saveAs: { filename -> filename.equals('versions.yml') ? null : filename } ] } + + withName: 'EIDO_VALIDATE' { + ext.args = '--st-index sample' + } + + withName: 'EIDO_CONVERT' { + ext.args = '--st-index sample' + } } diff --git a/conf/test_pep.config b/conf/test_pep.config index e3428fd..7f8c95d 100644 --- a/conf/test_pep.config +++ b/conf/test_pep.config @@ -8,8 +8,7 @@ params { max_time = '6.h' // Input data - input = null - pep = 'https://raw.githubusercontent.com/nf-core/test-datasets/modules/data/delete_me/pep/test_pep_format_files/config.yaml' + input = 'https://raw.githubusercontent.com/nf-core/test-datasets/modules/data/delete_me/pep/test_pep_format_files/config.yaml' databases = 'https://raw.githubusercontent.com/nf-core/test-datasets/taxprofiler/database.csv' perform_shortread_qc = true perform_longread_qc = true @@ -41,10 +40,4 @@ process { withName: MEGAN_RMA2INFO { maxForks = 1 } - withName: 'EIDO_VALIDATE' { - ext.args = '--st-index sample' - } - withName: 'EIDO_CONVERT' { - ext.args = '--st-index sample' - } } diff --git a/lib/WorkflowMain.groovy b/lib/WorkflowMain.groovy index b9dd514..7883d70 100755 --- a/lib/WorkflowMain.groovy +++ b/lib/WorkflowMain.groovy @@ -74,8 +74,8 @@ class WorkflowMain { NfcoreTemplate.awsBatch(workflow, params) // Check input has been provided - if (!params.input && !params.pep) { - log.error "Please provide an input samplesheet to the pipeline e.g. '--input samplesheet.csv'" + if (!params.input) { + log.error "Please provide an input samplesheet or PEP to the pipeline e.g. '--input samplesheet.csv'" System.exit(1) } } diff --git a/modules.json b/modules.json index feed11f..d24c7e2 100644 --- a/modules.json +++ b/modules.json @@ -43,11 +43,11 @@ }, "eido/convert": { "branch": "master", - "git_sha": "c9b29c76869d9713130a13a418c1e8b5aecfb80d" + "git_sha": "9764eef361ded86e9242075bda64c2662421386a" }, "eido/validate": { "branch": "master", - "git_sha": "8c0127e071711cb0a2648a6bdf881637a9d7eadc" + "git_sha": "38383cfaefc06cd35e25de99989a3e6ab9ed2980" }, "fastp": { "branch": "master", diff --git a/modules/nf-core/modules/eido/convert/main.nf b/modules/nf-core/modules/eido/convert/main.nf index 40cd57a..be4c02f 100644 --- a/modules/nf-core/modules/eido/convert/main.nf +++ b/modules/nf-core/modules/eido/convert/main.nf @@ -10,6 +10,7 @@ process EIDO_CONVERT { input: path samplesheet val format + path pep_input_base_dir output: path "versions.yml" , emit: versions diff --git a/modules/nf-core/modules/eido/convert/meta.yml b/modules/nf-core/modules/eido/convert/meta.yml index 0cf354a..bd12e03 100644 --- a/modules/nf-core/modules/eido/convert/meta.yml +++ b/modules/nf-core/modules/eido/convert/meta.yml @@ -22,6 +22,9 @@ input: - format: type: value description: Extension of an output file + - pep_input_base_dir: + type: file + description: Optional path to the directory where files specified in a PEP config file are stored. Any paths specified in the config will need to be relative to this base directory. output: - versions: diff --git a/modules/nf-core/modules/eido/validate/main.nf b/modules/nf-core/modules/eido/validate/main.nf index bc6a111..e564e83 100644 --- a/modules/nf-core/modules/eido/validate/main.nf +++ b/modules/nf-core/modules/eido/validate/main.nf @@ -10,6 +10,7 @@ process EIDO_VALIDATE { input: path samplesheet path schema + path pep_input_base_dir output: path "versions.yml" , emit: versions diff --git a/modules/nf-core/modules/eido/validate/meta.yml b/modules/nf-core/modules/eido/validate/meta.yml index 962f59e..eb7b295 100644 --- a/modules/nf-core/modules/eido/validate/meta.yml +++ b/modules/nf-core/modules/eido/validate/meta.yml @@ -23,6 +23,9 @@ input: type: file description: Schema that the samplesheet will be validated against pattern: "*.{yaml,yml}" + - pep_input_base_dir: + type: file + description: Optional path to the directory where files specified in a PEP config file are stored. Any paths specified in the config will need to be relative to this base directory. output: - versions: diff --git a/nextflow.config b/nextflow.config index f3c7756..9d03211 100644 --- a/nextflow.config +++ b/nextflow.config @@ -12,7 +12,6 @@ params { // TODO nf-core: Specify your pipeline's command line flags // Input options input = null - pep = null // References diff --git a/nextflow_schema.json b/nextflow_schema.json index e8690f2..ffe8313 100644 --- a/nextflow_schema.json +++ b/nextflow_schema.json @@ -10,18 +10,13 @@ "type": "object", "fa_icon": "fas fa-terminal", "description": "Define where the pipeline should find input data and save output data.", - "required": ["outdir", "databases"], + "required": ["outdir", "databases", "input"], "properties": { - "pep": { - "type": "string", - "format": "file-path", - "pattern": "^\\S+\\.yaml$" - }, "input": { "type": "string", "format": "file-path", "mimetype": "text/csv", - "pattern": "^\\S+\\.csv$", + "pattern": "^\\S+\\.(csv|yaml)$", "schema": "assets/schema_input.json", "description": "Path to comma-separated file containing information about the samples and libraries/runs.", "help_text": "You will need to create a design file with information about the samples and libraries/runs you want to running in your pipeline run. Use this parameter to specify its location. It has to be a comma-separated file with 6 columns, and a header row. See [usage docs](https://nf-co.re/taxprofiler/usage#samplesheet-input).", diff --git a/workflows/taxprofiler.nf b/workflows/taxprofiler.nf index 76cc83c..b88b286 100644 --- a/workflows/taxprofiler.nf +++ b/workflows/taxprofiler.nf @@ -17,23 +17,22 @@ def checkPathParamList = [ params.input, params.databases, params.hostremoval_re for (param in checkPathParamList) { if (param) { file(param, checkIfExists: true) } } // Check mandatory parameters -if (params.input) { - ch_input = file(params.input) - ch_pep_input_base_dir = [] +if ( params.input.endsWith(".yaml") ) { -} else if (params.pep) { - - if ( params.pep.startsWith("http://") || params.pep.startsWith("https://") ) { - ch_input = file(params.pep) + if ( params.input.startsWith("http://") || params.input.startsWith("https://") ) { + ch_input = file(params.input) ch_pep_input_base_dir = [] } - else { - ch_input = file(params.pep) - ch_pep_input_base_dir = new File(params.pep).getParent() + ch_input = file(params.input) + ch_pep_input_base_dir = new File(params.input).getParent() } -} else { +} else if ( params.input.endsWith(".csv") ) { + ch_input = file(params.input) + ch_pep_input_base_dir = [] + +} else { exit 1, 'Input samplesheet or PEP config not specified!' } From e84b64f7e1c96a2bc9d867616a03aa60a4717a60 Mon Sep 17 00:00:00 2001 From: Rafal Stepien <43926522+rafalstepien@users.noreply.github.com> Date: Mon, 19 Sep 2022 09:49:20 -0400 Subject: [PATCH 364/789] Update modules/local/samplesheet_check.nf Co-authored-by: James A. Fellows Yates --- modules/local/samplesheet_check.nf | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/modules/local/samplesheet_check.nf b/modules/local/samplesheet_check.nf index f048351..91e0f04 100644 --- a/modules/local/samplesheet_check.nf +++ b/modules/local/samplesheet_check.nf @@ -15,7 +15,9 @@ process SAMPLESHEET_CHECK { script: // detect_reads.py script is bundled with the pipeline, in nf-core/taxprofiler/bin/ """ - python3 $projectDir/bin/detect_reads.py $samplesheet samplesheet_validated.csv + python3 $projectDir/bin/detect_reads.py \\ + $samplesheet \\ + samplesheet_validated.csv cat <<-END_VERSIONS > versions.yml "${task.process}": From 5b6c18f0a2c7ec6de1982886518893e95bc8b089 Mon Sep 17 00:00:00 2001 From: Rafal Stepien <43926522+rafalstepien@users.noreply.github.com> Date: Mon, 19 Sep 2022 09:49:28 -0400 Subject: [PATCH 365/789] Update nextflow.config Co-authored-by: James A. Fellows Yates --- nextflow.config | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/nextflow.config b/nextflow.config index 9d03211..80fce40 100644 --- a/nextflow.config +++ b/nextflow.config @@ -227,7 +227,7 @@ profiles { test_nopreprocessing { includeConfig 'conf/test_nopreprocessing.config' } test_nothing { includeConfig 'conf/test_nothing.config' } test_motus { includeConfig 'conf/test_motus.config' } - test_pep { includeConfig 'conf/test_pep.config' } + test_pep { includeConfig 'conf/test_pep.config' } } From 0ccbf5093842a9e30aeaeb5156a89af7b3917f1b Mon Sep 17 00:00:00 2001 From: Rafal Stepien <43926522+rafalstepien@users.noreply.github.com> Date: Mon, 19 Sep 2022 09:49:37 -0400 Subject: [PATCH 366/789] Update nextflow_schema.json Co-authored-by: James A. Fellows Yates --- nextflow_schema.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/nextflow_schema.json b/nextflow_schema.json index ffe8313..d5309ed 100644 --- a/nextflow_schema.json +++ b/nextflow_schema.json @@ -10,7 +10,7 @@ "type": "object", "fa_icon": "fas fa-terminal", "description": "Define where the pipeline should find input data and save output data.", - "required": ["outdir", "databases", "input"], + "required": [ "input", "outdir", "databases"], "properties": { "input": { "type": "string", From 1584d6fc517a34acf19bfd29352b0645480f95a7 Mon Sep 17 00:00:00 2001 From: Rafal Stepien <43926522+rafalstepien@users.noreply.github.com> Date: Mon, 19 Sep 2022 09:51:25 -0400 Subject: [PATCH 367/789] Update workflows/taxprofiler.nf Co-authored-by: James A. Fellows Yates --- nextflow_schema.json | 4 ++-- subworkflows/local/input_check.nf | 6 +++--- workflows/taxprofiler.nf | 22 +++++----------------- 3 files changed, 10 insertions(+), 22 deletions(-) diff --git a/nextflow_schema.json b/nextflow_schema.json index d5309ed..4a9237d 100644 --- a/nextflow_schema.json +++ b/nextflow_schema.json @@ -10,13 +10,13 @@ "type": "object", "fa_icon": "fas fa-terminal", "description": "Define where the pipeline should find input data and save output data.", - "required": [ "input", "outdir", "databases"], + "required": ["input", "outdir", "databases"], "properties": { "input": { "type": "string", "format": "file-path", "mimetype": "text/csv", - "pattern": "^\\S+\\.(csv|yaml)$", + "pattern": "^\\S+\\.(csv|yaml|yml)$", "schema": "assets/schema_input.json", "description": "Path to comma-separated file containing information about the samples and libraries/runs.", "help_text": "You will need to create a design file with information about the samples and libraries/runs you want to running in your pipeline run. Use this parameter to specify its location. It has to be a comma-separated file with 6 columns, and a header row. See [usage docs](https://nf-co.re/taxprofiler/usage#samplesheet-input).", diff --git a/subworkflows/local/input_check.nf b/subworkflows/local/input_check.nf index 0a07538..447eb15 100644 --- a/subworkflows/local/input_check.nf +++ b/subworkflows/local/input_check.nf @@ -9,11 +9,11 @@ include { EIDO_CONVERT } from '../../modules/nf-core/modules/eido/convert/main' workflow INPUT_CHECK { take: samplesheet_or_pep_config // file: /path/to/samplesheet.csv or /path/to/pep/config.yaml - ch_pep_input_base_dir + pep_input_base_dir main: - EIDO_VALIDATE ( samplesheet_or_pep_config, file("$projectDir/assets/samplesheet_schema.yaml"), ch_pep_input_base_dir ) - converted_samplesheet = EIDO_CONVERT ( samplesheet_or_pep_config, "csv", ch_pep_input_base_dir ) + EIDO_VALIDATE ( samplesheet_or_pep_config, file("$projectDir/assets/samplesheet_schema.yaml"), pep_input_base_dir ) + converted_samplesheet = EIDO_CONVERT ( samplesheet_or_pep_config, "csv", pep_input_base_dir ) parsed_samplesheet = SAMPLESHEET_CHECK ( converted_samplesheet.samplesheet_converted ) .csv .splitCsv ( header:true, sep:',' ) diff --git a/workflows/taxprofiler.nf b/workflows/taxprofiler.nf index b88b286..6f7becf 100644 --- a/workflows/taxprofiler.nf +++ b/workflows/taxprofiler.nf @@ -17,23 +17,11 @@ def checkPathParamList = [ params.input, params.databases, params.hostremoval_re for (param in checkPathParamList) { if (param) { file(param, checkIfExists: true) } } // Check mandatory parameters -if ( params.input.endsWith(".yaml") ) { - - if ( params.input.startsWith("http://") || params.input.startsWith("https://") ) { - ch_input = file(params.input) - ch_pep_input_base_dir = [] - } - else { - ch_input = file(params.input) - ch_pep_input_base_dir = new File(params.input).getParent() - } - -} else if ( params.input.endsWith(".csv") ) { - ch_input = file(params.input) - ch_pep_input_base_dir = [] - +if ( params.input ) { + ch_input = file(params.input, checkIfExists: true) + pep_input_base_dir = file(params.input).extension.matches("yaml|yml") ? file(file(params.input).getParent(), checkIfExists: true) : [] } else { - exit 1, 'Input samplesheet or PEP config not specified!' + exit 1, "Input samplesheet, or PEP config and base directory not specified" } if (params.databases) { ch_databases = file(params.databases) } else { exit 1, 'Input database sheet not specified!' } @@ -116,7 +104,7 @@ workflow TAXPROFILER { SUBWORKFLOW: Read in samplesheet, validate and stage input files */ INPUT_CHECK ( - ch_input, ch_pep_input_base_dir + ch_input, pep_input_base_dir ) ch_versions = ch_versions.mix(INPUT_CHECK.out.versions) From 43a8aa4405e67e0616d63f71ef217ecb7b2e350b Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Tue, 27 Sep 2022 15:32:51 +0200 Subject: [PATCH 368/789] Remove detect_reads.py and replace remaining checks with nextflow code instead --- assets/samplesheet_schema.yaml | 2 + bin/detect_reads.py | 125 ----------------------------- conf/modules.config | 8 -- modules/local/samplesheet_check.nf | 27 ------- subworkflows/local/input_check.nf | 34 +++++--- 5 files changed, 27 insertions(+), 169 deletions(-) delete mode 100644 bin/detect_reads.py delete mode 100644 modules/local/samplesheet_check.nf diff --git a/assets/samplesheet_schema.yaml b/assets/samplesheet_schema.yaml index 88ff451..366ee93 100644 --- a/assets/samplesheet_schema.yaml +++ b/assets/samplesheet_schema.yaml @@ -53,3 +53,5 @@ properties: - fasta required: - samples + - run_accession + - instrument_platform diff --git a/bin/detect_reads.py b/bin/detect_reads.py deleted file mode 100644 index 8a1430e..0000000 --- a/bin/detect_reads.py +++ /dev/null @@ -1,125 +0,0 @@ -#!/usr/bin/env python - -import argparse -import csv -import sys -from typing import List, NoReturn - - -def parse_args(args=None) -> argparse.Namespace: - """ - Reformatting is based on detecting whether the reads are paired or single end. - Script appends appropriate column to samplesheet.csv file. - """ - Description = "Reformat nf-core/taxprofiler samplesheet file." - Epilog = "Example usage: python detect_reads.py " - - parser = argparse.ArgumentParser(description=Description, epilog=Epilog) - parser.add_argument("FILE_IN", help="Input samplesheet file.") - parser.add_argument("FILE_OUT", help="Output file.") - return parser.parse_args(args) - - -class ReadsModifier: - def __init__(self): - self.headers = None - self.sample_index = None - self.fastq_1_index = None - self.fastq_2_index = None - self.fasta_index = None - - def detect_reads_and_reformat(self, input_file_path: str, output_file_path: str) -> NoReturn: - NEW_COLUMN_NAME = "single_end" - new_file_rows = [] - - with open(input_file_path, "r") as input_file: - csv_reader = csv.reader(input_file, delimiter=",") - self.headers = next(csv_reader) - self.headers.append(NEW_COLUMN_NAME) - - self._infer_column_indexes() - - for samplesheet_row in csv_reader: - - if self._is_paired_end_short_read(samplesheet_row): - new_file_rows.append([*samplesheet_row, "0"]) - - elif self._is_single_end_short_long_read(samplesheet_row): - new_file_rows.append([*samplesheet_row, "1"]) - - elif self._is_single_end_long_read(samplesheet_row): - new_file_rows.append([*samplesheet_row, "1"]) - - elif self._is_error_row(samplesheet_row): - self.print_error( - "FastQ and FastA files cannot be specified together in the same library!", - "Line", - ",".join(samplesheet_row), - ) - else: - self.print_error("Invalid combination of columns provided!", "Line", ",".join(samplesheet_row)) - - self.save_reformatted_samplesheet([self.headers] + new_file_rows, output_file_path) - - def _get_row_values(self, samplesheet_row): - """ - This method extracts data from the columns for given row of samplesheet table, based on - previously infered column indexes. - """ - sample = samplesheet_row[self.sample_index] - fastq_1 = samplesheet_row[self.fastq_1_index] if self.fastq_1_index else None - fastq_2 = samplesheet_row[self.fastq_2_index] if self.fastq_2_index else None - fasta = samplesheet_row[self.fasta_index] if self.fasta_index else None - return sample, fastq_1, fastq_2, fasta - - def _infer_column_indexes(self): - """ - This method infers indexes of necessary columns from samplesheet table - """ - self.sample_index = self.headers.index("sample") - self.fastq_1_index = self.headers.index("fastq_1") if "fastq_1" in self.headers else None - self.fastq_2_index = self.headers.index("fastq_2") if "fastq_2" in self.headers else None - self.fasta_index = self.headers.index("fasta") if "fasta" in self.headers else None - - def _is_paired_end_short_read(self, samplesheet_row: List) -> bool: - sample, fastq_1, fastq_2, _ = self._get_row_values(samplesheet_row) - return sample and fastq_1 and fastq_2 - - def _is_single_end_short_long_read(self, samplesheet_row: List) -> bool: - sample, fastq_1, fastq_2, _ = self._get_row_values(samplesheet_row) - return sample and fastq_1 and not fastq_2 - - def _is_single_end_long_read(self, samplesheet_row: List) -> bool: - sample, fastq_1, fastq_2, fasta = self._get_row_values(samplesheet_row) - return sample and fasta and not fastq_1 and not fastq_2 - - def _is_error_row(self, samplesheet_row: List) -> bool: - sample, fastq_1, fastq_2, fasta = self._get_row_values(samplesheet_row) - return fasta and (fastq_1 or fastq_2) - - @staticmethod - def print_error(error: str, context: str = "Line", context_str: str = ""): - error_str = "ERROR: Please check samplesheet -> {}".format(error) - if context != "" and context_str != "": - error_str = "ERROR: Please check samplesheet -> {}\n{}: '{}'".format( - error, context.strip(), context_str.strip() - ) - print(error_str) - sys.exit(1) - - @staticmethod - def save_reformatted_samplesheet(new_file_rows: List[List], output_file_path: str) -> NoReturn: - """ - Write new samplesheet. - """ - with open(output_file_path, "w") as output_file: - csv.writer(output_file).writerows(new_file_rows) - - -def main(args=None): - args = parse_args(args) - ReadsModifier().detect_reads_and_reformat(args.FILE_IN, args.FILE_OUT) - - -if __name__ == "__main__": - sys.exit(main()) diff --git a/conf/modules.config b/conf/modules.config index 0efd251..73cc042 100644 --- a/conf/modules.config +++ b/conf/modules.config @@ -12,14 +12,6 @@ process { - withName: SAMPLESHEET_CHECK { - publishDir = [ - path: { "${params.outdir}/pipeline_info" }, - mode: params.publish_dir_mode, - saveAs: { filename -> filename.equals('versions.yml') ? null : filename } - ] - } - withName: DATABASE_CHECK { publishDir = [ path: { "${params.outdir}/pipeline_info" }, diff --git a/modules/local/samplesheet_check.nf b/modules/local/samplesheet_check.nf deleted file mode 100644 index 91e0f04..0000000 --- a/modules/local/samplesheet_check.nf +++ /dev/null @@ -1,27 +0,0 @@ -process SAMPLESHEET_CHECK { - tag "$samplesheet" - - conda (params.enable_conda ? "conda-forge::python=3.8.3" : null) - container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/python:3.8.3' : - 'quay.io/biocontainers/python:3.8.3' }" - - input: - path samplesheet - - output: - path '*.csv' , emit: csv - path "versions.yml", emit: versions - - script: // detect_reads.py script is bundled with the pipeline, in nf-core/taxprofiler/bin/ - """ - python3 $projectDir/bin/detect_reads.py \\ - $samplesheet \\ - samplesheet_validated.csv - - cat <<-END_VERSIONS > versions.yml - "${task.process}": - python: \$(python --version | sed 's/Python //g') - END_VERSIONS - """ -} diff --git a/subworkflows/local/input_check.nf b/subworkflows/local/input_check.nf index 447eb15..d54d2ad 100644 --- a/subworkflows/local/input_check.nf +++ b/subworkflows/local/input_check.nf @@ -2,7 +2,6 @@ // Check input samplesheet and get read channels // -include { SAMPLESHEET_CHECK } from '../../modules/local/samplesheet_check' include { EIDO_VALIDATE } from '../../modules/nf-core/modules/eido/validate/main' include { EIDO_CONVERT } from '../../modules/nf-core/modules/eido/convert/main' @@ -12,26 +11,43 @@ workflow INPUT_CHECK { pep_input_base_dir main: + ch_versions = Channel.empty() + EIDO_VALIDATE ( samplesheet_or_pep_config, file("$projectDir/assets/samplesheet_schema.yaml"), pep_input_base_dir ) - converted_samplesheet = EIDO_CONVERT ( samplesheet_or_pep_config, "csv", pep_input_base_dir ) - parsed_samplesheet = SAMPLESHEET_CHECK ( converted_samplesheet.samplesheet_converted ) - .csv + ch_versions = ch_versions.mix(EIDO_VALIDATE.out.versions) + + EIDO_CONVERT ( samplesheet_or_pep_config, "csv", pep_input_base_dir ) + ch_versions = ch_versions.mix(EIDO_CONVERT.out.versions) + + ch_parsed_samplesheet = EIDO_CONVERT.out.samplesheet_converted .splitCsv ( header:true, sep:',' ) + .map{ + + // Checks not supported by EIDO(?) + if ( ( it['fastq_1'] != "" || it['fastq_2'] != "" ) && it['fasta'] != "" ) { exit 1, "[nf-core/taxprofiler] ERROR: FastQ and FastA files cannot be specified together in the same library. Check input samplesheet! Check sample: ${it['sample']}" } + if ( it['fastq_1'] == "" && it['fastq_2'] != "" ) { exit 1, "[nf-core/taxprofiler] ERROR: Input samplesheet has a missing fastq_1 when fastq_2 is specified. Check sample: ${it['sample']}" } + + single_end = it['fastq_2'] == "" ? true : false + it['single_end'] = single_end + + [ it ] + } + .flatten() .branch { fasta: it['fasta'] != '' nanopore: it['instrument_platform'] == 'OXFORD_NANOPORE' fastq: true } - parsed_samplesheet.fastq + ch_parsed_samplesheet.fastq .map { create_fastq_channel(it) } .set { fastq } - parsed_samplesheet.nanopore + ch_parsed_samplesheet.nanopore .map { create_fastq_channel(it) } .set { nanopore } - parsed_samplesheet.fasta + ch_parsed_samplesheet.fasta .map { create_fasta_channel(it) } .set { fasta } @@ -39,7 +55,7 @@ workflow INPUT_CHECK { fastq = fastq ?: [] // channel: [ val(meta), [ reads ] ] nanopore = nanopore ?: [] // channel: [ val(meta), [ reads ] ] fasta = fasta ?: [] // channel: [ val(meta), fasta ] - versions = SAMPLESHEET_CHECK.out.versions // channel: [ versions.yml ] + versions = ch_versions // channel: [ versions.yml ] } // Function to get list of [ meta, [ fastq_1, fastq_2 ] ] @@ -69,7 +85,7 @@ def create_fastq_channel(LinkedHashMap row) { if (!file(row.fastq_2).exists()) { exit 1, "ERROR: Please check input samplesheet -> Read 2 FastQ file does not exist!\n${row.fastq_2}" } - fastq_meta = [ meta, [ file(row.fastq_1), file(row.fastq_2) ] ] + fastq_meta = [ meta, [ file(row.fastq_1), file(row.fastq_2) ] ] } } From 87edc4569cef3290531ac0dbe56b1c407de26381 Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Tue, 27 Sep 2022 15:46:17 +0200 Subject: [PATCH 369/789] Move to a function --- subworkflows/local/input_check.nf | 27 +++++++++++++++------------ 1 file changed, 15 insertions(+), 12 deletions(-) diff --git a/subworkflows/local/input_check.nf b/subworkflows/local/input_check.nf index d54d2ad..e8d5e7a 100644 --- a/subworkflows/local/input_check.nf +++ b/subworkflows/local/input_check.nf @@ -21,18 +21,7 @@ workflow INPUT_CHECK { ch_parsed_samplesheet = EIDO_CONVERT.out.samplesheet_converted .splitCsv ( header:true, sep:',' ) - .map{ - - // Checks not supported by EIDO(?) - if ( ( it['fastq_1'] != "" || it['fastq_2'] != "" ) && it['fasta'] != "" ) { exit 1, "[nf-core/taxprofiler] ERROR: FastQ and FastA files cannot be specified together in the same library. Check input samplesheet! Check sample: ${it['sample']}" } - if ( it['fastq_1'] == "" && it['fastq_2'] != "" ) { exit 1, "[nf-core/taxprofiler] ERROR: Input samplesheet has a missing fastq_1 when fastq_2 is specified. Check sample: ${it['sample']}" } - - single_end = it['fastq_2'] == "" ? true : false - it['single_end'] = single_end - - [ it ] - } - .flatten() + .map { check_missing_and_singleend_autodetect(it) } .branch { fasta: it['fasta'] != '' nanopore: it['instrument_platform'] == 'OXFORD_NANOPORE' @@ -58,6 +47,19 @@ workflow INPUT_CHECK { versions = ch_versions // channel: [ versions.yml ] } +// Function to validate input sheet and auto-detect R1/R2 +def check_missing_and_singleend_autodetect(LinkedHashMap row) { + + // Checks not supported by EIDO(?) + if ( ( row['fastq_1'] != "" || row['fastq_2'] != "" ) && row['fasta'] != "" ) { exit 1, "[nf-core/taxprofiler] ERROR: FastQ and FastA files cannot be specified together in the same library. Check input samplesheet! Check sample: ${row['sample']}" } + if ( row['fastq_1'] == "" && row['fastq_2'] != "" ) { exit 1, "[nf-core/taxprofiler] ERROR: Input samplesheet has a missing fastq_1 when fastq_2 is specified. Check sample: ${row['sample']}" } + + single_end = row['fastq_2'] == "" ? true : false + row['single_end'] = single_end + + return row +} + // Function to get list of [ meta, [ fastq_1, fastq_2 ] ] def create_fastq_channel(LinkedHashMap row) { // create meta map @@ -90,6 +92,7 @@ def create_fastq_channel(LinkedHashMap row) { } return fastq_meta + }// Function to get list of [ meta, fasta ] def create_fasta_channel(LinkedHashMap row) { def meta = [:] From bfd260e9c8580043a9cefbf6530e32633436eff1 Mon Sep 17 00:00:00 2001 From: Rafal Stepien <43926522+rafalstepien@users.noreply.github.com> Date: Mon, 19 Sep 2022 09:51:25 -0400 Subject: [PATCH 370/789] Update workflows/taxprofiler.nf Co-authored-by: James A. Fellows Yates --- bin/detect_reads.py | 102 ++++++++++++++---------------- nextflow_schema.json | 4 +- subworkflows/local/input_check.nf | 6 +- workflows/taxprofiler.nf | 22 ++----- 4 files changed, 57 insertions(+), 77 deletions(-) diff --git a/bin/detect_reads.py b/bin/detect_reads.py index 8a1430e..14f6a07 100644 --- a/bin/detect_reads.py +++ b/bin/detect_reads.py @@ -1,20 +1,29 @@ #!/usr/bin/env python - import argparse import csv +import logging import sys -from typing import List, NoReturn +from enum import Enum +from typing import List, NoReturn, Optional + + +class ColumnNames(str, Enum): + SAMPLE = "sample" + FASTQ_1 = "fastq_1" + FASTQ_2 = "fastq_2" + FASTA = "fasta" + SINGLE_END = "single_end" -def parse_args(args=None) -> argparse.Namespace: +def parse_args(args: Optional[List[str]] = None) -> argparse.Namespace: """ Reformatting is based on detecting whether the reads are paired or single end. Script appends appropriate column to samplesheet.csv file. """ - Description = "Reformat nf-core/taxprofiler samplesheet file." - Epilog = "Example usage: python detect_reads.py " - - parser = argparse.ArgumentParser(description=Description, epilog=Epilog) + parser = argparse.ArgumentParser( + description="Reformat nf-core/taxprofiler samplesheet file.", + epilog="Example usage: python detect_reads.py ", + ) parser.add_argument("FILE_IN", help="Input samplesheet file.") parser.add_argument("FILE_OUT", help="Output file.") return parser.parse_args(args) @@ -29,86 +38,69 @@ class ReadsModifier: self.fasta_index = None def detect_reads_and_reformat(self, input_file_path: str, output_file_path: str) -> NoReturn: - NEW_COLUMN_NAME = "single_end" new_file_rows = [] - with open(input_file_path, "r") as input_file: - csv_reader = csv.reader(input_file, delimiter=",") - self.headers = next(csv_reader) - self.headers.append(NEW_COLUMN_NAME) - - self._infer_column_indexes() + with open(input_file_path, "r", newline="") as input_file: + csv_reader = csv.DictReader(input_file, delimiter=",") + self.headers = csv_reader.fieldnames + self.headers.append("single_end") for samplesheet_row in csv_reader: if self._is_paired_end_short_read(samplesheet_row): - new_file_rows.append([*samplesheet_row, "0"]) + samplesheet_row[ColumnNames.SINGLE_END] = "0" + new_file_rows.append(samplesheet_row.values()) elif self._is_single_end_short_long_read(samplesheet_row): - new_file_rows.append([*samplesheet_row, "1"]) + samplesheet_row[ColumnNames.SINGLE_END] = "1" + new_file_rows.append(samplesheet_row.values()) elif self._is_single_end_long_read(samplesheet_row): - new_file_rows.append([*samplesheet_row, "1"]) + samplesheet_row[ColumnNames.SINGLE_END] = "1" + new_file_rows.append(samplesheet_row.values()) elif self._is_error_row(samplesheet_row): - self.print_error( + logging.error( "FastQ and FastA files cannot be specified together in the same library!", "Line", - ",".join(samplesheet_row), + ",".join(samplesheet_row.values()), ) else: - self.print_error("Invalid combination of columns provided!", "Line", ",".join(samplesheet_row)) + logging.error( + "Invalid combination of columns provided!", "Line", ",".join(samplesheet_row.values()) + ) - self.save_reformatted_samplesheet([self.headers] + new_file_rows, output_file_path) + ReadsModifier.save_reformatted_samplesheet([self.headers] + new_file_rows, output_file_path) - def _get_row_values(self, samplesheet_row): - """ - This method extracts data from the columns for given row of samplesheet table, based on - previously infered column indexes. + def _get_row_values(self, samplesheet_row: dict): """ - sample = samplesheet_row[self.sample_index] - fastq_1 = samplesheet_row[self.fastq_1_index] if self.fastq_1_index else None - fastq_2 = samplesheet_row[self.fastq_2_index] if self.fastq_2_index else None - fasta = samplesheet_row[self.fasta_index] if self.fasta_index else None - return sample, fastq_1, fastq_2, fasta - - def _infer_column_indexes(self): + This method extracts data from the columns for given row of samplesheet table. """ - This method infers indexes of necessary columns from samplesheet table - """ - self.sample_index = self.headers.index("sample") - self.fastq_1_index = self.headers.index("fastq_1") if "fastq_1" in self.headers else None - self.fastq_2_index = self.headers.index("fastq_2") if "fastq_2" in self.headers else None - self.fasta_index = self.headers.index("fasta") if "fasta" in self.headers else None - - def _is_paired_end_short_read(self, samplesheet_row: List) -> bool: + return ( + samplesheet_row.get(ColumnNames.SAMPLE), + samplesheet_row.get(ColumnNames.FASTQ_1), + samplesheet_row.get(ColumnNames.FASTQ_2), + samplesheet_row.get(ColumnNames.FASTA), + ) + + def _is_paired_end_short_read(self, samplesheet_row: dict) -> bool: sample, fastq_1, fastq_2, _ = self._get_row_values(samplesheet_row) return sample and fastq_1 and fastq_2 - def _is_single_end_short_long_read(self, samplesheet_row: List) -> bool: + def _is_single_end_short_long_read(self, samplesheet_row: dict) -> bool: sample, fastq_1, fastq_2, _ = self._get_row_values(samplesheet_row) return sample and fastq_1 and not fastq_2 - def _is_single_end_long_read(self, samplesheet_row: List) -> bool: + def _is_single_end_long_read(self, samplesheet_row: dict) -> bool: sample, fastq_1, fastq_2, fasta = self._get_row_values(samplesheet_row) return sample and fasta and not fastq_1 and not fastq_2 - def _is_error_row(self, samplesheet_row: List) -> bool: + def _is_error_row(self, samplesheet_row: dict) -> bool: sample, fastq_1, fastq_2, fasta = self._get_row_values(samplesheet_row) return fasta and (fastq_1 or fastq_2) - @staticmethod - def print_error(error: str, context: str = "Line", context_str: str = ""): - error_str = "ERROR: Please check samplesheet -> {}".format(error) - if context != "" and context_str != "": - error_str = "ERROR: Please check samplesheet -> {}\n{}: '{}'".format( - error, context.strip(), context_str.strip() - ) - print(error_str) - sys.exit(1) - - @staticmethod - def save_reformatted_samplesheet(new_file_rows: List[List], output_file_path: str) -> NoReturn: + @classmethod + def save_reformatted_samplesheet(cls, new_file_rows: List[List], output_file_path: str) -> NoReturn: """ Write new samplesheet. """ diff --git a/nextflow_schema.json b/nextflow_schema.json index d5309ed..4a9237d 100644 --- a/nextflow_schema.json +++ b/nextflow_schema.json @@ -10,13 +10,13 @@ "type": "object", "fa_icon": "fas fa-terminal", "description": "Define where the pipeline should find input data and save output data.", - "required": [ "input", "outdir", "databases"], + "required": ["input", "outdir", "databases"], "properties": { "input": { "type": "string", "format": "file-path", "mimetype": "text/csv", - "pattern": "^\\S+\\.(csv|yaml)$", + "pattern": "^\\S+\\.(csv|yaml|yml)$", "schema": "assets/schema_input.json", "description": "Path to comma-separated file containing information about the samples and libraries/runs.", "help_text": "You will need to create a design file with information about the samples and libraries/runs you want to running in your pipeline run. Use this parameter to specify its location. It has to be a comma-separated file with 6 columns, and a header row. See [usage docs](https://nf-co.re/taxprofiler/usage#samplesheet-input).", diff --git a/subworkflows/local/input_check.nf b/subworkflows/local/input_check.nf index 0a07538..447eb15 100644 --- a/subworkflows/local/input_check.nf +++ b/subworkflows/local/input_check.nf @@ -9,11 +9,11 @@ include { EIDO_CONVERT } from '../../modules/nf-core/modules/eido/convert/main' workflow INPUT_CHECK { take: samplesheet_or_pep_config // file: /path/to/samplesheet.csv or /path/to/pep/config.yaml - ch_pep_input_base_dir + pep_input_base_dir main: - EIDO_VALIDATE ( samplesheet_or_pep_config, file("$projectDir/assets/samplesheet_schema.yaml"), ch_pep_input_base_dir ) - converted_samplesheet = EIDO_CONVERT ( samplesheet_or_pep_config, "csv", ch_pep_input_base_dir ) + EIDO_VALIDATE ( samplesheet_or_pep_config, file("$projectDir/assets/samplesheet_schema.yaml"), pep_input_base_dir ) + converted_samplesheet = EIDO_CONVERT ( samplesheet_or_pep_config, "csv", pep_input_base_dir ) parsed_samplesheet = SAMPLESHEET_CHECK ( converted_samplesheet.samplesheet_converted ) .csv .splitCsv ( header:true, sep:',' ) diff --git a/workflows/taxprofiler.nf b/workflows/taxprofiler.nf index b88b286..6f7becf 100644 --- a/workflows/taxprofiler.nf +++ b/workflows/taxprofiler.nf @@ -17,23 +17,11 @@ def checkPathParamList = [ params.input, params.databases, params.hostremoval_re for (param in checkPathParamList) { if (param) { file(param, checkIfExists: true) } } // Check mandatory parameters -if ( params.input.endsWith(".yaml") ) { - - if ( params.input.startsWith("http://") || params.input.startsWith("https://") ) { - ch_input = file(params.input) - ch_pep_input_base_dir = [] - } - else { - ch_input = file(params.input) - ch_pep_input_base_dir = new File(params.input).getParent() - } - -} else if ( params.input.endsWith(".csv") ) { - ch_input = file(params.input) - ch_pep_input_base_dir = [] - +if ( params.input ) { + ch_input = file(params.input, checkIfExists: true) + pep_input_base_dir = file(params.input).extension.matches("yaml|yml") ? file(file(params.input).getParent(), checkIfExists: true) : [] } else { - exit 1, 'Input samplesheet or PEP config not specified!' + exit 1, "Input samplesheet, or PEP config and base directory not specified" } if (params.databases) { ch_databases = file(params.databases) } else { exit 1, 'Input database sheet not specified!' } @@ -116,7 +104,7 @@ workflow TAXPROFILER { SUBWORKFLOW: Read in samplesheet, validate and stage input files */ INPUT_CHECK ( - ch_input, ch_pep_input_base_dir + ch_input, pep_input_base_dir ) ch_versions = ch_versions.mix(INPUT_CHECK.out.versions) From 8b559fba8661c84e4aeff0eb7770766d52a5f61b Mon Sep 17 00:00:00 2001 From: "James A. Fellows Yates" Date: Thu, 29 Sep 2022 14:36:53 +0200 Subject: [PATCH 371/789] Pin version to get NXF to download correctly --- .github/workflows/ci.yml | 4 ++-- assets/samplesheet_schema.yaml | 2 -- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 5cea5b7..726c407 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -20,7 +20,7 @@ jobs: strategy: matrix: NXF_VER: - - "21.10.3" + - "21.10.6" ## TODO temporarily pinning later version that does work - "latest-everything" parameters: - "--perform_longread_qc false" @@ -67,7 +67,7 @@ jobs: strategy: matrix: NXF_VER: - - "21.10.3" + - "21.10.6" ## TODO temporarily pinning later version that does work - "latest-everything" steps: diff --git a/assets/samplesheet_schema.yaml b/assets/samplesheet_schema.yaml index 366ee93..88ff451 100644 --- a/assets/samplesheet_schema.yaml +++ b/assets/samplesheet_schema.yaml @@ -53,5 +53,3 @@ properties: - fasta required: - samples - - run_accession - - instrument_platform From 44146b8fe32b7d0bc0206da7dab8e2cb34ab3c84 Mon Sep 17 00:00:00 2001 From: "James A. Fellows Yates" Date: Fri, 30 Sep 2022 08:34:53 +0200 Subject: [PATCH 372/789] Apply suggestions from code review --- .github/workflows/ci.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 726c407..5cea5b7 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -20,7 +20,7 @@ jobs: strategy: matrix: NXF_VER: - - "21.10.6" ## TODO temporarily pinning later version that does work + - "21.10.3" - "latest-everything" parameters: - "--perform_longread_qc false" @@ -67,7 +67,7 @@ jobs: strategy: matrix: NXF_VER: - - "21.10.6" ## TODO temporarily pinning later version that does work + - "21.10.3" - "latest-everything" steps: From b407fbcdce27960e07e1f73233a8039d64574572 Mon Sep 17 00:00:00 2001 From: "Moritz E. Beber" Date: Wed, 5 Oct 2022 12:24:18 +0200 Subject: [PATCH 373/789] chore: force update all modules --- modules/nf-core/cat/fastq/main.nf | 10 +++---- modules/nf-core/centrifuge/kreport/main.nf | 2 +- .../templates/dumpsoftwareversions.py | 11 +++---- modules/nf-core/eido/convert/main.nf | 2 +- modules/nf-core/eido/validate/main.nf | 2 +- modules/nf-core/gunzip/main.nf | 2 +- modules/nf-core/kaiju/kaiju2krona/main.nf | 2 +- modules/nf-core/kaiju/kaiju2table/main.nf | 2 +- .../krakentools/combinekreports/main.nf | 2 +- .../nf-core/krakentools/kreport2krona/main.nf | 2 +- .../nf-core/krona/ktimporttaxonomy/main.nf | 2 +- modules/nf-core/krona/ktimporttext/main.nf | 2 +- modules/nf-core/megan/rma2info/main.nf | 2 +- modules/nf-core/minimap2/index/main.nf | 6 ++-- modules/nf-core/minimap2/index/meta.yml | 10 +++++++ modules/nf-core/motus/merge/main.nf | 2 +- modules/nf-core/samtools/view/main.nf | 26 ++++++++++------ modules/nf-core/samtools/view/meta.yml | 30 ++++++++++++++++--- modules/nf-core/untar/main.nf | 2 +- 19 files changed, 80 insertions(+), 39 deletions(-) diff --git a/modules/nf-core/cat/fastq/main.nf b/modules/nf-core/cat/fastq/main.nf index d275f19..4fa365d 100644 --- a/modules/nf-core/cat/fastq/main.nf +++ b/modules/nf-core/cat/fastq/main.nf @@ -1,6 +1,6 @@ process CAT_FASTQ { tag "$meta.id" - label 'process_low' + label 'process_single' conda (params.enable_conda ? "conda-forge::sed=4.7" : null) container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? @@ -20,9 +20,9 @@ process CAT_FASTQ { script: def args = task.ext.args ?: '' def prefix = task.ext.prefix ?: "${meta.id}" - def readList = reads.collect{ it.toString() } + def readList = reads instanceof List ? reads.collect{ it.toString() } : [reads.toString()] if (meta.single_end) { - if (readList.size > 1) { + if (readList.size >= 1) { """ cat ${readList.join(' ')} > ${prefix}.merged.fastq.gz @@ -33,7 +33,7 @@ process CAT_FASTQ { """ } } else { - if (readList.size > 2) { + if (readList.size >= 2) { def read1 = [] def read2 = [] readList.eachWithIndex{ v, ix -> ( ix & 1 ? read2 : read1 ) << v } @@ -51,7 +51,7 @@ process CAT_FASTQ { stub: def prefix = task.ext.prefix ?: "${meta.id}" - def readList = reads.collect{ it.toString() } + def readList = reads instanceof List ? reads.collect{ it.toString() } : [reads.toString()] if (meta.single_end) { if (readList.size > 1) { """ diff --git a/modules/nf-core/centrifuge/kreport/main.nf b/modules/nf-core/centrifuge/kreport/main.nf index 381ddd6..8e5b741 100644 --- a/modules/nf-core/centrifuge/kreport/main.nf +++ b/modules/nf-core/centrifuge/kreport/main.nf @@ -1,6 +1,6 @@ process CENTRIFUGE_KREPORT { tag "$meta.id" - label 'process_low' + label 'process_single' conda (params.enable_conda ? "bioconda::centrifuge=1.0.4_beta" : null) container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? diff --git a/modules/nf-core/custom/dumpsoftwareversions/templates/dumpsoftwareversions.py b/modules/nf-core/custom/dumpsoftwareversions/templates/dumpsoftwareversions.py index d139039..7c2abfa 100644 --- a/modules/nf-core/custom/dumpsoftwareversions/templates/dumpsoftwareversions.py +++ b/modules/nf-core/custom/dumpsoftwareversions/templates/dumpsoftwareversions.py @@ -58,11 +58,12 @@ versions_by_module = {} for process, process_versions in versions_by_process.items(): module = process.split(":")[-1] try: - assert versions_by_module[module] == process_versions, ( - "We assume that software versions are the same between all modules. " - "If you see this error-message it means you discovered an edge-case " - "and should open an issue in nf-core/tools. " - ) + if versions_by_module[module] != process_versions: + raise AssertionError( + "We assume that software versions are the same between all modules. " + "If you see this error-message it means you discovered an edge-case " + "and should open an issue in nf-core/tools. " + ) except KeyError: versions_by_module[module] = process_versions diff --git a/modules/nf-core/eido/convert/main.nf b/modules/nf-core/eido/convert/main.nf index be4c02f..7ec4b8c 100644 --- a/modules/nf-core/eido/convert/main.nf +++ b/modules/nf-core/eido/convert/main.nf @@ -1,5 +1,5 @@ process EIDO_CONVERT { - tag '$samplesheet' + tag "$samplesheet" label 'process_single' conda (params.enable_conda ? "conda-forge::eido=0.1.9" : null) diff --git a/modules/nf-core/eido/validate/main.nf b/modules/nf-core/eido/validate/main.nf index e564e83..798d3a0 100644 --- a/modules/nf-core/eido/validate/main.nf +++ b/modules/nf-core/eido/validate/main.nf @@ -1,5 +1,5 @@ process EIDO_VALIDATE { - tag '$samplesheet' + tag "$samplesheet" label 'process_single' conda (params.enable_conda ? "conda-forge::eido=0.1.9" : null) diff --git a/modules/nf-core/gunzip/main.nf b/modules/nf-core/gunzip/main.nf index 7036704..fa6ba26 100644 --- a/modules/nf-core/gunzip/main.nf +++ b/modules/nf-core/gunzip/main.nf @@ -1,6 +1,6 @@ process GUNZIP { tag "$archive" - label 'process_low' + label 'process_single' conda (params.enable_conda ? "conda-forge::sed=4.7" : null) container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? diff --git a/modules/nf-core/kaiju/kaiju2krona/main.nf b/modules/nf-core/kaiju/kaiju2krona/main.nf index c95d5a7..3f35ce7 100644 --- a/modules/nf-core/kaiju/kaiju2krona/main.nf +++ b/modules/nf-core/kaiju/kaiju2krona/main.nf @@ -1,6 +1,6 @@ process KAIJU_KAIJU2KRONA { tag "$meta.id" - label 'process_low' + label 'process_single' conda (params.enable_conda ? "bioconda::kaiju=1.8.2" : null) container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? diff --git a/modules/nf-core/kaiju/kaiju2table/main.nf b/modules/nf-core/kaiju/kaiju2table/main.nf index 00739d1..8648d56 100644 --- a/modules/nf-core/kaiju/kaiju2table/main.nf +++ b/modules/nf-core/kaiju/kaiju2table/main.nf @@ -1,6 +1,6 @@ process KAIJU_KAIJU2TABLE { tag "$meta.id" - label 'process_low' + label 'process_single' conda (params.enable_conda ? "bioconda::kaiju=1.8.2" : null) container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? diff --git a/modules/nf-core/krakentools/combinekreports/main.nf b/modules/nf-core/krakentools/combinekreports/main.nf index 849f39c..fdcc245 100644 --- a/modules/nf-core/krakentools/combinekreports/main.nf +++ b/modules/nf-core/krakentools/combinekreports/main.nf @@ -1,5 +1,5 @@ process KRAKENTOOLS_COMBINEKREPORTS { - label 'process_low' + label 'process_single' conda (params.enable_conda ? "bioconda::krakentools=1.2" : null) container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? diff --git a/modules/nf-core/krakentools/kreport2krona/main.nf b/modules/nf-core/krakentools/kreport2krona/main.nf index 1fcb1e4..8ed46f1 100644 --- a/modules/nf-core/krakentools/kreport2krona/main.nf +++ b/modules/nf-core/krakentools/kreport2krona/main.nf @@ -1,6 +1,6 @@ process KRAKENTOOLS_KREPORT2KRONA { tag "$meta.id" - label 'process_low' + label 'process_single' // WARN: Version information not provided by tool on CLI. Please update version string below when bumping container versions. conda (params.enable_conda ? "bioconda::krakentools=1.2" : null) diff --git a/modules/nf-core/krona/ktimporttaxonomy/main.nf b/modules/nf-core/krona/ktimporttaxonomy/main.nf index 9b03462..79c01d7 100644 --- a/modules/nf-core/krona/ktimporttaxonomy/main.nf +++ b/modules/nf-core/krona/ktimporttaxonomy/main.nf @@ -1,6 +1,6 @@ process KRONA_KTIMPORTTAXONOMY { tag "${meta.id}" - label 'process_high' + label 'process_single' // WARN: Version information not provided by tool on CLI. Please update version string below when bumping container versions. conda (params.enable_conda ? "bioconda::krona=2.8" : null) diff --git a/modules/nf-core/krona/ktimporttext/main.nf b/modules/nf-core/krona/ktimporttext/main.nf index de0cfc2..edf7aab 100644 --- a/modules/nf-core/krona/ktimporttext/main.nf +++ b/modules/nf-core/krona/ktimporttext/main.nf @@ -1,6 +1,6 @@ process KRONA_KTIMPORTTEXT { tag "$meta.id" - label 'process_low' + label 'process_single' conda (params.enable_conda ? "bioconda::krona=2.8.1" : null) container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? diff --git a/modules/nf-core/megan/rma2info/main.nf b/modules/nf-core/megan/rma2info/main.nf index 80d1975..9c6a094 100644 --- a/modules/nf-core/megan/rma2info/main.nf +++ b/modules/nf-core/megan/rma2info/main.nf @@ -1,6 +1,6 @@ process MEGAN_RMA2INFO { tag "$meta.id" - label 'process_low' + label 'process_single' conda (params.enable_conda ? "bioconda::megan=6.21.7" : null) container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? diff --git a/modules/nf-core/minimap2/index/main.nf b/modules/nf-core/minimap2/index/main.nf index 3dfeb86..25e9429 100644 --- a/modules/nf-core/minimap2/index/main.nf +++ b/modules/nf-core/minimap2/index/main.nf @@ -7,11 +7,11 @@ process MINIMAP2_INDEX { 'quay.io/biocontainers/minimap2:2.21--h5bf99c6_0' }" input: - path fasta + tuple val(meta), path(fasta) output: - path "*.mmi" , emit: index - path "versions.yml" , emit: versions + tuple val(meta), path("*.mmi"), emit: index + path "versions.yml" , emit: versions when: task.ext.when == null || task.ext.when diff --git a/modules/nf-core/minimap2/index/meta.yml b/modules/nf-core/minimap2/index/meta.yml index 3bf9f04..603c651 100644 --- a/modules/nf-core/minimap2/index/meta.yml +++ b/modules/nf-core/minimap2/index/meta.yml @@ -12,11 +12,21 @@ tools: documentation: https://github.com/lh3/minimap2#uguide licence: ["MIT"] input: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] - fasta: type: file description: | Reference database in FASTA format. output: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] - mmi: type: file description: Minimap2 fasta index. diff --git a/modules/nf-core/motus/merge/main.nf b/modules/nf-core/motus/merge/main.nf index a050c7a..d9f091e 100644 --- a/modules/nf-core/motus/merge/main.nf +++ b/modules/nf-core/motus/merge/main.nf @@ -2,7 +2,7 @@ VERSION = '3.0.1' process MOTUS_MERGE { tag "$meta.id" - label 'process_low' + label 'process_single' conda (params.enable_conda ? "bioconda::motus=3.0.1" : null) container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? diff --git a/modules/nf-core/samtools/view/main.nf b/modules/nf-core/samtools/view/main.nf index 59ded5c..94da5d6 100644 --- a/modules/nf-core/samtools/view/main.nf +++ b/modules/nf-core/samtools/view/main.nf @@ -10,31 +10,39 @@ process SAMTOOLS_VIEW { input: tuple val(meta), path(input), path(index) path fasta + path qname output: - tuple val(meta), path("*.bam") , emit: bam , optional: true - tuple val(meta), path("*.cram"), emit: cram, optional: true - path "versions.yml" , emit: versions + tuple val(meta), path("*.bam"), emit: bam, optional: true + tuple val(meta), path("*.cram"), emit: cram, optional: true + tuple val(meta), path("*.sam"), emit: sam, optional: true + tuple val(meta), path("*.bai"), emit: bai, optional: true + tuple val(meta), path("*.csi"), emit: csi, optional: true + tuple val(meta), path("*.crai"), emit: crai, optional: true + path "versions.yml", emit: versions when: task.ext.when == null || task.ext.when script: def args = task.ext.args ?: '' - def args2 = task.ext.args2 ?: '' def prefix = task.ext.prefix ?: "${meta.id}" - def reference = fasta ? "--reference ${fasta} -C" : "" - def file_type = input.getExtension() + def reference = fasta ? "--reference ${fasta}" : "" + def readnames = qname ? "--qname-file ${qname}": "" + def file_type = args.contains("--output-fmt sam") ? "sam" : + args.contains("--output-fmt bam") ? "bam" : + args.contains("--output-fmt cram") ? "cram" : + input.getExtension() if ("$input" == "${prefix}.${file_type}") error "Input and output names are the same, use \"task.ext.prefix\" to disambiguate!" """ samtools \\ view \\ --threads ${task.cpus-1} \\ ${reference} \\ + ${readnames} \\ $args \\ - $input \\ - $args2 \\ - > ${prefix}.${file_type} + -o ${prefix}.${file_type} \\ + $input cat <<-END_VERSIONS > versions.yml "${task.process}": diff --git a/modules/nf-core/samtools/view/meta.yml b/modules/nf-core/samtools/view/meta.yml index a8b43ec..a52e4f8 100644 --- a/modules/nf-core/samtools/view/meta.yml +++ b/modules/nf-core/samtools/view/meta.yml @@ -33,6 +33,10 @@ input: type: optional file description: Reference file the CRAM was created with pattern: "*.{fasta,fa}" + - qname: + type: file + description: Optional file with read names to output only select alignments + pattern: "*.{txt,list}" output: - meta: type: map @@ -41,12 +45,29 @@ output: e.g. [ id:'test', single_end:false ] - bam: type: file - description: filtered/converted BAM/SAM file - pattern: "*.{bam,sam}" + description: optional filtered/converted BAM file + pattern: "*.{bam}" - cram: type: file - description: filtered/converted CRAM file - pattern: "*.cram" + description: optional filtered/converted CRAM file + pattern: "*.{cram}" + - sam: + type: file + description: optional filtered/converted SAM file + pattern: "*.{sam}" + # bai, csi, and crai are created with `--write-index` + - bai: + type: file + description: optional BAM file index + pattern: "*.{bai}" + - csi: + type: file + description: optional tabix BAM file index + pattern: "*.{csi}" + - crai: + type: file + description: optional CRAM file index + pattern: "*.{crai}" - versions: type: file description: File containing software versions @@ -55,3 +76,4 @@ authors: - "@drpatelh" - "@joseespinosa" - "@FriederikeHanssen" + - "@priyanka-surana" diff --git a/modules/nf-core/untar/main.nf b/modules/nf-core/untar/main.nf index 007871b..71eea7b 100644 --- a/modules/nf-core/untar/main.nf +++ b/modules/nf-core/untar/main.nf @@ -27,7 +27,7 @@ process UNTAR { ## Ensures --strip-components only applied when top level of tar contents is a directory ## If just files or multiple directories, place all in output - if [[ \$(tar -tzf ${archive} | grep "/\$" | wc -l) -eq 1 ]]; then + if [[ \$(tar -tzf ${archive} | grep -o -P "^.*?\\/" | uniq | wc -l) -eq 1 ]]; then tar \\ -C output --strip-components 1 \\ -xzvf \\ From f5af9fd939667de6754d0647762eae8d89e0e156 Mon Sep 17 00:00:00 2001 From: "Moritz E. Beber" Date: Wed, 5 Oct 2022 13:40:43 +0200 Subject: [PATCH 374/789] fix: adjust import paths to re-organization --- subworkflows/local/db_check.nf | 2 +- subworkflows/local/input_check.nf | 4 ++-- subworkflows/local/longread_hostremoval.nf | 8 ++++---- subworkflows/local/longread_preprocessing.nf | 6 +++--- subworkflows/local/profiling.nf | 18 +++++++++--------- subworkflows/local/shortread_adapterremoval.nf | 6 +++--- .../local/shortread_complexityfiltering.nf | 4 ++-- subworkflows/local/shortread_fastp.nf | 4 ++-- subworkflows/local/shortread_hostremoval.nf | 4 ++-- subworkflows/local/shortread_preprocessing.nf | 2 +- subworkflows/local/standardisation_profiles.nf | 12 ++++++------ subworkflows/local/visualization_krona.nf | 12 ++++++------ 12 files changed, 41 insertions(+), 41 deletions(-) diff --git a/subworkflows/local/db_check.nf b/subworkflows/local/db_check.nf index 7b440c6..5d0c4eb 100644 --- a/subworkflows/local/db_check.nf +++ b/subworkflows/local/db_check.nf @@ -3,7 +3,7 @@ // include { DATABASE_CHECK } from '../../modules/local/database_check' -include { UNTAR } from '../../modules/nf-core/modules/untar/main' +include { UNTAR } from '../../modules/nf-core/untar/main' workflow DB_CHECK { take: diff --git a/subworkflows/local/input_check.nf b/subworkflows/local/input_check.nf index e8d5e7a..46baff2 100644 --- a/subworkflows/local/input_check.nf +++ b/subworkflows/local/input_check.nf @@ -2,8 +2,8 @@ // Check input samplesheet and get read channels // -include { EIDO_VALIDATE } from '../../modules/nf-core/modules/eido/validate/main' -include { EIDO_CONVERT } from '../../modules/nf-core/modules/eido/convert/main' +include { EIDO_VALIDATE } from '../../modules/nf-core/eido/validate/main' +include { EIDO_CONVERT } from '../../modules/nf-core/eido/convert/main' workflow INPUT_CHECK { take: diff --git a/subworkflows/local/longread_hostremoval.nf b/subworkflows/local/longread_hostremoval.nf index 7db020b..5b4413f 100644 --- a/subworkflows/local/longread_hostremoval.nf +++ b/subworkflows/local/longread_hostremoval.nf @@ -2,10 +2,10 @@ // Remove host reads via alignment and export off-target reads // -include { MINIMAP2_INDEX } from '../../modules/nf-core/modules/minimap2/index/main' -include { MINIMAP2_ALIGN } from '../../modules/nf-core/modules/minimap2/align/main' -include { SAMTOOLS_VIEW } from '../../modules/nf-core/modules/samtools/view/main' -include { SAMTOOLS_BAM2FQ } from '../../modules/nf-core/modules/samtools/bam2fq/main' +include { MINIMAP2_INDEX } from '../../modules/nf-core/minimap2/index/main' +include { MINIMAP2_ALIGN } from '../../modules/nf-core/minimap2/align/main' +include { SAMTOOLS_VIEW } from '../../modules/nf-core/samtools/view/main' +include { SAMTOOLS_BAM2FQ } from '../../modules/nf-core/samtools/bam2fq/main' workflow LONGREAD_HOSTREMOVAL { take: diff --git a/subworkflows/local/longread_preprocessing.nf b/subworkflows/local/longread_preprocessing.nf index c04207e..ce537e8 100644 --- a/subworkflows/local/longread_preprocessing.nf +++ b/subworkflows/local/longread_preprocessing.nf @@ -2,9 +2,9 @@ // Process long raw reads with porechop // -include { FASTQC as FASTQC_PROCESSED } from '../../modules/nf-core/modules/fastqc/main' -include { PORECHOP } from '../../modules/nf-core/modules/porechop/main' -include { FILTLONG } from '../../modules/nf-core/modules/filtlong/main' +include { FASTQC as FASTQC_PROCESSED } from '../../modules/nf-core/fastqc/main' +include { PORECHOP } from '../../modules/nf-core/porechop/main' +include { FILTLONG } from '../../modules/nf-core/filtlong/main' workflow LONGREAD_PREPROCESSING { take: diff --git a/subworkflows/local/profiling.nf b/subworkflows/local/profiling.nf index c2ef508..11c4a72 100644 --- a/subworkflows/local/profiling.nf +++ b/subworkflows/local/profiling.nf @@ -2,15 +2,15 @@ // Run profiling // -include { MALT_RUN } from '../../modules/nf-core/modules/malt/run/main' -include { MEGAN_RMA2INFO as MEGAN_RMA2INFO_TSV } from '../../modules/nf-core/modules/megan/rma2info/main' -include { KRAKEN2_KRAKEN2 } from '../../modules/nf-core/modules/kraken2/kraken2/main' -include { CENTRIFUGE_CENTRIFUGE } from '../../modules/nf-core/modules/centrifuge/centrifuge/main' -include { CENTRIFUGE_KREPORT } from '../../modules/nf-core/modules/centrifuge/kreport/main' -include { METAPHLAN3_METAPHLAN3 } from '../../modules/nf-core/modules/metaphlan3/metaphlan3/main' -include { KAIJU_KAIJU } from '../../modules/nf-core/modules/kaiju/kaiju/main' -include { DIAMOND_BLASTX } from '../../modules/nf-core/modules/diamond/blastx/main' -include { MOTUS_PROFILE } from '../../modules/nf-core/modules/motus/profile/main' +include { MALT_RUN } from '../../modules/nf-core/malt/run/main' +include { MEGAN_RMA2INFO as MEGAN_RMA2INFO_TSV } from '../../modules/nf-core/megan/rma2info/main' +include { KRAKEN2_KRAKEN2 } from '../../modules/nf-core/kraken2/kraken2/main' +include { CENTRIFUGE_CENTRIFUGE } from '../../modules/nf-core/centrifuge/centrifuge/main' +include { CENTRIFUGE_KREPORT } from '../../modules/nf-core/centrifuge/kreport/main' +include { METAPHLAN3_METAPHLAN3 } from '../../modules/nf-core/metaphlan3/metaphlan3/main' +include { KAIJU_KAIJU } from '../../modules/nf-core/kaiju/kaiju/main' +include { DIAMOND_BLASTX } from '../../modules/nf-core/diamond/blastx/main' +include { MOTUS_PROFILE } from '../../modules/nf-core/motus/profile/main' workflow PROFILING { take: diff --git a/subworkflows/local/shortread_adapterremoval.nf b/subworkflows/local/shortread_adapterremoval.nf index e491423..a5a43fe 100644 --- a/subworkflows/local/shortread_adapterremoval.nf +++ b/subworkflows/local/shortread_adapterremoval.nf @@ -2,9 +2,9 @@ // Process short raw reads with AdapterRemoval // -include { ADAPTERREMOVAL as ADAPTERREMOVAL_SINGLE } from '../../modules/nf-core/modules/adapterremoval/main' -include { ADAPTERREMOVAL as ADAPTERREMOVAL_PAIRED } from '../../modules/nf-core/modules/adapterremoval/main' -include { CAT_FASTQ } from '../../modules/nf-core/modules/cat/fastq/main' +include { ADAPTERREMOVAL as ADAPTERREMOVAL_SINGLE } from '../../modules/nf-core/adapterremoval/main' +include { ADAPTERREMOVAL as ADAPTERREMOVAL_PAIRED } from '../../modules/nf-core/adapterremoval/main' +include { CAT_FASTQ } from '../../modules/nf-core/cat/fastq/main' workflow SHORTREAD_ADAPTERREMOVAL { diff --git a/subworkflows/local/shortread_complexityfiltering.nf b/subworkflows/local/shortread_complexityfiltering.nf index a34440d..844cd15 100644 --- a/subworkflows/local/shortread_complexityfiltering.nf +++ b/subworkflows/local/shortread_complexityfiltering.nf @@ -2,8 +2,8 @@ // Check input samplesheet and get read channels // -include { BBMAP_BBDUK } from '../../modules/nf-core/modules/bbmap/bbduk/main' -include { PRINSEQPLUSPLUS } from '../../modules/nf-core/modules/prinseqplusplus/main' +include { BBMAP_BBDUK } from '../../modules/nf-core/bbmap/bbduk/main' +include { PRINSEQPLUSPLUS } from '../../modules/nf-core/prinseqplusplus/main' workflow SHORTREAD_COMPLEXITYFILTERING { take: diff --git a/subworkflows/local/shortread_fastp.nf b/subworkflows/local/shortread_fastp.nf index 05e0f3d..d466041 100644 --- a/subworkflows/local/shortread_fastp.nf +++ b/subworkflows/local/shortread_fastp.nf @@ -2,8 +2,8 @@ // Process short raw reads with FastP // -include { FASTP as FASTP_SINGLE } from '../../modules/nf-core/modules/fastp/main' -include { FASTP as FASTP_PAIRED } from '../../modules/nf-core/modules/fastp/main' +include { FASTP as FASTP_SINGLE } from '../../modules/nf-core/fastp/main' +include { FASTP as FASTP_PAIRED } from '../../modules/nf-core/fastp/main' workflow SHORTREAD_FASTP { take: diff --git a/subworkflows/local/shortread_hostremoval.nf b/subworkflows/local/shortread_hostremoval.nf index c5f15c7..d181a34 100644 --- a/subworkflows/local/shortread_hostremoval.nf +++ b/subworkflows/local/shortread_hostremoval.nf @@ -2,8 +2,8 @@ // Remove host reads via alignment and export off-target reads // -include { BOWTIE2_BUILD } from '../../modules/nf-core/modules/bowtie2/build/main' -include { BOWTIE2_ALIGN } from '../../modules/nf-core/modules/bowtie2/align/main' +include { BOWTIE2_BUILD } from '../../modules/nf-core/bowtie2/build/main' +include { BOWTIE2_ALIGN } from '../../modules/nf-core/bowtie2/align/main' workflow SHORTREAD_HOSTREMOVAL { take: diff --git a/subworkflows/local/shortread_preprocessing.nf b/subworkflows/local/shortread_preprocessing.nf index 977a317..859c1d5 100644 --- a/subworkflows/local/shortread_preprocessing.nf +++ b/subworkflows/local/shortread_preprocessing.nf @@ -5,7 +5,7 @@ include { SHORTREAD_FASTP } from './shortread_fastp' include { SHORTREAD_ADAPTERREMOVAL } from './shortread_adapterremoval' -include { FASTQC as FASTQC_PROCESSED } from '../../modules/nf-core/modules/fastqc/main' +include { FASTQC as FASTQC_PROCESSED } from '../../modules/nf-core/fastqc/main' workflow SHORTREAD_PREPROCESSING { take: diff --git a/subworkflows/local/standardisation_profiles.nf b/subworkflows/local/standardisation_profiles.nf index 7a441ff..cbb0fab 100644 --- a/subworkflows/local/standardisation_profiles.nf +++ b/subworkflows/local/standardisation_profiles.nf @@ -2,11 +2,11 @@ // Standardise output files e.g. aggregation // -include { KAIJU_KAIJU2TABLE } from '../../modules/nf-core/modules/kaiju/kaiju2table/main' -include { KRAKENTOOLS_COMBINEKREPORTS } from '../../modules/nf-core/modules/krakentools/combinekreports/main' -include { KRAKENTOOLS_COMBINEKREPORTS as KRAKENTOOLS_COMBINEKREPORTS_CENTRIFUGE } from '../../modules/nf-core/modules/krakentools/combinekreports/main' -include { METAPHLAN3_MERGEMETAPHLANTABLES } from '../../modules/nf-core/modules/metaphlan3/mergemetaphlantables/main' -include { MOTUS_MERGE } from '../../modules/nf-core/modules/motus/merge/main' +include { KAIJU_KAIJU2TABLE } from '../../modules/nf-core/kaiju/kaiju2table/main' +include { KRAKENTOOLS_COMBINEKREPORTS } from '../../modules/nf-core/krakentools/combinekreports/main' +include { KRAKENTOOLS_COMBINEKREPORTS as KRAKENTOOLS_COMBINEKREPORTS_CENTRIFUGE } from '../../modules/nf-core/krakentools/combinekreports/main' +include { METAPHLAN3_MERGEMETAPHLANTABLES } from '../../modules/nf-core/metaphlan3/mergemetaphlantables/main' +include { MOTUS_MERGE } from '../../modules/nf-core/motus/merge/main' workflow STANDARDISATION_PROFILES { take: @@ -99,7 +99,7 @@ workflow STANDARDISATION_PROFILES { ch_versions = ch_versions.mix( KRAKENTOOLS_COMBINEKREPORTS.out.versions ) // MetaPhlAn3 - + ch_profiles_for_metaphlan3 = ch_input_profiles.metaphlan3 .map { [it[0]['db_name'], it[1]] } .groupTuple() diff --git a/subworkflows/local/visualization_krona.nf b/subworkflows/local/visualization_krona.nf index f06768a..7d8e4f0 100644 --- a/subworkflows/local/visualization_krona.nf +++ b/subworkflows/local/visualization_krona.nf @@ -2,13 +2,13 @@ // Create Krona visualizations // -include { MEGAN_RMA2INFO as MEGAN_RMA2INFO_KRONA } from '../../modules/nf-core/modules/megan/rma2info/main' -include { KAIJU_KAIJU2KRONA } from '../../modules/nf-core/modules/kaiju/kaiju2krona/main' -include { KRAKENTOOLS_KREPORT2KRONA } from '../../modules/nf-core/modules/krakentools/kreport2krona/main' +include { MEGAN_RMA2INFO as MEGAN_RMA2INFO_KRONA } from '../../modules/nf-core/megan/rma2info/main' +include { KAIJU_KAIJU2KRONA } from '../../modules/nf-core/kaiju/kaiju2krona/main' +include { KRAKENTOOLS_KREPORT2KRONA } from '../../modules/nf-core/krakentools/kreport2krona/main' include { KRONA_CLEANUP } from '../../modules/local/krona_cleanup' -include { KRONA_KTIMPORTTEXT } from '../../modules/nf-core/modules/krona/ktimporttext/main' -include { KRONA_KTIMPORTTAXONOMY } from '../../modules/nf-core/modules/krona/ktimporttaxonomy/main' -include { GUNZIP } from '../../modules/nf-core/modules/gunzip/main' +include { KRONA_KTIMPORTTEXT } from '../../modules/nf-core/krona/ktimporttext/main' +include { KRONA_KTIMPORTTAXONOMY } from '../../modules/nf-core/krona/ktimporttaxonomy/main' +include { GUNZIP } from '../../modules/nf-core/gunzip/main' workflow VISUALIZATION_KRONA { take: From 180cac0395d82d5e91049445c41d26b64caee46f Mon Sep 17 00:00:00 2001 From: "Moritz E. Beber" Date: Wed, 5 Oct 2022 13:49:35 +0200 Subject: [PATCH 375/789] fix: adapt to new samtools/view input --- subworkflows/local/longread_hostremoval.nf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/subworkflows/local/longread_hostremoval.nf b/subworkflows/local/longread_hostremoval.nf index 5b4413f..751f4e1 100644 --- a/subworkflows/local/longread_hostremoval.nf +++ b/subworkflows/local/longread_hostremoval.nf @@ -33,7 +33,7 @@ workflow LONGREAD_HOSTREMOVAL { } - SAMTOOLS_VIEW ( ch_minimap2_mapped , [] ) + SAMTOOLS_VIEW ( ch_minimap2_mapped , [], [] ) ch_versions = ch_versions.mix( SAMTOOLS_VIEW.out.versions.first() ) SAMTOOLS_BAM2FQ ( SAMTOOLS_VIEW.out.bam, false ) From 5f3dbd28dea341618a6246f2bee960d9621de34b Mon Sep 17 00:00:00 2001 From: "Moritz E. Beber" Date: Wed, 5 Oct 2022 13:51:15 +0200 Subject: [PATCH 376/789] fix: patch inputs to correspond to previous version --- modules.json | 3 ++- modules/nf-core/minimap2/index/main.nf | 6 +++--- .../minimap2/index/minimap2-index.diff | 20 +++++++++++++++++++ 3 files changed, 25 insertions(+), 4 deletions(-) create mode 100644 modules/nf-core/minimap2/index/minimap2-index.diff diff --git a/modules.json b/modules.json index 10d6c74..e9af665 100644 --- a/modules.json +++ b/modules.json @@ -119,7 +119,8 @@ }, "minimap2/index": { "branch": "master", - "git_sha": "5e34754d42cd2d5d248ca8673c0a53cdf5624905" + "git_sha": "5e34754d42cd2d5d248ca8673c0a53cdf5624905", + "patch": "modules/nf-core/minimap2/index/minimap2-index.diff" }, "motus/merge": { "branch": "master", diff --git a/modules/nf-core/minimap2/index/main.nf b/modules/nf-core/minimap2/index/main.nf index 25e9429..3dfeb86 100644 --- a/modules/nf-core/minimap2/index/main.nf +++ b/modules/nf-core/minimap2/index/main.nf @@ -7,11 +7,11 @@ process MINIMAP2_INDEX { 'quay.io/biocontainers/minimap2:2.21--h5bf99c6_0' }" input: - tuple val(meta), path(fasta) + path fasta output: - tuple val(meta), path("*.mmi"), emit: index - path "versions.yml" , emit: versions + path "*.mmi" , emit: index + path "versions.yml" , emit: versions when: task.ext.when == null || task.ext.when diff --git a/modules/nf-core/minimap2/index/minimap2-index.diff b/modules/nf-core/minimap2/index/minimap2-index.diff new file mode 100644 index 0000000..de306d5 --- /dev/null +++ b/modules/nf-core/minimap2/index/minimap2-index.diff @@ -0,0 +1,20 @@ +Changes in module 'nf-core/minimap2/index' +--- modules/nf-core/minimap2/index/main.nf ++++ modules/nf-core/minimap2/index/main.nf +@@ -7,11 +7,11 @@ + 'quay.io/biocontainers/minimap2:2.21--h5bf99c6_0' }" + + input: +- tuple val(meta), path(fasta) ++ path fasta + + output: +- tuple val(meta), path("*.mmi"), emit: index +- path "versions.yml" , emit: versions ++ path "*.mmi" , emit: index ++ path "versions.yml" , emit: versions + + when: + task.ext.when == null || task.ext.when + +************************************************************ From 58dffc0c5d4d710950dc2fe43555f353ce919f0a Mon Sep 17 00:00:00 2001 From: Sofia Stamouli <91951607+sofstam@users.noreply.github.com> Date: Tue, 11 Oct 2022 12:36:48 +0200 Subject: [PATCH 377/789] Add KrakenUniq and Filtlong in documentation --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 11eb9a3..1537a6f 100644 --- a/README.md +++ b/README.md @@ -32,8 +32,8 @@ On release, automated continuous integration tests run the pipeline on a full-si 1. Read QC ([`FastQC`](https://www.bioinformatics.babraham.ac.uk/projects/fastqc/)) 2. Performs optional read pre-processing - - Adapter clipping and merging (short read: [fastp](https://github.com/OpenGene/fastp), [AdapterRemoval2](https://github.com/MikkelSchubert/adapterremoval); long read: [porechop](https://github.com/rrwick/Porechop)) - - Low complexity filtering ([bbduk](https://jgi.doe.gov/data-and-tools/software-tools/bbtools/), [PRINSEQ++](https://github.com/Adrian-Cantu/PRINSEQ-plus-plus)) + - Adapter clipping and merging (short-read: [fastp](https://github.com/OpenGene/fastp), [AdapterRemoval2](https://github.com/MikkelSchubert/adapterremoval); long-read: [porechop](https://github.com/rrwick/Porechop)) + - Low complexity filtering (short-read: [bbduk](https://jgi.doe.gov/data-and-tools/software-tools/bbtools/), [PRINSEQ++](https://github.com/Adrian-Cantu/PRINSEQ-plus-plus); long-read: [Filtlong](https://github.com/rrwick/Filtlong)) - Host read removal ([BowTie2](http://bowtie-bio.sourceforge.net/bowtie2/)) - Run merging 3. Performs taxonomic profiling using one or more of: @@ -44,7 +44,7 @@ On release, automated continuous integration tests run the pipeline on a full-si - [Centrifuge](https://ccb.jhu.edu/software/centrifuge/) - [Kaiju](https://kaiju.binf.ku.dk/) - [mOTUs](https://motu-tool.org/) - - [MetaMaps](https://github.com/DiltheyLab/MetaMaps) + - [KrakenUniq](https://github.com/fbreitwieser/krakenuniq) 4. Perform optional post-processing with: - [bracken](https://ccb.jhu.edu/software/bracken/) 5. Standardises output tables From 56bae8575534828a738e09e8028eb8ee867ac1e8 Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Tue, 11 Oct 2022 12:38:18 +0200 Subject: [PATCH 378/789] Remove necessity of patch --- modules.json | 3 +-- modules/nf-core/minimap2/index/main.nf | 6 +++--- .../minimap2/index/minimap2-index.diff | 20 ------------------- subworkflows/local/longread_hostremoval.nf | 2 +- 4 files changed, 5 insertions(+), 26 deletions(-) delete mode 100644 modules/nf-core/minimap2/index/minimap2-index.diff diff --git a/modules.json b/modules.json index e9af665..10d6c74 100644 --- a/modules.json +++ b/modules.json @@ -119,8 +119,7 @@ }, "minimap2/index": { "branch": "master", - "git_sha": "5e34754d42cd2d5d248ca8673c0a53cdf5624905", - "patch": "modules/nf-core/minimap2/index/minimap2-index.diff" + "git_sha": "5e34754d42cd2d5d248ca8673c0a53cdf5624905" }, "motus/merge": { "branch": "master", diff --git a/modules/nf-core/minimap2/index/main.nf b/modules/nf-core/minimap2/index/main.nf index 3dfeb86..25e9429 100644 --- a/modules/nf-core/minimap2/index/main.nf +++ b/modules/nf-core/minimap2/index/main.nf @@ -7,11 +7,11 @@ process MINIMAP2_INDEX { 'quay.io/biocontainers/minimap2:2.21--h5bf99c6_0' }" input: - path fasta + tuple val(meta), path(fasta) output: - path "*.mmi" , emit: index - path "versions.yml" , emit: versions + tuple val(meta), path("*.mmi"), emit: index + path "versions.yml" , emit: versions when: task.ext.when == null || task.ext.when diff --git a/modules/nf-core/minimap2/index/minimap2-index.diff b/modules/nf-core/minimap2/index/minimap2-index.diff deleted file mode 100644 index de306d5..0000000 --- a/modules/nf-core/minimap2/index/minimap2-index.diff +++ /dev/null @@ -1,20 +0,0 @@ -Changes in module 'nf-core/minimap2/index' ---- modules/nf-core/minimap2/index/main.nf -+++ modules/nf-core/minimap2/index/main.nf -@@ -7,11 +7,11 @@ - 'quay.io/biocontainers/minimap2:2.21--h5bf99c6_0' }" - - input: -- tuple val(meta), path(fasta) -+ path fasta - - output: -- tuple val(meta), path("*.mmi"), emit: index -- path "versions.yml" , emit: versions -+ path "*.mmi" , emit: index -+ path "versions.yml" , emit: versions - - when: - task.ext.when == null || task.ext.when - -************************************************************ diff --git a/subworkflows/local/longread_hostremoval.nf b/subworkflows/local/longread_hostremoval.nf index 751f4e1..82ea8ca 100644 --- a/subworkflows/local/longread_hostremoval.nf +++ b/subworkflows/local/longread_hostremoval.nf @@ -18,7 +18,7 @@ workflow LONGREAD_HOSTREMOVAL { ch_multiqc_files = Channel.empty() if ( !params.longread_hostremoval_index ) { - ch_minimap2_index = MINIMAP2_INDEX ( reference ).index + ch_minimap2_index = MINIMAP2_INDEX ( [ [], reference ] ).index.map { it[1] } ch_versions = ch_versions.mix( MINIMAP2_INDEX.out.versions ) } else { ch_minimap2_index = index From dea45c66c24bc1bed23c1a6ea964e8d78dacd921 Mon Sep 17 00:00:00 2001 From: Sofia Stamouli <91951607+sofstam@users.noreply.github.com> Date: Tue, 11 Oct 2022 14:59:48 +0200 Subject: [PATCH 379/789] Add Krona description --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 1537a6f..9385b33 100644 --- a/README.md +++ b/README.md @@ -49,6 +49,7 @@ On release, automated continuous integration tests run the pipeline on a full-si - [bracken](https://ccb.jhu.edu/software/bracken/) 5. Standardises output tables 6. Present QC for raw reads ([`MultiQC`](http://multiqc.info/)) +7. Plotting Kraken2, Centrifuge, Kaiju and MALT results ([`Krona`](https://hpc.nih.gov/apps/kronatools.html)) ## Quick Start From 2423c9d87cef7c4c7588f21abdc5d46a85c18e66 Mon Sep 17 00:00:00 2001 From: Sofia Stamouli <91951607+sofstam@users.noreply.github.com> Date: Tue, 11 Oct 2022 15:02:01 +0200 Subject: [PATCH 380/789] Add headers --- docs/usage.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/usage.md b/docs/usage.md index 8b8b588..4f4c1ac 100644 --- a/docs/usage.md +++ b/docs/usage.md @@ -47,6 +47,7 @@ The pipeline will auto-detect whether a sample is single- or paired-end using th A final samplesheet file consisting of both single- and paired-end data, as well as long-read FASTA files may look something like the one below. This is for 6 samples, where `2612` has been sequenced twice. ```console +sample,run_accession,instrument_platform,fastq_1,fastq_2,fasta 2611,ERR5766174,ILLUMINA,,,///fasta/ERX5474930_ERR5766174_1.fa.gz 2612,ERR5766176,ILLUMINA,///fastq/ERX5474932_ERR5766176_1.fastq.gz,///fastq/ERX5474932_ERR5766176_2.fastq.gz, 2612,ERR5766180,ILLUMINA,///fastq/ERX5474936_ERR5766180_1.fastq.gz,, From f24344c168f6d98a8f58c38631557f5b9885f0e7 Mon Sep 17 00:00:00 2001 From: Sofia Stamouli <91951607+sofstam@users.noreply.github.com> Date: Tue, 11 Oct 2022 16:30:42 +0200 Subject: [PATCH 381/789] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 9385b33..73dfe93 100644 --- a/README.md +++ b/README.md @@ -33,7 +33,7 @@ On release, automated continuous integration tests run the pipeline on a full-si 1. Read QC ([`FastQC`](https://www.bioinformatics.babraham.ac.uk/projects/fastqc/)) 2. Performs optional read pre-processing - Adapter clipping and merging (short-read: [fastp](https://github.com/OpenGene/fastp), [AdapterRemoval2](https://github.com/MikkelSchubert/adapterremoval); long-read: [porechop](https://github.com/rrwick/Porechop)) - - Low complexity filtering (short-read: [bbduk](https://jgi.doe.gov/data-and-tools/software-tools/bbtools/), [PRINSEQ++](https://github.com/Adrian-Cantu/PRINSEQ-plus-plus); long-read: [Filtlong](https://github.com/rrwick/Filtlong)) + - Low complexity and quality filtering (short-read: [bbduk](https://jgi.doe.gov/data-and-tools/software-tools/bbtools/), [PRINSEQ++](https://github.com/Adrian-Cantu/PRINSEQ-plus-plus); long-read: [Filtlong](https://github.com/rrwick/Filtlong)) - Host read removal ([BowTie2](http://bowtie-bio.sourceforge.net/bowtie2/)) - Run merging 3. Performs taxonomic profiling using one or more of: From f22cf0c921a2f1eb78ed807111966f3e2002307c Mon Sep 17 00:00:00 2001 From: Sofia Stamouli <91951607+sofstam@users.noreply.github.com> Date: Tue, 11 Oct 2022 16:41:44 +0200 Subject: [PATCH 382/789] Update usage.md --- docs/usage.md | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/docs/usage.md b/docs/usage.md index 8b8b588..aec51dc 100644 --- a/docs/usage.md +++ b/docs/usage.md @@ -145,6 +145,7 @@ Expected (uncompressed) database files for each tool are as follows: with same release version of the mOTUs tools. The database for same version tools can be thus reused for multiple runs. Users can download the database once using the script above and specify the path the database to the TSV table provided to `--databases`. +- **KrakenUniq** ## Running the pipeline @@ -199,7 +200,9 @@ Complexity filtering is primarily a run-time optimisation step. It is not necess There are currently three options for short-read complexity filtering: [`bbduk`](https://jgi.doe.gov/data-and-tools/software-tools/bbtools/bb-tools-user-guide/bbduk-guide/), [`prinseq++`](https://github.com/Adrian-Cantu/PRINSEQ-plus-plus), and [`fastp`](https://github.com/OpenGene/fastp#low-complexity-filter). -The tools offer different algorithms and parameters for removing low complexity reads. We therefore recommend reviewing the pipeline's [parameter documentation](https://nf-co.re/taxprofiler/parameters) and the documentation of the tools (see links above) to decide on optimal methods and parameters for your dataset. +There is one option for long-read quality filtering: [`Filtlong`](https://github.com/rrwick/Filtlong) + +The tools offer different algorithms and parameters for removing low complexity reads and quality filtering. We therefore recommend reviewing the pipeline's [parameter documentation](https://nf-co.re/taxprofiler/parameters) and the documentation of the tools (see links above) to decide on optimal methods and parameters for your dataset. You can optionally save the FASTQ output of the run merging with the `--save_complexityfiltered_reads`. If running with `fastp`, complexity filtering happens inclusively within the earlier shortread preprocessing step. Therefore there will not be an independent pipeline step for complexity filtering, and no independent FASTQ file (i.e. `--save_complexityfiltered_reads` will be ignored) - your complexity filtered reads will also be in the `fastp/` folder in the same file(s) as the preprocessed read. From 35b7fc26f7ab0711c6fcebe45806d807ed6d8d1e Mon Sep 17 00:00:00 2001 From: Sofia Stamouli <91951607+sofstam@users.noreply.github.com> Date: Tue, 11 Oct 2022 17:01:08 +0200 Subject: [PATCH 383/789] [skip ci] --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 73dfe93..8d45ff8 100644 --- a/README.md +++ b/README.md @@ -53,7 +53,7 @@ On release, automated continuous integration tests run the pipeline on a full-si ## Quick Start -1. Install [`Nextflow`](https://www.nextflow.io/docs/latest/getstarted.html#installation) (`>=21.10.3`) +1. Install [`Nextflow`](https://www.nextflow.io/docs/latest/getstarted.html#installation) (`>=21.10.3`). 2. Install any of [`Docker`](https://docs.docker.com/engine/installation/), [`Singularity`](https://www.sylabs.io/guides/3.0/user-guide/) (you can follow [this tutorial](https://singularity-tutorial.github.io/01-installation/)), [`Podman`](https://podman.io/), [`Shifter`](https://nersc.gitlab.io/development/shifter/how-to-use/) or [`Charliecloud`](https://hpc.github.io/charliecloud/) for full pipeline reproducibility _(you can use [`Conda`](https://conda.io/miniconda.html) both to install Nextflow itself and also to manage software within pipelines. Please only use it within pipelines as a last resort; see [docs](https://nf-co.re/usage/configuration#basic-configuration-profiles))_. From 17b2ad3199aede3f695b1085869550c49eda97ec Mon Sep 17 00:00:00 2001 From: Sofia Stamouli Date: Tue, 11 Oct 2022 17:29:41 +0200 Subject: [PATCH 384/789] Add prettier --- docs/usage.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/usage.md b/docs/usage.md index aec51dc..93ec0a9 100644 --- a/docs/usage.md +++ b/docs/usage.md @@ -200,7 +200,7 @@ Complexity filtering is primarily a run-time optimisation step. It is not necess There are currently three options for short-read complexity filtering: [`bbduk`](https://jgi.doe.gov/data-and-tools/software-tools/bbtools/bb-tools-user-guide/bbduk-guide/), [`prinseq++`](https://github.com/Adrian-Cantu/PRINSEQ-plus-plus), and [`fastp`](https://github.com/OpenGene/fastp#low-complexity-filter). -There is one option for long-read quality filtering: [`Filtlong`](https://github.com/rrwick/Filtlong) +There is one option for long-read quality filtering: [`Filtlong`](https://github.com/rrwick/Filtlong) The tools offer different algorithms and parameters for removing low complexity reads and quality filtering. We therefore recommend reviewing the pipeline's [parameter documentation](https://nf-co.re/taxprofiler/parameters) and the documentation of the tools (see links above) to decide on optimal methods and parameters for your dataset. From d09a8e054535e76b6c41e45598a7d14273d91244 Mon Sep 17 00:00:00 2001 From: Sofia Stamouli <91951607+sofstam@users.noreply.github.com> Date: Tue, 11 Oct 2022 17:44:48 +0200 Subject: [PATCH 385/789] [skip ci] --- docs/usage.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/usage.md b/docs/usage.md index 93ec0a9..3c0e17d 100644 --- a/docs/usage.md +++ b/docs/usage.md @@ -145,7 +145,7 @@ Expected (uncompressed) database files for each tool are as follows: with same release version of the mOTUs tools. The database for same version tools can be thus reused for multiple runs. Users can download the database once using the script above and specify the path the database to the TSV table provided to `--databases`. -- **KrakenUniq** +- **KrakenUniq** WIP ## Running the pipeline From bd56bc0ed629e5ecb012cd39c98b0f5aa3663335 Mon Sep 17 00:00:00 2001 From: Sofia Stamouli <91951607+sofstam@users.noreply.github.com> Date: Wed, 12 Oct 2022 11:10:53 +0200 Subject: [PATCH 386/789] Add minimap2 and update contributors --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 8d45ff8..2bd45a9 100644 --- a/README.md +++ b/README.md @@ -34,7 +34,7 @@ On release, automated continuous integration tests run the pipeline on a full-si 2. Performs optional read pre-processing - Adapter clipping and merging (short-read: [fastp](https://github.com/OpenGene/fastp), [AdapterRemoval2](https://github.com/MikkelSchubert/adapterremoval); long-read: [porechop](https://github.com/rrwick/Porechop)) - Low complexity and quality filtering (short-read: [bbduk](https://jgi.doe.gov/data-and-tools/software-tools/bbtools/), [PRINSEQ++](https://github.com/Adrian-Cantu/PRINSEQ-plus-plus); long-read: [Filtlong](https://github.com/rrwick/Filtlong)) - - Host read removal ([BowTie2](http://bowtie-bio.sourceforge.net/bowtie2/)) + - Host read removal (short-read: [BowTie2](http://bowtie-bio.sourceforge.net/bowtie2/); long-read: [Minimap2](https://github.com/lh3/minimap2)) - Run merging 3. Performs taxonomic profiling using one or more of: - [Kraken2](https://ccb.jhu.edu/software/kraken2/) @@ -88,7 +88,7 @@ nf-core/taxprofiler was originally written by nf-core community. We thank the following people for their extensive assistance in the development of this pipeline: -[James A. Fellows Yates](https://github.com/jfy133), [Moritz Beber](https://github.com/Midnighter), [Lauri Mesilaakso](https://github.com/ljmesi), [Sofia Stamouli](https://github.com/sofsam), [Maxime Borry](https://github.com/maxibor). +[James A. Fellows Yates](https://github.com/jfy133), [Moritz Beber](https://github.com/Midnighter), [Lauri Mesilaakso](https://github.com/ljmesi), [Sofia Stamouli](https://github.com/sofsam), [Maxime Borry](https://github.com/maxibor),[Thomas A. Christensen II](https://github.com/MillironX), [Jianhong Ou](https://github.com/jianhong), [Rafal Stepien](https://github.com/rafalstepien), [Mahwash Jamy](https://github.com/mjamy). ## Contributions and Support From 0b16010b92d7362e1accdc621f17fee99b824110 Mon Sep 17 00:00:00 2001 From: Sofia Stamouli <91951607+sofstam@users.noreply.github.com> Date: Wed, 12 Oct 2022 11:39:03 +0200 Subject: [PATCH 387/789] Add tutorials section --- docs/usage.md | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/docs/usage.md b/docs/usage.md index 3c0e17d..0be44ed 100644 --- a/docs/usage.md +++ b/docs/usage.md @@ -228,7 +228,7 @@ Activating this functionality will concatenate the FASTQ files with the same sam You can optionally save the FASTQ output of the run merging with the `--save_runmerged_reads`. -##### Profiling +#### Profiling ###### MALT @@ -429,6 +429,20 @@ We recommend adding the following line to your environment to limit this (typica NXF_OPTS='-Xms1g -Xmx4g' ``` +## Tutorials + +### Tutorial - How to create your custom database + +#### Kraken2 +Kraken2 allows the user to build custom databases. You can follow Kraken2 [tutorial](https://github.com/DerrickWood/kraken2/blob/master/docs/MANUAL.markdown#custom-databases). + +#### Centrifuge +Centrifuge is similar to Kraken2 in that it enables to [build custom databases](https://ccb.jhu.edu/software/centrifuge/manual.shtml#custom-database). + +#### Kaiju +WIP + + ## Troubleshooting and FAQs ### I get a warning during centrifuge_kreport process with exit status 255. From e98cd038c767705e6dce1fe119b44995a6e8d47f Mon Sep 17 00:00:00 2001 From: Sofia Stamouli <91951607+sofstam@users.noreply.github.com> Date: Wed, 12 Oct 2022 12:56:54 +0200 Subject: [PATCH 388/789] [skip ci] Add description for MALT --- docs/usage.md | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/docs/usage.md b/docs/usage.md index 0be44ed..5769bd9 100644 --- a/docs/usage.md +++ b/docs/usage.md @@ -440,8 +440,24 @@ Kraken2 allows the user to build custom databases. You can follow Kraken2 [tutor Centrifuge is similar to Kraken2 in that it enables to [build custom databases](https://ccb.jhu.edu/software/centrifuge/manual.shtml#custom-database). #### Kaiju -WIP +It is possible to [create custom databases](https://github.com/bioinformatics-centre/kaiju#custom-database) with Kaiju. +#### MALT +To create a custom database for MALT, the user should download and unzip the following database which lists all NCBI records. The input files are specified using -i and the index is specified using -d. A detailed description for each argument can be found [here](https://software-ab.informatik.uni-tuebingen.de/download/malt/manual.pdf) + +```bash +wget https://software-ab.informatik.uni-tuebingen.de/download/megan6/megan-nucl-Feb2022.db.zip +unzip megan-nucl-Feb2022.db +malt-build -i path/to/fasta/files/*.{fna,fa} -s DNA -d index -t 8 -st 4 -a2t megan-nucl-Feb2022.db +``` + +#### Bracken + +#### KrakenUniq + +#### DIAMOND + +#### mOTUs ## Troubleshooting and FAQs From 4352d35937560e977904f1e9154691b76aff41f8 Mon Sep 17 00:00:00 2001 From: "Moritz E. Beber" Date: Fri, 14 Oct 2022 10:52:17 +0200 Subject: [PATCH 389/789] chore: install Bracken module --- modules.json | 4 +++ modules/nf-core/bracken/bracken/main.nf | 45 ++++++++++++++++++++++++ modules/nf-core/bracken/bracken/meta.yml | 45 ++++++++++++++++++++++++ 3 files changed, 94 insertions(+) create mode 100644 modules/nf-core/bracken/bracken/main.nf create mode 100644 modules/nf-core/bracken/bracken/meta.yml diff --git a/modules.json b/modules.json index 10d6c74..8f89a11 100644 --- a/modules.json +++ b/modules.json @@ -21,6 +21,10 @@ "branch": "master", "git_sha": "5e34754d42cd2d5d248ca8673c0a53cdf5624905" }, + "bracken/bracken": { + "branch": "master", + "git_sha": "5e34754d42cd2d5d248ca8673c0a53cdf5624905" + }, "cat/fastq": { "branch": "master", "git_sha": "5e34754d42cd2d5d248ca8673c0a53cdf5624905" diff --git a/modules/nf-core/bracken/bracken/main.nf b/modules/nf-core/bracken/bracken/main.nf new file mode 100644 index 0000000..5e08418 --- /dev/null +++ b/modules/nf-core/bracken/bracken/main.nf @@ -0,0 +1,45 @@ +process BRACKEN_BRACKEN { + tag "$meta.id" + label 'process_low' + + // WARN: Version information not provided by tool on CLI. + // Please update version string below when bumping container versions. + conda (params.enable_conda ? "bioconda::bracken=2.7" : null) + container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? + 'https://depot.galaxyproject.org/singularity/bracken:2.7--py39hc16433a_0': + 'quay.io/biocontainers/bracken:2.7--py39hc16433a_0' }" + + input: + tuple val(meta), path(kraken_report) + path database + + output: + tuple val(meta), path(bracken_report), emit: reports + path "versions.yml" , emit: versions + + when: + task.ext.when == null || task.ext.when + + script: + def threshold = meta.threshold ?: 10 + def taxonomic_level = meta.taxonomic_level ?: 'S' + def read_length = meta.read_length ?: 150 + def args = task.ext.args ?: "-l ${taxonomic_level} -t ${threshold} -r ${read_length}" + def prefix = task.ext.prefix ?: "${meta.id}" + bracken_report = "${prefix}_${taxonomic_level}.tsv" + // WARN: Version information not provided by tool on CLI. + // Please update version string below when bumping container versions. + def VERSION = '2.7' + """ + bracken \\ + ${args} \\ + -d '${database}' \\ + -i '${kraken_report}' \\ + -o '${bracken_report}' + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + bracken: ${VERSION} + END_VERSIONS + """ +} diff --git a/modules/nf-core/bracken/bracken/meta.yml b/modules/nf-core/bracken/bracken/meta.yml new file mode 100644 index 0000000..1931161 --- /dev/null +++ b/modules/nf-core/bracken/bracken/meta.yml @@ -0,0 +1,45 @@ +name: bracken_bracken +description: Re-estimate taxonomic abundance of metagenomic samples analyzed by kraken. +keywords: + - sort +tools: + - bracken: + description: Bracken (Bayesian Reestimation of Abundance with KrakEN) is a highly accurate statistical method that computes the abundance of species in DNA sequences from a metagenomics sample. + homepage: https://ccb.jhu.edu/software/bracken/ + documentation: https://ccb.jhu.edu/software/bracken/index.shtml?t=manual + tool_dev_url: https://github.com/jenniferlu717/Bracken + doi: "10.7717/peerj-cs.104" + licence: ["GPL v3"] + +input: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - kraken_report: + type: file + description: TSV file with six columns coming from kraken2 output + pattern: "*.{tsv}" + - database: + type: file + description: Directory containing the kraken2/Bracken files for analysis + pattern: "*" + +output: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - versions: + type: file + description: File containing software versions + pattern: "versions.yml" + - reports: + type: file + description: TSV output report of the re-estimated abundances + pattern: "*.{tsv}" + +authors: + - "@Midnighter" From 4f728648f59c35f7282e832090302047c7786f2a Mon Sep 17 00:00:00 2001 From: "Moritz E. Beber" Date: Fri, 14 Oct 2022 10:56:14 +0200 Subject: [PATCH 390/789] feat: add process to standardize kraken report --- modules/local/kraken_standard_report.nf | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 modules/local/kraken_standard_report.nf diff --git a/modules/local/kraken_standard_report.nf b/modules/local/kraken_standard_report.nf new file mode 100644 index 0000000..93109aa --- /dev/null +++ b/modules/local/kraken_standard_report.nf @@ -0,0 +1,24 @@ +process KRAKEN_STANDARD_REPORT { + tag "$meta.id" + label 'process_low' + + conda (params.enable_conda ? 'conda-forge::sed=4.8' : null) + if (workflow.containerEngine == 'singularity' && !params.singularity_pull_docker_container) { + container 'https://containers.biocontainers.pro/s3/SingImgsRepo/biocontainers/v1.2.0_cv2/biocontainers_v1.2.0_cv2.img' + } else { + container 'biocontainers/biocontainers:v1.2.0_cv2' + } + + input: + tuple val(meta), path(report) + + output: + tuple val(meta), path(result), emit: report + + script: + result = "${report.baseName}_standardized.kraken2.report.txt" + """ + cut -f1-3,6-8 "${report}" > "${result}" + """ +} + From ca38d002dee9510ca687403a617aec744ab9d46d Mon Sep 17 00:00:00 2001 From: "Moritz E. Beber" Date: Fri, 14 Oct 2022 12:18:07 +0200 Subject: [PATCH 391/789] feat: integrate Bracken into the profiling pipeline --- conf/modules.config | 11 +++++++++- modules/local/kraken_standard_report.nf | 18 +++++++++------- nextflow.config | 4 ++++ subworkflows/local/profiling.nf | 28 +++++++++++++++++++++++++ 4 files changed, 52 insertions(+), 9 deletions(-) diff --git a/conf/modules.config b/conf/modules.config index d2a0051..fff28ea 100644 --- a/conf/modules.config +++ b/conf/modules.config @@ -277,7 +277,7 @@ process { } withName: KRAKEN2_KRAKEN2 { - ext.args = { "${meta.db_params}" } + ext.args = params.kraken2_save_minimizers ? { "${meta.db_params} --report-minimizer-data" } : { "${meta.db_params}" } ext.prefix = params.perform_runmerging ? { "${meta.id}-${meta.db_name}" } : { "${meta.id}-${meta.run_accession}-${meta.db_name}" } publishDir = [ path: { "${params.outdir}/kraken2/${meta.db_name}/" }, @@ -286,6 +286,15 @@ process { ] } + withName: BRACKEN_BRACKEN { + errorStrategy = 'ignore' + publishDir = [ + path: { "${params.outdir}/bracken/${meta.db_name}/" }, + mode: params.publish_dir_mode, + pattern: '*.tsv' + ] + } + withName: KRAKENTOOLS_COMBINEKREPORTS { ext.prefix = { "kraken2_${meta.id}_combined_reports" } publishDir = [ diff --git a/modules/local/kraken_standard_report.nf b/modules/local/kraken_standard_report.nf index 93109aa..ab47d81 100644 --- a/modules/local/kraken_standard_report.nf +++ b/modules/local/kraken_standard_report.nf @@ -1,13 +1,11 @@ process KRAKEN_STANDARD_REPORT { tag "$meta.id" - label 'process_low' + label 'process_single' conda (params.enable_conda ? 'conda-forge::sed=4.8' : null) - if (workflow.containerEngine == 'singularity' && !params.singularity_pull_docker_container) { - container 'https://containers.biocontainers.pro/s3/SingImgsRepo/biocontainers/v1.2.0_cv2/biocontainers_v1.2.0_cv2.img' - } else { - container 'biocontainers/biocontainers:v1.2.0_cv2' - } + container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? + 'https://containers.biocontainers.pro/s3/SingImgsRepo/biocontainers/v1.2.0_cv2/biocontainers_v1.2.0_cv2.img' : + 'biocontainers/biocontainers:v1.2.0_cv2' }" input: tuple val(meta), path(report) @@ -15,10 +13,14 @@ process KRAKEN_STANDARD_REPORT { output: tuple val(meta), path(result), emit: report + when: + task.ext.when == null || task.ext.when + script: - result = "${report.baseName}_standardized.kraken2.report.txt" + def prefix = task.ext.prefix ?: "${meta.id}" + result = "${prefix}_standardized.kraken2.report.txt" """ - cut -f1-3,6-8 "${report}" > "${result}" + cut -f1-3,6-8 '${report}' > '${result}' """ } diff --git a/nextflow.config b/nextflow.config index efb5aff..4f32a00 100644 --- a/nextflow.config +++ b/nextflow.config @@ -114,6 +114,10 @@ params { run_kraken2 = false kraken2_save_reads = false // added directly to module in profiling.nf kraken2_save_readclassification = false // added directly to module in profiling.nf + kraken2_save_minimizers = false + + // Bracken + run_bracken = true // centrifuge run_centrifuge = false diff --git a/subworkflows/local/profiling.nf b/subworkflows/local/profiling.nf index 11c4a72..970c128 100644 --- a/subworkflows/local/profiling.nf +++ b/subworkflows/local/profiling.nf @@ -5,6 +5,7 @@ include { MALT_RUN } from '../../modules/nf-core/malt/run/main' include { MEGAN_RMA2INFO as MEGAN_RMA2INFO_TSV } from '../../modules/nf-core/megan/rma2info/main' include { KRAKEN2_KRAKEN2 } from '../../modules/nf-core/kraken2/kraken2/main' +include { BRACKEN_BRACKEN } from '../../modules/nf-core/bracken/bracken/main' include { CENTRIFUGE_CENTRIFUGE } from '../../modules/nf-core/centrifuge/centrifuge/main' include { CENTRIFUGE_KREPORT } from '../../modules/nf-core/centrifuge/kreport/main' include { METAPHLAN3_METAPHLAN3 } from '../../modules/nf-core/metaphlan3/metaphlan3/main' @@ -133,6 +134,33 @@ workflow PROFILING { } + if ( params.run_kraken2 && params.run_bracken ) { + + def ch_input_for_bracken + + if (params.kraken2_save_minimizers) { + ch_input_for_bracken = KRAKEN_STANDARD_REPORT(KRAKEN2_KRAKEN2.out.report).report + } else { + ch_input_for_bracken = KRAKEN2_KRAKEN2.out.report + } + + ch_input_for_bracken = ch_input_for_bracken + .combine( + databases.filter { meta, db -> + meta['tool'] == 'bracken' + } + ) + .multiMap { meta, report, db_meta, db -> + report: [meta + db_meta, report] + db: db + } + + BRACKEN_BRACKEN(ch_input_for_bracken.report, ch_input_for_bracken.db) + ch_versions = ch_versions.mix(BRACKEN_BRACKEN.out.versions.first()) + ch_raw_profiles = ch_raw_profiles.mix(BRACKEN_BRACKEN.out.reports) + + } + if ( params.run_centrifuge ) { ch_input_for_centrifuge = ch_input_for_profiling.centrifuge From 767663d975040baed045d7dcc49a290e292b54a8 Mon Sep 17 00:00:00 2001 From: "Moritz E. Beber" Date: Fri, 14 Oct 2022 12:18:55 +0200 Subject: [PATCH 392/789] chore: add Bracken to test configs --- conf/test.config | 1 + conf/test_nopreprocessing.config | 1 + conf/test_noprofiling.config | 1 + conf/test_nothing.config | 1 + conf/test_pep.config | 1 + 5 files changed, 5 insertions(+) diff --git a/conf/test.config b/conf/test.config index d5dcd67..777d9bf 100644 --- a/conf/test.config +++ b/conf/test.config @@ -34,6 +34,7 @@ params { hostremoval_reference = 'https://raw.githubusercontent.com/nf-core/test-datasets/modules/data/genomics/homo_sapiens/genome/genome.fasta' run_kaiju = true run_kraken2 = true + run_bracken = true run_malt = true run_metaphlan3 = true run_centrifuge = true diff --git a/conf/test_nopreprocessing.config b/conf/test_nopreprocessing.config index 3908b56..357f76f 100644 --- a/conf/test_nopreprocessing.config +++ b/conf/test_nopreprocessing.config @@ -33,6 +33,7 @@ params { hostremoval_reference = 'https://raw.githubusercontent.com/nf-core/test-datasets/modules/data/genomics/homo_sapiens/genome/genome.fasta' run_kaiju = true run_kraken2 = true + run_bracken = true run_malt = true run_metaphlan3 = true run_centrifuge = true diff --git a/conf/test_noprofiling.config b/conf/test_noprofiling.config index 12c7185..59ed0da 100644 --- a/conf/test_noprofiling.config +++ b/conf/test_noprofiling.config @@ -34,6 +34,7 @@ params { hostremoval_reference = 'https://raw.githubusercontent.com/nf-core/test-datasets/modules/data/genomics/homo_sapiens/genome/genome.fasta' run_kaiju = false run_kraken2 = false + run_bracken = false run_malt = false run_metaphlan3 = false run_centrifuge = false diff --git a/conf/test_nothing.config b/conf/test_nothing.config index c0ecece..df09613 100644 --- a/conf/test_nothing.config +++ b/conf/test_nothing.config @@ -33,6 +33,7 @@ params { hostremoval_reference = 'https://raw.githubusercontent.com/nf-core/test-datasets/modules/data/genomics/homo_sapiens/genome/genome.fasta' run_kaiju = false run_kraken2 = false + run_bracken = false run_malt = false run_metaphlan3 = false run_centrifuge = false diff --git a/conf/test_pep.config b/conf/test_pep.config index 7f8c95d..762ebb3 100644 --- a/conf/test_pep.config +++ b/conf/test_pep.config @@ -19,6 +19,7 @@ params { hostremoval_reference = 'https://raw.githubusercontent.com/nf-core/test-datasets/modules/data/genomics/homo_sapiens/genome/genome.fasta' run_kaiju = true run_kraken2 = true + run_bracken = true run_malt = true run_metaphlan3 = true run_centrifuge = true From 7f8180f45841cc3ffb40ca70c564a8d14ed254f7 Mon Sep 17 00:00:00 2001 From: "Moritz E. Beber" Date: Fri, 14 Oct 2022 12:49:07 +0200 Subject: [PATCH 393/789] fix: emit tool versions --- modules/local/kraken_standard_report.nf | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/modules/local/kraken_standard_report.nf b/modules/local/kraken_standard_report.nf index ab47d81..aada6fb 100644 --- a/modules/local/kraken_standard_report.nf +++ b/modules/local/kraken_standard_report.nf @@ -12,6 +12,7 @@ process KRAKEN_STANDARD_REPORT { output: tuple val(meta), path(result), emit: report + path 'versions.yml' , emit: versions when: task.ext.when == null || task.ext.when @@ -21,6 +22,11 @@ process KRAKEN_STANDARD_REPORT { result = "${prefix}_standardized.kraken2.report.txt" """ cut -f1-3,6-8 '${report}' > '${result}' + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + cut: \$(echo \$(cut --version 2>&1) | sed 's/^.*(GNU coreutils) //; s/ Copyright.*\$//') + END_VERSIONS """ } From c4f64682751383b6144d14d05cfa48e2d10b6235 Mon Sep 17 00:00:00 2001 From: "Moritz E. Beber" Date: Fri, 14 Oct 2022 12:55:26 +0200 Subject: [PATCH 394/789] chore: update parameters schema --- nextflow_schema.json | 61 +++++++++++++++++++++++++++++++++++++++----- 1 file changed, 54 insertions(+), 7 deletions(-) diff --git a/nextflow_schema.json b/nextflow_schema.json index f88443f..c40ce0e 100644 --- a/nextflow_schema.json +++ b/nextflow_schema.json @@ -10,7 +10,11 @@ "type": "object", "fa_icon": "fas fa-terminal", "description": "Define where the pipeline should find input data and save output data.", - "required": ["input", "outdir", "databases"], + "required": [ + "input", + "databases", + "outdir" + ], "properties": { "input": { "type": "string", @@ -80,7 +84,10 @@ "shortread_qc_tool": { "type": "string", "default": "fastp", - "enum": ["fastp", "adapterremoval"], + "enum": [ + "fastp", + "adapterremoval" + ], "fa_icon": "fas fa-tools", "description": "Specify which tool to use for short-read QC" }, @@ -133,7 +140,11 @@ "shortread_complexityfilter_tool": { "type": "string", "default": "bbduk", - "enum": ["bbduk", "prinseqplusplus", "fastp"], + "enum": [ + "bbduk", + "prinseqplusplus", + "fastp" + ], "fa_icon": "fas fa-hammer", "description": "Specify which tool to use for complexity filtering" }, @@ -167,7 +178,10 @@ "shortread_complexityfilter_prinseqplusplus_mode": { "type": "string", "default": "entropy", - "enum": ["entropy", "dust"], + "enum": [ + "entropy", + "dust" + ], "fa_icon": "fas fa-check-square", "description": "Specify the complexity filter mode for PRINSEQ++" }, @@ -341,7 +355,15 @@ "diamond_output_format": { "type": "string", "default": "tsv", - "enum": ["blast", "xml", "txt", "daa", "sam", "tsv", "paf"], + "enum": [ + "blast", + "xml", + "txt", + "daa", + "sam", + "tsv", + "paf" + ], "fa_icon": "fas fa-file", "description": "Specify output format from DIAMOND profiling.", "help_text": "DIAMOND can produce output in a number of different formats, you can specify here which to produce.\n\nNote that DIAMOND can only produce one format at a time, and depending on which you pick, some downstream steps may not be executed. For example, selecting `daa` or `sam` will mean you will not get a tabular taxonomic profile as with the other tools.\n\nWill be overriden by `--diamond_save_reads.`\n\n> Modifies tool parameter(s):\n> - diamond blastx: `--outfmt`" @@ -360,7 +382,14 @@ "kaiju_taxon_rank": { "type": "string", "default": "species", - "enum": ["phylum", "class", "order", "family", "genus", "species"], + "enum": [ + "phylum", + "class", + "order", + "family", + "genus", + "species" + ], "fa_icon": "fas fa-tag", "description": "Specify taxonomic rank to be displayed in Kaiju taxon table", "help_text": "Specify the taxonomic level(s) to be displayed in the resulting Kaiju taxon table, as generated by the kaiju2table helper tool.\n\nThis can be either a single level (e.g. `species`), or a comma separated list to display the full taxonomic path (e.g. `superkingdom,phylum,class,order,family,genus,species.`).\n\n> Modifies tool parameter(s):\n> - kaiju2table: `-l`" @@ -382,6 +411,17 @@ "description": "Turn on saving of Kraken2 per-read taxonomic assignment file", "help_text": "Save a text file that contains a list of each read that had a taxonomic assignment, with information on specific taxonomic taxonomic assignment that that read recieved.\n\n> Modifies tool parameter(s):\n> - kraken2: `--output`" }, + "kraken2_save_minimizers": { + "type": "boolean", + "description": "Turn on saving minimizer information in the kraken2 report thus increasing to an eight column layout.", + "fa_icon": "fas fa-save", + "help_text": "Turn on saving minimizer information in the kraken2 report thus increasing to an eight column layout.\n\nAdds `--report-minimizer-data` to the kraken2 command." + }, + "run_bracken": { + "type": "boolean", + "description": "Post-process kraken2 reports with Bracken.", + "fa_icon": "fas fa-toggle-on" + }, "run_malt": { "type": "boolean", "fa_icon": "fas fa-toggle-on", @@ -555,7 +595,14 @@ "description": "Method used to save pipeline results to output directory.", "help_text": "The Nextflow `publishDir` option specifies which intermediate files should be saved to the output directory. This option tells the pipeline what method should be used to move these files. See [Nextflow docs](https://www.nextflow.io/docs/latest/process.html#publishdir) for details.", "fa_icon": "fas fa-copy", - "enum": ["symlink", "rellink", "link", "copy", "copyNoFollow", "move"], + "enum": [ + "symlink", + "rellink", + "link", + "copy", + "copyNoFollow", + "move" + ], "hidden": true }, "email_on_fail": { From 9dc819ceff9db68b214573062f07a7dad60ef593 Mon Sep 17 00:00:00 2001 From: "Moritz E. Beber" Date: Fri, 14 Oct 2022 13:16:54 +0200 Subject: [PATCH 395/789] style: reformat schema --- nextflow_schema.json | 50 +++++++------------------------------------- 1 file changed, 7 insertions(+), 43 deletions(-) diff --git a/nextflow_schema.json b/nextflow_schema.json index c40ce0e..97a03b5 100644 --- a/nextflow_schema.json +++ b/nextflow_schema.json @@ -10,11 +10,7 @@ "type": "object", "fa_icon": "fas fa-terminal", "description": "Define where the pipeline should find input data and save output data.", - "required": [ - "input", - "databases", - "outdir" - ], + "required": ["input", "databases", "outdir"], "properties": { "input": { "type": "string", @@ -84,10 +80,7 @@ "shortread_qc_tool": { "type": "string", "default": "fastp", - "enum": [ - "fastp", - "adapterremoval" - ], + "enum": ["fastp", "adapterremoval"], "fa_icon": "fas fa-tools", "description": "Specify which tool to use for short-read QC" }, @@ -140,11 +133,7 @@ "shortread_complexityfilter_tool": { "type": "string", "default": "bbduk", - "enum": [ - "bbduk", - "prinseqplusplus", - "fastp" - ], + "enum": ["bbduk", "prinseqplusplus", "fastp"], "fa_icon": "fas fa-hammer", "description": "Specify which tool to use for complexity filtering" }, @@ -178,10 +167,7 @@ "shortread_complexityfilter_prinseqplusplus_mode": { "type": "string", "default": "entropy", - "enum": [ - "entropy", - "dust" - ], + "enum": ["entropy", "dust"], "fa_icon": "fas fa-check-square", "description": "Specify the complexity filter mode for PRINSEQ++" }, @@ -355,15 +341,7 @@ "diamond_output_format": { "type": "string", "default": "tsv", - "enum": [ - "blast", - "xml", - "txt", - "daa", - "sam", - "tsv", - "paf" - ], + "enum": ["blast", "xml", "txt", "daa", "sam", "tsv", "paf"], "fa_icon": "fas fa-file", "description": "Specify output format from DIAMOND profiling.", "help_text": "DIAMOND can produce output in a number of different formats, you can specify here which to produce.\n\nNote that DIAMOND can only produce one format at a time, and depending on which you pick, some downstream steps may not be executed. For example, selecting `daa` or `sam` will mean you will not get a tabular taxonomic profile as with the other tools.\n\nWill be overriden by `--diamond_save_reads.`\n\n> Modifies tool parameter(s):\n> - diamond blastx: `--outfmt`" @@ -382,14 +360,7 @@ "kaiju_taxon_rank": { "type": "string", "default": "species", - "enum": [ - "phylum", - "class", - "order", - "family", - "genus", - "species" - ], + "enum": ["phylum", "class", "order", "family", "genus", "species"], "fa_icon": "fas fa-tag", "description": "Specify taxonomic rank to be displayed in Kaiju taxon table", "help_text": "Specify the taxonomic level(s) to be displayed in the resulting Kaiju taxon table, as generated by the kaiju2table helper tool.\n\nThis can be either a single level (e.g. `species`), or a comma separated list to display the full taxonomic path (e.g. `superkingdom,phylum,class,order,family,genus,species.`).\n\n> Modifies tool parameter(s):\n> - kaiju2table: `-l`" @@ -595,14 +566,7 @@ "description": "Method used to save pipeline results to output directory.", "help_text": "The Nextflow `publishDir` option specifies which intermediate files should be saved to the output directory. This option tells the pipeline what method should be used to move these files. See [Nextflow docs](https://www.nextflow.io/docs/latest/process.html#publishdir) for details.", "fa_icon": "fas fa-copy", - "enum": [ - "symlink", - "rellink", - "link", - "copy", - "copyNoFollow", - "move" - ], + "enum": ["symlink", "rellink", "link", "copy", "copyNoFollow", "move"], "hidden": true }, "email_on_fail": { From 4f2799885207b278c2795c8a4011a750ae4a8606 Mon Sep 17 00:00:00 2001 From: "James A. Fellows Yates" Date: Fri, 14 Oct 2022 14:37:52 +0200 Subject: [PATCH 396/789] Update usage.md --- docs/usage.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/usage.md b/docs/usage.md index 4f4c1ac..9194220 100644 --- a/docs/usage.md +++ b/docs/usage.md @@ -230,7 +230,7 @@ You can optionally save the FASTQ output of the run merging with the `--save_run ###### MALT -nf-core/taxprofiler uses MALT 0.4.1, which is a compatively old version. However it has been found that the most recent version of MALT (0.5.\*), at the time of writing, is broken. [The the LCA step appears not to be executed](http://megan.informatik.uni-tuebingen.de/t/lca-placement-failure-with-malt-v-0-5-2-and-0-5-3/1996/3), pushing all hits to the leaves of the taxonomy. However, if you need to use a more recent taxonomy map file with your databases, the output of `malt-build` from MALT 0.5.3 should be still be compatible with `malt-run` of 0.4.1. +nf-core/taxprofiler uses MALT 0.4.1, which is a compatively old version. However it has been found that the most recent version of MALT (0.5.\*), at the time of writing, is broken. [The LCA step appears not to be executed](http://megan.informatik.uni-tuebingen.de/t/lca-placement-failure-with-malt-v-0-5-2-and-0-5-3/1996/3), pushing all hits to the leaves of the taxonomy. However, if you need to use a more recent taxonomy map file with your databases, the output of `malt-build` from MALT 0.5.3 should be still be compatible with `malt-run` of 0.4.1. ### Updating the pipeline From 95621ebd8ad4b89e2cdad0594f64125d07ac3f66 Mon Sep 17 00:00:00 2001 From: "Moritz E. Beber" Date: Fri, 14 Oct 2022 14:47:08 +0200 Subject: [PATCH 397/789] fix: include local module --- subworkflows/local/profiling.nf | 1 + 1 file changed, 1 insertion(+) diff --git a/subworkflows/local/profiling.nf b/subworkflows/local/profiling.nf index 970c128..4d49ce2 100644 --- a/subworkflows/local/profiling.nf +++ b/subworkflows/local/profiling.nf @@ -5,6 +5,7 @@ include { MALT_RUN } from '../../modules/nf-core/malt/run/main' include { MEGAN_RMA2INFO as MEGAN_RMA2INFO_TSV } from '../../modules/nf-core/megan/rma2info/main' include { KRAKEN2_KRAKEN2 } from '../../modules/nf-core/kraken2/kraken2/main' +include { KRAKEN_STANDARD_REPORT } from '../../modules/local/kraken_standard_report' include { BRACKEN_BRACKEN } from '../../modules/nf-core/bracken/bracken/main' include { CENTRIFUGE_CENTRIFUGE } from '../../modules/nf-core/centrifuge/centrifuge/main' include { CENTRIFUGE_KREPORT } from '../../modules/nf-core/centrifuge/kreport/main' From 563b34c9c38535a11a3c14d488fcd97519972d81 Mon Sep 17 00:00:00 2001 From: "Moritz E. Beber" Date: Fri, 14 Oct 2022 14:48:27 +0200 Subject: [PATCH 398/789] refactor: rename process to kraken2 --- .../{kraken_standard_report.nf => kraken2_standard_report.nf} | 2 +- subworkflows/local/profiling.nf | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) rename modules/local/{kraken_standard_report.nf => kraken2_standard_report.nf} (96%) diff --git a/modules/local/kraken_standard_report.nf b/modules/local/kraken2_standard_report.nf similarity index 96% rename from modules/local/kraken_standard_report.nf rename to modules/local/kraken2_standard_report.nf index aada6fb..09a98c1 100644 --- a/modules/local/kraken_standard_report.nf +++ b/modules/local/kraken2_standard_report.nf @@ -1,4 +1,4 @@ -process KRAKEN_STANDARD_REPORT { +process KRAKEN2_STANDARD_REPORT { tag "$meta.id" label 'process_single' diff --git a/subworkflows/local/profiling.nf b/subworkflows/local/profiling.nf index 4d49ce2..0d46e0c 100644 --- a/subworkflows/local/profiling.nf +++ b/subworkflows/local/profiling.nf @@ -5,7 +5,7 @@ include { MALT_RUN } from '../../modules/nf-core/malt/run/main' include { MEGAN_RMA2INFO as MEGAN_RMA2INFO_TSV } from '../../modules/nf-core/megan/rma2info/main' include { KRAKEN2_KRAKEN2 } from '../../modules/nf-core/kraken2/kraken2/main' -include { KRAKEN_STANDARD_REPORT } from '../../modules/local/kraken_standard_report' +include { KRAKEN2_STANDARD_REPORT } from '../../modules/local/kraken2_standard_report' include { BRACKEN_BRACKEN } from '../../modules/nf-core/bracken/bracken/main' include { CENTRIFUGE_CENTRIFUGE } from '../../modules/nf-core/centrifuge/centrifuge/main' include { CENTRIFUGE_KREPORT } from '../../modules/nf-core/centrifuge/kreport/main' @@ -140,7 +140,7 @@ workflow PROFILING { def ch_input_for_bracken if (params.kraken2_save_minimizers) { - ch_input_for_bracken = KRAKEN_STANDARD_REPORT(KRAKEN2_KRAKEN2.out.report).report + ch_input_for_bracken = KRAKEN2_STANDARD_REPORT(KRAKEN2_KRAKEN2.out.report).report } else { ch_input_for_bracken = KRAKEN2_KRAKEN2.out.report } From fd8a0df2a68fb17a0422b281458d1267b824d004 Mon Sep 17 00:00:00 2001 From: "Moritz E. Beber" Date: Mon, 17 Oct 2022 17:16:21 +0200 Subject: [PATCH 399/789] refactor: add warning when run_kraken2 is missing --- workflows/taxprofiler.nf | 1 + 1 file changed, 1 insertion(+) diff --git a/workflows/taxprofiler.nf b/workflows/taxprofiler.nf index 8b9edb7..f6dc3ed 100644 --- a/workflows/taxprofiler.nf +++ b/workflows/taxprofiler.nf @@ -41,6 +41,7 @@ if (params.longread_hostremoval_index ) { ch_longread_reference_index = fi if (params.diamond_save_reads ) log.warn "[nf-core/taxprofiler] DIAMOND only allows output of a single format. As --diamond_save_reads supplied, only aligned reads in SAM format will be produced, no taxonomic profiles will be available." if (params.run_malt && params.run_krona && !params.krona_taxonomy_directory) log.warn "[nf-core/taxprofiler] Krona can only be run on MALT output if path to Krona taxonomy database supplied to --krona_taxonomy_directory. Krona will not be executed in this run for MALT." +if (params.run_bracken && !params.run_kraken2) log.warn '[nf-core/taxprofiler] You are attempting to run Bracken without running kraken2. This is not possible! Please set --run_kraken2 as well.' /* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ From 48b00b7d624d9d37a4b891a578ea23e805bf6543 Mon Sep 17 00:00:00 2001 From: "Moritz E. Beber" Date: Mon, 17 Oct 2022 17:33:24 +0200 Subject: [PATCH 400/789] refactor: create standardized Bracken reports --- .../local/standardisation_profiles.nf | 25 +++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-) diff --git a/subworkflows/local/standardisation_profiles.nf b/subworkflows/local/standardisation_profiles.nf index cbb0fab..f560424 100644 --- a/subworkflows/local/standardisation_profiles.nf +++ b/subworkflows/local/standardisation_profiles.nf @@ -3,8 +3,11 @@ // include { KAIJU_KAIJU2TABLE } from '../../modules/nf-core/kaiju/kaiju2table/main' -include { KRAKENTOOLS_COMBINEKREPORTS } from '../../modules/nf-core/krakentools/combinekreports/main' -include { KRAKENTOOLS_COMBINEKREPORTS as KRAKENTOOLS_COMBINEKREPORTS_CENTRIFUGE } from '../../modules/nf-core/krakentools/combinekreports/main' +include { + KRAKENTOOLS_COMBINEKREPORTS as KRAKENTOOLS_COMBINEKREPORTS_CENTRIFUGE; + KRAKENTOOLS_COMBINEKREPORTS as KRAKENTOOLS_COMBINEKREPORTS_BRACKEN; + KRAKENTOOLS_COMBINEKREPORTS +} from '../../modules/nf-core/krakentools/combinekreports/main' include { METAPHLAN3_MERGEMETAPHLANTABLES } from '../../modules/nf-core/metaphlan3/mergemetaphlantables/main' include { MOTUS_MERGE } from '../../modules/nf-core/motus/merge/main' @@ -27,6 +30,7 @@ workflow STANDARDISATION_PROFILES { .branch { motus: it[0]['tool'] == 'motus' kraken2: it[0]['tool'] == 'kraken2' + bracken: it[0]['tool'] == 'bracken' centrifuge: it[0]['tool'] == 'centrifuge' metaphlan3: it[0]['tool'] == 'metaphlan3' unknown: true @@ -98,6 +102,23 @@ workflow STANDARDISATION_PROFILES { ch_multiqc_files = ch_multiqc_files.mix( KRAKENTOOLS_COMBINEKREPORTS.out.txt ) ch_versions = ch_versions.mix( KRAKENTOOLS_COMBINEKREPORTS.out.versions ) + // Bracken + + // Collect and replace id for db_name for prefix + // Have to sort by size to ensure first file actually has hits otherwise + // the script fails + ch_profiles_for_bracken = ch_input_profiles.bracken + .map { [it[0]['db_name'], it[1]] } + .groupTuple(sort: {-it.size()} ) + .map { + [[id:it[0]], it[1]] + } + + KRAKENTOOLS_COMBINEKREPORTS_BRACKEN ( ch_profiles_for_bracken ) + ch_standardised_tables = ch_standardised_tables.mix( KRAKENTOOLS_COMBINEKREPORTS_BRACKEN.out.txt ) + ch_multiqc_files = ch_multiqc_files.mix( KRAKENTOOLS_COMBINEKREPORTS_BRACKEN.out.txt ) + ch_versions = ch_versions.mix( KRAKENTOOLS_COMBINEKREPORTS_BRACKEN.out.versions ) + // MetaPhlAn3 ch_profiles_for_metaphlan3 = ch_input_profiles.metaphlan3 From 8768a16d63231e07daf3d8cf8fbf1afd930b2a1c Mon Sep 17 00:00:00 2001 From: "Moritz E. Beber" Date: Mon, 17 Oct 2022 17:35:41 +0200 Subject: [PATCH 401/789] refactor: turn warning into error --- workflows/taxprofiler.nf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/workflows/taxprofiler.nf b/workflows/taxprofiler.nf index f6dc3ed..12ee19f 100644 --- a/workflows/taxprofiler.nf +++ b/workflows/taxprofiler.nf @@ -41,7 +41,7 @@ if (params.longread_hostremoval_index ) { ch_longread_reference_index = fi if (params.diamond_save_reads ) log.warn "[nf-core/taxprofiler] DIAMOND only allows output of a single format. As --diamond_save_reads supplied, only aligned reads in SAM format will be produced, no taxonomic profiles will be available." if (params.run_malt && params.run_krona && !params.krona_taxonomy_directory) log.warn "[nf-core/taxprofiler] Krona can only be run on MALT output if path to Krona taxonomy database supplied to --krona_taxonomy_directory. Krona will not be executed in this run for MALT." -if (params.run_bracken && !params.run_kraken2) log.warn '[nf-core/taxprofiler] You are attempting to run Bracken without running kraken2. This is not possible! Please set --run_kraken2 as well.' +if (params.run_bracken && !params.run_kraken2) exit 1, 'ERROR: [nf-core/taxprofiler] You are attempting to run Bracken without running kraken2. This is not possible! Please set --run_kraken2 as well.' /* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ From 8eddb32b8807db582ca7fd1e31074c50788162ba Mon Sep 17 00:00:00 2001 From: Sofia Stamouli Date: Tue, 18 Oct 2022 17:43:16 +0200 Subject: [PATCH 402/789] Add Falco as an alternative to FastQC --- .github/workflows/ci.yml | 1 + CITATIONS.md | 4 ++ README.md | 2 +- conf/modules.config | 18 ++++++ docs/usage.md | 4 +- modules.json | 4 ++ modules/nf-core/falco/main.nf | 57 +++++++++++++++++++ modules/nf-core/falco/meta.yml | 52 +++++++++++++++++ nextflow_schema.json | 50 +++++++++++++--- subworkflows/local/longread_preprocessing.nf | 12 +++- subworkflows/local/shortread_preprocessing.nf | 16 ++++-- workflows/taxprofiler.nf | 19 ++++--- 12 files changed, 217 insertions(+), 22 deletions(-) create mode 100644 modules/nf-core/falco/main.nf create mode 100644 modules/nf-core/falco/meta.yml diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 5cea5b7..344505a 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -23,6 +23,7 @@ jobs: - "21.10.3" - "latest-everything" parameters: + - "--perform_fastqc_alternative false" - "--perform_longread_qc false" - "--perform_shortread_qc false" - "--shortread_qc_tool fastp" diff --git a/CITATIONS.md b/CITATIONS.md index 1ce4ec2..510c74b 100644 --- a/CITATIONS.md +++ b/CITATIONS.md @@ -62,6 +62,10 @@ - [FILTLONG](https://github.com/rrwick/Filtlong) +- [Falco](https://doi.org/10.12688/f1000research.21142.2) + +> de Sena Brandine G and Smith AD. Falco: high-speed FastQC emulation for quality control of sequencing data. F1000Research 2021, 8:1874 + ## Software packaging/containerisation tools - [Anaconda](https://anaconda.com) diff --git a/README.md b/README.md index 2bd45a9..e17c7b5 100644 --- a/README.md +++ b/README.md @@ -30,7 +30,7 @@ On release, automated continuous integration tests run the pipeline on a full-si ![](docs/images/taxprofiler_tube.png) -1. Read QC ([`FastQC`](https://www.bioinformatics.babraham.ac.uk/projects/fastqc/)) +1. Read QC ([`FastQC`](https://www.bioinformatics.babraham.ac.uk/projects/fastqc/) or [`Falco`](https://github.com/smithlabcode/falco) as an alternative option) 2. Performs optional read pre-processing - Adapter clipping and merging (short-read: [fastp](https://github.com/OpenGene/fastp), [AdapterRemoval2](https://github.com/MikkelSchubert/adapterremoval); long-read: [porechop](https://github.com/rrwick/Porechop)) - Low complexity and quality filtering (short-read: [bbduk](https://jgi.doe.gov/data-and-tools/software-tools/bbtools/), [PRINSEQ++](https://github.com/Adrian-Cantu/PRINSEQ-plus-plus); long-read: [Filtlong](https://github.com/rrwick/Filtlong)) diff --git a/conf/modules.config b/conf/modules.config index d2a0051..1e2058a 100644 --- a/conf/modules.config +++ b/conf/modules.config @@ -40,6 +40,24 @@ process { ] } + withName: FALCO { + ext.prefix = { "${meta.id}_${meta.run_accession}_raw" } + publishDir = [ + path: { "${params.outdir}/falco/raw" }, + mode: params.publish_dir_mode, + pattern: '*.{html,txt}' + ] + } + + withName: FALCO_PROCESSED { + ext.prefix = { "${meta.id}_${meta.run_accession}_processed" } + publishDir = [ + path: { "${params.outdir}/falco/processed" }, + mode: params.publish_dir_mode, + pattern: '*.{html,txt}' + ] + } + withName: FASTP_SINGLE { ext.args = [ // trimming options diff --git a/docs/usage.md b/docs/usage.md index 9194220..7478636 100644 --- a/docs/usage.md +++ b/docs/usage.md @@ -165,7 +165,9 @@ work # Directory containing the nextflow working files .nextflow_log # Log file from Nextflow # Other nextflow hidden files, eg. history of pipeline runs and old logs. ``` +### Sequencing quality control +nf-core taxprofiler offers [`Falco`](https://github.com/smithlabcode/falco] as an alternative option to [`FastQC`](https://www.bioinformatics.babraham.ac.uk/projects/fastqc/). ### Preprocessing Steps nf-core/taxprofiler offers four main preprocessing steps @@ -179,7 +181,7 @@ nf-core/taxprofiler offers four main preprocessing steps Raw sequencing read processing in the form of adapter clipping and paired-end read merging can be activated via the `--perform_shortread_qc` or `--perform_longread_qc` flags. -It is highly recommended to run this on raw reads to remove artefacts from sequencing that can cause false positive identification of taxa (e.g. contaminated reference genomes) and/or skews in taxonomic abundance profiles. +It is highly recommended to run this on raw reads to remove artifacts from sequencing that can cause false positive identification of taxa (e.g. contaminated reference genomes) and/or skews in taxonomic abundance profiles. There are currently two options for short-read preprocessing: `fastp` or `adapterremoval`. diff --git a/modules.json b/modules.json index 10d6c74..aa77c4e 100644 --- a/modules.json +++ b/modules.json @@ -49,6 +49,10 @@ "branch": "master", "git_sha": "5e34754d42cd2d5d248ca8673c0a53cdf5624905" }, + "falco": { + "branch": "master", + "git_sha": "fc959214036403ad83efe7a41d43d0606c445cda" + }, "fastp": { "branch": "master", "git_sha": "5e34754d42cd2d5d248ca8673c0a53cdf5624905" diff --git a/modules/nf-core/falco/main.nf b/modules/nf-core/falco/main.nf new file mode 100644 index 0000000..1688162 --- /dev/null +++ b/modules/nf-core/falco/main.nf @@ -0,0 +1,57 @@ +process FALCO { + tag "$meta.id" + label 'process_single' + + + conda (params.enable_conda ? "bioconda::falco=1.2.1" : null) + container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? + 'https://depot.galaxyproject.org/singularity/falco:1.2.1--h867801b_3': + 'quay.io/biocontainers/falco:1.2.1--h867801b_3' }" + + input: + tuple val(meta), path(reads) + + output: + tuple val(meta), path("*.html"), emit: html + tuple val(meta), path("*.txt") , emit: txt + path "versions.yml" , emit: versions + + when: + task.ext.when == null || task.ext.when + + script: + def args = task.ext.args ?: '' + def prefix = task.ext.prefix ?: "${meta.id}" + if ( reads.toList().size() == 1 ) { + """ + falco $args --threads $task.cpus ${reads} -D ${prefix}_data.txt -S ${prefix}_summary.txt -R ${prefix}_report.html + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + falco:\$( falco --version | sed -e "s/falco//g" ) + END_VERSIONS + """ + } else { + """ + falco $args --threads $task.cpus ${reads} + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + falco:\$( falco --version | sed -e "s/falco//g" ) + END_VERSIONS + """ + } + + stub: + def prefix = task.ext.prefix ?: "${meta.id}" + """ + touch ${prefix}_data.txt + touch ${prefix}_fastqc_data.html + touch ${prefix}_summary.txt + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + falco: \$( falco --version | sed -e "s/falco v//g" ) + END_VERSIONS + """ +} diff --git a/modules/nf-core/falco/meta.yml b/modules/nf-core/falco/meta.yml new file mode 100644 index 0000000..6f77fb1 --- /dev/null +++ b/modules/nf-core/falco/meta.yml @@ -0,0 +1,52 @@ +name: falco +description: Run falco on sequenced reads +keywords: + - quality control + - qc + - adapters + - fastq +tools: + - fastqc: + description: "falco is a drop-in C++ implementation of FastQC to assess the quality of sequence reads." + + homepage: "https://falco.readthedocs.io/" + documentation: "https://falco.readthedocs.io/" + tool_dev_url: "None" + doi: "" + licence: "['GPL v3']" + +input: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - reads: + type: file + description: | + List of input FastQ files of size 1 and 2 for single-end and paired-end data, + respectively. +output: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - html: + type: file + description: FastQC like report + pattern: "*_{fastqc_report.html}" + - txt: + type: file + description: falco report data + pattern: "*_{data.txt}" + - txt: + type: file + description: falco summary file + pattern: "*_{summary.txt}" + - versions: + type: file + description: File containing software versions + pattern: "versions.yml" +authors: + - "@lucacozzuto" diff --git a/nextflow_schema.json b/nextflow_schema.json index f88443f..f48ed4a 100644 --- a/nextflow_schema.json +++ b/nextflow_schema.json @@ -10,7 +10,11 @@ "type": "object", "fa_icon": "fas fa-terminal", "description": "Define where the pipeline should find input data and save output data.", - "required": ["input", "outdir", "databases"], + "required": [ + "input", + "outdir", + "databases" + ], "properties": { "input": { "type": "string", @@ -80,7 +84,10 @@ "shortread_qc_tool": { "type": "string", "default": "fastp", - "enum": ["fastp", "adapterremoval"], + "enum": [ + "fastp", + "adapterremoval" + ], "fa_icon": "fas fa-tools", "description": "Specify which tool to use for short-read QC" }, @@ -133,7 +140,11 @@ "shortread_complexityfilter_tool": { "type": "string", "default": "bbduk", - "enum": ["bbduk", "prinseqplusplus", "fastp"], + "enum": [ + "bbduk", + "prinseqplusplus", + "fastp" + ], "fa_icon": "fas fa-hammer", "description": "Specify which tool to use for complexity filtering" }, @@ -167,7 +178,10 @@ "shortread_complexityfilter_prinseqplusplus_mode": { "type": "string", "default": "entropy", - "enum": ["entropy", "dust"], + "enum": [ + "entropy", + "dust" + ], "fa_icon": "fas fa-check-square", "description": "Specify the complexity filter mode for PRINSEQ++" }, @@ -341,7 +355,15 @@ "diamond_output_format": { "type": "string", "default": "tsv", - "enum": ["blast", "xml", "txt", "daa", "sam", "tsv", "paf"], + "enum": [ + "blast", + "xml", + "txt", + "daa", + "sam", + "tsv", + "paf" + ], "fa_icon": "fas fa-file", "description": "Specify output format from DIAMOND profiling.", "help_text": "DIAMOND can produce output in a number of different formats, you can specify here which to produce.\n\nNote that DIAMOND can only produce one format at a time, and depending on which you pick, some downstream steps may not be executed. For example, selecting `daa` or `sam` will mean you will not get a tabular taxonomic profile as with the other tools.\n\nWill be overriden by `--diamond_save_reads.`\n\n> Modifies tool parameter(s):\n> - diamond blastx: `--outfmt`" @@ -360,7 +382,14 @@ "kaiju_taxon_rank": { "type": "string", "default": "species", - "enum": ["phylum", "class", "order", "family", "genus", "species"], + "enum": [ + "phylum", + "class", + "order", + "family", + "genus", + "species" + ], "fa_icon": "fas fa-tag", "description": "Specify taxonomic rank to be displayed in Kaiju taxon table", "help_text": "Specify the taxonomic level(s) to be displayed in the resulting Kaiju taxon table, as generated by the kaiju2table helper tool.\n\nThis can be either a single level (e.g. `species`), or a comma separated list to display the full taxonomic path (e.g. `superkingdom,phylum,class,order,family,genus,species.`).\n\n> Modifies tool parameter(s):\n> - kaiju2table: `-l`" @@ -555,7 +584,14 @@ "description": "Method used to save pipeline results to output directory.", "help_text": "The Nextflow `publishDir` option specifies which intermediate files should be saved to the output directory. This option tells the pipeline what method should be used to move these files. See [Nextflow docs](https://www.nextflow.io/docs/latest/process.html#publishdir) for details.", "fa_icon": "fas fa-copy", - "enum": ["symlink", "rellink", "link", "copy", "copyNoFollow", "move"], + "enum": [ + "symlink", + "rellink", + "link", + "copy", + "copyNoFollow", + "move" + ], "hidden": true }, "email_on_fail": { diff --git a/subworkflows/local/longread_preprocessing.nf b/subworkflows/local/longread_preprocessing.nf index ce537e8..cf0d168 100644 --- a/subworkflows/local/longread_preprocessing.nf +++ b/subworkflows/local/longread_preprocessing.nf @@ -3,6 +3,8 @@ // include { FASTQC as FASTQC_PROCESSED } from '../../modules/nf-core/fastqc/main' +include { FALCO as FALCO_PROCESSED } from '../../modules/nf-core/falco/main' + include { PORECHOP } from '../../modules/nf-core/porechop/main' include { FILTLONG } from '../../modules/nf-core/filtlong/main' @@ -52,8 +54,14 @@ workflow LONGREAD_PREPROCESSING { ch_multiqc_files = ch_multiqc_files.mix( FILTLONG.out.log ) } - FASTQC_PROCESSED ( ch_processed_reads ) - ch_multiqc_files = ch_multiqc_files.mix( FASTQC_PROCESSED.out.zip ) + if (params.perform_fastqc_alternative) { + FALCO_PROCESSED ( ch_processed_reads ) + ch_multiqc_files = ch_multiqc_files.mix( FALCO_PROCESSED.out.txt ) + + } else { + FASTQC_PROCESSED ( ch_processed_reads ) + ch_multiqc_files = ch_multiqc_files.mix( FASTQC_PROCESSED.out.zip ) + } emit: reads = ch_processed_reads // channel: [ val(meta), [ reads ] ] diff --git a/subworkflows/local/shortread_preprocessing.nf b/subworkflows/local/shortread_preprocessing.nf index 859c1d5..a67539a 100644 --- a/subworkflows/local/shortread_preprocessing.nf +++ b/subworkflows/local/shortread_preprocessing.nf @@ -5,7 +5,8 @@ include { SHORTREAD_FASTP } from './shortread_fastp' include { SHORTREAD_ADAPTERREMOVAL } from './shortread_adapterremoval' -include { FASTQC as FASTQC_PROCESSED } from '../../modules/nf-core/fastqc/main' +include { FASTQC as FASTQC_PROCESSED } from '../../modules/nf-core/fastqc/main' +include { FALCO as FALCO_PROCESSED } from '../../modules/nf-core/falco/main' workflow SHORTREAD_PREPROCESSING { take: @@ -27,9 +28,16 @@ workflow SHORTREAD_PREPROCESSING { ch_processed_reads = reads } - FASTQC_PROCESSED ( ch_processed_reads ) - ch_versions = ch_versions.mix( FASTQC_PROCESSED.out.versions ) - ch_multiqc_files = ch_multiqc_files.mix( FASTQC_PROCESSED.out.zip ) + if (params.perform_fastqc_alternative) { + FALCO_PROCESSED ( ch_processed_reads ) + ch_versions = ch_versions.mix( FALCO_PROCESSED.out.versions ) + ch_multiqc_files = ch_multiqc_files.mix( FALCO_PROCESSED.out.txt ) + + } else { + FASTQC_PROCESSED ( ch_processed_reads ) + ch_versions = ch_versions.mix( FASTQC_PROCESSED.out.versions ) + ch_multiqc_files = ch_multiqc_files.mix( FASTQC_PROCESSED.out.zip ) + } emit: reads = ch_processed_reads // channel: [ val(meta), [ reads ] ] diff --git a/workflows/taxprofiler.nf b/workflows/taxprofiler.nf index 8b9edb7..2435782 100644 --- a/workflows/taxprofiler.nf +++ b/workflows/taxprofiler.nf @@ -84,6 +84,7 @@ include { STANDARDISATION_PROFILES } from '../subworkflows/local/standardis // MODULE: Installed directly from nf-core/modules // include { FASTQC } from '../modules/nf-core/fastqc/main' +include { FALCO } from '../modules/nf-core/falco/main' include { MULTIQC } from '../modules/nf-core/multiqc/main' include { CUSTOM_DUMPSOFTWAREVERSIONS } from '../modules/nf-core/custom/dumpsoftwareversions/main' include { CAT_FASTQ } from '../modules/nf-core/cat/fastq/main' @@ -120,12 +121,13 @@ workflow TAXPROFILER { */ ch_input_for_fastqc = INPUT_CHECK.out.fastq.mix( INPUT_CHECK.out.nanopore ) - FASTQC ( - ch_input_for_fastqc - ) - - ch_versions = ch_versions.mix(FASTQC.out.versions.first()) - + if ( params.perform_fastqc_alternative ) { + FALCO ( ch_input_for_fastqc ) + ch_versions = ch_versions.mix(FALCO.out.versions.first()) + } else { + FASTQC ( ch_input_for_fastqc ) + ch_versions = ch_versions.mix(FASTQC.out.versions.first()) + } /* SUBWORKFLOW: PERFORM PREPROCESSING */ @@ -254,7 +256,10 @@ workflow TAXPROFILER { ch_multiqc_files = ch_multiqc_files.mix(ch_workflow_summary.collectFile(name: 'workflow_summary_mqc.yaml')) ch_multiqc_files = ch_multiqc_files.mix(ch_methods_description.collectFile(name: 'methods_description_mqc.yaml')) ch_multiqc_files = ch_multiqc_files.mix(CUSTOM_DUMPSOFTWAREVERSIONS.out.mqc_yml.collect()) - ch_multiqc_files = ch_multiqc_files.mix(FASTQC.out.zip.collect{it[1]}.ifEmpty([])) + + if (!params.perform_fastqc_alternative) { + ch_multiqc_files = ch_multiqc_files.mix(FASTQC.out.zip.collect{it[1]}.ifEmpty([])) + } if (params.perform_shortread_qc) { ch_multiqc_files = ch_multiqc_files.mix( SHORTREAD_PREPROCESSING.out.mqc.collect{it[1]}.ifEmpty([]) ) From 0481bb9449a1d35a8fe8324811180ef68f0d361f Mon Sep 17 00:00:00 2001 From: Sofia Stamouli Date: Tue, 18 Oct 2022 17:48:40 +0200 Subject: [PATCH 403/789] Prettier --- docs/usage.md | 2 ++ nextflow_schema.json | 50 +++++++------------------------------------- 2 files changed, 9 insertions(+), 43 deletions(-) diff --git a/docs/usage.md b/docs/usage.md index 7478636..4a44cf4 100644 --- a/docs/usage.md +++ b/docs/usage.md @@ -165,9 +165,11 @@ work # Directory containing the nextflow working files .nextflow_log # Log file from Nextflow # Other nextflow hidden files, eg. history of pipeline runs and old logs. ``` + ### Sequencing quality control nf-core taxprofiler offers [`Falco`](https://github.com/smithlabcode/falco] as an alternative option to [`FastQC`](https://www.bioinformatics.babraham.ac.uk/projects/fastqc/). + ### Preprocessing Steps nf-core/taxprofiler offers four main preprocessing steps diff --git a/nextflow_schema.json b/nextflow_schema.json index f48ed4a..f88443f 100644 --- a/nextflow_schema.json +++ b/nextflow_schema.json @@ -10,11 +10,7 @@ "type": "object", "fa_icon": "fas fa-terminal", "description": "Define where the pipeline should find input data and save output data.", - "required": [ - "input", - "outdir", - "databases" - ], + "required": ["input", "outdir", "databases"], "properties": { "input": { "type": "string", @@ -84,10 +80,7 @@ "shortread_qc_tool": { "type": "string", "default": "fastp", - "enum": [ - "fastp", - "adapterremoval" - ], + "enum": ["fastp", "adapterremoval"], "fa_icon": "fas fa-tools", "description": "Specify which tool to use for short-read QC" }, @@ -140,11 +133,7 @@ "shortread_complexityfilter_tool": { "type": "string", "default": "bbduk", - "enum": [ - "bbduk", - "prinseqplusplus", - "fastp" - ], + "enum": ["bbduk", "prinseqplusplus", "fastp"], "fa_icon": "fas fa-hammer", "description": "Specify which tool to use for complexity filtering" }, @@ -178,10 +167,7 @@ "shortread_complexityfilter_prinseqplusplus_mode": { "type": "string", "default": "entropy", - "enum": [ - "entropy", - "dust" - ], + "enum": ["entropy", "dust"], "fa_icon": "fas fa-check-square", "description": "Specify the complexity filter mode for PRINSEQ++" }, @@ -355,15 +341,7 @@ "diamond_output_format": { "type": "string", "default": "tsv", - "enum": [ - "blast", - "xml", - "txt", - "daa", - "sam", - "tsv", - "paf" - ], + "enum": ["blast", "xml", "txt", "daa", "sam", "tsv", "paf"], "fa_icon": "fas fa-file", "description": "Specify output format from DIAMOND profiling.", "help_text": "DIAMOND can produce output in a number of different formats, you can specify here which to produce.\n\nNote that DIAMOND can only produce one format at a time, and depending on which you pick, some downstream steps may not be executed. For example, selecting `daa` or `sam` will mean you will not get a tabular taxonomic profile as with the other tools.\n\nWill be overriden by `--diamond_save_reads.`\n\n> Modifies tool parameter(s):\n> - diamond blastx: `--outfmt`" @@ -382,14 +360,7 @@ "kaiju_taxon_rank": { "type": "string", "default": "species", - "enum": [ - "phylum", - "class", - "order", - "family", - "genus", - "species" - ], + "enum": ["phylum", "class", "order", "family", "genus", "species"], "fa_icon": "fas fa-tag", "description": "Specify taxonomic rank to be displayed in Kaiju taxon table", "help_text": "Specify the taxonomic level(s) to be displayed in the resulting Kaiju taxon table, as generated by the kaiju2table helper tool.\n\nThis can be either a single level (e.g. `species`), or a comma separated list to display the full taxonomic path (e.g. `superkingdom,phylum,class,order,family,genus,species.`).\n\n> Modifies tool parameter(s):\n> - kaiju2table: `-l`" @@ -584,14 +555,7 @@ "description": "Method used to save pipeline results to output directory.", "help_text": "The Nextflow `publishDir` option specifies which intermediate files should be saved to the output directory. This option tells the pipeline what method should be used to move these files. See [Nextflow docs](https://www.nextflow.io/docs/latest/process.html#publishdir) for details.", "fa_icon": "fas fa-copy", - "enum": [ - "symlink", - "rellink", - "link", - "copy", - "copyNoFollow", - "move" - ], + "enum": ["symlink", "rellink", "link", "copy", "copyNoFollow", "move"], "hidden": true }, "email_on_fail": { From 7881ba9aefdfd541d49d412edc683728bd82a97a Mon Sep 17 00:00:00 2001 From: Sofia Stamouli Date: Tue, 18 Oct 2022 17:50:49 +0200 Subject: [PATCH 404/789] Fix the amount of left-padding spaces --- conf/modules.config | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/conf/modules.config b/conf/modules.config index 1e2058a..b1d7b87 100644 --- a/conf/modules.config +++ b/conf/modules.config @@ -41,7 +41,7 @@ process { } withName: FALCO { - ext.prefix = { "${meta.id}_${meta.run_accession}_raw" } + ext.prefix = { "${meta.id}_${meta.run_accession}_raw" } publishDir = [ path: { "${params.outdir}/falco/raw" }, mode: params.publish_dir_mode, From c7c7a7f6783646a492bb31855d2d47fb36da37f8 Mon Sep 17 00:00:00 2001 From: "Moritz E. Beber" Date: Wed, 19 Oct 2022 16:20:09 +0200 Subject: [PATCH 405/789] refactor: change Bracken prefix to be more specific --- conf/modules.config | 1 + 1 file changed, 1 insertion(+) diff --git a/conf/modules.config b/conf/modules.config index fff28ea..7ec9210 100644 --- a/conf/modules.config +++ b/conf/modules.config @@ -288,6 +288,7 @@ process { withName: BRACKEN_BRACKEN { errorStrategy = 'ignore' + ext.prefix = params.perform_runmerging ? { "${meta.id}-${meta.db_name}" } : { "${meta.id}-${meta.run_accession}-${meta.db_name}" } publishDir = [ path: { "${params.outdir}/bracken/${meta.db_name}/" }, mode: params.publish_dir_mode, From b73b4798600d952575b62a63964b61143b54a438 Mon Sep 17 00:00:00 2001 From: "Moritz E. Beber" Date: Wed, 19 Oct 2022 16:21:36 +0200 Subject: [PATCH 406/789] refactor: handle combined kraken2+bracken tool column --- subworkflows/local/profiling.nf | 25 ++++++++++++++++--------- 1 file changed, 16 insertions(+), 9 deletions(-) diff --git a/subworkflows/local/profiling.nf b/subworkflows/local/profiling.nf index 0d46e0c..5e2a7d2 100644 --- a/subworkflows/local/profiling.nf +++ b/subworkflows/local/profiling.nf @@ -41,7 +41,7 @@ workflow PROFILING { .combine(databases) .branch { malt: it[2]['tool'] == 'malt' - kraken2: it[2]['tool'] == 'kraken2' + kraken2: it[2]['tool'].contains('kraken2') metaphlan3: it[2]['tool'] == 'metaphlan3' centrifuge: it[2]['tool'] == 'centrifuge' kaiju: it[2]['tool'] == 'kaiju' @@ -131,34 +131,41 @@ workflow PROFILING { ch_multiqc_files = ch_multiqc_files.mix( KRAKEN2_KRAKEN2.out.report ) ch_versions = ch_versions.mix( KRAKEN2_KRAKEN2.out.versions.first() ) ch_raw_classifications = ch_raw_classifications.mix( KRAKEN2_KRAKEN2.out.classified_reads_assignment ) - ch_raw_profiles = ch_raw_profiles.mix( KRAKEN2_KRAKEN2.out.report ) + ch_raw_profiles = ch_raw_profiles.mix( + KRAKEN2_KRAKEN2.out.report + // Set the tool to be strictly 'kraken2' instead of potentially 'kraken2+bracken' for downstream use. + .map { meta, report -> [meta + [tool: 'kraken2'], report]} + ) } if ( params.run_kraken2 && params.run_bracken ) { - def ch_input_for_bracken + def ch_input_for_bracken = KRAKEN2_KRAKEN2.out.report + .filter { meta, report -> meta['tool'].contains('bracken') } if (params.kraken2_save_minimizers) { - ch_input_for_bracken = KRAKEN2_STANDARD_REPORT(KRAKEN2_KRAKEN2.out.report).report - } else { - ch_input_for_bracken = KRAKEN2_KRAKEN2.out.report + ch_input_for_bracken = KRAKEN2_STANDARD_REPORT(ch_input_for_bracken).report } ch_input_for_bracken = ch_input_for_bracken .combine( databases.filter { meta, db -> - meta['tool'] == 'bracken' + meta['tool'].contains('bracken') } ) .multiMap { meta, report, db_meta, db -> - report: [meta + db_meta, report] + report: [meta, report] db: db } BRACKEN_BRACKEN(ch_input_for_bracken.report, ch_input_for_bracken.db) ch_versions = ch_versions.mix(BRACKEN_BRACKEN.out.versions.first()) - ch_raw_profiles = ch_raw_profiles.mix(BRACKEN_BRACKEN.out.reports) + ch_raw_profiles = ch_raw_profiles.mix( + BRACKEN_BRACKEN.out.reports + // Set the tool to be strictly 'bracken' instead of potentially 'kraken2+bracken' for downstream use. + .map { meta, report -> [meta + [tool: 'bracken'], report]} + ) } From 8deb7757d8a260fb2bc4c5890a10995181d1bafe Mon Sep 17 00:00:00 2001 From: "Moritz E. Beber" Date: Wed, 19 Oct 2022 16:21:57 +0200 Subject: [PATCH 407/789] fix: remove Bracken from standardise reports --- .../local/standardisation_profiles.nf | 25 ++----------------- 1 file changed, 2 insertions(+), 23 deletions(-) diff --git a/subworkflows/local/standardisation_profiles.nf b/subworkflows/local/standardisation_profiles.nf index f560424..cbb0fab 100644 --- a/subworkflows/local/standardisation_profiles.nf +++ b/subworkflows/local/standardisation_profiles.nf @@ -3,11 +3,8 @@ // include { KAIJU_KAIJU2TABLE } from '../../modules/nf-core/kaiju/kaiju2table/main' -include { - KRAKENTOOLS_COMBINEKREPORTS as KRAKENTOOLS_COMBINEKREPORTS_CENTRIFUGE; - KRAKENTOOLS_COMBINEKREPORTS as KRAKENTOOLS_COMBINEKREPORTS_BRACKEN; - KRAKENTOOLS_COMBINEKREPORTS -} from '../../modules/nf-core/krakentools/combinekreports/main' +include { KRAKENTOOLS_COMBINEKREPORTS } from '../../modules/nf-core/krakentools/combinekreports/main' +include { KRAKENTOOLS_COMBINEKREPORTS as KRAKENTOOLS_COMBINEKREPORTS_CENTRIFUGE } from '../../modules/nf-core/krakentools/combinekreports/main' include { METAPHLAN3_MERGEMETAPHLANTABLES } from '../../modules/nf-core/metaphlan3/mergemetaphlantables/main' include { MOTUS_MERGE } from '../../modules/nf-core/motus/merge/main' @@ -30,7 +27,6 @@ workflow STANDARDISATION_PROFILES { .branch { motus: it[0]['tool'] == 'motus' kraken2: it[0]['tool'] == 'kraken2' - bracken: it[0]['tool'] == 'bracken' centrifuge: it[0]['tool'] == 'centrifuge' metaphlan3: it[0]['tool'] == 'metaphlan3' unknown: true @@ -102,23 +98,6 @@ workflow STANDARDISATION_PROFILES { ch_multiqc_files = ch_multiqc_files.mix( KRAKENTOOLS_COMBINEKREPORTS.out.txt ) ch_versions = ch_versions.mix( KRAKENTOOLS_COMBINEKREPORTS.out.versions ) - // Bracken - - // Collect and replace id for db_name for prefix - // Have to sort by size to ensure first file actually has hits otherwise - // the script fails - ch_profiles_for_bracken = ch_input_profiles.bracken - .map { [it[0]['db_name'], it[1]] } - .groupTuple(sort: {-it.size()} ) - .map { - [[id:it[0]], it[1]] - } - - KRAKENTOOLS_COMBINEKREPORTS_BRACKEN ( ch_profiles_for_bracken ) - ch_standardised_tables = ch_standardised_tables.mix( KRAKENTOOLS_COMBINEKREPORTS_BRACKEN.out.txt ) - ch_multiqc_files = ch_multiqc_files.mix( KRAKENTOOLS_COMBINEKREPORTS_BRACKEN.out.txt ) - ch_versions = ch_versions.mix( KRAKENTOOLS_COMBINEKREPORTS_BRACKEN.out.versions ) - // MetaPhlAn3 ch_profiles_for_metaphlan3 = ch_input_profiles.metaphlan3 From 511cb16a6119fe746950abc5fed4100517a41775 Mon Sep 17 00:00:00 2001 From: Sofia Stamouli Date: Thu, 20 Oct 2022 16:55:57 +0200 Subject: [PATCH 408/789] Apply review suggestions --- .github/workflows/ci.yml | 3 +- CITATIONS.md | 2 +- README.md | 2 +- nextflow.config | 2 + nextflow_schema.json | 62 ++++++++++++++++--- subworkflows/local/longread_preprocessing.nf | 10 +-- subworkflows/local/shortread_preprocessing.nf | 11 ++-- workflows/taxprofiler.nf | 7 ++- 8 files changed, 75 insertions(+), 24 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 344505a..12185fe 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -23,7 +23,8 @@ jobs: - "21.10.3" - "latest-everything" parameters: - - "--perform_fastqc_alternative false" + - "--preprocessing_qc_tool fastqc" + - "--preprocessing_qc_tool falco" - "--perform_longread_qc false" - "--perform_shortread_qc false" - "--shortread_qc_tool fastp" diff --git a/CITATIONS.md b/CITATIONS.md index 510c74b..599e049 100644 --- a/CITATIONS.md +++ b/CITATIONS.md @@ -62,7 +62,7 @@ - [FILTLONG](https://github.com/rrwick/Filtlong) -- [Falco](https://doi.org/10.12688/f1000research.21142.2) +- [falco](https://doi.org/10.12688/f1000research.21142.2) > de Sena Brandine G and Smith AD. Falco: high-speed FastQC emulation for quality control of sequencing data. F1000Research 2021, 8:1874 diff --git a/README.md b/README.md index e17c7b5..3f0a840 100644 --- a/README.md +++ b/README.md @@ -30,7 +30,7 @@ On release, automated continuous integration tests run the pipeline on a full-si ![](docs/images/taxprofiler_tube.png) -1. Read QC ([`FastQC`](https://www.bioinformatics.babraham.ac.uk/projects/fastqc/) or [`Falco`](https://github.com/smithlabcode/falco) as an alternative option) +1. Read QC ([`FastQC`](https://www.bioinformatics.babraham.ac.uk/projects/fastqc/) or [`falco`](https://github.com/smithlabcode/falco) as an alternative option) 2. Performs optional read pre-processing - Adapter clipping and merging (short-read: [fastp](https://github.com/OpenGene/fastp), [AdapterRemoval2](https://github.com/MikkelSchubert/adapterremoval); long-read: [porechop](https://github.com/rrwick/Porechop)) - Low complexity and quality filtering (short-read: [bbduk](https://jgi.doe.gov/data-and-tools/software-tools/bbtools/), [PRINSEQ++](https://github.com/Adrian-Cantu/PRINSEQ-plus-plus); long-read: [Filtlong](https://github.com/rrwick/Filtlong)) diff --git a/nextflow.config b/nextflow.config index efb5aff..b69948e 100644 --- a/nextflow.config +++ b/nextflow.config @@ -59,6 +59,8 @@ params { // Databases databases = null + preprocessing_qc_tool = 'fastqc' + // FASTQ preprocessing perform_shortread_qc = false shortread_qc_tool = 'fastp' diff --git a/nextflow_schema.json b/nextflow_schema.json index f88443f..055c368 100644 --- a/nextflow_schema.json +++ b/nextflow_schema.json @@ -10,7 +10,11 @@ "type": "object", "fa_icon": "fas fa-terminal", "description": "Define where the pipeline should find input data and save output data.", - "required": ["input", "outdir", "databases"], + "required": [ + "input", + "outdir", + "databases" + ], "properties": { "input": { "type": "string", @@ -80,7 +84,10 @@ "shortread_qc_tool": { "type": "string", "default": "fastp", - "enum": ["fastp", "adapterremoval"], + "enum": [ + "fastp", + "adapterremoval" + ], "fa_icon": "fas fa-tools", "description": "Specify which tool to use for short-read QC" }, @@ -133,7 +140,11 @@ "shortread_complexityfilter_tool": { "type": "string", "default": "bbduk", - "enum": ["bbduk", "prinseqplusplus", "fastp"], + "enum": [ + "bbduk", + "prinseqplusplus", + "fastp" + ], "fa_icon": "fas fa-hammer", "description": "Specify which tool to use for complexity filtering" }, @@ -167,7 +178,10 @@ "shortread_complexityfilter_prinseqplusplus_mode": { "type": "string", "default": "entropy", - "enum": ["entropy", "dust"], + "enum": [ + "entropy", + "dust" + ], "fa_icon": "fas fa-check-square", "description": "Specify the complexity filter mode for PRINSEQ++" }, @@ -341,7 +355,15 @@ "diamond_output_format": { "type": "string", "default": "tsv", - "enum": ["blast", "xml", "txt", "daa", "sam", "tsv", "paf"], + "enum": [ + "blast", + "xml", + "txt", + "daa", + "sam", + "tsv", + "paf" + ], "fa_icon": "fas fa-file", "description": "Specify output format from DIAMOND profiling.", "help_text": "DIAMOND can produce output in a number of different formats, you can specify here which to produce.\n\nNote that DIAMOND can only produce one format at a time, and depending on which you pick, some downstream steps may not be executed. For example, selecting `daa` or `sam` will mean you will not get a tabular taxonomic profile as with the other tools.\n\nWill be overriden by `--diamond_save_reads.`\n\n> Modifies tool parameter(s):\n> - diamond blastx: `--outfmt`" @@ -360,7 +382,14 @@ "kaiju_taxon_rank": { "type": "string", "default": "species", - "enum": ["phylum", "class", "order", "family", "genus", "species"], + "enum": [ + "phylum", + "class", + "order", + "family", + "genus", + "species" + ], "fa_icon": "fas fa-tag", "description": "Specify taxonomic rank to be displayed in Kaiju taxon table", "help_text": "Specify the taxonomic level(s) to be displayed in the resulting Kaiju taxon table, as generated by the kaiju2table helper tool.\n\nThis can be either a single level (e.g. `species`), or a comma separated list to display the full taxonomic path (e.g. `superkingdom,phylum,class,order,family,genus,species.`).\n\n> Modifies tool parameter(s):\n> - kaiju2table: `-l`" @@ -555,7 +584,14 @@ "description": "Method used to save pipeline results to output directory.", "help_text": "The Nextflow `publishDir` option specifies which intermediate files should be saved to the output directory. This option tells the pipeline what method should be used to move these files. See [Nextflow docs](https://www.nextflow.io/docs/latest/process.html#publishdir) for details.", "fa_icon": "fas fa-copy", - "enum": ["symlink", "rellink", "link", "copy", "copyNoFollow", "move"], + "enum": [ + "symlink", + "rellink", + "link", + "copy", + "copyNoFollow", + "move" + ], "hidden": true }, "email_on_fail": { @@ -707,5 +743,15 @@ { "$ref": "#/definitions/reference_genome_options" } - ] + ], + "properties": { + "preprocessing_qc_tool": { + "type": "string", + "default": "fastqc", + "enum": [ + "fastqc", + "falco" + ] + } + } } diff --git a/subworkflows/local/longread_preprocessing.nf b/subworkflows/local/longread_preprocessing.nf index cf0d168..d16db3f 100644 --- a/subworkflows/local/longread_preprocessing.nf +++ b/subworkflows/local/longread_preprocessing.nf @@ -54,13 +54,13 @@ workflow LONGREAD_PREPROCESSING { ch_multiqc_files = ch_multiqc_files.mix( FILTLONG.out.log ) } - if (params.perform_fastqc_alternative) { - FALCO_PROCESSED ( ch_processed_reads ) - ch_multiqc_files = ch_multiqc_files.mix( FALCO_PROCESSED.out.txt ) - - } else { + if (params.preprocessing_qc_tool == 'fastqc') { FASTQC_PROCESSED ( ch_processed_reads ) ch_multiqc_files = ch_multiqc_files.mix( FASTQC_PROCESSED.out.zip ) + + } else if (params.preprocessing_qc_tool == 'falco') { + FALCO_PROCESSED ( ch_processed_reads ) + ch_multiqc_files = ch_multiqc_files.mix( FALCO_PROCESSED.out.txt ) } emit: diff --git a/subworkflows/local/shortread_preprocessing.nf b/subworkflows/local/shortread_preprocessing.nf index a67539a..f2cd738 100644 --- a/subworkflows/local/shortread_preprocessing.nf +++ b/subworkflows/local/shortread_preprocessing.nf @@ -28,15 +28,14 @@ workflow SHORTREAD_PREPROCESSING { ch_processed_reads = reads } - if (params.perform_fastqc_alternative) { - FALCO_PROCESSED ( ch_processed_reads ) - ch_versions = ch_versions.mix( FALCO_PROCESSED.out.versions ) - ch_multiqc_files = ch_multiqc_files.mix( FALCO_PROCESSED.out.txt ) - - } else { + if (params.preprocessing_qc_tool == 'fastqc') { FASTQC_PROCESSED ( ch_processed_reads ) ch_versions = ch_versions.mix( FASTQC_PROCESSED.out.versions ) ch_multiqc_files = ch_multiqc_files.mix( FASTQC_PROCESSED.out.zip ) + } else if (params.preprocessing_qc_tool == 'falco') { + FALCO_PROCESSED ( ch_processed_reads ) + ch_versions = ch_versions.mix( FALCO_PROCESSED.out.versions ) + ch_multiqc_files = ch_multiqc_files.mix( FALCO_PROCESSED.out.txt ) } emit: diff --git a/workflows/taxprofiler.nf b/workflows/taxprofiler.nf index 2435782..905cbd9 100644 --- a/workflows/taxprofiler.nf +++ b/workflows/taxprofiler.nf @@ -121,7 +121,7 @@ workflow TAXPROFILER { */ ch_input_for_fastqc = INPUT_CHECK.out.fastq.mix( INPUT_CHECK.out.nanopore ) - if ( params.perform_fastqc_alternative ) { + if ( params.preprocessing_qc_tool == 'falco' ) { FALCO ( ch_input_for_fastqc ) ch_versions = ch_versions.mix(FALCO.out.versions.first()) } else { @@ -257,9 +257,12 @@ workflow TAXPROFILER { ch_multiqc_files = ch_multiqc_files.mix(ch_methods_description.collectFile(name: 'methods_description_mqc.yaml')) ch_multiqc_files = ch_multiqc_files.mix(CUSTOM_DUMPSOFTWAREVERSIONS.out.mqc_yml.collect()) - if (!params.perform_fastqc_alternative) { + if (!params.preprocessing_qc_tool == 'falco') { ch_multiqc_files = ch_multiqc_files.mix(FASTQC.out.zip.collect{it[1]}.ifEmpty([])) } + else { + ch_multiqc_files = ch_multiqc_files.mix(FALCO.out.txt.collect{it[1]}.ifEmpty([])) + } if (params.perform_shortread_qc) { ch_multiqc_files = ch_multiqc_files.mix( SHORTREAD_PREPROCESSING.out.mqc.collect{it[1]}.ifEmpty([]) ) From 19231538daac4365596f9e827680fb007df53079 Mon Sep 17 00:00:00 2001 From: Sofia Stamouli Date: Thu, 20 Oct 2022 16:59:32 +0200 Subject: [PATCH 409/789] Prettier --- nextflow_schema.json | 55 +++++++------------------------------------- 1 file changed, 8 insertions(+), 47 deletions(-) diff --git a/nextflow_schema.json b/nextflow_schema.json index 055c368..ff2505f 100644 --- a/nextflow_schema.json +++ b/nextflow_schema.json @@ -10,11 +10,7 @@ "type": "object", "fa_icon": "fas fa-terminal", "description": "Define where the pipeline should find input data and save output data.", - "required": [ - "input", - "outdir", - "databases" - ], + "required": ["input", "outdir", "databases"], "properties": { "input": { "type": "string", @@ -84,10 +80,7 @@ "shortread_qc_tool": { "type": "string", "default": "fastp", - "enum": [ - "fastp", - "adapterremoval" - ], + "enum": ["fastp", "adapterremoval"], "fa_icon": "fas fa-tools", "description": "Specify which tool to use for short-read QC" }, @@ -140,11 +133,7 @@ "shortread_complexityfilter_tool": { "type": "string", "default": "bbduk", - "enum": [ - "bbduk", - "prinseqplusplus", - "fastp" - ], + "enum": ["bbduk", "prinseqplusplus", "fastp"], "fa_icon": "fas fa-hammer", "description": "Specify which tool to use for complexity filtering" }, @@ -178,10 +167,7 @@ "shortread_complexityfilter_prinseqplusplus_mode": { "type": "string", "default": "entropy", - "enum": [ - "entropy", - "dust" - ], + "enum": ["entropy", "dust"], "fa_icon": "fas fa-check-square", "description": "Specify the complexity filter mode for PRINSEQ++" }, @@ -355,15 +341,7 @@ "diamond_output_format": { "type": "string", "default": "tsv", - "enum": [ - "blast", - "xml", - "txt", - "daa", - "sam", - "tsv", - "paf" - ], + "enum": ["blast", "xml", "txt", "daa", "sam", "tsv", "paf"], "fa_icon": "fas fa-file", "description": "Specify output format from DIAMOND profiling.", "help_text": "DIAMOND can produce output in a number of different formats, you can specify here which to produce.\n\nNote that DIAMOND can only produce one format at a time, and depending on which you pick, some downstream steps may not be executed. For example, selecting `daa` or `sam` will mean you will not get a tabular taxonomic profile as with the other tools.\n\nWill be overriden by `--diamond_save_reads.`\n\n> Modifies tool parameter(s):\n> - diamond blastx: `--outfmt`" @@ -382,14 +360,7 @@ "kaiju_taxon_rank": { "type": "string", "default": "species", - "enum": [ - "phylum", - "class", - "order", - "family", - "genus", - "species" - ], + "enum": ["phylum", "class", "order", "family", "genus", "species"], "fa_icon": "fas fa-tag", "description": "Specify taxonomic rank to be displayed in Kaiju taxon table", "help_text": "Specify the taxonomic level(s) to be displayed in the resulting Kaiju taxon table, as generated by the kaiju2table helper tool.\n\nThis can be either a single level (e.g. `species`), or a comma separated list to display the full taxonomic path (e.g. `superkingdom,phylum,class,order,family,genus,species.`).\n\n> Modifies tool parameter(s):\n> - kaiju2table: `-l`" @@ -584,14 +555,7 @@ "description": "Method used to save pipeline results to output directory.", "help_text": "The Nextflow `publishDir` option specifies which intermediate files should be saved to the output directory. This option tells the pipeline what method should be used to move these files. See [Nextflow docs](https://www.nextflow.io/docs/latest/process.html#publishdir) for details.", "fa_icon": "fas fa-copy", - "enum": [ - "symlink", - "rellink", - "link", - "copy", - "copyNoFollow", - "move" - ], + "enum": ["symlink", "rellink", "link", "copy", "copyNoFollow", "move"], "hidden": true }, "email_on_fail": { @@ -748,10 +712,7 @@ "preprocessing_qc_tool": { "type": "string", "default": "fastqc", - "enum": [ - "fastqc", - "falco" - ] + "enum": ["fastqc", "falco"] } } } From 385507ec6fbb84fa2c3e09ba90365abdf98aac18 Mon Sep 17 00:00:00 2001 From: "Moritz E. Beber" Date: Fri, 21 Oct 2022 10:03:36 +0200 Subject: [PATCH 410/789] refactor: use tool name 'bracken' only --- subworkflows/local/profiling.nf | 16 ++++++---------- 1 file changed, 6 insertions(+), 10 deletions(-) diff --git a/subworkflows/local/profiling.nf b/subworkflows/local/profiling.nf index 5e2a7d2..e76db6c 100644 --- a/subworkflows/local/profiling.nf +++ b/subworkflows/local/profiling.nf @@ -41,7 +41,7 @@ workflow PROFILING { .combine(databases) .branch { malt: it[2]['tool'] == 'malt' - kraken2: it[2]['tool'].contains('kraken2') + kraken2: it[2]['tool'] == 'kraken2' || it[2]['tool'] == 'bracken' metaphlan3: it[2]['tool'] == 'metaphlan3' centrifuge: it[2]['tool'] == 'centrifuge' kaiju: it[2]['tool'] == 'kaiju' @@ -133,7 +133,7 @@ workflow PROFILING { ch_raw_classifications = ch_raw_classifications.mix( KRAKEN2_KRAKEN2.out.classified_reads_assignment ) ch_raw_profiles = ch_raw_profiles.mix( KRAKEN2_KRAKEN2.out.report - // Set the tool to be strictly 'kraken2' instead of potentially 'kraken2+bracken' for downstream use. + // Set the tool to be strictly 'kraken2' instead of potentially 'bracken' for downstream use. .map { meta, report -> [meta + [tool: 'kraken2'], report]} ) @@ -142,7 +142,7 @@ workflow PROFILING { if ( params.run_kraken2 && params.run_bracken ) { def ch_input_for_bracken = KRAKEN2_KRAKEN2.out.report - .filter { meta, report -> meta['tool'].contains('bracken') } + .filter { meta, report -> meta['tool'] == 'bracken' } if (params.kraken2_save_minimizers) { ch_input_for_bracken = KRAKEN2_STANDARD_REPORT(ch_input_for_bracken).report @@ -151,21 +151,17 @@ workflow PROFILING { ch_input_for_bracken = ch_input_for_bracken .combine( databases.filter { meta, db -> - meta['tool'].contains('bracken') + meta['tool'] == 'bracken' } ) .multiMap { meta, report, db_meta, db -> - report: [meta, report] + report: [meta + db_meta, report] db: db } BRACKEN_BRACKEN(ch_input_for_bracken.report, ch_input_for_bracken.db) ch_versions = ch_versions.mix(BRACKEN_BRACKEN.out.versions.first()) - ch_raw_profiles = ch_raw_profiles.mix( - BRACKEN_BRACKEN.out.reports - // Set the tool to be strictly 'bracken' instead of potentially 'kraken2+bracken' for downstream use. - .map { meta, report -> [meta + [tool: 'bracken'], report]} - ) + ch_raw_profiles = ch_raw_profiles.mix(BRACKEN_BRACKEN.out.reports) } From 7bd6112133ff3ff67772728243db29b5cabf4607 Mon Sep 17 00:00:00 2001 From: "Moritz E. Beber" Date: Fri, 21 Oct 2022 10:18:11 +0200 Subject: [PATCH 411/789] docs: describe Bracken database usage --- docs/usage.md | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/docs/usage.md b/docs/usage.md index 4f4c1ac..dd80eda 100644 --- a/docs/usage.md +++ b/docs/usage.md @@ -74,13 +74,13 @@ The pipeline takes the locations and specific profiling parameters of the tool o > ⚠️ nf-core/taxprofiler does not provide any databases by default, nor does it currently generate them for you. This must be performed manually by the user. See below for more information of the expected database files. -An example database sheet can look as follows, where 4 tools are being used, and `malt` and `kraken2` will be used against two databases each. +An example database sheet can look as follows, where 4 tools are being used, and `malt` and `kraken2` will be used against two databases each. This is because specifying `bracken` implies first running `kraken2` on the same database. ```console tool,db_name,db_params,db_path malt,malt85,-id 85,///malt/testdb-malt/ malt,malt95,-id 90,///malt/testdb-malt.tar.gz -kraken2,db1,,///kraken2/testdb-kraken2.tar.gz +bracken,db1,,///bracken/testdb-bracken.tar.gz kraken2,db2,--quick,///kraken2/testdb-kraken2.tar.gz centrifuge,db1,,///centrifuge/minigut_cf.tar.gz metaphlan3,db1,,///metaphlan3/metaphlan_database/ @@ -91,8 +91,8 @@ Column specifications are as follows: | Column | Description | | ----------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `tool` | Taxonomic profiling tool (supported by nf-core/taxprofiler) that the database has been indexed for [required]. | -| `db_name` | A unique name of the particular database [required]. | +| `tool` | Taxonomic profiling tool (supported by nf-core/taxprofiler) that the database has been indexed for [required]. Please note that `bracken` also implies running `kraken2` on the same database. | +| `db_name` | A unique name per tool for the particular database [required]. Please note that names need to be unique across both `kraken2` and `bracken` as well. | | `db_params` | Any parameters of the given taxonomic profiler that you wish to specify that the taxonomic profiling tool should use when profiling against this specific. Can be empty to use taxonomic profiler defaults. Must not be surrounded by quotes [required]. We generally do not recommend specifying parameters here that turn on/off saving of output files or specifying particular file extensions - this should be already addressed via pipeline parameters. | | `db_path` | Path to the database. Can either be a path to a directory containing the database index files or a `.tar.gz` file which contains the compressed database directory with the same name as the tar archive, minus `.tar.gz` [required]. | @@ -116,6 +116,15 @@ Expected (uncompressed) database files for each tool are as follows: - `opts.k2d` - `hash.k2d` - `taxo.k2d` +- **Bracken** output of a combined `kraken2-` and `bracken-build` process. Please see the [documentation on Bracken](https://github.com/jenniferlu717/Bracken#running-bracken-easy-version) for details. The output is a directory containing files per expected sequencing read length similarly to: + - `hash.k2d` + - `opts.k2d` + - `taxo.k2d` + - `database.kraken` + - `database100mers.kmer_distrib` + - `database100mers.kraken` + - `database150mers.kmer_distrib` + - `database150mers.kraken` - **Centrifuge** output of `centrifuge-build`. A directory containing: - `..cf` - `..cf` From 60e369aa5c7601a46e2ea2d6dddbe457f37b9f42 Mon Sep 17 00:00:00 2001 From: "Moritz E. Beber" Date: Fri, 21 Oct 2022 10:47:51 +0200 Subject: [PATCH 412/789] fix: set default run bracken to false --- conf/test_motus.config | 1 + nextflow.config | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/conf/test_motus.config b/conf/test_motus.config index d5eb8f8..d167b94 100644 --- a/conf/test_motus.config +++ b/conf/test_motus.config @@ -33,6 +33,7 @@ params { hostremoval_reference = 'https://raw.githubusercontent.com/nf-core/test-datasets/modules/data/genomics/homo_sapiens/genome/genome.fasta' run_kaiju = false run_kraken2 = false + run_bracken = false run_malt = false run_metaphlan3 = false run_centrifuge = false diff --git a/nextflow.config b/nextflow.config index 4f32a00..24ccab3 100644 --- a/nextflow.config +++ b/nextflow.config @@ -117,7 +117,7 @@ params { kraken2_save_minimizers = false // Bracken - run_bracken = true + run_bracken = false // centrifuge run_centrifuge = false From ca7dc308cb89d6e8ba110de5c96ce1641ff8940a Mon Sep 17 00:00:00 2001 From: "Moritz E. Beber" Date: Fri, 21 Oct 2022 16:36:35 +0200 Subject: [PATCH 413/789] Apply suggestions from code review Co-authored-by: James A. Fellows Yates --- docs/usage.md | 2 +- subworkflows/local/profiling.nf | 4 +++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/docs/usage.md b/docs/usage.md index dd80eda..56f9123 100644 --- a/docs/usage.md +++ b/docs/usage.md @@ -92,7 +92,7 @@ Column specifications are as follows: | Column | Description | | ----------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `tool` | Taxonomic profiling tool (supported by nf-core/taxprofiler) that the database has been indexed for [required]. Please note that `bracken` also implies running `kraken2` on the same database. | -| `db_name` | A unique name per tool for the particular database [required]. Please note that names need to be unique across both `kraken2` and `bracken` as well. | +| `db_name` | A unique name per tool for the particular database [required]. Please note that names need to be unique across both `kraken2` and `bracken` as well, even if re-using the same database. | | `db_params` | Any parameters of the given taxonomic profiler that you wish to specify that the taxonomic profiling tool should use when profiling against this specific. Can be empty to use taxonomic profiler defaults. Must not be surrounded by quotes [required]. We generally do not recommend specifying parameters here that turn on/off saving of output files or specifying particular file extensions - this should be already addressed via pipeline parameters. | | `db_path` | Path to the database. Can either be a path to a directory containing the database index files or a `.tar.gz` file which contains the compressed database directory with the same name as the tar archive, minus `.tar.gz` [required]. | diff --git a/subworkflows/local/profiling.nf b/subworkflows/local/profiling.nf index e76db6c..e6272ac 100644 --- a/subworkflows/local/profiling.nf +++ b/subworkflows/local/profiling.nf @@ -41,7 +41,7 @@ workflow PROFILING { .combine(databases) .branch { malt: it[2]['tool'] == 'malt' - kraken2: it[2]['tool'] == 'kraken2' || it[2]['tool'] == 'bracken' + kraken2: it[2]['tool'] == 'kraken2' || it[2]['tool'] == 'bracken' // to reuse the kraken module to produce the input data for bracken metaphlan3: it[2]['tool'] == 'metaphlan3' centrifuge: it[2]['tool'] == 'centrifuge' kaiju: it[2]['tool'] == 'kaiju' @@ -134,6 +134,7 @@ workflow PROFILING { ch_raw_profiles = ch_raw_profiles.mix( KRAKEN2_KRAKEN2.out.report // Set the tool to be strictly 'kraken2' instead of potentially 'bracken' for downstream use. + // Will remain distinct from 'pure' Kraken2 results due to distinct database names in file names. .map { meta, report -> [meta + [tool: 'kraken2'], report]} ) @@ -141,6 +142,7 @@ workflow PROFILING { if ( params.run_kraken2 && params.run_bracken ) { + // remove files from 'pure' kraken2 runs, so only those aligned against bracken2 kraken database are taken for brakcen def ch_input_for_bracken = KRAKEN2_KRAKEN2.out.report .filter { meta, report -> meta['tool'] == 'bracken' } From d3d4297ca932ff1b33cc60827995af673ae832f5 Mon Sep 17 00:00:00 2001 From: Sofia Stamouli Date: Mon, 24 Oct 2022 16:28:07 +0200 Subject: [PATCH 414/789] Apply review suggestions --- workflows/taxprofiler.nf | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/workflows/taxprofiler.nf b/workflows/taxprofiler.nf index 905cbd9..1ac519c 100644 --- a/workflows/taxprofiler.nf +++ b/workflows/taxprofiler.nf @@ -257,13 +257,13 @@ workflow TAXPROFILER { ch_multiqc_files = ch_multiqc_files.mix(ch_methods_description.collectFile(name: 'methods_description_mqc.yaml')) ch_multiqc_files = ch_multiqc_files.mix(CUSTOM_DUMPSOFTWAREVERSIONS.out.mqc_yml.collect()) - if (!params.preprocessing_qc_tool == 'falco') { - ch_multiqc_files = ch_multiqc_files.mix(FASTQC.out.zip.collect{it[1]}.ifEmpty([])) - } - else { + if ( params.preprocessing_qc_tool == 'falco' ) { ch_multiqc_files = ch_multiqc_files.mix(FALCO.out.txt.collect{it[1]}.ifEmpty([])) + } else { + ch_multiqc_files = ch_multiqc_files.mix(FASTQC.out.zip.collect{it[1]}.ifEmpty([])) } + if (params.perform_shortread_qc) { ch_multiqc_files = ch_multiqc_files.mix( SHORTREAD_PREPROCESSING.out.mqc.collect{it[1]}.ifEmpty([]) ) } From 00038db6345d0492bc0a1a4ce0dacdf86dbd836e Mon Sep 17 00:00:00 2001 From: nf-core-bot Date: Tue, 25 Oct 2022 08:51:58 +0000 Subject: [PATCH 415/789] [automated] Fix linting with Prettier --- docs/usage.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/usage.md b/docs/usage.md index 56f9123..ada5a2d 100644 --- a/docs/usage.md +++ b/docs/usage.md @@ -92,7 +92,7 @@ Column specifications are as follows: | Column | Description | | ----------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `tool` | Taxonomic profiling tool (supported by nf-core/taxprofiler) that the database has been indexed for [required]. Please note that `bracken` also implies running `kraken2` on the same database. | -| `db_name` | A unique name per tool for the particular database [required]. Please note that names need to be unique across both `kraken2` and `bracken` as well, even if re-using the same database. | +| `db_name` | A unique name per tool for the particular database [required]. Please note that names need to be unique across both `kraken2` and `bracken` as well, even if re-using the same database. | | `db_params` | Any parameters of the given taxonomic profiler that you wish to specify that the taxonomic profiling tool should use when profiling against this specific. Can be empty to use taxonomic profiler defaults. Must not be surrounded by quotes [required]. We generally do not recommend specifying parameters here that turn on/off saving of output files or specifying particular file extensions - this should be already addressed via pipeline parameters. | | `db_path` | Path to the database. Can either be a path to a directory containing the database index files or a `.tar.gz` file which contains the compressed database directory with the same name as the tar archive, minus `.tar.gz` [required]. | From 8c3e80b6ea85b316b5f476c016a068180a09ffdd Mon Sep 17 00:00:00 2001 From: Sofia Stamouli Date: Tue, 25 Oct 2022 11:13:26 +0200 Subject: [PATCH 416/789] Add helptest to nextflow_schema,add versions to longread_preprocessing --- .github/workflows/ci.yml | 1 - docs/usage.md | 2 +- nextflow_schema.json | 4 +++- subworkflows/local/longread_preprocessing.nf | 2 ++ 4 files changed, 6 insertions(+), 3 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 12185fe..862e072 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -23,7 +23,6 @@ jobs: - "21.10.3" - "latest-everything" parameters: - - "--preprocessing_qc_tool fastqc" - "--preprocessing_qc_tool falco" - "--perform_longread_qc false" - "--perform_shortread_qc false" diff --git a/docs/usage.md b/docs/usage.md index 4a44cf4..32fec4d 100644 --- a/docs/usage.md +++ b/docs/usage.md @@ -168,7 +168,7 @@ work # Directory containing the nextflow working files ### Sequencing quality control -nf-core taxprofiler offers [`Falco`](https://github.com/smithlabcode/falco] as an alternative option to [`FastQC`](https://www.bioinformatics.babraham.ac.uk/projects/fastqc/). +nf-core taxprofiler offers [`falco`](https://github.com/smithlabcode/falco] as an alternative option to [`FastQC`](https://www.bioinformatics.babraham.ac.uk/projects/fastqc/). ### Preprocessing Steps diff --git a/nextflow_schema.json b/nextflow_schema.json index ff2505f..aec2b3f 100644 --- a/nextflow_schema.json +++ b/nextflow_schema.json @@ -712,7 +712,9 @@ "preprocessing_qc_tool": { "type": "string", "default": "fastqc", - "enum": ["fastqc", "falco"] + "enum": ["fastqc", "falco"], + "help_text": "Falco is aimed at being a drop-in replacement for FastQC but written in C++ for faster computation. We particularly recommend using falco when using long reads (due to reduced memory constraints), however is also applicable for short reads.", + "description": "By default, the pipeline utilizes FastQC tool for quality control of raw sequencing reads" } } } diff --git a/subworkflows/local/longread_preprocessing.nf b/subworkflows/local/longread_preprocessing.nf index d16db3f..3da49ce 100644 --- a/subworkflows/local/longread_preprocessing.nf +++ b/subworkflows/local/longread_preprocessing.nf @@ -56,10 +56,12 @@ workflow LONGREAD_PREPROCESSING { if (params.preprocessing_qc_tool == 'fastqc') { FASTQC_PROCESSED ( ch_processed_reads ) + ch_versions = ch_versions.mix( FASTQC_PROCESSED.out.versions ) ch_multiqc_files = ch_multiqc_files.mix( FASTQC_PROCESSED.out.zip ) } else if (params.preprocessing_qc_tool == 'falco') { FALCO_PROCESSED ( ch_processed_reads ) + ch_versions = ch_versions.mix( FALCO_PROCESSED.out.versions ) ch_multiqc_files = ch_multiqc_files.mix( FALCO_PROCESSED.out.txt ) } From 7b1a53b06267ecb672a785b7c72a4e6f3cf60b26 Mon Sep 17 00:00:00 2001 From: Sofia Stamouli <91951607+sofstam@users.noreply.github.com> Date: Tue, 25 Oct 2022 11:19:08 +0200 Subject: [PATCH 417/789] Update nextflow_schema.json Co-authored-by: James A. Fellows Yates --- nextflow_schema.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/nextflow_schema.json b/nextflow_schema.json index aec2b3f..225e05d 100644 --- a/nextflow_schema.json +++ b/nextflow_schema.json @@ -713,7 +713,7 @@ "type": "string", "default": "fastqc", "enum": ["fastqc", "falco"], - "help_text": "Falco is aimed at being a drop-in replacement for FastQC but written in C++ for faster computation. We particularly recommend using falco when using long reads (due to reduced memory constraints), however is also applicable for short reads.", + "help_text": "Falco is designed as a drop-in replacement for FastQC but written in C++ for faster computation. We particularly recommend using falco when using long reads (due to reduced memory constraints), however is also applicable for short reads.", "description": "By default, the pipeline utilizes FastQC tool for quality control of raw sequencing reads" } } From de6816ec490cce6ba93c86a557c1800acf6ff5d9 Mon Sep 17 00:00:00 2001 From: Sofia Stamouli <91951607+sofstam@users.noreply.github.com> Date: Tue, 25 Oct 2022 11:19:16 +0200 Subject: [PATCH 418/789] Update nextflow_schema.json Co-authored-by: James A. Fellows Yates --- nextflow_schema.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/nextflow_schema.json b/nextflow_schema.json index 225e05d..4479f54 100644 --- a/nextflow_schema.json +++ b/nextflow_schema.json @@ -714,7 +714,7 @@ "default": "fastqc", "enum": ["fastqc", "falco"], "help_text": "Falco is designed as a drop-in replacement for FastQC but written in C++ for faster computation. We particularly recommend using falco when using long reads (due to reduced memory constraints), however is also applicable for short reads.", - "description": "By default, the pipeline utilizes FastQC tool for quality control of raw sequencing reads" + "description": "Specify the tool used for quality control of raw sequencing reads" } } } From 36e101a78b2f87b1aef1a5b05f65b6b730f5ad9d Mon Sep 17 00:00:00 2001 From: Mahwash Jamy Date: Tue, 25 Oct 2022 09:26:33 +0000 Subject: [PATCH 419/789] Install krakenuniq module --- .../krakenuniq/preloadedkrakenuniq/main.nf | 118 ++++++++++++++++++ .../krakenuniq/preloadedkrakenuniq/meta.yml | 77 ++++++++++++ 2 files changed, 195 insertions(+) create mode 100644 modules/nf-core/krakenuniq/preloadedkrakenuniq/main.nf create mode 100644 modules/nf-core/krakenuniq/preloadedkrakenuniq/meta.yml diff --git a/modules/nf-core/krakenuniq/preloadedkrakenuniq/main.nf b/modules/nf-core/krakenuniq/preloadedkrakenuniq/main.nf new file mode 100644 index 0000000..a355c13 --- /dev/null +++ b/modules/nf-core/krakenuniq/preloadedkrakenuniq/main.nf @@ -0,0 +1,118 @@ +process KRAKENUNIQ_PRELOADEDKRAKENUNIQ { + tag "$meta.id" + label 'process_high' + + conda (params.enable_conda ? "bioconda::krakenuniq=1.0.0" : null) + container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? + 'https://depot.galaxyproject.org/singularity/krakenuniq:1.0.0--pl5321h19e8d03_0': + 'quay.io/biocontainers/krakenuniq:1.0.0--pl5321h19e8d03_0' }" + + input: + tuple val(meta), path(fastqs) + path db + val ram_chunk_size + val save_output_fastqs + val report_file + val save_output + + output: + tuple val(meta), path('*.classified{.,_}*') , optional:true, emit: classified_reads_fastq + tuple val(meta), path('*.unclassified{.,_}*') , optional:true, emit: unclassified_reads_fastq + tuple val(meta), path('*classified.txt') , optional:true, emit: classified_assignment + tuple val(meta), path('*report.txt') , emit: report + + path "versions.yml" , emit: versions + + when: + task.ext.when == null || task.ext.when + + script: + 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 \\ + PREFIX=\$(echo \$fastq) + 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 \\ + --db $db \\ + --threads $task.cpus \\ + $report \\ + $output_option \\ + $unclassified_option \\ + $classified_option \\ + $output_option \\ + $paired \\ + $args2 \\ + \$fastq" + + touch "\$PREFIX".classified.fastq.gz + touch "\$PREFIX".krakenuniq.classified.txt + touch "\$PREFIX".krakenuniq.report.txt + touch "\$PREFIX".unclassified.fastq.gz + done + + $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 new file mode 100644 index 0000000..de788af --- /dev/null +++ b/modules/nf-core/krakenuniq/preloadedkrakenuniq/meta.yml @@ -0,0 +1,77 @@ +name: "krakenuniq_preloadedkrakenuniq" +description: Classifies metagenomic sequence data using unique k-mer counts +keywords: + - classify + - metagenomics + - kmers + - fastq + - db +tools: + - "krakenuniq": + description: "Metagenomics classifier with unique k-mer counting for more specific results" + homepage: https://github.com/fbreitwieser/krakenuniq + documentation: https://github.com/fbreitwieser/krakenuniq + doi: 10.1186/s13059-018-1568-0 + licence: ["MIT"] + +input: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - fastqs: + type: file + description: List of input FastQ files + - db: + type: directory + description: KrakenUniq database + - ram_chunk_size: + type: val + description: Amount of maximum amount of RAM each chunk of database that should be loaded at any one time + pattern: "*GB" + - save_output_fastqs: + type: boolean + description: | + If true, optional commands are added to save classified and unclassified reads + as fastq files + - save_reads_assignment: + type: boolean + description: | + If true, an optional command is added to save a file reporting the taxonomic + classification of each input read +output: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - classified_reads_fastq: + type: file + description: | + Reads classified as belonging to any of the taxa + on the KrakenUniq database. + pattern: "*{fastq.gz}" + - unclassified_reads_fastq: + type: file + description: | + Reads not classified to any of the taxa + on the KrakenUniq database. + pattern: "*{fastq.gz}" + - classified_assignment: + type: file + description: | + KrakenUniq output file indicating the taxonomic assignment of + each input read ## DOUBLE CHECK!! + - report: + type: file + description: | + KrakenUniq report containing stats about classified + and not classifed reads. + pattern: "*.{report.txt}" + - versions: + type: file + description: File containing software versions + pattern: "versions.yml" +authors: + - "@mjamy" From 86ca71cfd4399147d7dbfac927f96c3867e3f003 Mon Sep 17 00:00:00 2001 From: Mahwash Jamy Date: Tue, 25 Oct 2022 09:45:05 +0000 Subject: [PATCH 420/789] include krakenuniq in profiling subworkflow --- modules.json | 4 ++++ subworkflows/local/profiling.nf | 18 ++++++++++++++++++ 2 files changed, 22 insertions(+) diff --git a/modules.json b/modules.json index 10d6c74..2331ef8 100644 --- a/modules.json +++ b/modules.json @@ -89,6 +89,10 @@ "branch": "master", "git_sha": "5e34754d42cd2d5d248ca8673c0a53cdf5624905" }, + "krakenuniq/preloadedkrakenuniq": { + "branch": "master", + "git_sha": "13b9d4854593c03e5e25e8a8f47462542c2c0dd4" + }, "krona/ktimporttaxonomy": { "branch": "master", "git_sha": "5e34754d42cd2d5d248ca8673c0a53cdf5624905" diff --git a/subworkflows/local/profiling.nf b/subworkflows/local/profiling.nf index 11c4a72..6432829 100644 --- a/subworkflows/local/profiling.nf +++ b/subworkflows/local/profiling.nf @@ -11,6 +11,7 @@ include { METAPHLAN3_METAPHLAN3 } from '../../modules/nf-core/me include { KAIJU_KAIJU } from '../../modules/nf-core/kaiju/kaiju/main' include { DIAMOND_BLASTX } from '../../modules/nf-core/diamond/blastx/main' include { MOTUS_PROFILE } from '../../modules/nf-core/motus/profile/main' +include { KRAKENUNIQ_PRELOADEDKRAKENUNIQ } from '../../modules/nf-core/krakenuniq/preloadedkrakenuniq/main' workflow PROFILING { take: @@ -45,6 +46,7 @@ workflow PROFILING { kaiju: it[2]['tool'] == 'kaiju' diamond: it[2]['tool'] == 'diamond' motus: it[2]['tool'] == 'motus' + krakenuniq: it[2]['tool'] == 'krakenuniq' unknown: true } @@ -228,6 +230,22 @@ workflow PROFILING { ch_multiqc_files = ch_multiqc_files.mix( MOTUS_PROFILE.out.log ) } + if ( params.run_krakenuniq ) { + ch_input_for_krakenuniq = ch_input_for_profiling.krakenuniq + .multiMap { + it -> + reads: [ it[0] + it[2], it[1] ] + db: it[3] + } + + KRAKENUNIQ_PRELOADEDKRAKENUNIQ ( ch_input_for_krakenuniq.reads, ch_input_for_krakenuniq.db, params.krakenuniq_save_reads, params.krakenuniq_save_readclassification ) + ch_multiqc_files = ch_multiqc_files.mix( KRAKENUNIQ_PRELOADEDKRAKENUNIQ.out.report ) + ch_versions = ch_versions.mix( KRAKENUNIQ_PRELOADEDKRAKENUNIQ.out.versions.first() ) + ch_raw_classifications = ch_raw_classifications.mix( KRAKENUNIQ_PRELOADEDKRAKENUNIQ.out.classified_assignment ) + ch_raw_profiles = ch_raw_profiles.mix( KRAKENUNIQ_PRELOADEDKRAKENUNIQ.out.report ) + + } + emit: classifications = ch_raw_classifications profiles = ch_raw_profiles // channel: [ val(meta), [ reads ] ] - should be text files or biom From f4717be9abcdb71771101936b9b1881142478feb Mon Sep 17 00:00:00 2001 From: Mahwash Jamy Date: Tue, 25 Oct 2022 09:50:44 +0000 Subject: [PATCH 421/789] add krakenuniq to modules.config --- conf/modules.config | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/conf/modules.config b/conf/modules.config index d2a0051..252a8fe 100644 --- a/conf/modules.config +++ b/conf/modules.config @@ -295,6 +295,16 @@ process { ] } + withName: KRAKENUNIQ_PRELOADEDKRAKENUNIQ { + ext.args = { "${meta.db_params}" } + ext.prefix = params.perform_runmerging ? { "${meta.id}-${meta.db_name}" } : { "${meta.id}-${meta.run_accession}-${meta.db_name}" } + publishDir = [ + path: { "${params.outdir}/krakenuniq/${meta.db_name}/" }, + mode: params.publish_dir_mode, + pattern: '*.{txt,report,fastq.gz}' + ] + } + withName: KRONA_CLEANUP { ext.prefix = params.perform_runmerging ? { "${meta.id}-${meta.db_name}" } : { "${meta.id}-${meta.run_accession}-${meta.db_name}" } publishDir = [ From 0de1ac53561d490e35a500b0e18da3e37a913907 Mon Sep 17 00:00:00 2001 From: "Moritz E. Beber" Date: Thu, 27 Oct 2022 10:14:57 +0200 Subject: [PATCH 422/789] docs: add Bracken reference --- CITATIONS.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/CITATIONS.md b/CITATIONS.md index 1ce4ec2..ec03fc4 100644 --- a/CITATIONS.md +++ b/CITATIONS.md @@ -36,6 +36,10 @@ > Wood, Derrick E., Jennifer Lu, and Ben Langmead. 2019. Improved Metagenomic Analysis with Kraken 2. Genome Biology 20 (1): 257. doi: 10.1186/s13059-019-1891-0. +- [Bracken](https://doi.org/10.7717/peerj-cs.104) + + > Lu, J., Breitwieser, F. P., Thielen, P., & Salzberg, S. L. (2017). Bracken: Estimating species abundance in metagenomics data. PeerJ Computer Science, 3, e104. doi: 10.7717/peerj-cs.104 + - [Krona](https://doi.org/10.1186/1471-2105-12-385) > Ondov, Brian D., Nicholas H. Bergman, and Adam M. Phillippy. 2011. Interactive metagenomic visualization in a Web browser. BMC Bioinformatics 12 (1): 385. doi: 10.1186/1471-2105-12-385. From dd1a4ff158bff66021138f4f63f5585a477b6618 Mon Sep 17 00:00:00 2001 From: "Moritz E. Beber" Date: Thu, 27 Oct 2022 11:19:14 +0200 Subject: [PATCH 423/789] refactor: only combine same database name [skip ci] --- subworkflows/local/profiling.nf | 25 ++++++++++++++----------- 1 file changed, 14 insertions(+), 11 deletions(-) diff --git a/subworkflows/local/profiling.nf b/subworkflows/local/profiling.nf index e6272ac..278e310 100644 --- a/subworkflows/local/profiling.nf +++ b/subworkflows/local/profiling.nf @@ -141,22 +141,25 @@ workflow PROFILING { } if ( params.run_kraken2 && params.run_bracken ) { - - // remove files from 'pure' kraken2 runs, so only those aligned against bracken2 kraken database are taken for brakcen - def ch_input_for_bracken = KRAKEN2_KRAKEN2.out.report + // Remove files from 'pure' kraken2 runs, so only those aligned against Bracken & kraken2 database are used. + def ch_kraken2_output = KRAKEN2_KRAKEN2.out.report .filter { meta, report -> meta['tool'] == 'bracken' } + // If necessary, convert the eight column output to six column output. if (params.kraken2_save_minimizers) { - ch_input_for_bracken = KRAKEN2_STANDARD_REPORT(ch_input_for_bracken).report + ch_kraken2_output = KRAKEN2_STANDARD_REPORT(ch_kraken2_output).report } - ch_input_for_bracken = ch_input_for_bracken - .combine( - databases.filter { meta, db -> - meta['tool'] == 'bracken' - } - ) - .multiMap { meta, report, db_meta, db -> + // Extract the database name to combine by. + def ch_bracken_databases = databases + .filter { meta, db -> meta['tool'] == 'bracken' } + .map { meta, db -> [meta['db_name'], meta, db] } + + // Extract the database name to combine by. + def ch_input_for_bracken = ch_kraken2_output + .map { meta, report -> [meta['db_name'], meta, report] } + .combine(ch_bracken_databases, by: 0) + .multiMap { key, meta, report, db_meta, db -> report: [meta + db_meta, report] db: db } From e658fab430db815bf7614743e3b249c861df15ee Mon Sep 17 00:00:00 2001 From: "Moritz E. Beber" Date: Thu, 27 Oct 2022 11:50:47 +0200 Subject: [PATCH 424/789] fix: remove `def` No idea why, must have something to do with scope. --- subworkflows/local/profiling.nf | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/subworkflows/local/profiling.nf b/subworkflows/local/profiling.nf index 278e310..b86c165 100644 --- a/subworkflows/local/profiling.nf +++ b/subworkflows/local/profiling.nf @@ -151,12 +151,12 @@ workflow PROFILING { } // Extract the database name to combine by. - def ch_bracken_databases = databases + ch_bracken_databases = databases .filter { meta, db -> meta['tool'] == 'bracken' } .map { meta, db -> [meta['db_name'], meta, db] } // Extract the database name to combine by. - def ch_input_for_bracken = ch_kraken2_output + ch_input_for_bracken = ch_kraken2_output .map { meta, report -> [meta['db_name'], meta, report] } .combine(ch_bracken_databases, by: 0) .multiMap { key, meta, report, db_meta, db -> From 76a662ecc5e6a63b569b887df52ac41d1946cb7d Mon Sep 17 00:00:00 2001 From: "James A. Fellows Yates" Date: Thu, 27 Oct 2022 12:17:19 +0000 Subject: [PATCH 425/789] Fix adapterremoval adapter conflict and add optional adapter list file --- conf/modules.config | 8 +-- modules.json | 2 +- modules/nf-core/adapterremoval/main.nf | 4 +- nextflow.config | 3 +- nextflow_schema.json | 61 +++++++++++++++---- .../local/shortread_adapterremoval.nf | 5 +- subworkflows/local/shortread_preprocessing.nf | 1 + workflows/taxprofiler.nf | 9 ++- 8 files changed, 69 insertions(+), 24 deletions(-) diff --git a/conf/modules.config b/conf/modules.config index b1d7b87..9a351cc 100644 --- a/conf/modules.config +++ b/conf/modules.config @@ -100,8 +100,7 @@ process { withName: ADAPTERREMOVAL_SINGLE { ext.args = [ // trimming options - params.shortread_qc_skipadaptertrim ? "--adapter1 '' --adapter2 ''" : "", - params.shortread_qc_adapter1 ? "--adapter1 ${params.shortread_qc_adapter1}" : "", + params.shortread_qc_skipadaptertrim ? "--adapter1 ''" : params.shortread_qc_adapterlist ? "" : params.shortread_qc_adapter1 ? "--adapter1 ${params.shortread_qc_adapter1}" : "", // filtering options "--minlength ${params.shortread_qc_minlength}" ].join(' ').trim() @@ -119,9 +118,8 @@ process { // collapsing options params.shortread_qc_mergepairs ? "--collapse" : "", // trimming options - params.shortread_qc_skipadaptertrim ? "--adapter1 '' --adapter2 ''" : "", - params.shortread_qc_adapter1 ? "--adapter1 ${params.shortread_qc_adapter1}" : "", - params.shortread_qc_adapter2 ? "--adapter2 ${params.shortread_qc_adapter2}" : "", + params.shortread_qc_skipadaptertrim ? "--adapter1 ''" : params.shortread_qc_adapterlist ? "" : params.shortread_qc_adapter1 ? "--adapter1 ${params.shortread_qc_adapter1}" : "", // adding adapter list happens at module input channel level + params.shortread_qc_skipadaptertrim ? "--adapter2 ''" : params.shortread_qc_adapterlist ? "" : params.shortread_qc_adapter2 ? "--adapter2 ${params.shortread_qc_adapter2}" : "", // filtering options "--minlength ${params.shortread_qc_minlength}" ].join(' ').trim() diff --git a/modules.json b/modules.json index aa77c4e..ab32eec 100644 --- a/modules.json +++ b/modules.json @@ -7,7 +7,7 @@ "nf-core": { "adapterremoval": { "branch": "master", - "git_sha": "5e34754d42cd2d5d248ca8673c0a53cdf5624905" + "git_sha": "ce7cf27e377fdacf7ebe8e75903ec70405ea1659" }, "bbmap/bbduk": { "branch": "master", diff --git a/modules/nf-core/adapterremoval/main.nf b/modules/nf-core/adapterremoval/main.nf index 0e17c05..643c141 100644 --- a/modules/nf-core/adapterremoval/main.nf +++ b/modules/nf-core/adapterremoval/main.nf @@ -34,7 +34,7 @@ process ADAPTERREMOVAL { AdapterRemoval \\ --file1 $reads \\ $args \\ - $adapterlist \\ + $list \\ --basename ${prefix} \\ --threads ${task.cpus} \\ --seed 42 \\ @@ -61,7 +61,7 @@ process ADAPTERREMOVAL { --file1 ${reads[0]} \\ --file2 ${reads[1]} \\ $args \\ - $adapterlist \\ + $list \\ --basename ${prefix} \\ --threads $task.cpus \\ --seed 42 \\ diff --git a/nextflow.config b/nextflow.config index b69948e..9bf7f83 100644 --- a/nextflow.config +++ b/nextflow.config @@ -59,9 +59,9 @@ params { // Databases databases = null + // FASTQ preprocessing preprocessing_qc_tool = 'fastqc' - // FASTQ preprocessing perform_shortread_qc = false shortread_qc_tool = 'fastp' shortread_qc_skipadaptertrim = false @@ -69,6 +69,7 @@ params { shortread_qc_excludeunmerged = false shortread_qc_adapter1 = null shortread_qc_adapter2 = null + shortread_qc_adapterlist = null // TODO Add for FASTP shortread_qc_minlength = 15 perform_longread_qc = false diff --git a/nextflow_schema.json b/nextflow_schema.json index 4479f54..59131b6 100644 --- a/nextflow_schema.json +++ b/nextflow_schema.json @@ -10,7 +10,11 @@ "type": "object", "fa_icon": "fas fa-terminal", "description": "Define where the pipeline should find input data and save output data.", - "required": ["input", "outdir", "databases"], + "required": [ + "input", + "databases", + "outdir" + ], "properties": { "input": { "type": "string", @@ -80,7 +84,10 @@ "shortread_qc_tool": { "type": "string", "default": "fastp", - "enum": ["fastp", "adapterremoval"], + "enum": [ + "fastp", + "adapterremoval" + ], "fa_icon": "fas fa-tools", "description": "Specify which tool to use for short-read QC" }, @@ -104,6 +111,12 @@ "description": "Specify adapter 2 nucleotide sequence", "help_text": "Specify a custom reverse or R2 adapter sequence to be removed from reads. \n\nIf not set, the selected short-read QC tool's defaults will be used.\n\n> Modifies tool parameter(s):\n> - fastp: `--adapter_sequence`. fastp default: `AGATCGGAAGAGCGTCGTGTAGGGAAAGAGTGT`\n> - AdapterRemoval: `--adapter1`. AdapteRemoval2 default: `AGATCGGAAGAGCGTCGTGTAGGGAAAGAGTGTAGATCTCGGTGGTCGCCGTATCATT`" }, + "shortread_qc_adapterlist": { + "type": "string", + "default": "None", + "fa_icon": "fas fa-list-ul", + "help_text": "This affects AdapterRemoval. It will replace default adapters or whatever is supplied in `--shortread_qc_adapter{1,2}`.\n\nThis allows you to mix libraries built with different adapters into one run.\n\n> Modifies tool parameter(s):\n> - AdapterRemoval: `--adapter-list`." + }, "shortread_qc_mergepairs": { "type": "boolean", "fa_icon": "fas fa-toggle-on", @@ -133,7 +146,11 @@ "shortread_complexityfilter_tool": { "type": "string", "default": "bbduk", - "enum": ["bbduk", "prinseqplusplus", "fastp"], + "enum": [ + "bbduk", + "prinseqplusplus", + "fastp" + ], "fa_icon": "fas fa-hammer", "description": "Specify which tool to use for complexity filtering" }, @@ -167,7 +184,10 @@ "shortread_complexityfilter_prinseqplusplus_mode": { "type": "string", "default": "entropy", - "enum": ["entropy", "dust"], + "enum": [ + "entropy", + "dust" + ], "fa_icon": "fas fa-check-square", "description": "Specify the complexity filter mode for PRINSEQ++" }, @@ -341,7 +361,15 @@ "diamond_output_format": { "type": "string", "default": "tsv", - "enum": ["blast", "xml", "txt", "daa", "sam", "tsv", "paf"], + "enum": [ + "blast", + "xml", + "txt", + "daa", + "sam", + "tsv", + "paf" + ], "fa_icon": "fas fa-file", "description": "Specify output format from DIAMOND profiling.", "help_text": "DIAMOND can produce output in a number of different formats, you can specify here which to produce.\n\nNote that DIAMOND can only produce one format at a time, and depending on which you pick, some downstream steps may not be executed. For example, selecting `daa` or `sam` will mean you will not get a tabular taxonomic profile as with the other tools.\n\nWill be overriden by `--diamond_save_reads.`\n\n> Modifies tool parameter(s):\n> - diamond blastx: `--outfmt`" @@ -360,7 +388,14 @@ "kaiju_taxon_rank": { "type": "string", "default": "species", - "enum": ["phylum", "class", "order", "family", "genus", "species"], + "enum": [ + "phylum", + "class", + "order", + "family", + "genus", + "species" + ], "fa_icon": "fas fa-tag", "description": "Specify taxonomic rank to be displayed in Kaiju taxon table", "help_text": "Specify the taxonomic level(s) to be displayed in the resulting Kaiju taxon table, as generated by the kaiju2table helper tool.\n\nThis can be either a single level (e.g. `species`), or a comma separated list to display the full taxonomic path (e.g. `superkingdom,phylum,class,order,family,genus,species.`).\n\n> Modifies tool parameter(s):\n> - kaiju2table: `-l`" @@ -555,7 +590,14 @@ "description": "Method used to save pipeline results to output directory.", "help_text": "The Nextflow `publishDir` option specifies which intermediate files should be saved to the output directory. This option tells the pipeline what method should be used to move these files. See [Nextflow docs](https://www.nextflow.io/docs/latest/process.html#publishdir) for details.", "fa_icon": "fas fa-copy", - "enum": ["symlink", "rellink", "link", "copy", "copyNoFollow", "move"], + "enum": [ + "symlink", + "rellink", + "link", + "copy", + "copyNoFollow", + "move" + ], "hidden": true }, "email_on_fail": { @@ -711,10 +753,7 @@ "properties": { "preprocessing_qc_tool": { "type": "string", - "default": "fastqc", - "enum": ["fastqc", "falco"], - "help_text": "Falco is designed as a drop-in replacement for FastQC but written in C++ for faster computation. We particularly recommend using falco when using long reads (due to reduced memory constraints), however is also applicable for short reads.", - "description": "Specify the tool used for quality control of raw sequencing reads" + "default": "fastqc" } } } diff --git a/subworkflows/local/shortread_adapterremoval.nf b/subworkflows/local/shortread_adapterremoval.nf index a5a43fe..6567007 100644 --- a/subworkflows/local/shortread_adapterremoval.nf +++ b/subworkflows/local/shortread_adapterremoval.nf @@ -10,6 +10,7 @@ workflow SHORTREAD_ADAPTERREMOVAL { take: reads // [[meta], [reads]] + adapterlist // file main: ch_versions = Channel.empty() @@ -21,8 +22,8 @@ workflow SHORTREAD_ADAPTERREMOVAL { paired: !it[0].single_end } - ADAPTERREMOVAL_SINGLE ( ch_input_for_adapterremoval.single, [] ) - ADAPTERREMOVAL_PAIRED ( ch_input_for_adapterremoval.paired, [] ) + ADAPTERREMOVAL_SINGLE ( ch_input_for_adapterremoval.single, adapterlist ) + ADAPTERREMOVAL_PAIRED ( ch_input_for_adapterremoval.paired, adapterlist ) /* * Due to the ~slightly~ very ugly output implementation of the current AdapterRemoval2 version, each file diff --git a/subworkflows/local/shortread_preprocessing.nf b/subworkflows/local/shortread_preprocessing.nf index f2cd738..6e14423 100644 --- a/subworkflows/local/shortread_preprocessing.nf +++ b/subworkflows/local/shortread_preprocessing.nf @@ -11,6 +11,7 @@ include { FALCO as FALCO_PROCESSED } from '../../modules/nf-core/falco/main' workflow SHORTREAD_PREPROCESSING { take: reads // [ [ meta ], [ reads ] ] + adapterlist // file main: ch_versions = Channel.empty() diff --git a/workflows/taxprofiler.nf b/workflows/taxprofiler.nf index 1ac519c..e6ccc16 100644 --- a/workflows/taxprofiler.nf +++ b/workflows/taxprofiler.nf @@ -12,7 +12,8 @@ WorkflowTaxprofiler.initialise(params, log) // TODO nf-core: Add all file path parameters for the pipeline to the list below // Check input path parameters to see if they exist def checkPathParamList = [ params.input, params.databases, params.hostremoval_reference, - params.shortread_hostremoval_index, params.multiqc_config + params.shortread_hostremoval_index, params.multiqc_config, + params.shortread_qc_adapterlist ] for (param in checkPathParamList) { if (param) { file(param, checkIfExists: true) } } @@ -102,6 +103,7 @@ workflow TAXPROFILER { ch_versions = Channel.empty() ch_multiqc_logo= Channel.fromPath("$projectDir/docs/images/nf-core-taxprofiler_logo_custom_light.png") + ch_adapterlist_for_shortreadqc = params.shortread_qc_adapterlist ? file(params.shortread_qc_adapterlist) : [] /* SUBWORKFLOW: Read in samplesheet, validate and stage input files @@ -131,8 +133,11 @@ workflow TAXPROFILER { /* SUBWORKFLOW: PERFORM PREPROCESSING */ + + ch_adapterlist_for_shortreadqc + if ( params.perform_shortread_qc ) { - ch_shortreads_preprocessed = SHORTREAD_PREPROCESSING ( INPUT_CHECK.out.fastq ).reads + ch_shortreads_preprocessed = SHORTREAD_PREPROCESSING ( INPUT_CHECK.out.fastq, ch_adapterlist_for_shortreadqc ).reads ch_versions = ch_versions.mix( SHORTREAD_PREPROCESSING.out.versions ) } else { ch_shortreads_preprocessed = INPUT_CHECK.out.fastq From 733d3dc8c57078a7c2032ef028429aefc552e3de Mon Sep 17 00:00:00 2001 From: "James A. Fellows Yates" Date: Thu, 27 Oct 2022 14:19:28 +0200 Subject: [PATCH 426/789] Apply suggestions from code review --- nextflow_schema.json | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/nextflow_schema.json b/nextflow_schema.json index 59131b6..5c60775 100644 --- a/nextflow_schema.json +++ b/nextflow_schema.json @@ -753,7 +753,10 @@ "properties": { "preprocessing_qc_tool": { "type": "string", - "default": "fastqc" + "default": "fastqc", + "enum": ["fastqc", "falco"], + "help_text": "Falco is designed as a drop-in replacement for FastQC but written in C++ for faster computation. We particularly recommend using falco when using long reads (due to reduced memory constraints), however is also applicable for short reads.", + "description": "Specify the tool used for quality control of raw sequencing reads" } } } From a402ee3be200089757096207dba17cb1b4ffb5a6 Mon Sep 17 00:00:00 2001 From: nf-core-bot Date: Thu, 27 Oct 2022 12:20:08 +0000 Subject: [PATCH 427/789] [automated] Fix linting with Prettier --- nextflow_schema.json | 50 +++++++------------------------------------- 1 file changed, 7 insertions(+), 43 deletions(-) diff --git a/nextflow_schema.json b/nextflow_schema.json index 5c60775..04ba938 100644 --- a/nextflow_schema.json +++ b/nextflow_schema.json @@ -10,11 +10,7 @@ "type": "object", "fa_icon": "fas fa-terminal", "description": "Define where the pipeline should find input data and save output data.", - "required": [ - "input", - "databases", - "outdir" - ], + "required": ["input", "databases", "outdir"], "properties": { "input": { "type": "string", @@ -84,10 +80,7 @@ "shortread_qc_tool": { "type": "string", "default": "fastp", - "enum": [ - "fastp", - "adapterremoval" - ], + "enum": ["fastp", "adapterremoval"], "fa_icon": "fas fa-tools", "description": "Specify which tool to use for short-read QC" }, @@ -146,11 +139,7 @@ "shortread_complexityfilter_tool": { "type": "string", "default": "bbduk", - "enum": [ - "bbduk", - "prinseqplusplus", - "fastp" - ], + "enum": ["bbduk", "prinseqplusplus", "fastp"], "fa_icon": "fas fa-hammer", "description": "Specify which tool to use for complexity filtering" }, @@ -184,10 +173,7 @@ "shortread_complexityfilter_prinseqplusplus_mode": { "type": "string", "default": "entropy", - "enum": [ - "entropy", - "dust" - ], + "enum": ["entropy", "dust"], "fa_icon": "fas fa-check-square", "description": "Specify the complexity filter mode for PRINSEQ++" }, @@ -361,15 +347,7 @@ "diamond_output_format": { "type": "string", "default": "tsv", - "enum": [ - "blast", - "xml", - "txt", - "daa", - "sam", - "tsv", - "paf" - ], + "enum": ["blast", "xml", "txt", "daa", "sam", "tsv", "paf"], "fa_icon": "fas fa-file", "description": "Specify output format from DIAMOND profiling.", "help_text": "DIAMOND can produce output in a number of different formats, you can specify here which to produce.\n\nNote that DIAMOND can only produce one format at a time, and depending on which you pick, some downstream steps may not be executed. For example, selecting `daa` or `sam` will mean you will not get a tabular taxonomic profile as with the other tools.\n\nWill be overriden by `--diamond_save_reads.`\n\n> Modifies tool parameter(s):\n> - diamond blastx: `--outfmt`" @@ -388,14 +366,7 @@ "kaiju_taxon_rank": { "type": "string", "default": "species", - "enum": [ - "phylum", - "class", - "order", - "family", - "genus", - "species" - ], + "enum": ["phylum", "class", "order", "family", "genus", "species"], "fa_icon": "fas fa-tag", "description": "Specify taxonomic rank to be displayed in Kaiju taxon table", "help_text": "Specify the taxonomic level(s) to be displayed in the resulting Kaiju taxon table, as generated by the kaiju2table helper tool.\n\nThis can be either a single level (e.g. `species`), or a comma separated list to display the full taxonomic path (e.g. `superkingdom,phylum,class,order,family,genus,species.`).\n\n> Modifies tool parameter(s):\n> - kaiju2table: `-l`" @@ -590,14 +561,7 @@ "description": "Method used to save pipeline results to output directory.", "help_text": "The Nextflow `publishDir` option specifies which intermediate files should be saved to the output directory. This option tells the pipeline what method should be used to move these files. See [Nextflow docs](https://www.nextflow.io/docs/latest/process.html#publishdir) for details.", "fa_icon": "fas fa-copy", - "enum": [ - "symlink", - "rellink", - "link", - "copy", - "copyNoFollow", - "move" - ], + "enum": ["symlink", "rellink", "link", "copy", "copyNoFollow", "move"], "hidden": true }, "email_on_fail": { From 08d61065e5fe4bbae15b93690bf77331be89785e Mon Sep 17 00:00:00 2001 From: "James A. Fellows Yates" Date: Thu, 27 Oct 2022 12:23:27 +0000 Subject: [PATCH 428/789] Add adapterlist to AR2 subworkflow --- subworkflows/local/shortread_preprocessing.nf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/subworkflows/local/shortread_preprocessing.nf b/subworkflows/local/shortread_preprocessing.nf index 6e14423..d381d34 100644 --- a/subworkflows/local/shortread_preprocessing.nf +++ b/subworkflows/local/shortread_preprocessing.nf @@ -22,7 +22,7 @@ workflow SHORTREAD_PREPROCESSING { ch_versions = ch_versions.mix( SHORTREAD_FASTP.out.versions ) ch_multiqc_files = ch_multiqc_files.mix( SHORTREAD_FASTP.out.mqc ) } else if ( params.shortread_qc_tool == "adapterremoval" ) { - ch_processed_reads = SHORTREAD_ADAPTERREMOVAL ( reads ).reads + ch_processed_reads = SHORTREAD_ADAPTERREMOVAL ( reads, adapterlist ).reads ch_versions = ch_versions.mix( SHORTREAD_ADAPTERREMOVAL.out.versions ) ch_multiqc_files = ch_multiqc_files.mix( SHORTREAD_ADAPTERREMOVAL.out.mqc ) } else { From 1bd6dbfe58b16d3115ff214295dd6835a6a8f4d5 Mon Sep 17 00:00:00 2001 From: Sofia Stamouli Date: Fri, 28 Oct 2022 11:40:50 +0200 Subject: [PATCH 429/789] Add samtools stats for long-reads --- assets/multiqc_config.yml | 1 + modules.json | 8 ++++ modules/nf-core/samtools/index/main.nf | 48 ++++++++++++++++++++ modules/nf-core/samtools/index/meta.yml | 53 ++++++++++++++++++++++ modules/nf-core/samtools/stats/main.nf | 49 ++++++++++++++++++++ modules/nf-core/samtools/stats/meta.yml | 53 ++++++++++++++++++++++ subworkflows/local/longread_hostremoval.nf | 15 ++++++ workflows/taxprofiler.nf | 4 ++ 8 files changed, 231 insertions(+) create mode 100644 modules/nf-core/samtools/index/main.nf create mode 100644 modules/nf-core/samtools/index/meta.yml create mode 100644 modules/nf-core/samtools/stats/main.nf create mode 100644 modules/nf-core/samtools/stats/meta.yml diff --git a/assets/multiqc_config.yml b/assets/multiqc_config.yml index e2b5a6e..e4a04a9 100644 --- a/assets/multiqc_config.yml +++ b/assets/multiqc_config.yml @@ -21,6 +21,7 @@ run_modules: - adapterRemoval - fastp - bowtie2 + - samtools - kraken - malt - custom_content diff --git a/modules.json b/modules.json index bcf2567..be3d193 100644 --- a/modules.json +++ b/modules.json @@ -153,6 +153,14 @@ "branch": "master", "git_sha": "5e34754d42cd2d5d248ca8673c0a53cdf5624905" }, + "samtools/index": { + "branch": "master", + "git_sha": "5e34754d42cd2d5d248ca8673c0a53cdf5624905" + }, + "samtools/stats": { + "branch": "master", + "git_sha": "5e34754d42cd2d5d248ca8673c0a53cdf5624905" + }, "samtools/view": { "branch": "master", "git_sha": "5e34754d42cd2d5d248ca8673c0a53cdf5624905" diff --git a/modules/nf-core/samtools/index/main.nf b/modules/nf-core/samtools/index/main.nf new file mode 100644 index 0000000..e04e63e --- /dev/null +++ b/modules/nf-core/samtools/index/main.nf @@ -0,0 +1,48 @@ +process SAMTOOLS_INDEX { + tag "$meta.id" + label 'process_low' + + conda (params.enable_conda ? "bioconda::samtools=1.15.1" : null) + container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? + 'https://depot.galaxyproject.org/singularity/samtools:1.15.1--h1170115_0' : + 'quay.io/biocontainers/samtools:1.15.1--h1170115_0' }" + + input: + tuple val(meta), path(input) + + output: + tuple val(meta), path("*.bai") , optional:true, emit: bai + tuple val(meta), path("*.csi") , optional:true, emit: csi + tuple val(meta), path("*.crai"), optional:true, emit: crai + path "versions.yml" , emit: versions + + when: + task.ext.when == null || task.ext.when + + script: + def args = task.ext.args ?: '' + """ + samtools \\ + index \\ + -@ ${task.cpus-1} \\ + $args \\ + $input + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + samtools: \$(echo \$(samtools --version 2>&1) | sed 's/^.*samtools //; s/Using.*\$//') + END_VERSIONS + """ + + stub: + """ + touch ${input}.bai + touch ${input}.crai + touch ${input}.csi + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + samtools: \$(echo \$(samtools --version 2>&1) | sed 's/^.*samtools //; s/Using.*\$//') + END_VERSIONS + """ +} diff --git a/modules/nf-core/samtools/index/meta.yml b/modules/nf-core/samtools/index/meta.yml new file mode 100644 index 0000000..e5cadbc --- /dev/null +++ b/modules/nf-core/samtools/index/meta.yml @@ -0,0 +1,53 @@ +name: samtools_index +description: Index SAM/BAM/CRAM file +keywords: + - index + - bam + - sam + - cram +tools: + - samtools: + description: | + SAMtools is a set of utilities for interacting with and post-processing + short DNA sequence read alignments in the SAM, BAM and CRAM formats, written by Heng Li. + These files are generated as output by short read aligners like BWA. + homepage: http://www.htslib.org/ + documentation: hhttp://www.htslib.org/doc/samtools.html + doi: 10.1093/bioinformatics/btp352 + licence: ["MIT"] +input: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - bam: + type: file + description: BAM/CRAM/SAM file + pattern: "*.{bam,cram,sam}" +output: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - bai: + type: file + description: BAM/CRAM/SAM index file + pattern: "*.{bai,crai,sai}" + - crai: + type: file + description: BAM/CRAM/SAM index file + pattern: "*.{bai,crai,sai}" + - csi: + type: file + description: CSI index file + pattern: "*.{csi}" + - versions: + type: file + description: File containing software versions + pattern: "versions.yml" +authors: + - "@drpatelh" + - "@ewels" + - "@maxulysse" diff --git a/modules/nf-core/samtools/stats/main.nf b/modules/nf-core/samtools/stats/main.nf new file mode 100644 index 0000000..9b0c386 --- /dev/null +++ b/modules/nf-core/samtools/stats/main.nf @@ -0,0 +1,49 @@ +process SAMTOOLS_STATS { + tag "$meta.id" + label 'process_single' + + conda (params.enable_conda ? "bioconda::samtools=1.15.1" : null) + container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? + 'https://depot.galaxyproject.org/singularity/samtools:1.15.1--h1170115_0' : + 'quay.io/biocontainers/samtools:1.15.1--h1170115_0' }" + + input: + tuple val(meta), path(input), path(input_index) + path fasta + + output: + tuple val(meta), path("*.stats"), emit: stats + path "versions.yml" , emit: versions + + when: + task.ext.when == null || task.ext.when + + script: + def args = task.ext.args ?: '' + def prefix = task.ext.prefix ?: "${meta.id}" + def reference = fasta ? "--reference ${fasta}" : "" + """ + samtools \\ + stats \\ + --threads ${task.cpus} \\ + ${reference} \\ + ${input} \\ + > ${prefix}.stats + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + samtools: \$(echo \$(samtools --version 2>&1) | sed 's/^.*samtools //; s/Using.*\$//') + END_VERSIONS + """ + + stub: + def prefix = task.ext.prefix ?: "${meta.id}" + """ + touch ${prefix}.stats + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + samtools: \$(echo \$(samtools --version 2>&1) | sed 's/^.*samtools //; s/Using.*\$//') + END_VERSIONS + """ +} diff --git a/modules/nf-core/samtools/stats/meta.yml b/modules/nf-core/samtools/stats/meta.yml new file mode 100644 index 0000000..cac50b1 --- /dev/null +++ b/modules/nf-core/samtools/stats/meta.yml @@ -0,0 +1,53 @@ +name: samtools_stats +description: Produces comprehensive statistics from SAM/BAM/CRAM file +keywords: + - statistics + - counts + - bam + - sam + - cram +tools: + - samtools: + description: | + SAMtools is a set of utilities for interacting with and post-processing + short DNA sequence read alignments in the SAM, BAM and CRAM formats, written by Heng Li. + These files are generated as output by short read aligners like BWA. + homepage: http://www.htslib.org/ + documentation: hhttp://www.htslib.org/doc/samtools.html + doi: 10.1093/bioinformatics/btp352 + licence: ["MIT"] +input: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - input: + type: file + description: BAM/CRAM file from alignment + pattern: "*.{bam,cram}" + - input_index: + type: file + description: BAI/CRAI file from alignment + pattern: "*.{bai,crai}" + - fasta: + type: optional file + description: Reference file the CRAM was created with + pattern: "*.{fasta,fa}" +output: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - stats: + type: file + description: File containing samtools stats output + pattern: "*.{stats}" + - versions: + type: file + description: File containing software versions + pattern: "versions.yml" +authors: + - "@drpatelh" + - "@FriederikeHanssen" diff --git a/subworkflows/local/longread_hostremoval.nf b/subworkflows/local/longread_hostremoval.nf index 82ea8ca..fb79e12 100644 --- a/subworkflows/local/longread_hostremoval.nf +++ b/subworkflows/local/longread_hostremoval.nf @@ -6,6 +6,8 @@ include { MINIMAP2_INDEX } from '../../modules/nf-core/minimap2/inde include { MINIMAP2_ALIGN } from '../../modules/nf-core/minimap2/align/main' include { SAMTOOLS_VIEW } from '../../modules/nf-core/samtools/view/main' include { SAMTOOLS_BAM2FQ } from '../../modules/nf-core/samtools/bam2fq/main' +include { SAMTOOLS_INDEX } from '../../modules/nf-core/samtools/index/main' +include { SAMTOOLS_STATS } from '../../modules/nf-core/samtools/stats/main' workflow LONGREAD_HOSTREMOVAL { take: @@ -39,9 +41,22 @@ workflow LONGREAD_HOSTREMOVAL { SAMTOOLS_BAM2FQ ( SAMTOOLS_VIEW.out.bam, false ) ch_versions = ch_versions.mix( SAMTOOLS_BAM2FQ.out.versions.first() ) + SAMTOOLS_INDEX ( SAMTOOLS_VIEW.out.bam ) + ch_versions = ch_versions.mix( SAMTOOLS_INDEX.out.versions.first() ) + + SAMTOOLS_VIEW.out.bam + .join(SAMTOOLS_INDEX.out.bai, by: [0], remainder: true) + .set { bam_bai } + + SAMTOOLS_STATS ( bam_bai, reference ) + ch_versions = ch_versions.mix(SAMTOOLS_STATS.out.versions.first()) + ch_multiqc_files = ch_multiqc_files.mix( SAMTOOLS_STATS.out.stats ) + emit: + stats = SAMTOOLS_STATS.out.stats //channel: [val(meta), [reads ] ] reads = SAMTOOLS_BAM2FQ.out.reads // channel: [ val(meta), [ reads ] ] versions = ch_versions // channel: [ versions.yml ] + mqc = ch_multiqc_files } diff --git a/workflows/taxprofiler.nf b/workflows/taxprofiler.nf index b456b06..07660ab 100644 --- a/workflows/taxprofiler.nf +++ b/workflows/taxprofiler.nf @@ -281,6 +281,10 @@ workflow TAXPROFILER { ch_multiqc_files = ch_multiqc_files.mix(SHORTREAD_HOSTREMOVAL.out.mqc.collect{it[1]}.ifEmpty([])) } + if (params.perform_longread_hostremoval) { + ch_multiqc_files = ch_multiqc_files.mix(LONGREAD_HOSTREMOVAL.out.mqc.collect{it[1]}.ifEmpty([])) + } + ch_multiqc_files = ch_multiqc_files.mix( PROFILING.out.mqc.collect{it[1]}.ifEmpty([]) ) if ( params.run_profile_standardisation ) { From f87131c7b1c212c3169b0ee3d6462eaa72d2a021 Mon Sep 17 00:00:00 2001 From: Sofia Stamouli Date: Fri, 28 Oct 2022 14:10:24 +0200 Subject: [PATCH 430/789] Save samtools stats output --- conf/modules.config | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/conf/modules.config b/conf/modules.config index a4d36fd..397e0c2 100644 --- a/conf/modules.config +++ b/conf/modules.config @@ -233,6 +233,16 @@ process { ] } + withName: SAMTOOLS_STATS { + ext.prefix = { "${meta.id}_${meta.run_accession}" } + publishDir = [ + path: { "${params.outdir}/samtools/stats" }, + mode: params.publish_dir_mode, + enabled: params.save_hostremoval_unmapped, + pattern: '*stats' + ] + } + withName: BBMAP_BBDUK { ext.args = [ "entropy=${params.shortread_complexityfilter_entropy}", From 5b99d9024aeafcad5256d534d08c7cd7a2b79d70 Mon Sep 17 00:00:00 2001 From: Sofia Stamouli Date: Fri, 28 Oct 2022 14:24:33 +0200 Subject: [PATCH 431/789] Add samtools stats for short-reads --- assets/multiqc_config.yml | 1 + conf/modules.config | 12 +++++ modules.json | 8 ++++ modules/nf-core/samtools/index/main.nf | 48 +++++++++++++++++++ modules/nf-core/samtools/index/meta.yml | 53 +++++++++++++++++++++ modules/nf-core/samtools/stats/main.nf | 49 +++++++++++++++++++ modules/nf-core/samtools/stats/meta.yml | 53 +++++++++++++++++++++ subworkflows/local/shortread_hostremoval.nf | 12 +++++ 8 files changed, 236 insertions(+) create mode 100644 modules/nf-core/samtools/index/main.nf create mode 100644 modules/nf-core/samtools/index/meta.yml create mode 100644 modules/nf-core/samtools/stats/main.nf create mode 100644 modules/nf-core/samtools/stats/meta.yml diff --git a/assets/multiqc_config.yml b/assets/multiqc_config.yml index e2b5a6e..e4a04a9 100644 --- a/assets/multiqc_config.yml +++ b/assets/multiqc_config.yml @@ -21,6 +21,7 @@ run_modules: - adapterRemoval - fastp - bowtie2 + - samtools - kraken - malt - custom_content diff --git a/conf/modules.config b/conf/modules.config index a4d36fd..476ca11 100644 --- a/conf/modules.config +++ b/conf/modules.config @@ -233,6 +233,18 @@ process { ] } + withName: SAMTOOLS_STATS { + ext.prefix = { "${meta.id}_${meta.run_accession}" } + publishDir = [ + path: { "${params.outdir}/samtools/stats" }, + mode: params.publish_dir_mode, + enabled: params.save_hostremoval_unmapped, + pattern: '*stats' + ] + } + + + withName: BBMAP_BBDUK { ext.args = [ "entropy=${params.shortread_complexityfilter_entropy}", diff --git a/modules.json b/modules.json index bcf2567..be3d193 100644 --- a/modules.json +++ b/modules.json @@ -153,6 +153,14 @@ "branch": "master", "git_sha": "5e34754d42cd2d5d248ca8673c0a53cdf5624905" }, + "samtools/index": { + "branch": "master", + "git_sha": "5e34754d42cd2d5d248ca8673c0a53cdf5624905" + }, + "samtools/stats": { + "branch": "master", + "git_sha": "5e34754d42cd2d5d248ca8673c0a53cdf5624905" + }, "samtools/view": { "branch": "master", "git_sha": "5e34754d42cd2d5d248ca8673c0a53cdf5624905" diff --git a/modules/nf-core/samtools/index/main.nf b/modules/nf-core/samtools/index/main.nf new file mode 100644 index 0000000..e04e63e --- /dev/null +++ b/modules/nf-core/samtools/index/main.nf @@ -0,0 +1,48 @@ +process SAMTOOLS_INDEX { + tag "$meta.id" + label 'process_low' + + conda (params.enable_conda ? "bioconda::samtools=1.15.1" : null) + container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? + 'https://depot.galaxyproject.org/singularity/samtools:1.15.1--h1170115_0' : + 'quay.io/biocontainers/samtools:1.15.1--h1170115_0' }" + + input: + tuple val(meta), path(input) + + output: + tuple val(meta), path("*.bai") , optional:true, emit: bai + tuple val(meta), path("*.csi") , optional:true, emit: csi + tuple val(meta), path("*.crai"), optional:true, emit: crai + path "versions.yml" , emit: versions + + when: + task.ext.when == null || task.ext.when + + script: + def args = task.ext.args ?: '' + """ + samtools \\ + index \\ + -@ ${task.cpus-1} \\ + $args \\ + $input + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + samtools: \$(echo \$(samtools --version 2>&1) | sed 's/^.*samtools //; s/Using.*\$//') + END_VERSIONS + """ + + stub: + """ + touch ${input}.bai + touch ${input}.crai + touch ${input}.csi + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + samtools: \$(echo \$(samtools --version 2>&1) | sed 's/^.*samtools //; s/Using.*\$//') + END_VERSIONS + """ +} diff --git a/modules/nf-core/samtools/index/meta.yml b/modules/nf-core/samtools/index/meta.yml new file mode 100644 index 0000000..e5cadbc --- /dev/null +++ b/modules/nf-core/samtools/index/meta.yml @@ -0,0 +1,53 @@ +name: samtools_index +description: Index SAM/BAM/CRAM file +keywords: + - index + - bam + - sam + - cram +tools: + - samtools: + description: | + SAMtools is a set of utilities for interacting with and post-processing + short DNA sequence read alignments in the SAM, BAM and CRAM formats, written by Heng Li. + These files are generated as output by short read aligners like BWA. + homepage: http://www.htslib.org/ + documentation: hhttp://www.htslib.org/doc/samtools.html + doi: 10.1093/bioinformatics/btp352 + licence: ["MIT"] +input: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - bam: + type: file + description: BAM/CRAM/SAM file + pattern: "*.{bam,cram,sam}" +output: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - bai: + type: file + description: BAM/CRAM/SAM index file + pattern: "*.{bai,crai,sai}" + - crai: + type: file + description: BAM/CRAM/SAM index file + pattern: "*.{bai,crai,sai}" + - csi: + type: file + description: CSI index file + pattern: "*.{csi}" + - versions: + type: file + description: File containing software versions + pattern: "versions.yml" +authors: + - "@drpatelh" + - "@ewels" + - "@maxulysse" diff --git a/modules/nf-core/samtools/stats/main.nf b/modules/nf-core/samtools/stats/main.nf new file mode 100644 index 0000000..9b0c386 --- /dev/null +++ b/modules/nf-core/samtools/stats/main.nf @@ -0,0 +1,49 @@ +process SAMTOOLS_STATS { + tag "$meta.id" + label 'process_single' + + conda (params.enable_conda ? "bioconda::samtools=1.15.1" : null) + container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? + 'https://depot.galaxyproject.org/singularity/samtools:1.15.1--h1170115_0' : + 'quay.io/biocontainers/samtools:1.15.1--h1170115_0' }" + + input: + tuple val(meta), path(input), path(input_index) + path fasta + + output: + tuple val(meta), path("*.stats"), emit: stats + path "versions.yml" , emit: versions + + when: + task.ext.when == null || task.ext.when + + script: + def args = task.ext.args ?: '' + def prefix = task.ext.prefix ?: "${meta.id}" + def reference = fasta ? "--reference ${fasta}" : "" + """ + samtools \\ + stats \\ + --threads ${task.cpus} \\ + ${reference} \\ + ${input} \\ + > ${prefix}.stats + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + samtools: \$(echo \$(samtools --version 2>&1) | sed 's/^.*samtools //; s/Using.*\$//') + END_VERSIONS + """ + + stub: + def prefix = task.ext.prefix ?: "${meta.id}" + """ + touch ${prefix}.stats + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + samtools: \$(echo \$(samtools --version 2>&1) | sed 's/^.*samtools //; s/Using.*\$//') + END_VERSIONS + """ +} diff --git a/modules/nf-core/samtools/stats/meta.yml b/modules/nf-core/samtools/stats/meta.yml new file mode 100644 index 0000000..cac50b1 --- /dev/null +++ b/modules/nf-core/samtools/stats/meta.yml @@ -0,0 +1,53 @@ +name: samtools_stats +description: Produces comprehensive statistics from SAM/BAM/CRAM file +keywords: + - statistics + - counts + - bam + - sam + - cram +tools: + - samtools: + description: | + SAMtools is a set of utilities for interacting with and post-processing + short DNA sequence read alignments in the SAM, BAM and CRAM formats, written by Heng Li. + These files are generated as output by short read aligners like BWA. + homepage: http://www.htslib.org/ + documentation: hhttp://www.htslib.org/doc/samtools.html + doi: 10.1093/bioinformatics/btp352 + licence: ["MIT"] +input: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - input: + type: file + description: BAM/CRAM file from alignment + pattern: "*.{bam,cram}" + - input_index: + type: file + description: BAI/CRAI file from alignment + pattern: "*.{bai,crai}" + - fasta: + type: optional file + description: Reference file the CRAM was created with + pattern: "*.{fasta,fa}" +output: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - stats: + type: file + description: File containing samtools stats output + pattern: "*.{stats}" + - versions: + type: file + description: File containing software versions + pattern: "versions.yml" +authors: + - "@drpatelh" + - "@FriederikeHanssen" diff --git a/subworkflows/local/shortread_hostremoval.nf b/subworkflows/local/shortread_hostremoval.nf index d181a34..a1ed758 100644 --- a/subworkflows/local/shortread_hostremoval.nf +++ b/subworkflows/local/shortread_hostremoval.nf @@ -4,6 +4,8 @@ include { BOWTIE2_BUILD } from '../../modules/nf-core/bowtie2/build/main' include { BOWTIE2_ALIGN } from '../../modules/nf-core/bowtie2/align/main' +include { SAMTOOLS_INDEX } from '../../modules/nf-core/samtools/index/main' +include { SAMTOOLS_STATS } from '../../modules/nf-core/samtools/stats/main' workflow SHORTREAD_HOSTREMOVAL { take: @@ -26,7 +28,17 @@ workflow SHORTREAD_HOSTREMOVAL { ch_versions = ch_versions.mix( BOWTIE2_ALIGN.out.versions.first() ) ch_multiqc_files = ch_multiqc_files.mix( BOWTIE2_ALIGN.out.log ) + SAMTOOLS_INDEX ( BOWTIE2_ALIGN.out.bam ) + + bam_bai = BOWTIE2_ALIGN.out.bam + .join(SAMTOOLS_INDEX.out.bai, remainder: true) + + SAMTOOLS_STATS ( bam_bai, reference ) + ch_versions = ch_versions.mix(SAMTOOLS_STATS.out.versions.first()) + ch_multiqc_files = ch_multiqc_files.mix( SAMTOOLS_STATS.out.stats ) + emit: + stats = SAMTOOLS_STATS.out.stats reads = BOWTIE2_ALIGN.out.fastq // channel: [ val(meta), [ reads ] ] versions = ch_versions // channel: [ versions.yml ] mqc = ch_multiqc_files From c4a7d094c8b5327eb6e007540c473fbbc5b94e75 Mon Sep 17 00:00:00 2001 From: Sofia Stamouli Date: Fri, 28 Oct 2022 14:33:44 +0200 Subject: [PATCH 432/789] Fix EditorConfig check --- conf/modules.config | 2 -- 1 file changed, 2 deletions(-) diff --git a/conf/modules.config b/conf/modules.config index 476ca11..065f017 100644 --- a/conf/modules.config +++ b/conf/modules.config @@ -243,8 +243,6 @@ process { ] } - - withName: BBMAP_BBDUK { ext.args = [ "entropy=${params.shortread_complexityfilter_entropy}", From f1778acf35a6b5e9e00601441e982acf401bdaec Mon Sep 17 00:00:00 2001 From: Sofia Stamouli <91951607+sofstam@users.noreply.github.com> Date: Mon, 31 Oct 2022 09:31:13 +0100 Subject: [PATCH 433/789] Apply review suggestion --- subworkflows/local/longread_hostremoval.nf | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/subworkflows/local/longread_hostremoval.nf b/subworkflows/local/longread_hostremoval.nf index fb79e12..5f3f746 100644 --- a/subworkflows/local/longread_hostremoval.nf +++ b/subworkflows/local/longread_hostremoval.nf @@ -44,9 +44,8 @@ workflow LONGREAD_HOSTREMOVAL { SAMTOOLS_INDEX ( SAMTOOLS_VIEW.out.bam ) ch_versions = ch_versions.mix( SAMTOOLS_INDEX.out.versions.first() ) - SAMTOOLS_VIEW.out.bam - .join(SAMTOOLS_INDEX.out.bai, by: [0], remainder: true) - .set { bam_bai } + bam_bai = SAMTOOLS_VIEW.out.bam + .join(SAMTOOLS_INDEX.out.bai, remainder: true) SAMTOOLS_STATS ( bam_bai, reference ) ch_versions = ch_versions.mix(SAMTOOLS_STATS.out.versions.first()) From ce611d6efdbde1b6d5fbbd4a9df663d5510458d5 Mon Sep 17 00:00:00 2001 From: Sofia Stamouli Date: Mon, 31 Oct 2022 10:04:51 +0100 Subject: [PATCH 434/789] Add bowtie2 mapped reads --- subworkflows/local/shortread_hostremoval.nf | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/subworkflows/local/shortread_hostremoval.nf b/subworkflows/local/shortread_hostremoval.nf index a1ed758..426442b 100644 --- a/subworkflows/local/shortread_hostremoval.nf +++ b/subworkflows/local/shortread_hostremoval.nf @@ -4,8 +4,9 @@ include { BOWTIE2_BUILD } from '../../modules/nf-core/bowtie2/build/main' include { BOWTIE2_ALIGN } from '../../modules/nf-core/bowtie2/align/main' -include { SAMTOOLS_INDEX } from '../../modules/nf-core/samtools/index/main' -include { SAMTOOLS_STATS } from '../../modules/nf-core/samtools/stats/main' +include { SAMTOOLS_INDEX } from '../../modules/nf-core/samtools/index/main' +include { SAMTOOLS_STATS } from '../../modules/nf-core/samtools/stats/main' +include { SAMTOOLS_VIEW } from '../../modules/nf-core/samtools/view/main' workflow SHORTREAD_HOSTREMOVAL { take: @@ -28,9 +29,19 @@ workflow SHORTREAD_HOSTREMOVAL { ch_versions = ch_versions.mix( BOWTIE2_ALIGN.out.versions.first() ) ch_multiqc_files = ch_multiqc_files.mix( BOWTIE2_ALIGN.out.log ) - SAMTOOLS_INDEX ( BOWTIE2_ALIGN.out.bam ) + ch_bowtie2_mapped = BOWTIE2_ALIGN.out.bam + .map { + meta, reads -> + [ meta, reads, [] ] + } - bam_bai = BOWTIE2_ALIGN.out.bam + SAMTOOLS_VIEW ( ch_bowtie2_mapped, [], [] ) + ch_versions = ch_versions.mix( SAMTOOLS_VIEW.out.versions.first() ) + + SAMTOOLS_INDEX ( SAMTOOLS_VIEW.out.bam ) + ch_versions = ch_versions.mix( SAMTOOLS_INDEX.out.versions.first() ) + + bam_bai = SAMTOOLS_VIEW.out.bam .join(SAMTOOLS_INDEX.out.bai, remainder: true) SAMTOOLS_STATS ( bam_bai, reference ) @@ -38,7 +49,7 @@ workflow SHORTREAD_HOSTREMOVAL { ch_multiqc_files = ch_multiqc_files.mix( SAMTOOLS_STATS.out.stats ) emit: - stats = SAMTOOLS_STATS.out.stats + stats = SAMTOOLS_STATS.out.stats reads = BOWTIE2_ALIGN.out.fastq // channel: [ val(meta), [ reads ] ] versions = ch_versions // channel: [ versions.yml ] mqc = ch_multiqc_files From 1d1047374bf4618b0ffb50bc56e2531fb8697aa9 Mon Sep 17 00:00:00 2001 From: Sofia Stamouli <91951607+sofstam@users.noreply.github.com> Date: Mon, 31 Oct 2022 12:09:25 +0100 Subject: [PATCH 435/789] Fix EditorConfig format --- conf/modules.config | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/conf/modules.config b/conf/modules.config index 065f017..a3efaf1 100644 --- a/conf/modules.config +++ b/conf/modules.config @@ -222,7 +222,7 @@ process { pattern: '*.bam' ] } - + withName: SAMTOOLS_BAM2FQ { ext.prefix = { "${meta.id}_${meta.run_accession}" } publishDir = [ From a4b5fa9f5750820069c90a621640a23a27823d22 Mon Sep 17 00:00:00 2001 From: Sofia Stamouli <91951607+sofstam@users.noreply.github.com> Date: Mon, 31 Oct 2022 12:17:49 +0100 Subject: [PATCH 436/789] Fix trailing space --- conf/modules.config | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/conf/modules.config b/conf/modules.config index a3efaf1..c2ed5c1 100644 --- a/conf/modules.config +++ b/conf/modules.config @@ -233,7 +233,7 @@ process { ] } - withName: SAMTOOLS_STATS { + withName: SAMTOOLS_STATS { ext.prefix = { "${meta.id}_${meta.run_accession}" } publishDir = [ path: { "${params.outdir}/samtools/stats" }, From 0e0c55d3b0092a12be6853bcb070fa0de95230a5 Mon Sep 17 00:00:00 2001 From: Sofia Stamouli <91951607+sofstam@users.noreply.github.com> Date: Mon, 31 Oct 2022 12:35:51 +0100 Subject: [PATCH 437/789] Update modules.config --- conf/modules.config | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/conf/modules.config b/conf/modules.config index c2ed5c1..397e0c2 100644 --- a/conf/modules.config +++ b/conf/modules.config @@ -222,7 +222,7 @@ process { pattern: '*.bam' ] } - + withName: SAMTOOLS_BAM2FQ { ext.prefix = { "${meta.id}_${meta.run_accession}" } publishDir = [ From febcbfc05719d28e0c43b385322517f194c335c5 Mon Sep 17 00:00:00 2001 From: Mahwash Jamy Date: Mon, 31 Oct 2022 16:07:53 +0000 Subject: [PATCH 438/789] add missing parameters to nextflow.config --- conf/modules.config | 3 ++- nextflow.config | 5 +++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/conf/modules.config b/conf/modules.config index 8e36c5a..eaa5157 100644 --- a/conf/modules.config +++ b/conf/modules.config @@ -335,7 +335,8 @@ process { withName: KRAKENUNIQ_PRELOADEDKRAKENUNIQ { ext.args = { "${meta.db_params}" } - ext.prefix = params.perform_runmerging ? { "${meta.id}-${meta.db_name}" } : { "${meta.id}-${meta.run_accession}-${meta.db_name}" } + // one run with multiple samples, so fix ID to just db name to ensure clean log name + ext.prefix = { "${meta.db_name}" } publishDir = [ path: { "${params.outdir}/krakenuniq/${meta.db_name}/" }, mode: params.publish_dir_mode, diff --git a/nextflow.config b/nextflow.config index b369f31..6223db0 100644 --- a/nextflow.config +++ b/nextflow.config @@ -118,6 +118,11 @@ params { kraken2_save_readclassification = false // added directly to module in profiling.nf kraken2_save_minimizers = false + //krakenuniq + run_krakenuniq = false + krakenuniq_save_reads = false // added directly to module in profiling.nf + krakenuniq_save_readclassifications = false // added directly to module in profiling.nf + // Bracken run_bracken = false From 851016e497c01151c8a4bfb2ad93efc6f032f508 Mon Sep 17 00:00:00 2001 From: Mahwash Jamy Date: Mon, 31 Oct 2022 16:17:40 +0000 Subject: [PATCH 439/789] Update nextflow_scheme.json --- nextflow_schema.json | 72 +++++++++++++++++++++++++++++++++++++++----- 1 file changed, 64 insertions(+), 8 deletions(-) diff --git a/nextflow_schema.json b/nextflow_schema.json index 21e7e96..c7f4825 100644 --- a/nextflow_schema.json +++ b/nextflow_schema.json @@ -10,7 +10,11 @@ "type": "object", "fa_icon": "fas fa-terminal", "description": "Define where the pipeline should find input data and save output data.", - "required": ["input", "databases", "outdir"], + "required": [ + "input", + "databases", + "outdir" + ], "properties": { "input": { "type": "string", @@ -80,7 +84,10 @@ "shortread_qc_tool": { "type": "string", "default": "fastp", - "enum": ["fastp", "adapterremoval"], + "enum": [ + "fastp", + "adapterremoval" + ], "fa_icon": "fas fa-tools", "description": "Specify which tool to use for short-read QC" }, @@ -133,7 +140,11 @@ "shortread_complexityfilter_tool": { "type": "string", "default": "bbduk", - "enum": ["bbduk", "prinseqplusplus", "fastp"], + "enum": [ + "bbduk", + "prinseqplusplus", + "fastp" + ], "fa_icon": "fas fa-hammer", "description": "Specify which tool to use for complexity filtering" }, @@ -167,7 +178,10 @@ "shortread_complexityfilter_prinseqplusplus_mode": { "type": "string", "default": "entropy", - "enum": ["entropy", "dust"], + "enum": [ + "entropy", + "dust" + ], "fa_icon": "fas fa-check-square", "description": "Specify the complexity filter mode for PRINSEQ++" }, @@ -341,7 +355,15 @@ "diamond_output_format": { "type": "string", "default": "tsv", - "enum": ["blast", "xml", "txt", "daa", "sam", "tsv", "paf"], + "enum": [ + "blast", + "xml", + "txt", + "daa", + "sam", + "tsv", + "paf" + ], "fa_icon": "fas fa-file", "description": "Specify output format from DIAMOND profiling.", "help_text": "DIAMOND can produce output in a number of different formats, you can specify here which to produce.\n\nNote that DIAMOND can only produce one format at a time, and depending on which you pick, some downstream steps may not be executed. For example, selecting `daa` or `sam` will mean you will not get a tabular taxonomic profile as with the other tools.\n\nWill be overriden by `--diamond_save_reads.`\n\n> Modifies tool parameter(s):\n> - diamond blastx: `--outfmt`" @@ -360,7 +382,14 @@ "kaiju_taxon_rank": { "type": "string", "default": "species", - "enum": ["phylum", "class", "order", "family", "genus", "species"], + "enum": [ + "phylum", + "class", + "order", + "family", + "genus", + "species" + ], "fa_icon": "fas fa-tag", "description": "Specify taxonomic rank to be displayed in Kaiju taxon table", "help_text": "Specify the taxonomic level(s) to be displayed in the resulting Kaiju taxon table, as generated by the kaiju2table helper tool.\n\nThis can be either a single level (e.g. `species`), or a comma separated list to display the full taxonomic path (e.g. `superkingdom,phylum,class,order,family,genus,species.`).\n\n> Modifies tool parameter(s):\n> - kaiju2table: `-l`" @@ -388,6 +417,23 @@ "fa_icon": "fas fa-save", "help_text": "Turn on saving minimizer information in the kraken2 report thus increasing to an eight column layout.\n\nAdds `--report-minimizer-data` to the kraken2 command." }, + "run_krakenuniq": { + "type": "string", + "fa_icon": "fas fa-toggle-on", + "description": "Turn on profiling with KrakenUniq. Requires database to be present CSV file passed to --databases" + }, + "krakenuniq_save_reads": { + "type": "string", + "fa_icon": "fas fa-save", + "description": "Turn on saving of KrakenUniq-aligned reads", + "help_text": "Save reads that do and do not have a taxonomic classification in your output results directory in FASTQ format.\n\n> Modifies tool parameter(s):\n> - krakenuniq: `--classified-out` and `--unclassified-out`" + }, + "krakenuniq_save_readclassifications": { + "type": "string", + "fa_icon": "fas fa-save", + "description": "Turn on saving of KrakenUniq per-read taxonomic assignment file", + "help_text": "Save a text file that contains a list of each read that had a taxonomic assignment, with information on specific taxonomic taxonomic assignment that that read recieved.\n\n> Modifies tool parameter(s):\n> - krakenuniq: `--output`" + }, "run_bracken": { "type": "boolean", "description": "Post-process kraken2 reports with Bracken.", @@ -566,7 +612,14 @@ "description": "Method used to save pipeline results to output directory.", "help_text": "The Nextflow `publishDir` option specifies which intermediate files should be saved to the output directory. This option tells the pipeline what method should be used to move these files. See [Nextflow docs](https://www.nextflow.io/docs/latest/process.html#publishdir) for details.", "fa_icon": "fas fa-copy", - "enum": ["symlink", "rellink", "link", "copy", "copyNoFollow", "move"], + "enum": [ + "symlink", + "rellink", + "link", + "copy", + "copyNoFollow", + "move" + ], "hidden": true }, "email_on_fail": { @@ -723,7 +776,10 @@ "preprocessing_qc_tool": { "type": "string", "default": "fastqc", - "enum": ["fastqc", "falco"], + "enum": [ + "fastqc", + "falco" + ], "help_text": "Falco is designed as a drop-in replacement for FastQC but written in C++ for faster computation. We particularly recommend using falco when using long reads (due to reduced memory constraints), however is also applicable for short reads.", "description": "Specify the tool used for quality control of raw sequencing reads" } From aecf308840acc8800c766e2bb56896e56dd5f171 Mon Sep 17 00:00:00 2001 From: Mahwash Jamy Date: Mon, 31 Oct 2022 16:41:35 +0000 Subject: [PATCH 440/789] Update documentation for krakenuniq --- CITATIONS.md | 4 ++++ docs/usage.md | 17 ++++++++++++++++- 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/CITATIONS.md b/CITATIONS.md index 0415bf7..daf9022 100644 --- a/CITATIONS.md +++ b/CITATIONS.md @@ -36,6 +36,10 @@ > Wood, Derrick E., Jennifer Lu, and Ben Langmead. 2019. Improved Metagenomic Analysis with Kraken 2. Genome Biology 20 (1): 257. doi: 10.1186/s13059-019-1891-0. +- [KrakenUniq](https://doi.org/10.1186/s13059-018-1568-0) + + > Breitwieser, Florian P., Daniel N. Baker, and Steven L. Salzberg. 2018. KrakenUniq: confident and fast metagenomics classification using unique k-mer counts. Genome Biology 19 (1): 198. doi: 10.1186/s13059-018-1568-0 + - [Bracken](https://doi.org/10.7717/peerj-cs.104) > Lu, J., Breitwieser, F. P., Thielen, P., & Salzberg, S. L. (2017). Bracken: Estimating species abundance in metagenomics data. PeerJ Computer Science, 3, e104. doi: 10.7717/peerj-cs.104 diff --git a/docs/usage.md b/docs/usage.md index 0401540..11e077f 100644 --- a/docs/usage.md +++ b/docs/usage.md @@ -74,7 +74,7 @@ The pipeline takes the locations and specific profiling parameters of the tool o > ⚠️ nf-core/taxprofiler does not provide any databases by default, nor does it currently generate them for you. This must be performed manually by the user. See below for more information of the expected database files. -An example database sheet can look as follows, where 4 tools are being used, and `malt` and `kraken2` will be used against two databases each. This is because specifying `bracken` implies first running `kraken2` on the same database. +An example database sheet can look as follows, where 5 tools are being used, and `malt` and `kraken2` will be used against two databases each. This is because specifying `bracken` implies first running `kraken2` on the same database. ```console tool,db_name,db_params,db_path @@ -82,6 +82,7 @@ malt,malt85,-id 85,///malt/testdb-malt/ malt,malt95,-id 90,///malt/testdb-malt.tar.gz bracken,db1,,///bracken/testdb-bracken.tar.gz kraken2,db2,--quick,///kraken2/testdb-kraken2.tar.gz +krakenuniq,db3,,///krakenuniq/testdb-krakenuniq.tar.gz centrifuge,db1,,///centrifuge/minigut_cf.tar.gz metaphlan3,db1,,///metaphlan3/metaphlan_database/ motus,db_mOTU,,///motus/motus_database/ @@ -125,6 +126,20 @@ Expected (uncompressed) database files for each tool are as follows: - `database100mers.kraken` - `database150mers.kmer_distrib` - `database150mers.kraken` +- **KrakenUniq** output of `krakenuniq-build` command(s) A directory containing: + - `opts.k2d` + - `hash.k2d` + - `taxo.k2d` + - `database.idx` + - `database.kdb.counts` + - `database50mers.kmer_distrib` + - `database75mers.kmer_distrib` + - `database100mers.kmer_distrib` + - `database150mers.kmer_distrib` + - `database200mers.kmer_distrib` + - `database300mers.kmer_distrib` + - `seqid2taxid.map` + - `taxDB` - **Centrifuge** output of `centrifuge-build`. A directory containing: - `..cf` - `..cf` From 3faea8aac574cd42ad3dd85f64f264521a274e18 Mon Sep 17 00:00:00 2001 From: Sofia Stamouli Date: Tue, 1 Nov 2022 17:34:37 +0100 Subject: [PATCH 441/789] Fix porechop conflict --- modules.json | 4 ++-- .../nf-core/porechop/{ => porechop}/main.nf | 3 +-- .../nf-core/porechop/{ => porechop}/meta.yml | 2 +- subworkflows/local/longread_preprocessing.nf | 18 +++++++++--------- 4 files changed, 13 insertions(+), 14 deletions(-) rename modules/nf-core/porechop/{ => porechop}/main.nf (97%) rename modules/nf-core/porechop/{ => porechop}/meta.yml (98%) diff --git a/modules.json b/modules.json index be3d193..c0e0a3a 100644 --- a/modules.json +++ b/modules.json @@ -141,9 +141,9 @@ "branch": "master", "git_sha": "5e34754d42cd2d5d248ca8673c0a53cdf5624905" }, - "porechop": { + "porechop/porechop": { "branch": "master", - "git_sha": "5e34754d42cd2d5d248ca8673c0a53cdf5624905" + "git_sha": "2a4e85eb81875a572bb58133e37f84ba3cc484d7" }, "prinseqplusplus": { "branch": "master", diff --git a/modules/nf-core/porechop/main.nf b/modules/nf-core/porechop/porechop/main.nf similarity index 97% rename from modules/nf-core/porechop/main.nf rename to modules/nf-core/porechop/porechop/main.nf index 77050bc..f946417 100644 --- a/modules/nf-core/porechop/main.nf +++ b/modules/nf-core/porechop/porechop/main.nf @@ -1,4 +1,4 @@ -process PORECHOP { +process PORECHOP_PORECHOP { tag "$meta.id" label 'process_medium' @@ -28,7 +28,6 @@ process PORECHOP { $args \\ -o ${prefix}.fastq.gz \\ > ${prefix}.log - cat <<-END_VERSIONS > versions.yml "${task.process}": porechop: \$( porechop --version ) diff --git a/modules/nf-core/porechop/meta.yml b/modules/nf-core/porechop/porechop/meta.yml similarity index 98% rename from modules/nf-core/porechop/meta.yml rename to modules/nf-core/porechop/porechop/meta.yml index e526317..98b838f 100644 --- a/modules/nf-core/porechop/meta.yml +++ b/modules/nf-core/porechop/porechop/meta.yml @@ -1,4 +1,4 @@ -name: porechop +name: "porechop_porechop" description: Adapter removal and demultiplexing of Oxford Nanopore reads keywords: - adapter diff --git a/subworkflows/local/longread_preprocessing.nf b/subworkflows/local/longread_preprocessing.nf index 3da49ce..961417d 100644 --- a/subworkflows/local/longread_preprocessing.nf +++ b/subworkflows/local/longread_preprocessing.nf @@ -5,7 +5,7 @@ include { FASTQC as FASTQC_PROCESSED } from '../../modules/nf-core/fastqc/main' include { FALCO as FALCO_PROCESSED } from '../../modules/nf-core/falco/main' -include { PORECHOP } from '../../modules/nf-core/porechop/main' +include { PORECHOP_PORECHOP } from '../../modules/nf-core/porechop/porechop/main' include { FILTLONG } from '../../modules/nf-core/filtlong/main' workflow LONGREAD_PREPROCESSING { @@ -17,9 +17,9 @@ workflow LONGREAD_PREPROCESSING { ch_multiqc_files = Channel.empty() if ( !params.longread_qc_skipadaptertrim && params.longread_qc_skipqualityfilter) { - PORECHOP ( reads ) + PORECHOP_PORECHOP ( reads ) - ch_processed_reads = PORECHOP.out.reads + ch_processed_reads = PORECHOP_PORECHOP.out.reads .map { meta, reads -> def meta_new = meta.clone() @@ -27,8 +27,8 @@ workflow LONGREAD_PREPROCESSING { [ meta_new, reads ] } - ch_versions = ch_versions.mix(PORECHOP.out.versions.first()) - ch_multiqc_files = ch_multiqc_files.mix( PORECHOP.out.log ) + ch_versions = ch_versions.mix(PORECHOP_PORECHOP.out.versions.first()) + ch_multiqc_files = ch_multiqc_files.mix( PORECHOP_PORECHOP.out.log ) } else if ( params.longread_qc_skipadaptertrim && !params.longread_qc_skipqualityfilter) { @@ -37,8 +37,8 @@ workflow LONGREAD_PREPROCESSING { ch_multiqc_files = ch_multiqc_files.mix( FILTLONG.out.log ) } else { - PORECHOP ( reads ) - ch_clipped_reads = PORECHOP.out.reads + PORECHOP_PORECHOP ( reads ) + ch_clipped_reads = PORECHOP_PORECHOP.out.reads .map { meta, reads -> def meta_new = meta.clone() @@ -48,9 +48,9 @@ workflow LONGREAD_PREPROCESSING { ch_processed_reads = FILTLONG ( ch_clipped_reads.map{ meta, reads -> [meta, [], reads ]} ).reads - ch_versions = ch_versions.mix(PORECHOP.out.versions.first()) + ch_versions = ch_versions.mix(PORECHOP_PORECHOP.out.versions.first()) ch_versions = ch_versions.mix(FILTLONG.out.versions.first()) - ch_multiqc_files = ch_multiqc_files.mix( PORECHOP.out.log ) + ch_multiqc_files = ch_multiqc_files.mix( PORECHOP_PORECHOP.out.log ) ch_multiqc_files = ch_multiqc_files.mix( FILTLONG.out.log ) } From e4307ad8abfa123d749cd70ce37cff486e804590 Mon Sep 17 00:00:00 2001 From: Sofia Stamouli Date: Tue, 1 Nov 2022 20:50:42 +0100 Subject: [PATCH 442/789] Change modules.config to include porechop_porechop --- conf/modules.config | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/conf/modules.config b/conf/modules.config index 397e0c2..dad18a2 100644 --- a/conf/modules.config +++ b/conf/modules.config @@ -134,7 +134,7 @@ process { ] } - withName: PORECHOP { + withName: PORECHOP_PORECHOP { ext.prefix = { "${meta.id}_${meta.run_accession}" } publishDir = [ path: { "${params.outdir}/porechop" }, From d487a1ff2fac2e0a4bf9b3aecc41792000256b6f Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Wed, 2 Nov 2022 12:39:34 +0100 Subject: [PATCH 443/789] Addd FASTP adadapter list --- conf/modules.config | 6 +++--- modules.json | 2 +- modules/nf-core/fastp/main.nf | 5 +++++ modules/nf-core/fastp/meta.yml | 4 ++++ nextflow_schema.json | 4 ++-- subworkflows/local/shortread_fastp.nf | 5 +++-- subworkflows/local/shortread_preprocessing.nf | 2 +- workflows/taxprofiler.nf | 11 +++++++---- 8 files changed, 26 insertions(+), 13 deletions(-) diff --git a/conf/modules.config b/conf/modules.config index 9a351cc..f47e587 100644 --- a/conf/modules.config +++ b/conf/modules.config @@ -62,7 +62,7 @@ process { ext.args = [ // trimming options params.shortread_qc_skipadaptertrim ? "--disable_adapter_trimming" : "", - params.shortread_qc_adapter1 ? "--adapter_sequence ${params.shortread_qc_adapter1}" : "", + params.shortread_qc_adapterlist ? "" : params.shortread_qc_adapter1 ? "--adapter_sequence ${params.shortread_qc_adapter1}" : "", // filtering options "--length_required ${params.shortread_qc_minlength}", (params.perform_shortread_complexityfilter && params.shortread_complexityfilter_tool == 'fastp') ? "--low_complexity_filter --complexity_threshold ${params.shortread_complexityfilter_fastp_threshold}" : '' @@ -82,8 +82,8 @@ process { params.shortread_qc_excludeunmerged ? '' : "--include_unmerged", // trimming options params.shortread_qc_skipadaptertrim ? "--disable_adapter_trimming" : "", - params.shortread_qc_adapter1 ? "--adapter_sequence ${params.shortread_qc_adapter1}" : "", - params.shortread_qc_adapter2 ? "--adapter_sequence_r2 ${params.shortread_qc_adapter2}" : "--detect_adapter_for_pe", + params.shortread_qc_adapterlist ? "" : params.shortread_qc_adapter1 ? "--adapter_sequence ${params.shortread_qc_adapter1}" : "", + params.shortread_qc_adapterlist ? "" : params.shortread_qc_adapter2 ? "--adapter_sequence_r2 ${params.shortread_qc_adapter2}" : "--detect_adapter_for_pe", // filtering options "--length_required ${params.shortread_qc_minlength}", params.perform_shortread_complexityfilter && params.shortread_complexityfilter_tool == 'fastp' ? "--low_complexity_filter --complexity_threshold ${params.shortread_complexityfilter_fastp_threshold}" : '' diff --git a/modules.json b/modules.json index ab32eec..3527a44 100644 --- a/modules.json +++ b/modules.json @@ -55,7 +55,7 @@ }, "fastp": { "branch": "master", - "git_sha": "5e34754d42cd2d5d248ca8673c0a53cdf5624905" + "git_sha": "1e49f31e93c56a3832833eef90a02d3cde5a3f7e" }, "fastqc": { "branch": "master", diff --git a/modules/nf-core/fastp/main.nf b/modules/nf-core/fastp/main.nf index 11ea4db..207258a 100644 --- a/modules/nf-core/fastp/main.nf +++ b/modules/nf-core/fastp/main.nf @@ -9,6 +9,7 @@ process FASTP { input: tuple val(meta), path(reads) + path adapter_fasta val save_trimmed_fail val save_merged @@ -27,6 +28,7 @@ process FASTP { script: def args = task.ext.args ?: '' def prefix = task.ext.prefix ?: "${meta.id}" + def adapter_list = adapter_fasta ? "--adapter_fasta ${adapter_fasta}" : "" def fail_fastq = save_trimmed_fail && meta.single_end ? "--failed_out ${prefix}.fail.fastq.gz" : save_trimmed_fail && !meta.single_end ? "--unpaired1 ${prefix}_1.fail.fastq.gz --unpaired2 ${prefix}_2.fail.fastq.gz" : '' // Added soft-links to original fastqs for consistent naming in MultiQC // Use single ended for interleaved. Add --interleaved_in in config. @@ -40,6 +42,7 @@ process FASTP { --thread $task.cpus \\ --json ${prefix}.fastp.json \\ --html ${prefix}.fastp.html \\ + $adapter_list \\ $fail_fastq \\ $args \\ 2> ${prefix}.fastp.log \\ @@ -61,6 +64,7 @@ process FASTP { --thread $task.cpus \\ --json ${prefix}.fastp.json \\ --html ${prefix}.fastp.html \\ + $adapter_list \\ $fail_fastq \\ $args \\ 2> ${prefix}.fastp.log @@ -82,6 +86,7 @@ process FASTP { --out2 ${prefix}_2.fastp.fastq.gz \\ --json ${prefix}.fastp.json \\ --html ${prefix}.fastp.html \\ + $adapter_list \\ $fail_fastq \\ $merge_fastq \\ --thread $task.cpus \\ diff --git a/modules/nf-core/fastp/meta.yml b/modules/nf-core/fastp/meta.yml index 2368fde..6f6fad7 100644 --- a/modules/nf-core/fastp/meta.yml +++ b/modules/nf-core/fastp/meta.yml @@ -23,6 +23,10 @@ input: List of input FastQ files of size 1 and 2 for single-end and paired-end data, respectively. If you wish to run interleaved paired-end data, supply as single-end data but with `--interleaved_in` in your `modules.conf`'s `ext.args` for the module. + - adapter_fasta: + type: file + description: File in FASTA format containing possible adapters to remove. + pattern: "*.{fasta,fna,fas,fa}" - save_trimmed_fail: type: boolean description: Specify true to save files that failed to pass trimming thresholds ending in `*.fail.fastq.gz` diff --git a/nextflow_schema.json b/nextflow_schema.json index 04ba938..b96fdac 100644 --- a/nextflow_schema.json +++ b/nextflow_schema.json @@ -107,8 +107,8 @@ "shortread_qc_adapterlist": { "type": "string", "default": "None", - "fa_icon": "fas fa-list-ul", - "help_text": "This affects AdapterRemoval. It will replace default adapters or whatever is supplied in `--shortread_qc_adapter{1,2}`.\n\nThis allows you to mix libraries built with different adapters into one run.\n\n> Modifies tool parameter(s):\n> - AdapterRemoval: `--adapter-list`." + "description": "Specify a list of all possible adapters to trim. Overrides --shortread_qc_adapter1/2. Formats: .txt (AdapterRemoval) or .fasta. (fastp).", + "help_text": "Allows to supply a file with a list of adapter (combinations) to remove from all files. \n\nOverrides the --shortread_qc_adapter1/--shortread_qc_adapter2 parameters . \n\nFor AdapterRemoval this consists of a two column table with a `.txt` extension: first column represents forward strand, second column for reverse strand. You must supply all possibly combinations, one per line, and this list is applied to all files. See AdapterRemoval documentation for more information.\n\nFor fastp this consists of a standard FASTA format with a `.fasta`/`.fa`/`.fna`/`.fas` extension. The adapter sequence in this file should be at least 6bp long, otherwise it will be skipped. fastp trims the adapters present in the FASTA file one by one.\n\n> Modifies AdapterRemoval parameter: --adapter-list\n> Modifies fastp parameter: --adapter_fasta" }, "shortread_qc_mergepairs": { "type": "boolean", diff --git a/subworkflows/local/shortread_fastp.nf b/subworkflows/local/shortread_fastp.nf index d466041..cac5a27 100644 --- a/subworkflows/local/shortread_fastp.nf +++ b/subworkflows/local/shortread_fastp.nf @@ -8,6 +8,7 @@ include { FASTP as FASTP_PAIRED } from '../../modules/nf-core/fastp/main' workflow SHORTREAD_FASTP { take: reads // [[meta], [reads]] + adapterlist main: ch_versions = Channel.empty() @@ -19,9 +20,9 @@ workflow SHORTREAD_FASTP { paired: it[0]['single_end'] == false } - FASTP_SINGLE ( ch_input_for_fastp.single, false, false ) + FASTP_SINGLE ( ch_input_for_fastp.single, adapterlist, false, false ) // Last parameter here turns on merging of PE data - FASTP_PAIRED ( ch_input_for_fastp.paired, false, params.shortread_qc_mergepairs ) + FASTP_PAIRED ( ch_input_for_fastp.paired, adapterlist, false, params.shortread_qc_mergepairs ) if ( params.shortread_qc_mergepairs ) { ch_fastp_reads_prepped_pe = FASTP_PAIRED.out.reads_merged diff --git a/subworkflows/local/shortread_preprocessing.nf b/subworkflows/local/shortread_preprocessing.nf index d381d34..c823e3d 100644 --- a/subworkflows/local/shortread_preprocessing.nf +++ b/subworkflows/local/shortread_preprocessing.nf @@ -18,7 +18,7 @@ workflow SHORTREAD_PREPROCESSING { ch_multiqc_files = Channel.empty() if ( params.shortread_qc_tool == "fastp" ) { - ch_processed_reads = SHORTREAD_FASTP ( reads ).reads + ch_processed_reads = SHORTREAD_FASTP ( reads, adapterlist ).reads ch_versions = ch_versions.mix( SHORTREAD_FASTP.out.versions ) ch_multiqc_files = ch_multiqc_files.mix( SHORTREAD_FASTP.out.mqc ) } else if ( params.shortread_qc_tool == "adapterremoval" ) { diff --git a/workflows/taxprofiler.nf b/workflows/taxprofiler.nf index e6ccc16..bf05d54 100644 --- a/workflows/taxprofiler.nf +++ b/workflows/taxprofiler.nf @@ -103,7 +103,12 @@ workflow TAXPROFILER { ch_versions = Channel.empty() ch_multiqc_logo= Channel.fromPath("$projectDir/docs/images/nf-core-taxprofiler_logo_custom_light.png") - ch_adapterlist_for_shortreadqc = params.shortread_qc_adapterlist ? file(params.shortread_qc_adapterlist) : [] + adapterlist = params.shortread_qc_adapterlist ? file(params.shortread_qc_adapterlist) : [] + + if ( params.shortread_qc_adapterlist ) { + if ( params.shortread_qc_tool == 'adapterremoval' && !(adapterlist.extension == 'txt') ) error "[nf-core/taxprofiler] ERROR: AdapterRemoval2 adapter list requires a `.txt` format and extension. Check input: --shortread_qc_adapterlist ${params.shortread_qc_adapterlist}" + if ( params.shortread_qc_tool == 'fastp' && !adapterlist.extension.matches(".*(fa|fasta|fna|fas)") ) error "[nf-core/taxprofiler] ERROR: fastp adapter list requires a `.fasta` format and extension (or fa, fas, fna). Check input: --shortread_qc_adapterlist ${params.shortread_qc_adapterlist}" + } /* SUBWORKFLOW: Read in samplesheet, validate and stage input files @@ -134,10 +139,8 @@ workflow TAXPROFILER { SUBWORKFLOW: PERFORM PREPROCESSING */ - ch_adapterlist_for_shortreadqc - if ( params.perform_shortread_qc ) { - ch_shortreads_preprocessed = SHORTREAD_PREPROCESSING ( INPUT_CHECK.out.fastq, ch_adapterlist_for_shortreadqc ).reads + ch_shortreads_preprocessed = SHORTREAD_PREPROCESSING ( INPUT_CHECK.out.fastq, adapterlist ).reads ch_versions = ch_versions.mix( SHORTREAD_PREPROCESSING.out.versions ) } else { ch_shortreads_preprocessed = INPUT_CHECK.out.fastq From 24dc2a2cecc77b5a5beb0a16042814374f985df5 Mon Sep 17 00:00:00 2001 From: "James A. Fellows Yates" Date: Thu, 3 Nov 2022 10:03:07 +0100 Subject: [PATCH 444/789] Apply suggestions from code review Co-authored-by: Moritz E. Beber --- nextflow_schema.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/nextflow_schema.json b/nextflow_schema.json index b96fdac..7c7e8dc 100644 --- a/nextflow_schema.json +++ b/nextflow_schema.json @@ -108,7 +108,7 @@ "type": "string", "default": "None", "description": "Specify a list of all possible adapters to trim. Overrides --shortread_qc_adapter1/2. Formats: .txt (AdapterRemoval) or .fasta. (fastp).", - "help_text": "Allows to supply a file with a list of adapter (combinations) to remove from all files. \n\nOverrides the --shortread_qc_adapter1/--shortread_qc_adapter2 parameters . \n\nFor AdapterRemoval this consists of a two column table with a `.txt` extension: first column represents forward strand, second column for reverse strand. You must supply all possibly combinations, one per line, and this list is applied to all files. See AdapterRemoval documentation for more information.\n\nFor fastp this consists of a standard FASTA format with a `.fasta`/`.fa`/`.fna`/`.fas` extension. The adapter sequence in this file should be at least 6bp long, otherwise it will be skipped. fastp trims the adapters present in the FASTA file one by one.\n\n> Modifies AdapterRemoval parameter: --adapter-list\n> Modifies fastp parameter: --adapter_fasta" + "help_text": "Allows to supply a file with a list of adapter (combinations) to remove from all files. \n\nOverrides the --shortread_qc_adapter1/--shortread_qc_adapter2 parameters . \n\nFor AdapterRemoval this consists of a two column table with a `.txt` extension: first column represents forward strand, second column for reverse strand. You must supply all possible combinations, one per line, and this list is applied to all files. See AdapterRemoval documentation for more information.\n\nFor fastp this consists of a standard FASTA format with a `.fasta`/`.fa`/`.fna`/`.fas` extension. The adapter sequence in this file should be at least 6bp long, otherwise it will be skipped. fastp trims the adapters present in the FASTA file one by one.\n\n> Modifies AdapterRemoval parameter: --adapter-list\n> Modifies fastp parameter: --adapter_fasta" }, "shortread_qc_mergepairs": { "type": "boolean", From 62f45c8be7b1f592843cb2a4ca0c214e51beaf81 Mon Sep 17 00:00:00 2001 From: "James A. Fellows Yates" Date: Thu, 3 Nov 2022 10:03:27 +0100 Subject: [PATCH 445/789] Update nextflow.config --- nextflow.config | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/nextflow.config b/nextflow.config index 9bf7f83..d11abd9 100644 --- a/nextflow.config +++ b/nextflow.config @@ -69,7 +69,7 @@ params { shortread_qc_excludeunmerged = false shortread_qc_adapter1 = null shortread_qc_adapter2 = null - shortread_qc_adapterlist = null // TODO Add for FASTP + shortread_qc_adapterlist = null shortread_qc_minlength = 15 perform_longread_qc = false From 6459d8920fd53a8c03680f7b4b32bf9943f00123 Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Thu, 3 Nov 2022 14:05:43 +0100 Subject: [PATCH 446/789] Linting! --- docs/usage.md | 12 ++---------- nextflow_schema.json | 6 +++--- 2 files changed, 5 insertions(+), 13 deletions(-) diff --git a/docs/usage.md b/docs/usage.md index 11e077f..a87102c 100644 --- a/docs/usage.md +++ b/docs/usage.md @@ -131,14 +131,6 @@ Expected (uncompressed) database files for each tool are as follows: - `hash.k2d` - `taxo.k2d` - `database.idx` - - `database.kdb.counts` - - `database50mers.kmer_distrib` - - `database75mers.kmer_distrib` - - `database100mers.kmer_distrib` - - `database150mers.kmer_distrib` - - `database200mers.kmer_distrib` - - `database300mers.kmer_distrib` - - `seqid2taxid.map` - `taxDB` - **Centrifuge** output of `centrifuge-build`. A directory containing: - `..cf` @@ -192,7 +184,7 @@ work # Directory containing the nextflow working files ### Sequencing quality control -nf-core taxprofiler offers [`falco`](https://github.com/smithlabcode/falco] as an alternative option to [`FastQC`](https://www.bioinformatics.babraham.ac.uk/projects/fastqc/). +nf-core taxprofiler offers [`falco`][https://github.com/smithlabcode/falco] as an alternative option to [`FastQC`](https://www.bioinformatics.babraham.ac.uk/projects/fastqc/). ### Preprocessing Steps @@ -457,7 +449,7 @@ NXF_OPTS='-Xms1g -Xmx4g' ## Troubleshooting and FAQs -### I get a warning during centrifuge_kreport process with exit status 255. +### I get a warning during centrifuge_kreport process with exit status 255 When a sample has insufficient hits for abundance estimation, the resulting `report.txt` file will be empty. diff --git a/nextflow_schema.json b/nextflow_schema.json index c7f4825..7f52764 100644 --- a/nextflow_schema.json +++ b/nextflow_schema.json @@ -418,18 +418,18 @@ "help_text": "Turn on saving minimizer information in the kraken2 report thus increasing to an eight column layout.\n\nAdds `--report-minimizer-data` to the kraken2 command." }, "run_krakenuniq": { - "type": "string", + "type": "boolean", "fa_icon": "fas fa-toggle-on", "description": "Turn on profiling with KrakenUniq. Requires database to be present CSV file passed to --databases" }, "krakenuniq_save_reads": { - "type": "string", + "type": "boolean", "fa_icon": "fas fa-save", "description": "Turn on saving of KrakenUniq-aligned reads", "help_text": "Save reads that do and do not have a taxonomic classification in your output results directory in FASTQ format.\n\n> Modifies tool parameter(s):\n> - krakenuniq: `--classified-out` and `--unclassified-out`" }, "krakenuniq_save_readclassifications": { - "type": "string", + "type": "boolean", "fa_icon": "fas fa-save", "description": "Turn on saving of KrakenUniq per-read taxonomic assignment file", "help_text": "Save a text file that contains a list of each read that had a taxonomic assignment, with information on specific taxonomic taxonomic assignment that that read recieved.\n\n> Modifies tool parameter(s):\n> - krakenuniq: `--output`" From b5e6639f9d01d2a56ac0e72715eb617b36c57812 Mon Sep 17 00:00:00 2001 From: Sofia Stamouli <91951607+sofstam@users.noreply.github.com> Date: Thu, 3 Nov 2022 14:12:05 +0100 Subject: [PATCH 447/789] Apply review suggestions --- conf/modules.config | 1 - 1 file changed, 1 deletion(-) diff --git a/conf/modules.config b/conf/modules.config index 397e0c2..96bb658 100644 --- a/conf/modules.config +++ b/conf/modules.config @@ -238,7 +238,6 @@ process { publishDir = [ path: { "${params.outdir}/samtools/stats" }, mode: params.publish_dir_mode, - enabled: params.save_hostremoval_unmapped, pattern: '*stats' ] } From 0c445759e4a23f7f2d6e0fc172e0a9c075b742fe Mon Sep 17 00:00:00 2001 From: nf-core-bot Date: Thu, 3 Nov 2022 13:42:39 +0000 Subject: [PATCH 448/789] [automated] Fix linting with Prettier --- nextflow_schema.json | 55 +++++++------------------------------------- 1 file changed, 8 insertions(+), 47 deletions(-) diff --git a/nextflow_schema.json b/nextflow_schema.json index 7f52764..bb22fac 100644 --- a/nextflow_schema.json +++ b/nextflow_schema.json @@ -10,11 +10,7 @@ "type": "object", "fa_icon": "fas fa-terminal", "description": "Define where the pipeline should find input data and save output data.", - "required": [ - "input", - "databases", - "outdir" - ], + "required": ["input", "databases", "outdir"], "properties": { "input": { "type": "string", @@ -84,10 +80,7 @@ "shortread_qc_tool": { "type": "string", "default": "fastp", - "enum": [ - "fastp", - "adapterremoval" - ], + "enum": ["fastp", "adapterremoval"], "fa_icon": "fas fa-tools", "description": "Specify which tool to use for short-read QC" }, @@ -140,11 +133,7 @@ "shortread_complexityfilter_tool": { "type": "string", "default": "bbduk", - "enum": [ - "bbduk", - "prinseqplusplus", - "fastp" - ], + "enum": ["bbduk", "prinseqplusplus", "fastp"], "fa_icon": "fas fa-hammer", "description": "Specify which tool to use for complexity filtering" }, @@ -178,10 +167,7 @@ "shortread_complexityfilter_prinseqplusplus_mode": { "type": "string", "default": "entropy", - "enum": [ - "entropy", - "dust" - ], + "enum": ["entropy", "dust"], "fa_icon": "fas fa-check-square", "description": "Specify the complexity filter mode for PRINSEQ++" }, @@ -355,15 +341,7 @@ "diamond_output_format": { "type": "string", "default": "tsv", - "enum": [ - "blast", - "xml", - "txt", - "daa", - "sam", - "tsv", - "paf" - ], + "enum": ["blast", "xml", "txt", "daa", "sam", "tsv", "paf"], "fa_icon": "fas fa-file", "description": "Specify output format from DIAMOND profiling.", "help_text": "DIAMOND can produce output in a number of different formats, you can specify here which to produce.\n\nNote that DIAMOND can only produce one format at a time, and depending on which you pick, some downstream steps may not be executed. For example, selecting `daa` or `sam` will mean you will not get a tabular taxonomic profile as with the other tools.\n\nWill be overriden by `--diamond_save_reads.`\n\n> Modifies tool parameter(s):\n> - diamond blastx: `--outfmt`" @@ -382,14 +360,7 @@ "kaiju_taxon_rank": { "type": "string", "default": "species", - "enum": [ - "phylum", - "class", - "order", - "family", - "genus", - "species" - ], + "enum": ["phylum", "class", "order", "family", "genus", "species"], "fa_icon": "fas fa-tag", "description": "Specify taxonomic rank to be displayed in Kaiju taxon table", "help_text": "Specify the taxonomic level(s) to be displayed in the resulting Kaiju taxon table, as generated by the kaiju2table helper tool.\n\nThis can be either a single level (e.g. `species`), or a comma separated list to display the full taxonomic path (e.g. `superkingdom,phylum,class,order,family,genus,species.`).\n\n> Modifies tool parameter(s):\n> - kaiju2table: `-l`" @@ -612,14 +583,7 @@ "description": "Method used to save pipeline results to output directory.", "help_text": "The Nextflow `publishDir` option specifies which intermediate files should be saved to the output directory. This option tells the pipeline what method should be used to move these files. See [Nextflow docs](https://www.nextflow.io/docs/latest/process.html#publishdir) for details.", "fa_icon": "fas fa-copy", - "enum": [ - "symlink", - "rellink", - "link", - "copy", - "copyNoFollow", - "move" - ], + "enum": ["symlink", "rellink", "link", "copy", "copyNoFollow", "move"], "hidden": true }, "email_on_fail": { @@ -776,10 +740,7 @@ "preprocessing_qc_tool": { "type": "string", "default": "fastqc", - "enum": [ - "fastqc", - "falco" - ], + "enum": ["fastqc", "falco"], "help_text": "Falco is designed as a drop-in replacement for FastQC but written in C++ for faster computation. We particularly recommend using falco when using long reads (due to reduced memory constraints), however is also applicable for short reads.", "description": "Specify the tool used for quality control of raw sequencing reads" } From 21a76c244943fb96dbe863c2f08b58335d0b00de Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Thu, 3 Nov 2022 14:56:26 +0100 Subject: [PATCH 449/789] Fix cardinality issue --- nextflow.config | 1 + nextflow_schema.json | 62 ++++++++------------------------- subworkflows/local/profiling.nf | 4 +-- 3 files changed, 18 insertions(+), 49 deletions(-) diff --git a/nextflow.config b/nextflow.config index 6223db0..262aa2d 100644 --- a/nextflow.config +++ b/nextflow.config @@ -120,6 +120,7 @@ params { //krakenuniq run_krakenuniq = false + krakenuniq_ram_run_size = '16G' krakenuniq_save_reads = false // added directly to module in profiling.nf krakenuniq_save_readclassifications = false // added directly to module in profiling.nf diff --git a/nextflow_schema.json b/nextflow_schema.json index 7f52764..c40a0de 100644 --- a/nextflow_schema.json +++ b/nextflow_schema.json @@ -10,11 +10,7 @@ "type": "object", "fa_icon": "fas fa-terminal", "description": "Define where the pipeline should find input data and save output data.", - "required": [ - "input", - "databases", - "outdir" - ], + "required": ["input", "databases", "outdir"], "properties": { "input": { "type": "string", @@ -84,10 +80,7 @@ "shortread_qc_tool": { "type": "string", "default": "fastp", - "enum": [ - "fastp", - "adapterremoval" - ], + "enum": ["fastp", "adapterremoval"], "fa_icon": "fas fa-tools", "description": "Specify which tool to use for short-read QC" }, @@ -140,11 +133,7 @@ "shortread_complexityfilter_tool": { "type": "string", "default": "bbduk", - "enum": [ - "bbduk", - "prinseqplusplus", - "fastp" - ], + "enum": ["bbduk", "prinseqplusplus", "fastp"], "fa_icon": "fas fa-hammer", "description": "Specify which tool to use for complexity filtering" }, @@ -178,10 +167,7 @@ "shortread_complexityfilter_prinseqplusplus_mode": { "type": "string", "default": "entropy", - "enum": [ - "entropy", - "dust" - ], + "enum": ["entropy", "dust"], "fa_icon": "fas fa-check-square", "description": "Specify the complexity filter mode for PRINSEQ++" }, @@ -355,15 +341,7 @@ "diamond_output_format": { "type": "string", "default": "tsv", - "enum": [ - "blast", - "xml", - "txt", - "daa", - "sam", - "tsv", - "paf" - ], + "enum": ["blast", "xml", "txt", "daa", "sam", "tsv", "paf"], "fa_icon": "fas fa-file", "description": "Specify output format from DIAMOND profiling.", "help_text": "DIAMOND can produce output in a number of different formats, you can specify here which to produce.\n\nNote that DIAMOND can only produce one format at a time, and depending on which you pick, some downstream steps may not be executed. For example, selecting `daa` or `sam` will mean you will not get a tabular taxonomic profile as with the other tools.\n\nWill be overriden by `--diamond_save_reads.`\n\n> Modifies tool parameter(s):\n> - diamond blastx: `--outfmt`" @@ -382,14 +360,7 @@ "kaiju_taxon_rank": { "type": "string", "default": "species", - "enum": [ - "phylum", - "class", - "order", - "family", - "genus", - "species" - ], + "enum": ["phylum", "class", "order", "family", "genus", "species"], "fa_icon": "fas fa-tag", "description": "Specify taxonomic rank to be displayed in Kaiju taxon table", "help_text": "Specify the taxonomic level(s) to be displayed in the resulting Kaiju taxon table, as generated by the kaiju2table helper tool.\n\nThis can be either a single level (e.g. `species`), or a comma separated list to display the full taxonomic path (e.g. `superkingdom,phylum,class,order,family,genus,species.`).\n\n> Modifies tool parameter(s):\n> - kaiju2table: `-l`" @@ -428,6 +399,13 @@ "description": "Turn on saving of KrakenUniq-aligned reads", "help_text": "Save reads that do and do not have a taxonomic classification in your output results directory in FASTQ format.\n\n> Modifies tool parameter(s):\n> - krakenuniq: `--classified-out` and `--unclassified-out`" }, + "krakenuniq_ram_run_size": { + "type": "string", + "default": "16G", + "description": "Specify how large to chunk database when loading into memory for KrakenUniq", + "fa_icon": "fas fa-database", + "help_text": "nf-core/taxprofiler utilises a 'low memory' option for KrakenUniq that can reduce the amount of RAM the process requires using the `--preloaded` option.\n\nA further extension to this option is that you can specify how large each chunk of the database should be that gets loaded into memory at any one time. You can specify the amount of RAM to chunk the database to with this parameter, and is particularly useful for people with limited computational resources.\n\nMore information about this parameter can be seen [here](https://github.com/fbreitwieser/krakenuniq/blob/master/README.md#new-release-v07).\n\n> Modifies KrakenUniq parameter: --preload\n\n> \n\n" + }, "krakenuniq_save_readclassifications": { "type": "boolean", "fa_icon": "fas fa-save", @@ -612,14 +590,7 @@ "description": "Method used to save pipeline results to output directory.", "help_text": "The Nextflow `publishDir` option specifies which intermediate files should be saved to the output directory. This option tells the pipeline what method should be used to move these files. See [Nextflow docs](https://www.nextflow.io/docs/latest/process.html#publishdir) for details.", "fa_icon": "fas fa-copy", - "enum": [ - "symlink", - "rellink", - "link", - "copy", - "copyNoFollow", - "move" - ], + "enum": ["symlink", "rellink", "link", "copy", "copyNoFollow", "move"], "hidden": true }, "email_on_fail": { @@ -776,10 +747,7 @@ "preprocessing_qc_tool": { "type": "string", "default": "fastqc", - "enum": [ - "fastqc", - "falco" - ], + "enum": ["fastqc", "falco"], "help_text": "Falco is designed as a drop-in replacement for FastQC but written in C++ for faster computation. We particularly recommend using falco when using long reads (due to reduced memory constraints), however is also applicable for short reads.", "description": "Specify the tool used for quality control of raw sequencing reads" } diff --git a/subworkflows/local/profiling.nf b/subworkflows/local/profiling.nf index 73e0b73..849583e 100644 --- a/subworkflows/local/profiling.nf +++ b/subworkflows/local/profiling.nf @@ -274,8 +274,8 @@ workflow PROFILING { reads: [ it[0] + it[2], it[1] ] db: it[3] } - - KRAKENUNIQ_PRELOADEDKRAKENUNIQ ( ch_input_for_krakenuniq.reads, ch_input_for_krakenuniq.db, params.krakenuniq_save_reads, params.krakenuniq_save_readclassification ) + // Hardcode to _always_ produce the report file (which is our basic otput, and goes into raw_profiles) + KRAKENUNIQ_PRELOADEDKRAKENUNIQ ( ch_input_for_krakenuniq.reads, ch_input_for_krakenuniq.db, params.krakenuniq_ram_chunk_size, params.krakenuniq_save_reads, true, params.krakenuniq_save_readclassification ) ch_multiqc_files = ch_multiqc_files.mix( KRAKENUNIQ_PRELOADEDKRAKENUNIQ.out.report ) ch_versions = ch_versions.mix( KRAKENUNIQ_PRELOADEDKRAKENUNIQ.out.versions.first() ) ch_raw_classifications = ch_raw_classifications.mix( KRAKENUNIQ_PRELOADEDKRAKENUNIQ.out.classified_assignment ) From c5e5696f84ca580a0a8c070f50223375d68d6386 Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Thu, 3 Nov 2022 14:58:03 +0100 Subject: [PATCH 450/789] Fix parameter name --- nextflow.config | 2 +- nextflow_schema.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/nextflow.config b/nextflow.config index 262aa2d..ce48db9 100644 --- a/nextflow.config +++ b/nextflow.config @@ -120,7 +120,7 @@ params { //krakenuniq run_krakenuniq = false - krakenuniq_ram_run_size = '16G' + krakenuniq_ram_chunk_size = '16G' krakenuniq_save_reads = false // added directly to module in profiling.nf krakenuniq_save_readclassifications = false // added directly to module in profiling.nf diff --git a/nextflow_schema.json b/nextflow_schema.json index c40a0de..69bd4f0 100644 --- a/nextflow_schema.json +++ b/nextflow_schema.json @@ -399,7 +399,7 @@ "description": "Turn on saving of KrakenUniq-aligned reads", "help_text": "Save reads that do and do not have a taxonomic classification in your output results directory in FASTQ format.\n\n> Modifies tool parameter(s):\n> - krakenuniq: `--classified-out` and `--unclassified-out`" }, - "krakenuniq_ram_run_size": { + "krakenuniq_ram_chunk_size": { "type": "string", "default": "16G", "description": "Specify how large to chunk database when loading into memory for KrakenUniq", From 93f38b14a83dc98e4438724b7a5d8ed2bcf7e944 Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Thu, 3 Nov 2022 15:01:00 +0100 Subject: [PATCH 451/789] Save report --- subworkflows/local/profiling.nf | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/subworkflows/local/profiling.nf b/subworkflows/local/profiling.nf index 849583e..6930373 100644 --- a/subworkflows/local/profiling.nf +++ b/subworkflows/local/profiling.nf @@ -275,7 +275,8 @@ workflow PROFILING { db: it[3] } // Hardcode to _always_ produce the report file (which is our basic otput, and goes into raw_profiles) - KRAKENUNIQ_PRELOADEDKRAKENUNIQ ( ch_input_for_krakenuniq.reads, ch_input_for_krakenuniq.db, params.krakenuniq_ram_chunk_size, params.krakenuniq_save_reads, true, params.krakenuniq_save_readclassification ) + save_report = true + KRAKENUNIQ_PRELOADEDKRAKENUNIQ ( ch_input_for_krakenuniq.reads, ch_input_for_krakenuniq.db, params.krakenuniq_ram_chunk_size, params.krakenuniq_save_reads, save_report, params.krakenuniq_save_readclassification ) ch_multiqc_files = ch_multiqc_files.mix( KRAKENUNIQ_PRELOADEDKRAKENUNIQ.out.report ) ch_versions = ch_versions.mix( KRAKENUNIQ_PRELOADEDKRAKENUNIQ.out.versions.first() ) ch_raw_classifications = ch_raw_classifications.mix( KRAKENUNIQ_PRELOADEDKRAKENUNIQ.out.classified_assignment ) From 461482d22a2aa36e6f82f1b2ccc4c2eb12166c34 Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Thu, 3 Nov 2022 15:02:22 +0100 Subject: [PATCH 452/789] Try again wit hthe corret param --- subworkflows/local/profiling.nf | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/subworkflows/local/profiling.nf b/subworkflows/local/profiling.nf index 6930373..2cdf1d1 100644 --- a/subworkflows/local/profiling.nf +++ b/subworkflows/local/profiling.nf @@ -274,9 +274,8 @@ workflow PROFILING { reads: [ it[0] + it[2], it[1] ] db: it[3] } - // Hardcode to _always_ produce the report file (which is our basic otput, and goes into raw_profiles) - save_report = true - KRAKENUNIQ_PRELOADEDKRAKENUNIQ ( ch_input_for_krakenuniq.reads, ch_input_for_krakenuniq.db, params.krakenuniq_ram_chunk_size, params.krakenuniq_save_reads, save_report, params.krakenuniq_save_readclassification ) + // Hardcode to _always_ produce the report file (which is our basic otput, and goes into) + KRAKENUNIQ_PRELOADEDKRAKENUNIQ ( ch_input_for_krakenuniq.reads, ch_input_for_krakenuniq.db, params.krakenuniq_ram_chunk_size, params.krakenuniq_save_reads, true, params.krakenuniq_save_readclassifications ) ch_multiqc_files = ch_multiqc_files.mix( KRAKENUNIQ_PRELOADEDKRAKENUNIQ.out.report ) ch_versions = ch_versions.mix( KRAKENUNIQ_PRELOADEDKRAKENUNIQ.out.versions.first() ) ch_raw_classifications = ch_raw_classifications.mix( KRAKENUNIQ_PRELOADEDKRAKENUNIQ.out.classified_assignment ) From 79dd3930bb0b714c99da55cb1c320c05295518f1 Mon Sep 17 00:00:00 2001 From: Sofia Stamouli <91951607+sofstam@users.noreply.github.com> Date: Thu, 3 Nov 2022 16:52:01 +0100 Subject: [PATCH 453/789] Add samtools to README --- README.md | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 3f0a840..94ede1e 100644 --- a/README.md +++ b/README.md @@ -34,9 +34,10 @@ On release, automated continuous integration tests run the pipeline on a full-si 2. Performs optional read pre-processing - Adapter clipping and merging (short-read: [fastp](https://github.com/OpenGene/fastp), [AdapterRemoval2](https://github.com/MikkelSchubert/adapterremoval); long-read: [porechop](https://github.com/rrwick/Porechop)) - Low complexity and quality filtering (short-read: [bbduk](https://jgi.doe.gov/data-and-tools/software-tools/bbtools/), [PRINSEQ++](https://github.com/Adrian-Cantu/PRINSEQ-plus-plus); long-read: [Filtlong](https://github.com/rrwick/Filtlong)) - - Host read removal (short-read: [BowTie2](http://bowtie-bio.sourceforge.net/bowtie2/); long-read: [Minimap2](https://github.com/lh3/minimap2)) + - Host-read removal (short-read: [BowTie2](http://bowtie-bio.sourceforge.net/bowtie2/); long-read: [Minimap2](https://github.com/lh3/minimap2)) - Run merging -3. Performs taxonomic profiling using one or more of: +3. Supports statistics for host-read removal ([Samtools](http://www.htslib.org/)) +4. Performs taxonomic profiling using one or more of: - [Kraken2](https://ccb.jhu.edu/software/kraken2/) - [MetaPhlAn3](https://huttenhower.sph.harvard.edu/metaphlan/) - [MALT](https://uni-tuebingen.de/fakultaeten/mathematisch-naturwissenschaftliche-fakultaet/fachbereiche/informatik/lehrstuehle/algorithms-in-bioinformatics/software/malt/) @@ -45,10 +46,10 @@ On release, automated continuous integration tests run the pipeline on a full-si - [Kaiju](https://kaiju.binf.ku.dk/) - [mOTUs](https://motu-tool.org/) - [KrakenUniq](https://github.com/fbreitwieser/krakenuniq) -4. Perform optional post-processing with: +5. Perform optional post-processing with: - [bracken](https://ccb.jhu.edu/software/bracken/) -5. Standardises output tables -6. Present QC for raw reads ([`MultiQC`](http://multiqc.info/)) +6. Standardises output tables +7. Present QC for raw reads ([`MultiQC`](http://multiqc.info/)) 7. Plotting Kraken2, Centrifuge, Kaiju and MALT results ([`Krona`](https://hpc.nih.gov/apps/kronatools.html)) ## Quick Start From 696edfb866a1d196241ea819e7207edd8cd067e8 Mon Sep 17 00:00:00 2001 From: Sofia Stamouli Date: Fri, 4 Nov 2022 12:05:23 +0100 Subject: [PATCH 454/789] Apply prettier --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 94ede1e..5a8884e 100644 --- a/README.md +++ b/README.md @@ -50,7 +50,7 @@ On release, automated continuous integration tests run the pipeline on a full-si - [bracken](https://ccb.jhu.edu/software/bracken/) 6. Standardises output tables 7. Present QC for raw reads ([`MultiQC`](http://multiqc.info/)) -7. Plotting Kraken2, Centrifuge, Kaiju and MALT results ([`Krona`](https://hpc.nih.gov/apps/kronatools.html)) +8. Plotting Kraken2, Centrifuge, Kaiju and MALT results ([`Krona`](https://hpc.nih.gov/apps/kronatools.html)) ## Quick Start From 4275640d9bfa60b82aa7625c7241672fc7e199ad Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Fri, 4 Nov 2022 15:24:15 +0100 Subject: [PATCH 455/789] update tubemap to include samtools stats --- docs/images/taxprofiler_tube.pdf | Bin 166185 -> 61523 bytes docs/images/taxprofiler_tube.png | Bin 663369 -> 690724 bytes docs/images/taxprofiler_tube.svg | 197 ++++++++++++++++++++----------- 3 files changed, 131 insertions(+), 66 deletions(-) diff --git a/docs/images/taxprofiler_tube.pdf b/docs/images/taxprofiler_tube.pdf index 63d8c06090681b872fda18341063fdf52df96f65..eca2dc7911f92fb23cb92de62990c60021ece645 100644 GIT binary patch literal 61523 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 y7@*H?w4kcIMdBo&p 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

;pb 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�FE)1&Z@Z(b^uYs{ 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

c|+FDzvPtY_vx^E1IbJ!bBX- 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 $53%wcN;JN}@$ITw(LSGKiX4~wBpj6VR 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

bq4{r!!ib^8Ja36^z|+%-#Ry? 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≶aiDmw?yex=*q(* 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�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ใ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 literal 663369 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%0A0*kr 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

(yGPZTH?ZLWq(fzBn`W?A6(Jlct%J@va~b#R-mp zL=~Fmg^kkfuE3VwNJ%esfw2<8n>-G8kL)QSyUt<5vLXe|a6O7@>$%R5{Hp;$V3UuZ z&lVB8?}+)J_-Ufl=5m3BCn@O6rwLSfZh5&l0IP@H_MR z4o$*Xz^{h|j50Lp!C~T%t;Mp{TPxu9X2K)MMI0!Pf{ypb6RADn+76vJ<;J1ND4Us8 zCC04!OwHY$%_SK`Gh{{zZohlDJ!fvmcU1zi?!xJ`Seg*f^!prW3q}n5#`00*al(|Gjp_4~0cOVVzOwiz$VN6He$FOd`X$cduy(qH~QJ4|AC zgD@f2$--)P>+zztb=C7wxpdpx2D07sLYAtBY}yO^$BRApj#>QCuj+VY${=^|1}WA% zuTfWTJ~YnW+_Zat(ukFn3SUBawXbntT1>ShRqtLfZ+^-b(B;2|Oz&)o_5ZDOJ4l9pP^zKE1tjTyj{`Ll6R~7CTjb=F`;msLuL4RrFcncoUH41 z8c|V#wbnzlZ~BpJdWJRHIYXnY2>I7O?>j|0VIDT>^PWaH?rbf4WTQeqbz^>}Bzc#b zz#*zwbNt--|Gm`}5)nb5abEH3I?q_7rC=H#zxW}UPp35N;#eaMoOO!(Ewel}I}-VL z4zzk}o`$KVKR!u4uUNuv3`_QHg%OdM)=++TypP!15IPj3h(v$y>u(kRS+;$ZaJmCG z@#K@4Mc!xLJT^Uwa8i==9|F$z5MMlXXSh40(#52W6Bi*&aG7M~&*K3}7*tp-ocw4c z?3(&RM%u*u`zTJhxQzC*n7BD7j2wCyFO?W4At^>wBs^vcQ10GguHqBhVZtE7QYZ7NMB46D5a!l7~WoD45N5w8JCahDKNt)Gu6IK?y zD@u`oG}Kl&WG9d^1=Y9}nXXjgls($!xa+j*XeO~hj6f2W1-%}hTq|((cl?+l5GmNH zb28HZ=)S|XlPaFYh0VEJV!EpcJ!TwoyLtk)vB~P;M(*yI+7evA8k(jlW4k|Gtzebn zkv7X~Mguc4@;H&;S+bLTm2k$`U%Bnhu0L^$pOu??!>|Ulh74e~PY8fyuaQ-~`}3-@ z9Z8Iu^EM-W;t*JW%s`sF>29jI>H`<-fgLxw7zKg*c(--l=b==J)DkMGh2hfoS2()H z_}p6X)zm2_Gd>kQZz&5+(Cw39IS$f*-|?eA78Any;=6NeW#-Gq%Oeu{Ar%}< ziIMaiv`iTux)H2 zE4Sa7AQ9X9(91E&AU-A2^QO3%hH2lF+;=BNx!@@ic!En}nBc+JtLDqgIns$;>cKZM z-RcZt4cdki2A6V(?LuBeIAp`fe71 z+Nl6yT7X{=isWk64t$1{7a;*s?3*|+b;Mg7jP&=<3ivxVKaUH2iyZ{Xz2}2VO(sj! zvgtFG-KhjqId(rUF|n@>=nRcvGPiEM{=^*e&t!tzFJkUfPN8YgAF+)#N(pwn;%L7} zE!L5kuA7aQGIOUuyl&+n7)CM3%aGeI;`~E84K7KERtz~f z_5=!F#$l&QlTSJgkBPDwxw{DLwT#CWR^@m&RGt1NI@p?ils+en4&@Ulnk+)@eVkIR z;fU+85j{s$*Eba-)h-^$VdT0BUP;~r!Knlr7w^GaYZeZirp`WQ(V?>$d64fNU4}1 zPM>@Qv-Ljtz{SLve z#%bGftN9FC4+pT?wux84bvqCtGrbQS79vcFgw$ImvhOGJ*UE784;-WYWm0%LV%Qa` zvUyXgc*_=^5%Ifc!0cHqYkZ&lJ5@+8ca%#U5(v+?&y7Qy=>2uJ_#sa+xnUr%wpZ1% z{3wq-62x9}IN2HCdm6N>N#Xi#)2XtxsHxv2z6;DD&*4@$dNTB6p0d=Ii~zPIxx>2B z9UrNWQ7zc+Y7Vrs=L;Ds-8Kcz<6;CcCVQIU768|-CLgtN(yuvgmz375dJtklc4-9lz(;QgMpC793VtlxqZF&s_vzO9sTiPF!}tN z_+jKm^R|tER|TwesVOziZZ7f0-Y4H+3%kYYOWrx6;rbLS!;pQa_br%nR4bK@^hGgC z$tMJZRjntDdC}q~^OG!A3cK@VCR&PpFJVImHzrC;!-zdq8h%54$5TFm|M4_Nt80>> z4qk~jwyvv<+;WULTA0aJw*818scqdmHZV{w+G6zGaeLwrb6MVydo}b?O_=xaQIICX zx#YeK6GPMFDey(dL!zbjuH@PwR8lY!@RHsg_d0K5b9%7j*H+p899+|`B0_aK`{WIk zVlSgM3y~WGF+{&~R{Z9So^)|?Y9j+if*V)HA+gf`Tp5Y0sri$g#)pyi_G1tSdroovaq^e<*M;+B@emB zJhXzA?X(9QGweAcB}m!-_E4c9$RB?HB;n76;{bJQcE8kz$%7XeC4rCMp0p>#Xjh(KI|9^ubl+2UBn7BAEInpe3sF4?^&d`U&6ptwg$=(ykdfUo`2(~yq}b^E{|B+Fu;!7@y;2Ui41F2Z$$=#-3aVW6iM@Y>!$@@p}O(hG*1 z2f}%|eZIL_%If&+zRG0B?n!eDu!QMjJp|T|%W~-ArFX>16Z;71w#tW&V0S#+-NyyO zGJhoZCl2_EP)@j4N^zKn$6eA6EsoA=@r8S6E{y=*Y$k*lp)In#l+_;^YpBd@fMXPv zioTc>04H^7*{nG(8nSC=HxCB~2WF6h7mdfmAW#Pw<3;@X;do0Aes|RxO56rde+~I( zwh-K?%$|t7C8^~&M^9q-AQo+^7$n+VxXwn4=NDV;L66l1In3LH>luBU)3qYD`bel@ zA4*lnNt1v+iQ_hsPw)u1JApY3n^i)zAdD=$ti@{N&DV#$hnb2pdEL!*n-`*70r$1J z#u#C4#YjFSxILgSMNCXgAUOaq(2z*u^SeisBnGk;UU30bRV$R8mIndJD;xD?D1gD- zv`kb}H@yfMc=Vy*-20pkVzv$x zK~Fc_=H*q2zh}wJQrPvni&-5cE~OPor^P*KL<^+x(di{tmfjt!E#|eA|iNvMUuw3w(` z^t4O65#1h`v2ThS*m2>En7T9AsTY30QX(dgp{k;O+9N3O8#^Zqe0221#$IP97;NHK)0W#i$^ z!A5Nn+isUh6>NmdFGCG{Bc#u^3KkU?Pxvy}))n;_#v&kA01fXxJArDqcr2;bXuU|8gpCKk4;ju&KBK) z(-+_-zZ*0$v?5O&^mhTWgc*KktpSK6&lf!x-H{50Y!3`s^x}g_uh#HaV#JWEq>7Q9 z+~nBjGa;nro&;ikDgh7S+TIf)cD%7Q3n}ChlqKfFU<@rc z6!+cR?AwQj6O49Ak$n)yB|d0@q&t*op{Sm2=YZYp|( z!h)tu{ZEG9?5C6sH7hbPPncwucivTPL;I(LRfo@J*yiN}V6agryYqKsNE_`$X(M@N z9o!q|tCyE08uaV8W7b%`trhsZ_{a-!CeDiM*#{hhkq{fmOD+4T7(+$?P?fFK$uip8 z?CHZ!#xDbSSSd&IX#c5H7*V>qx;o@_gkI>?6#uFc5FL#ifBFAx!__R7uU z!vw2fq|2f%q;@4GlX@eYT5y_idz*QCT;k1oa2y&=YwJI^DehyJ-XpgJ1Raoh2bBpO z73VpgmH>9R89^jnIKqhAE07SS5mm%&E~Bev3=hV zOC6Jbj8n0(WJSXPLzp9enZ!{UDrpsIn;G2x0PHnZsKYj7q$k9rrKKg0S%+blC&vFi z8&p>-y}JbD-Q+0%D^{-j9DlqXEtWV>p7aaN*Q1S3A$<$)WfIj!ULmeH!Aiq`G>s+{ zKN6QR8ZxYYIN_r83QRa8o;}Sf&ED+f@dm;d&2R%2*FvNMApv;17hp0pOsR^wrCuWMhR+VWR%ab-GM>TZAFPxk6m${hsYCNFbv(yjcNiB$5nyP1$U4|maBa$MH|xK& z$+0x$RxHE-l^Z{G4xaaiUOMGP_qqn2#i@J8&pCUvp}Eq36QIuRkXbQ*kln07n5xGsW`c)6S?B0>}7xB|~LVcvTp34V2H( z;-0UR1Uq-Kr#F!Eo|pN9)JAU$TPw^^0D(3^IoIP1`Ko$BTGfIsR8P68O%0H#fwa`k_0-b#o$(#J}ECl}hq?XTS7`S0FW8&K6l zmb~|#9ZQsl8HV%{OE}rkz1Q1wIA-q+%-Ld7rw`4zikqk6IFO0E;6&)%Bz|Hh3GB_R zfr|`!`9i$UR<&TZ)uf^3W7cY`6N1j|0ytVW^~aFyczw9oM3k`rctJ+j&ktm4A(f^2 zb`A{ATlc+2%Z86G;f=z>n&q zm(I#03g3DExTw0hv$yw_OpHL^>MN6}QeyjYR$fJTEJ+1TSq|82t1!m5uzTc*A5g_* z=)w3D_WPD2NrFtekQRrx^ab*KGBJ{$!>WJ8t+D)YOuEoooZ1Awvw$7kd+mjCBtC%< z)I{I2jgaJ0zED0(daB})tk=_vY2aOMcBvMGnPmhmJ)3Z-cBJIzUjTknJ&sMWeQ+>N z+Yrl!Al}dD1QDao2W7|E2p*v8)&tiY193SLAx=jK`;c^A-@d#%>AlMV6)Fvwo*o4Q zsw=1Dv#+YFs{{H`Uq6IQ>}ov-qzF1-AR;~o)olSBX}U|U_u)@IM_YS)dn*Di?(01V zV6W%0Q(De0yV&e7F_wxwubCHAz_1^FLHY1y<>buA;;9dyT4w=$1w0Cc63+=kVi=kO zp;?pc)LOP1y?CB`3r7ugq9J#wy^t)@=XJkeD2X_KAe4)L?1Nr8(C{5Vr!6%nCntNk zyR*{-2!Ji{L`Zj`8I&0rBx@1M^?+>!FXF*SfXSp(c^=T65LJc8IVL`pg!BmXc`P?I zi14dQ0W0?|!pYwLOeI|hoT`AJ4~K4*Va|F@|1x#(XP7}%YOF*>%0Y$HbO0Bb2xc1_ zp6Rbl+0|iagR2GzOqA5XeoVgELk}~*P4teWiBH?&)eRr4dNp=0Te+C7^JZ&hQ&P&X z;^tR&h;Qn_D#gMq=P;XQU_4GjZMg{wAYu8&wayl~oa$*NK-eOG?eWSfO@Ar4qR4@le>ATF^umcWTU% zDk6Ol%(9z5U_*&RfAwYNgN8~;0WUV2vuxoL(I{d5oJF;zE$M9*I04!8M|Y9CDqE^y zXb|Xu#*k3xyP(wd4jp5>6(QDR3N*p8&kw0dy~e?&iJohm4RN#vjyG)~=O}1A=&0oG z?vAucLX%t)819f5q|)=_(<&!?L`iwa2}Ab7)!M;g_58dE9w95cnee=bz!}SSygFuZ zL#@4E%Q5+`P>ymM|NKRqiM3~esd2&hTa$nXgts$ymoK}-g1@NV_{8swO@Ow`Nm2uU zi<}hcd9Gi-yq;Z^6C`y(2pvIexlyptQgf1_dthJy;p-70@o=DL*t+8&x$-9-$SX); z%-PZ!_BaA6OkA^m24wRh2xm=GzXd*&XYg52S5NfVPA7PKT#VigNbYd_fw&4<&OihW z-!zmQW&%jq+9TYo(G6xRF7ca7hWc&xgN3igmd^+ihz|$@^tfLS;F{=hF>3jAFXE)g z1eG-CYf^MT7-XVDj_SpOm zCBXiRNH@^l#*~94Kl>c0hmjNi0lTIQq1sC5VV7Xiam3|vmK~r(N}K*Mn=uqST0*ZM z>fv~Ww0<)5h1ZVfqtvX>X~ob)e3-s~1bI-M@TtYgWA`gAXutVXj&0>q&7fn4l0l3y zm_7p3n+)!qSvKkiZa@6DZi3Jl+AkrS0jaSIr0y3V0~d}!cH1o8T>ox^)}2hNQ11;i zrmGf5l?SF^GVEVd;AG%LF$I4WGlbnph#OqNkUnRj-P<0xB?-?HmUEbDt>`mD^AYzI zWc=R8q+=htD(Aq;ZRBi0OG$-LZ3XZl2Ep4P)-_r!ycS4m@d#H0xbkudzywro%Eye? z$H7S|1BXx_cdYj}1hb>WnnzF@(%wHcZk|``>*}jd zinzo1O3$GWEoA2i=0V%KiCO3xI3^FLN)jH1Gu5)h47=Lgb`mHke))#XFCCPl;=6J3 z@nLe0_fC&;Fq4S&E!(p32=Iq#&z{!X0r#;{1sE7}kaOrj)4=s$J3G4;kVK7wUZ!$} z_I;mZ|()b!Ft`FG92+s z`4qhFCa6cZPcI=xpIs$EzvkKyaA(#CkZVNpdyG=Y)9=A@UYtzy_CokI!?)k+N`8HN zpbQvJ0YUpvc3-;w`u6sbuUvVeG=kiwQ1n72v2ccO+HyN6#ShHwL*16qB)J&l){m&b zI%2IYl4HxqX+RU z3#W0+f(ruNz;H^!f#a86w;2NqIUd$e97_9!qO1pY`=LSc7KC-TxbtZKbx5kuhP4_8 z{S@yZclfz!b7A>Tms5WO{9gF1W#~x}r38lOgJ0DIDpIGe?R3-^6UX88`kotK#Z2te zL|=7MGf2*@S3v?tK44J8j+3m;$Jpj6a~X|RFi3M z5jAAI$&z>uEI@Yn&v1x;2lC<ul$Sk-*os*bb5^q99gmHl+gOPv;rx}5z}*XbJdL{ zwme^&yXsvfJ#7kAQBoL|dOanSt+GYG_$NxH<>xvx>eKAePmKXa=fo-Rbw%kkpHFT^ zR_>G=#EJu9IBU^!VmmejY1;_vZdJ#>ZX0xG>p#ch@pe00Z}7T?53$w)cG?U zardvJ*ED0lt_h^S_+NeWKA-0A05`Hd;IgV*Y;xWlePhP596A+?o~$~XciT9Tze;M! zxXTDCbGXsh%mgigtd38G%-{~YVJI)r87#;POdhRR}7%e&Gf*dJX#4WrfI!XrKGPmK=hoR^jXK!b(yb$`U(EgP_KcRfyik4YnB+?95eAX$MhpLZaDJvhVd~v@ zFh7qSb&22FZFAr>KZFtq(+)s>;A5qG*^oLP%@bOeN)r&^nqs*j| z#SN)4EM{T=2XT;-SC#LTrmdZwczPG0r-X~4^MMP~onarpv)i_e{P1G}L+#{nN_7w0iz$;RRRUz}$*tiq)TD z4!41I&iJ;YB9FdOSYv)ZC;S(-T&&FfCh22AO4Zcu*5lch7R?2bleR0R(5z<$9Z*9d zuPy?HXa$|=1#PA;0utRbV}Eb!IA^}FL(jml{NlLhy__Bdc|M#zU7;+!vl8drZ(&tc zytlhG3C1_){$D-|#y{gol084pR}c@fZZc%ejf|2^%aT5LFJ<94>#nHnosYz90>Ryv zW7TWb*S5&D`&o+T7UJ0^e{!s91{J+DimZowNuWxWV1Q zxHmQ)ENt3fDJ~gI3>_)&xpX!|UmP$>; zr}+54g0$Svkx@~bqa)J!l#uiY(3+M&Uyyuu4sBx&!TvF7l@WEO9lTyQ|&q#*M< z@)=X8AqqbcYNM@rfjKJ27~|)p#iR3iqKCt_GdOjM)22*XE3z#O;ZQ+V&E46PXnaZ>9cuIVx2idEr|^3C;DF)9MX}py3VizSC>*1td!8%g*J^5+GcS#xq`M-Z zi7saDw0{$z3K>6} z3ojQ8jcaB4&r#V5Qy^?fY4)j2WMM`@Hv}%X(dS2dmZij{G2>wNwdDrCA94^*TBH4o*+{TceH7^+Ey?F7WXJ;@Aex}d9 z1LCU=Ie;nvPtpRa2)-sL&w!uZpj*b_5sc2iwmSTLfk>bGwc4ebOrlDIc#wG{2e;Fa zE4UQr+s5fNyn4mijQ|ve6>KlxG7T|axs$Mf#VN*b07elyUkSUrC*pxJFER6}? ze(Uq*%^M;#CDePa4@Jh>mUH4EPb#?k$=|8j0n%MFp!cD1kh(j>2QvUHfwZ!T#_0h^ zIJbNzv!qd1Q#0HJ4jlr~7DBI_Imjclq@Y6u?tc9H2#eGubbEh)jBEhSI1s6VI&>fW z-~tdJOieJ_nbAgghoP)pU0ra74GO?Im_tz0+?k;+XggTi*#%nchMuckm5}X{hZeme z2kh{YNE{x)qeF@)Lv5b?&-PHBKh0;Vobi5^V%FhBeXtCb^mSphK~EI33&uzUMK^?Y zg%3-iB(K?UG(4u|xuuHiX&}%^2rF|6f|S;E-2{N1fXTGMBfEuPs+AQ4I}q$q19)W$JF-Ty*lL7!))b? z08n~E-)_|~nF{E{OJlX>pnia~TrQ{bdve0+sxZ4vy+HbdW|^b`DFe60gJh=47e^l> zeE=}KxkZ-NAZ*QlvFewp=>Kd{iJ}rs=PKArx!_A+94W!O7C@(mOFwF(}-`VNUmh`xj+9g_9}N@y9h z&K9;vZ4rU)yHI12Cjo@bWrB*Azz4tMi|v=(=ZmzVrkEGVEDC_%_5glI4+7;dB-%Hq z2Oh|OOq)xlBd5c+*@?(4uCPMMP%98*jvyFLuw6LU7dM0h>W`L{MOrYuxcvue`Mq{P zm=Ke5)x0`aO;gkNS)#`7`4!jtD1=R%TfI4h@F8_z2uMlZI*1&UHauw@{|dm}UoZ#E z0RbA4U!qRITm7~s$k!@$_teE09!*z>DNv{lYR|H3jp}w_wW0whL<}sty*r_@vf!nM z1Ms?@bQ4ogdv2-lYzE(nwTli@V5st&K$ary+9%|)P~yo)o_+3P=aG9;zSmYX>Z8bt z$Xg4#_~mbXSRPrqj8`pCuYz3hXHuQdaAs8w#wuKaiSoiur5Kn3J?HK9EH3D#kO&&` zbBfa|W{-viv6$YtSW+~`xFS+?G?1>6@K~s7WBYnwtdyr4;16-5AN*X@3+mnBL>D+t zx5LeNkh+ILd=up99QIy&kV!CuL6W~}MXe@?DHZ{{KK^}TmI*Nc)fr(}V71Z-q>M2! zgPuklfMa=1bI`sg0K8K;;83BCn^cd71Zp2~PAq;v4H+hWxpfB*K| z|6XvMd9c!0>D@S!8T~7#;G_v|ak6~kiV9hBJ;hwWA+bHx&OM>avI}sU(`O}eXCNu^Mk${JLY8-+)i~;kK{9#QQTMB3htB)d6Qek4PkrlmLun1^y~V+$q!l6z7+(gP`(Z z(%%h(j7Ijh0I+XeneJdpU|?p>1^+pIp{g_2K*DCYQb%N9kNFoqwUoah7~u4TOr5m0 z=IlBQb&bw^W4U-BFRKgyxR(JHu`Ez2IM%Yfwx$LB>_x`4L6^*_P%77d-q(~Ty%gH? zmWDnc(!P-LM-+<6`nnXeS>ic9ElOJY`s;c`<`&q`e1-A^F4^?nfEa%E0maz7RE25% zi&W%mpL}_pY-{@&6W75u)4WofK+N_`rT}-C^nx|2thVqc1{UQpK1W+?jhSJW-cXv)P^hTJDK)dh zHOSwc!WiP}Hxyi`(D90j!I}}*wIhe~c$Ko*s_y#c^-^5-p z_U$muhHh=;N937B!(gQ@!TK4KfIN53!qk6$Qz zQRm2yIienjPmz~zZQ>hovPZ&*BbDqj>+-nvr=vhQOi;D*HkD%Pit`!xKampOC&$Avzhjm zr1s4nY|-+n;<;}r*(wSGgOPj&?EvYfLW@fO(TrzH0J3pIMMisac=fh4EcEkp#x*QD zIr{IC&SyfA)opFg!uiPm&k`y|b6S22MC$f%CsU#v*7WAEoC^=bVp!RRLfX|+I!-ABfIi# zQzegDQt+uM-=ds7Ud!FHu>y7tfu)XzlL9fziB)gr=gq^yqL!We?Z;{|R1&4QAdF+7Nthfv4=FAMdYKjrn;dTz>l^6?n$cADNkvo&9j<`hvV_v$u$ALsaC&e3+9jk9jx z?Ss|+SMrnQDPyxKrp76STXD=WcNK5mw9;QNHzn?N>Z3(m6C}u+1Bx+U>58{52%sN ze9>4~h7{UjePO6fyr;HS?f}&>NBh4}W(7-8_Af>k7xTbB89|UHDsk9n|IaKm%8jC2 z*{>SO-??y~lK-P*&X^P`&;}`-U`Rd5kP@nwlEPq?{+{J#^Bnf~v6Q-bI060}=q^2Z zm!eS1lE_Tq(8_?QNT|aBj`%y1gtG?l5Q&G=Zz5no`D_w=f)Wn21;{m}&6-4lS z$_L+Cn}rLwW0xwgXj4;DcNCa5?7qnX&6mSRjtFs{@Ok)unarz-(Y!TH6#NQx?v+6M zoa}3=2nD$aMNz((`2S&-{4iz>>voFfBJiiO=P?_2j3b&$>q=&ij^&1T`v`NGznU}U zUnhKl&Pz22J`ne$AJ0NZmjR=qEFtg!wK zf^I>T4|Z79!qLNyP%@*yB4^LZvemy)Q%_+UJ==`gWn{H10kleg+4!jEHcbiq+f*-Uu}Mw60xy9H2JdG|?2>1>!gm(D13uR>H0*pUth%4?8U5 z^`%*Dq9a|!ylf9pcU5ca>|DdDOjz(&peSS803+Uc6PUiaBFZHwUs_D=aTb0m{XXP6 zVP?+DVzjV5N_9F*E@dZR{$SHN{d4AgQ3CBLV^*nl2{^+H9%Nw|OVVQFDe>!9THqku zynXw2Lia_8p<;wAlI^O=HL@9)X0t*ISUJ#@4ZVB!F6oWdy?d_^OGV3eAY|lL&VoDN zCE*)a$52oTk^)43L{m283YPRoJOARGd@!zBN?(T!Is&Gfh%6x#F>kz9VSR?ZQs^DgKqEDZLeiYt)fm@ zIaR2Rcwm_qkYcxFfJ!Exj@9V=Q8mRBfdWoDuu=63CIa}Y zUxDOusR=KN9NINAJo$Sy>|VaDm|swJ(jMOx@dlW zo~=PqPR`cZ%G})Cw?S53{)6oy5+~{hbsd^l|Lf+7|9e>EGr#)cES0gTms;SLGsd;Q zIb0HtWyY_mIeivbNGvBiM|n7E+ACH2Ip)&Oowh3jU+Dpk1}|EZ!WG@h64 z0C$>(uGuFkd+34@F~mPOA959jPb=ecQI|+}YNd zYmsYIzHaPG@#lnvV=3U=ITK7zKoocqJ;>>WfG)9}Kz^b&5 zhUPg&2r>%@=q$~SHOERmuwR@u%Qkj?j)!WFp+2V7B+4@LVFZ}?e}3N4MqG zN$Dp)awfo`A+SkLw`+Z}l5~p0=HYicn>;Vaw@;Zed8Q>K$rKLA6_)x}6v##zJU0Jw z*@2b#NM<#iSC%Q*$WrK1Q<0Lo`=J#x*gm3LBgeFkT2>WtyCwgcaZ9SYJjT+f0?tz$ zIFKA2eYmQsY8Vl!z+vnOJv}|e?%grMH)n~l$tOQdX`VfMR_C=XgI6ty-uUC+OeS)yQyL{edMO+9zppLpkZR#HhHtj{kU> zV@pqG;nkRNGr@iCG3&jK58(&rP6_VTd!H9}En9W(qX>eVr64(XW+DEfu`w^^!gi4T zocLB!Qu0K^y=1&}%`H0)f8+48xc@S0{C)@|Q9l2IVq5-!lPBoTojuv*$7QkU9suo}N-tv7eD~}@nAiT%M7@(#B6fq6Si&dzAkq<*r@PNM6bC%bH4) zl62jzy2$d8aw|zMRnh+yGW-*2S@ItKzHpc%gXEdw!*9p)RU#p62zUj>E;RO+MsA{{6$af4_;T(qR~nm4%FZG|3(e zY7w7DEyKN8b~3b1>Gsn<3IFE-^fWbt0Bb39w9bzE{sc({(nK!i46QrQK~5n7pw1__ z?pHW2F$@;CWB;vE{Q0tT>d)_FPFd;mIsCTOlX#@HTh3nWnw*KBFz^rPt5dq;d7sNP z-?NT&?8)(B4RM__26FOPa#eOx&~TA`FxU+I;h_|-@u~) zwM_&`1S{i*wzjrWev+(@and`pj~;&Z)p(t#+u8q3-<;13cw7HK*m_jx&*f?I7oJ<} zJ#$lKJeM0Uoz&!kfD{$C9(#Xc&Np(iF8!t#r(N`Jc+yurjHGldZ~t>Cmol|@F230! zDIswM0!Nk>o2hh7fS;cqX2PcY{Aq)yQ%77&3^*kMFm!M}KKBX11;K*{HJi*oF!kpO zh+m^v54X49XmjKJ`;bHpy7HM_g+-l{!tKo?I?R-nC22zv=Tv@to>O_dea`1JQymSP z>nDTzXG|TaFIBO>Yrnxc_%MPG3R;9Q!^WB1a2qyUd_7oJ?Uc5?#xd1CiJ(~OAR z*irkjrqCppGXt7SJwAHFZZmj0BPR!eL*_pf^vNeL|a@o$S0q!Z=Nn$#(6 zkj>JH4+tKepga0T`F96ezAjvnEk!r%6r+T+ad~Y>uyBwv>K8k=^k*YCx1^kB!V^7* zOGT*?`r$GOho+WR7@7p*=-ii85JX#$=_Xsk!<3^iU(4-{j1Uy0Y?PkY7od-#rYjUL(VxSS?;=_ifd6qO<=y1T^eZ zMTObM^4qvWLbC9YJtEhA9#Xm5{_-q}vrj-|vEJTWz-5`-EZ)N)m#mSllX^bMS0~RZ z-C?XV1!S;Q(Polg+a6TKqO>Cx+m1QZ(E4~z4LPpw0~m06xmRJ|k!`0U#$I_XtSrs7 zp*!TNGCj$=ga2Ugzn4eS`&!P6n(z3)(;(aPtkhS!6#o2|%K?1}k`3~oS@>*f*x#+r ztJv&Ya$j1MKO>oNv5H}W9?X#`Q>}kaJP)l-R>R91CZTNVO$*!s%kdth+J`Ix{n+Fh zX4uvOR)3u||0v&6%$7QxSM#>E=F#^ERjDUI6qncdPM?*N54ac?A2!vLK7tQ(2V)@F zAd8y!cIm0vYsQx}Qtw~O&Oc17HzP9K?8}!NUS3|qFg65UV*eq8Iu_%t;sC>c0L|R@ z^V7U|F?M-ng@9%#4>oSxm;$+t)v%=K{TxxCdeQ!G+C?uRm74E^X>hEsjN>aFE5_e9 z?{O4#Mu(q#Tf>vcH!iE?s{Mrttd8>i<5`p(_tbLNMhu%q?N0{pe)haF`|^QP8Mb1{ zT+0Wkxzg2>Cj>@IrV#?{w!b3FkAX-V-@_Y#uDRrPW@hHI~1 zES@$E`!u*WrQg^ziKWPsoXw=fq0`NOUFo;Cb@14e^gc%X0C-c+O}*97PdtQQ{|6iM zV%KfMch|>B{@z-dkeO^#7H8Alb7Pc`SuNLz#Xp&oi+MCESsOfYYIX8RnPthUs+Yj* zXF~?P+)(akBF7Mcm8^m<)>A!eRFLHxO_;g2dX#)#jMboiRKn{V%X<0ntEZN#C@gYL z{e3#H8i@XHND!5#mYg|NPsj5&)R$Sibst4E*B7|pu&0lL{BdgD;~(}x=8i#P2j%v& zqq17iRHjN%VpdL^6mO1@e{HgmA;Ms{4SEqWj#Kg<$vPQ~~SMDnOOG4OP{<*4fS9od2TnqCE} zeP2|wrQ>ZK!y`8_x3hlA?GX?<-d%8#c15MLREx~;XhPDH$a-N^21-``tEUY?O?8-& zm2f%Axm6{6hnp0oYwh0#+Aa+-F;4(y*Uxk01n*|32eYY_*GKz)@7GSmnzAPvzD$498BrEj{1L4ri z#C9NYivD;P`L-P$r^<|%QIZ@ck(D^B_WRCko=sDj4S#5QdyXNZZj|RmzoDvmm$dm* z(2AHY$*-MjMkx!TODD!Xb8bfEm=xHL<#fE)W5VKC44^2{S*+Geak`Pccb}d*^#RSA zry<88yN`Ew)PxbJ2tPIvNIp+!Nkxx{{WtKcRERjGh~9+QN>><^0>K46HCrmXwH`1j zUEy=}qk~DX8dUaE{Z5yMm~;Fyr<9(DjyoWf*=>`n7JWc8}QF{oP~ z$vtqan_KkP44>d`kIyXHvOk1$3f34{Z13e*yeN)8&D%J7>BTjd$Z3uBH#zMhl@K_> zSbMIH7VSOwZ+9@05V~3RQ4(f}|EFxYq-k%T1A3tHpr&YjA!g?ByDkk3w5IFwWl!uO zt|$6s@-*N3Lhox+SZz(`A4dFL9QTB$68I{~l#bXnil%gPH|dtjuv-U?y9S7vmNjb? z#Z#vzkQ&NNJPmd(V%W!y(zMOHluhx5C^jCkP!fAnE~0z(jg;}=?*~Crb^;Qf70L>) zE&qELTOz%XU4Il2`h+?1i%HiXFsu9$@CK;bbUHL(Z>>_GW7P*)eZ$Z%3+g}kBw6i} zu#xk{jLe41+u|MTW&IjLSX=o7RlaC*$Mw8d&n!OSgty39T4hwZHnGe#!U8Y z-5;>$@qzbhr`jI?>ml~0Od2hbe|~OYw!3qOx^pKPW7mJp z%e$FCPMoGE&WkOqv=j4I<^WnpX3ZI#j zo+d-pYPlmp+`o_t*f}@$xRo?8pE873ccv5NIYG*OwJ`)U!V8H`FMSE!b!Nz3N^^eH zymAW7_Y=0%AybRibRZiGYDU5{2V;QPo( z8c-moZuQ-J_bd>1I`gl^IgEFu1mQ^U>Wv#VBx4GzGl*thqcW1Ex!CfY`Nk*E`0*kb<*W zOP3_h%Ab^uh2kWy&Sz^C>Gi9d-{fM&{#5FV*D0W-j>JK0X9=RYF z%$k6Uw!jQbR-C=kagBt6>t9)3W@33NVh0U>G`K=@&~62`{rABrBapvPO^{>Z=huR3 zjpz((NmM)tX_?`}%yW%26c_k%>YJJgDDDI>j8tDAIHT!;UYC#hH$ zn((?`cYat}>i$A5d~WP>5{fg^&JvRk`+2W?6vZh#b+bBv+-edM5{YB*Bkb@yr=ai& zGs&~)T74cr-UW}axbxz0QcLvN+d>&kvV_2kogEw%H9j3isA^EuYHTBc)9dkU`01ERNpW}NwvmSGOZhjZT}KE#9+OOwu5S0m~p1w+$~ zt#QPS0QG6xc%rdIMELH-Os(m6NBxpPi)epIB5=R^+G@uWUL0Ywf<~PkbBa&-8%?}w zF?+cQ?K&B7f0!<0&P2q=AG_L>uX2#j>Juh)e=5G|ctSht`?>0;!Z%y5(isP=j5N@l zUV7rMTVG-@-kvFrudSI{R8LiFL=*Bkkk~Z|Rh^=%`gy``=s^#N$59to zP~_sQ20zq#1LI*ERWDtNN2SnbV+fb1T7kV;XafzO)l(D=p-H?5&v;PA!ss}p=C_IV zynS0gXoroF93{&S?+z9Z&-4Y+l)+=!=gaEwdU-H-fhKY|# z-CqApBm-rnKKgK)FhKBAmWh1!QPOeEVQbaNU#iOt#sf&x;%ojo2zabbgOS}#`hv!5XZ~7e&)-23g~#B(VWg4w2;X`8eyM;CPLFjb&al)4y$)qJ zYy}X@#ipToR%kbNo6WTReit#On>v^?a%WruZn+n^iZx!eEjJ&SkCeDb7{ zMw)tgc{v$5xjMAh7PN?p1o!t#ft6Q^5=sHvix+mj;9B2Z7*mg+iwQwK4X(T2A&ke2 z-q6sHvb%5;97Idtxie-%3Yv1VvW<9qIX9+EB_$y zeC9oRRQ&7LuL91~$v7E+C8917@HrLkJ@b#zq?AWUdsXO<9-V=i-vZP~$C=BZIyy_; zOLc!?hRVpRYMlLP4%U%cz&`oIK-3vm9rO*|!4CSK#oPTJem4B0&P?NbtuOS`aG2VF zbNXme9lJqMGNL@SfyPtXjN;iRcvM3HxrC01&VEt5!FqKd1idU%CCi=?{YZi9P1tB_ z_LJ#gln6v10BXN-3RB>cfse)Ma28L<$hoKdD%Y<0x<@_3LX~$LP>_>T#fd4l`tKeV z3EB-jEU+JrMJ`T*9Bo=n+V$aLCZ*7*zEM~0iu^wm)8RPvWctRr;qMyRf!~#U$W;CE zP{=T_8^mruyv^}dK$Ic-N|6o_zx~(b4j&r_f?qu2 zwHo+3k+7qIitkUzL*C1rf57xR5RurPz>5asl%%}zhV4k}3BuXjS>jrViG+voPO%+G z4!<|ZLPpUeY8xjn` z#-)III{n1t6(A}9iOnt;2%?s*!y8)vz|XG@v-Xp5=8V?Xty{GZ=^~6hq7~F20N8B9 zvB8FCZ7@y~yrTYV+p4delJ_Z8kRoT0LI^S!)`Qx~6%vxTx^Ql3ps_}@ui1V!)_krN z1D3gvp&INeM50tnT0!?!mr$HD*aVa@1E<&srbO5d7mVBg`YsDgfl8snn5vA7jBi6v zp<{*{PM`YyPnKOYYnH1h4fCHrUf>%Z9(Kk+2ekybefZ3p1dGekNQ!VUr(+=Wa>)q* zW`sTEdpl?^kDKci0zYJDy_=~3ji4MUhrGcdfU0f2D zqOvHtmiF-pl9QZM&B#{E3nZ$+X%m*!EUbqC^Z02c?qMG<)s@Y)SP$m8!49Ttu^(?Z z7_t1PPWi9e_4TPs?{<-ef8}~W$xevo%>hy*Bo7I`k+`^#wv2|^)2AX7F=Vh65QPWk z7J|t4a*Wb2_L0y zo>dEKJYKl>()9~9E?l_KQ9?&z6oNdFg1w~ecGdU({U)4GbP}R%$aXB453_UcU_}^S zUYJT%O}H=5Ed&cD!6%NFELnxVh}cI*M+ZTE_S|QLn-roBLiWlNUPE*vz8Rq-sILR% zW$kPx;l5Y}KQDN~sTiDh7TfPHLx&N~_;DNx8q&k=>gvjURq*gHPz5`dqyhawG{3mUIsf4~5Slc~cP>O>T?>rt#qTn@2RKxvK3*{Zx|z zGpAtO0O56lj?dxb?>O_5&Hr;k!=aEpFP>oORuss&CdnjBa0qTCIcG8%@MLEI^=we9 z%i;8>V+jlqk*rIw2by&!xSfwbRf(m0W8D0*C5zqn9m6nqNNnsg{bSBS<+kVFLVgzv zCEy1}Y=8I_hQvZ}{V?9O0UQ%zFo9-{9<7WH`pE;^NF(x53bgWY+KnX2-c{ArX;>ag z+tyiEn`RGV&Q9L9Z{K)uC?-(Cy=pAy6rBB~1Fif;HY4gHoSui!^9hZok4LVP#TMV3 zON9v;Ty4YTYm{4`(7-~VjHHQDgodGKYs;5?+e%P6oYc!F1ZO{+zPIFr$pDAP+B(JD zf^(SIUQku+bnoJ!n{=9HYSDy<>ZWVJmM044JWHPY7!y+(zPB^a`q{em>-7s>ao@Ui zOQ+Bwz0#GE-QW}67cV+8*dDmxch7P18=*ROL`6J(`W!F$RI|fn>nWh;E2uuO9z!c< zaLhyuW_R#M&LJFHv~yIm>y%)U#Z!ZK<>AQltel*U!>f3hy1!k^m>#dN1W^Ggnv2K} zNad@;Bw0Ao?lI1+$!&0dJKmiJw#5wnFl1Y|a&nw__zTC+ znZrC5Zbe8bC@FbxQcY6T-GJh!wm7G26XPb5!`U(7_XY|cFZdDY8DOtwcom?sKLx1^ zAsg$nZc1R`R$Nwf7ZTk^WXgavv4I{OOQ?W7d_8{xMF&L(DKpP2>z)^Q8T?&ygrO3L zpjt%~J5Cq?n6Wj_66Q;Ir`2)er zE@zgId@-a&;d6Guu3Lp)22St8i8&@dc2J3OP_f>_$u-~m`r^J6-?YFsgcIpoQXfO z)d`9`h&dtG3Nr8v!^y(e5ZW|g{zxFAc>mHy2Xbnjk2oeC_UpmvFyNl!ye*aY4L!P& zyBphYRJY0H(S&~dO{95<)tUx|_=TE^jB9(_(0Mw@^@09=OyChDG~(?^7}Da zf(60rw?`@^eAW1FG2e-EYHC3aqwQG4JBBe}pcPm=2#?_V_e%uF2%o8WM^*x&U&hOq zFWI&|&a%bs=n?T{hffW-1lT!QEk!j|BmD`{4ujP+Xg($)r=-*hn0~#tjC2K@RX}`M znJBU609e&A2#1+}o$^p5|245~lqc;AN@0;ALL*A`7oZ!k-W9O;&&$c(uk2gH*>GlM z9;7Hg+n>EMEOMHB#oz;?MSZL@SDhGVCoOFOBnRLdP-(mqd=Xr=5bl>x&Aqe#IKr5F zQ-A>r!T$a+$;r$F0fRTFj2i6A1Pw`;5hf4)XwQs;jJmS)3YT>HgoQ&elE~?h1T?NNz@$HRIsmP8z z@YMJG#%|oWF-+|K>Fjd`{7Vb!s=fo$-vg`*nx9Ta*fHoAPf!No{9l2`lya zN31{nk1lmO1SB066n}RQD(}xPcEg>9_?`x%r2u$nU+$+uH&hAn8jm?7<8URF~)wPx>0{+ zN^mZS;skMY9mV@SJGX3{!Uir)1(8q%`xIvlo-@P$=0#4TZ}M{Ie(Zj16qDm|g%1yK ziouQU|C>uH&8AN&C3t1RAPxpgu*-e8i2>f3A!P7o@KG}r+t{yQ>w)pFv+aKKMxri^ zQylQV6G;jODHo4n4x43BET0Q1rBLJ+?A7s58b^PGkONLC&46BtlhqmQUTrCeVdOoIDR&+P z{3iq{1xa5Vx|@bhi8#RO-gBS%EZci+RuEtaS_Y)6d*>>y>^K6abNH4FqHW1A zG=v}W8ctE`pxgOwL^As64IIH@k2d>cP(4=KB1ve;nueccq?DTSKdBzQ3R2oT|i0f67Lr?1?r zCeDn5#-Uw*`|^>r>ivJq9`)y1oVpe!d3rRn8Nu~(;S5X0fk9kxWog|izb1p5&OeHH zJtqIx(cz(Aqew{B6>X?@m%z3Ob19~-m5uprB+>je6S_JfJRC*Z#3!E6Tv)3VBwRY~ z|K;it;X)l&-O5p(1w$=9*!BAcAeu#H$8R>|{u={CkM!PeTO);U-NfM!AR}>#BD}qH z91T_}FOKnAwk!Jy{gUzJcES8G!YtV=HXuS^2!ew&@t?NFoUWtY=v4*)zv{cn{PODO zQ^aoxE-qW>BqO6#gV5ANEWjCJx1~*M20YiW2r(&$dV|G{ZJ{*B#K;JU&G~_s@LUrx z;KZd>)Nd5U2=xT9V!h-*g9t#F)DSENhm3oPT2#pCB_Zhm8+|@hinIz36Wa$|8llp( z(51ez>>%tU$O2=p=DJ~m2e`yZzRJEe38c}7uQ`0Z4cudajSg7EK$JhktrZo~tPPK4 zFw|(IwU}{QV?_3RSSZMaXkhs}*LqzM%kE zReQILLZ%Zfw1;d9z8E4G3JSdfPQjPB+o5ya9A8KK~EBuGEo-;?=<9~M#!>a;ciHkIgLJ7qFbZ&`DC=} zo}IfXD1!P|;pC(W+Q8xOE(_0x@#Uy)_DDga(LZLR$7^p4L(W|3JMC3#a7J}7G@;E8 zEx2WRP!vM*%kbT749)5&@tlotHY3!wcd@^|YK ziE`QLo854mv&x0vTDv?^QW;y&nnx-kPIdow(^=)99sA$hrG9h&NxRCYW36`2RW3F( z9#D*Zdw_@W$(4%}v9VH*G9}}p&z2b+zWCrt`!0&zyArnd(5+7Iy*zQjG)(Nq_{cZa zS)H53?0xUbOsCjjq9%S+b%7#-Hod`7wN!c5J*~#l3`=-DoUl|T*l9f1x`i_PhzODx zH3(faN3-vuqGA!aj5ZxDctCw(D);Gw%n9~Ae$x#@3pB&f7A!@oo0*w;0E@ZlbOQPK z{rmST-uUbdu9sC%kU-|Uekdn0Aixs>(osaQF*|N4E@UIV(umb+SS-e6GTLWMQzX?Jfs)jIIbjRIWZ3ii+GKT3HdY8{Sy@L(ILljF_? zSTP&@)==`2Ro_{6{8nfL&vV0412gy4)zzQV(`o|uyx%+D3J?#*Ez4G((Ra-P?pF{)&-2sFOHg~;>);U$`!)z2~ zORr*M>7VQ7DSgck52r%0OiFU4^*I&tHiMHJgmk%x3&SIbW?vMaaRmF-i_`e6w=W&Pji`MfF&en??OUmYGc77j#%p*dad6uv zYi1lmvxE>te>jpxjE^u|MxNHmk2OJ@o6-ev>}N z&F744w|_jo=dliT!9jX@(Tf{$9+8yfZJw&zQIU$m3$3b~%3)sRxnslD9MZj>vn z3Z+~1d>XA4|9loby{C_lPmJzidQ~d%a3AkKKQdP_ir2=`k&?F5wx0|siUYLhZ`O;u zA1vrSJl(CnxX67Fwlg(;pgErw`~?L~;D>&l6qPS5+qS;S&4oSAt5-`;j|MlUo!W^~ zrwofjK37VX5dIfw-qqDrL0b0@4NYo3L}G;T90EJt80k}GUKp01T-51?(Pd8q<+kxc zl(Cr&)#wX}wYcNu6|8kHNDz%fz1Q$EahR>%wBl&4ATr{G<{c&n6}BG|IxtZ*wWDNZ zR`)L19+lUZOik}%MU>Ul$k{AIiSewitfH?K~M5Q6NG%b@hWNKCB=rkbj?(M8ZroIy9>*ci(^9SxA z!;Znx2qA~noz2wL^h#$A3k@yp1xw52MJEl7{aM-B z*v*gHs$E=Mej@geu!|p>=qY8-PYexh8|jVLtgWk4AD7jHwZaA+U5%5dH6Qq*m1Zkk znx4iGfk@A+&Ko=3ym|Ea@oiXrZ-FUU4xE~9(KJkAtyxaU6 zQ;ZPoByReD=x@id>)0+7Z*i@DC~Lf1vtPZE!lj~~*mCgT!LH()l-O_lHoYEVhvT_W zTkm&$N=rk-ak-vm!{*JEH8o^rW@h}3<20wNy1aqmf-QFKR_77Rpvp+LJt~SYw$YDr z-@YTfybx{^B&vdqwymH z!S?6PrM&gGkl7y*y3fy>*`UJN^zwHhQc%xLq73Z?OBj1l2xJZ!po|xc&~JHjs>;jH z+K)okVTdYq7}F{5vlbZuIIqMI#pC>ZtgK{#jEbz8Atx_gy2MNiPp>y?kXP$|+#w!4 z-mQ7Y@$aawFkzPgTs)%y;f5Y+&ouV2fNf(V1Pv*`W%W*)+E1S-2;)!ZT2EehSQw7k z+lZ>?UX9@h0~3>RXO3Ce8CL-m+mFzi7mau;Fnlfo>qI>Y+cYik5W4v|AfY7m*d_lG zqEF>uOD8Rz6%BAwe%;z{y6*BT(uwVjhW{caSCK`v2Sc}^!9nJcQFGGUZ6qaE$-B4i z_P5Pg_kBhD7Vqs_Bkt4%NBhYPNRBU((yea4<84i%m(nt_UFO8CqRWeEH^wP@wKo~P zSCs!3aHqZIj_*~uQK4-5FDy5`Lvqb@S+M=y-yh7+$HKA|0dOAkUIAh5U_M^)>qFmP;QLNnR0^bCOXzJX`LH}?~J9II?Y z8#gECSyW;iw%=vY-$SjMqIRJkz>oumgXM*!pNd~D78B){XZ5Yn3xnW??nOpMR%n@< zv+C*TsgbFz^FX)i17BB+a31O@T^pH0fb~JKa{(3$Z$CdAO3kg7dR9WMk$D^2bL3s0 zL7de5z_<9d|81=+(V3aoQcBJ=@%l)_P8++NM`H_5YRn^LQ*}?Kmf-MkZML8Vh)-`p z$*YrnDZD0(>w`KFOl#)gJ~ z`uFeO-zqLHt{K4_R{VJ*AR^*;LCTv5aLen_>>UivyoC$_8nX=Op4_MT74H*CDB;b$}TApIB$c79_)_ zGdltPL&tUp3qPuuIf(v<>QL^W@ISC2nM<~FC)?P@?;?EmObpu&kxj20;>hE&XOfUe z&7LD+q}{l~W&QH0ZOj-3E&c7gS6QNe*#pbN_MS*OH{(M@BYn#j^cT~@*J!*AcjnL~ zl|K2CypX=MAe8O1rSkT!;kwK9KS`&nyL%FId5_T3i=|J&+~5N$>l;de$~#;4{=^Bw zTQ_|PiHEF0cB_`8cVy%N@e15l7Cn!!?>r==%3Gg(LS1^?4u!!M|;WT*7M(iqqI!U&U!CBfAac4_ADm$OwwrA7 zNKQ^x_2OFZk(9&)U&aHJvE?J%FE>P0K}MLwb_z*VGGn^wEH>j=^1TVX*|mt$PH<%VJv{03(XgeCaFs}NXI7Bu|Th9)45-CQ}!C}$vIgfoS9z0cw zmp(j*UzD}m%n}1JnORwh%BzJeZoS9z=WH;~Yy*p3iIsZ6 z!XmA8p=RASFbEG2tm#=;WG}D*kABrcj2_Y<`q?|Hp>uLrb@5YBP%uA?6uObs`1ygo zl=I^7xH~t{Qyey0tQ|0NLaqV!?KYDPrtt7^hN!in#-oj# z2M@2q0!$-#_*xk2y>8E~ZYEtEpXl!lW4@+FHsSpiq@c?)j4T~2LS$;af;=93b?nlcu zc%Swcoy?s22Q1S9>Kp6+J|Zj^9d8fw4#OU-n*{TP2omZ z$W5Y7+a-SCd%`@tG+bM&kZ_P<>-%@_lm!f$`chBOxy>ITNX6Mr^l0otw%7--aYEoS zXc?X2{VD5}_;;pZ`BsX`8JBn>O<}b5LpkJ6~ z(X`Z{BEa?YQlHx|eWBNJ%Y!F64`+wQq}uUz$v3&&R$!Gj=iQX}Z2hT6>y)IZ3J&%= zxRD9nTsOUEwZlAN-$!x|{~wOrRnrk=3z4F6HY+WEt4{jJ_Trm)s1$djh!Mwf>I~m4 zA#wNZ|3DVjU~E93if^!hR^ust+Ho0?h6fgVU)+1jzLV!w^Ur~0+$bL2Z~M9;6SK*s zZODgm?&*z$}^IZ8za=HGg$^lH-y4z%zl8<6J4$;KZ7%T-)@zdURD1V%Q4~^Fe zYFJ>kMr3Un+uH&DrEN0u^5RxjC*xIFkQN%@qqHAw-;E)~Ha0f9gbasHr?S1wMBI{F zQVGpc?gwkPVbdlQnfsmKZ2I`x?lOM+Lzw4*ck*+U+4XCHA92Xmat)M=o$H;bDwa*J z7~;-14nhh2ihA+q+?-~N?w-DH-#nSlMKRL=U(LfwoxAAV1~;N!f&Er^)yu}a3$KCN zhYcX~z{%nZm78iK_%c*C+w4_YKuO?@`#XMz{id_Cxp3DMJiN&N`)Qy!?c4r7SmxN3 zjw}Xv)KfV^0t0V@Y={HqOBf$R>W~r>TL+KjN&YkFP`~YFQ0lt$YA7u0XD^~2G1~2G zeo6`p5D>$B7&6p0V0lz2i52Z2e;_vXI}Iw5t<~&m5+yUXweopV{m{o_bKZy4-r06 z>{rpT2szv^8aQ2GT+J0GpP!SHDrQ#DKdyHvUIWAKegFP9#d@_Hyf+NjVrmB+Nq1(f z_cd5dhbaB~XYrc(wwKO_53_UFGkrU@Cwi<}bYg+Ml08Lr>dLU!lSdZiNyT)kJ6KB{ zvvT4?RP#5s+^s!(_x!=V_Bz{0^wyb|H6@a%W+cXPWNcr1c5I9@Z{1z1bw3=|#Y(Mb zx82_DpMTq5)SqTZxZz`D5N$}SXmLGzM%+kq`Hk%+jDNs4t2FG;7l-!CD8g`Aq#5pA z!|*?tLnUQlVF7|HH2_2z+*B_iGb}^YV0}hMNqG-lpvLf2vpzeo>X8j%tHxrh*DR?A zm>jtnS4{fzjHw0wRegQ0rWSSWw*72nU?e055sdn<6g-W=bL}O!)L=x&{^_KnLyfNY zdkAdIyiY_$MAsp#YOX6O8VGe#O#7;yFr*JCNY2ML6j~~{O!$N>!W@^Wnjx`={v~ zvLmio_5As--@e7RAmrOK(9^HOAkfX|L?$QU;O4Hx7pZ{wO>YItG9+sA@=Q=?k6ItX z_$9}j?c=i*T(~C?Jqld)3wqif8E2jfT$i(d4r)8r7)fn!R~ai<%i%V*8VMLtg@azl zE9Sn?d%X_oOKvL!-q@kAw6ruG3$t(7C9O++$<}UeZegeG7zuU_)q^qEl=l2yW%LYeD(4RG$|M2MD`kQ=jTSQb3 zvon9v7H-%@7bc_FJ2bL=g!+_|t+bu+#r41zvM8>{PR%J9fC4BX@+|E` zRn6b_C&1P1-`y5}$%=o)@OoRCoc_HAl$BBNgl z7i`-I&~7WUAfg}CpTO!tp$EjgEq5eH69iH@9`PMi;JqkG)CK0C4LbiwwY0r{-Rs`H zdlkB(q9gNW5nB+7b;)E`cQsQ`n&B7AG-555+5m&A_aP(2J1sw zCo^u#FqDR;hXaOY`-v~KjEq(8dQVVS!#8sQLBGAkRS-I>2TByy=iG3}^7HfeV#28; z=&=n;kL3~wJ_RJ>hU%-9mOS%A-rn1*fsi5KRe%k5(kp<#}U3=9q)#cf*% z=UKGvfbz$7zK0!IL}B=?@Nx-(ux%E`=^_~AyaCf2ru$$(P}-o3|X!>zAX6Bb)WyANot$=oW6RvwuV5_d8BCB=~ym%;tq zqP_Qhsm!|e4$Q;q{&n5eZ3+hBpF6VAF4%f%}$(dy>Bdk ztHQ;o*H$#Pd&%nq?NQ_C1yQ55w#D?D7x*4Kthf33$@=$#$91VjKpTLk;x_Po`N#Cf zWCQ^=*F$%hzG?p-NDzGF^0&TBiw~wxm#5AZIUS)HojY|tg+fuM==QbdGq z^(|1@#cri9U+zLRQ~`c{;~*h}%?~F%L*$6D@8-K5*wgy*f;h0QO7`6zo56ZoqR}t5 z4poNdS!bOSmwa%-Ydw6%i5c60{; zTkLeYapMRdA0+~EIVw`g$~)`Vuis5gtuq=XL0^td#A!F6P;Lj`xXsKD^@nsKhhT_x znjNJY?n%NxOHdZjs$9G7#%Uq%^f0r*XNR#v&6dYd_B&?G_2=EE^*)IUe%s%x+9NV)MhvN}g`+?gD*hYM?pN?{H zy!3|tHaqoQ~)8OKi!Fa!ucm7=#GZfmXnqci5LWK(b4>&5qJz1vcjaPlP&jniV;$L=i;bZ35@+r+*8 z#68l@1MBETj<;;Ram1$gpiwW`|I~tyTrn*9-Me>XnC`Z{n~bF~Mtt*X{n6dQ7JpDQ z>v|mjM7dwOzN(7*$J#GLH-kgpjE#Fozji!okmZSi>JjMv{jsFgja-B|vat;ve|_JwAA~hTGWK*ab}Rm7bE~ zp{E46K^Z6sYE5zw!Ly8D5e}bc4gMBkUBYrbgWxvtUA^r%D*#b{Yl>Pb$1I#L7cicY ztlBFo?$xVTWYq?QmQ7fNhO~GQdB7IDMW81tCb*x-rG072Aw~pmQh>BVL~TN6X~o81 z{QyCZ^J*uL!n2bukqqd9>L;l@71o6l>Hf?G(9F0k2II3g9B+L9oSuD2=bpU<4WpKN z-rsxUo>W38B%D#$?BtE7LEaG~j#Df!J)0VTbJNdX*V{TfsllGe-If%A*EHQtSY9Ij zTxZv@;o!eI^~gxc9y&Tdh=LUW^2bN8;4VODxdPYel`GHBU;^J}3szPy zY=j`OK$QKcZ4D}?0%ovjYGS^(FI>dlR$1sp=i#wv-HwV;qo5wmi7x&51Jf7$alFn|PNm1DKx1jn=O91StaB*TGLvK@+Ax2rvpHrdL1n zW{nA{oTjUJ8o7f;dxQPJ3e8^_-LIj&^U|vn(ubX-pLT#XR(lKnbHiP}-89?&MSs!x zC|O0PyYpodsq<6Yr427@wY@A46r|EgW5^CIugOfUxMqCbn16x)t3i`~dP}VBTkZq% zqdYI!Xy$d7F7)b@8x7!;9@2@{vX%oYt-_g`hUT~Sevj)Z_96d*N}4uDEjP(j7QKxA`(KGSYK$W`1)0QheNHZwVqR z#J7#>!wny$ISX-cDCfArJVvH(UjOdh7MMKCKtAun>d49AS;n!%a<^lHH)`+Mt$qmt z01IRq`QmykkVbSvmuG^|z6kj?HiKOaW{mB~RbGhy1|x(hhm~!1*bXI>q1H)|Tk zG7@7lZAM{`MbqqEIcv0Y?beG+PToQopv@Z`92|g{?_%X@w7K@TSky#V!zIN|F!dl_ zj_~sz0Ig9C4nm?02H`UBwHvDe!2JUQ<7~QWYqvx5Vig&<*pqhI#N+~)>?f{2sk3r& z-k_hAO&}^foal>2_xVQ67kVtGV3@muElV#XRP@Gz0{sllIt?ToaOlHgENQ=tJ0wUx z4GU^9H8lz$A)${LmkS5L7982;IrZK4G!d=A!F#^|&C{{``ihd0Z^hc@fG=-OZ8=I$ zyY+`hK4jq2^XuOHQXv15u z*Fzg+8N8Yw;h%xckhawyD0BCH3HSQGOYwEvrjcqX$y+1gI=I3wclInP(8-Yk zE6hXCSZof`(#kmky})p|bOJ@zOU!&suqcAjHP#q8{Vg)E+^G1;PzVC6Wqs9t8>{bN z;%_wJrg^b)DrQg((AWs^o!=dDE%mGb@o%02+Muw1x3n?1xafp&CjECQ5?yOxDeNQRBA& z6_8!Wuq|Te)^IKpvZA6QiE2ALJ5Dqz%`YsJL-PmK?*#<~Kn?7(AWT@|!;8Ys)5^}S zVtYYg67H*}(|AT=u(fN9P>bQ|15^6~OIEyny9w{4#V$};k+MBC+>wY)PLQJ%(pW=z$qP4{4QoiXI&+snUPy!uaxP#J!+y4{jm+hIMo zuKNZBp>=B4i9ozb_IDsw5ny`hXnY|2fJH*oW$&E|K^u+;E(%l@+-BpIe!${X_lC10}mFm0^Wuf22YSb+4v40|z)scE;6PtReqmqS^)w)AL zYtKsm7N1y(D#M(=)x>wA`)il?luAjLy7heSp|cBJzH_3K?(I{${YNkUNDAY+xuZn) zHCgMa3c+UG&+Qin=C)0K{m4~h$44w@CyYj@0Mt~05uYFjKut=@$&o?uCoS4;tt2N` z0Sf_8084=q#PgQaY_p0 zK^b~)?gN~r*!zNFBaAh$>>J|<71qdRjIP7X5JEv`uu>+-UI^!M{~uT19mr+dzOSKr zq^)7J$qL!oZ7Z8ZMn%dfWMxG|N|9_?S=nSo$|#TQy|R<6jLOW2-*Hjz`+k3)Kk~j0 zKJL$bU)Ob>=W!nAaYS2{vtLI#=IrXa7J!lqCd@VhZ)6Ko#~nQzaAXB`!`&Vf6h&Bf zmyFpRI!3QoRaFJ>Ufl?0{8NzoW82qmQM%&k>&rxUzYXVXW)rB=?1woxD2q}5n=j1U zX3nvff->NkO6LtDZEd`liH85X0x*$#qUgYe_kwyApB=k6-G(wnmcyvK>sAD zZip#`;HCIXA7EVMj_tIy-yV1!h+3`JRNiCqSTW%oN9|8Q33~WgM%SBEn{v^#MF+VM z@H97yRW#97fiChM*}HG3APN#OE2&f4&m|~5h?^@uvG2mq96qcg^72(GR;LI$SZ1L3 z@)>u{5dG)EFp5aG+*Dq}s>tY_Chb05_4_Pd-Bqy9S8n#wl@9fEeZ^)Kg*I;{#a-8L`N{7#|GMt?pM8kG ztQ1%n#zHQEwxB9j?$cYnxuNN|52oLLQiwUuw)x#be%`{8N8X!-deWPVD>x32LB>241|u8-IWuWt6ry#ER9n2P{b1CCr;iK!ndQ20dc zCf1=9tQIGcT66mIm69gp{3NjipJg|o9w`L{Nfej3I*wZ&s%+au#q~Z?Ba}-Xu}pjM zf`UMDPoCUI^@_aZL2xhwFyIr0-*KRB7v=OXhx4sWqSl+OXl9%MaDmgXdthK4AWKXo z5?WBiP(0lU8Klzk^715sX=-9;eU$Ok4mYK#^u&jt9B| zt(jfta35=n)i3Be0ezCrc<}h~}hIl!l`lam44~g+M%u3tlJ&5`FVL&?CTFh$cfLWVI7)vYP-tI%L@@fNuMsW z>2MM%c8C*k4RpK}1bCYPv5~hT8~2E=Lph$5I4yw1iKf^l6f4_8EKq$P)_J!Jx4lt% zQ}25mFO9c7wr*jK?V$N_gHlW6Wmishy7Rqp=g#qo3xAWN1{(*;SB9!B)FpfgE2%qH z^9@`YkdLMImSS8-Z5mP6UeM`oKKYcUWIYvsazE{tRok|&^xW+ja!I>zjl!t@H7!{K zu6w?ErQJFI#g6EjBdDToFn@M(TKV|x%BPFmmV$0y&gITqEaOH!GoHgiKzz}e7^!=T zi3Gz`5zkm}Ys3{Mc{T#~G49 z6$a=+DoXrYbIMaJJk}?qs0DL~06Jwu(5hXx$Fwf$ACx*zQ3JAx5e(`nT8^pmn5U^l zK-}7oVLNIxcK7fp}svv=mysoBdWCe)iYZOUz)92>jq@4s_lu50mI;u&y}YB0(} z2Ei;n(q2j0+s`RaUql~yyf_PDPDah(8*^D{A3S&vUXLQTFo7VG+r+LMM+2=U09lQ# zAOra#-!fkPv^h>i(sC8u6&ym$bY<@_kLrL44$ZCs=|kR^K!pHPJMdaThB%_>eh|71 zuU$uON!X)Do8U>MTK~CUfvh(0S9I1~8WMp7Ahg(>k(cTrO}g9FpAZRx^LY$uSFH@x z#X-2~_WV!Dd8Ahn7GNPh0C(K5*En*_pytJK0>n{wtl6SQvzvKH0`GL$k0N{ zY52I>-Drig?6D2L{lb6I8Y;eI$?Xq~9WNTKd=({PHkT3pR!KGRUf^{j3imk*=E#W) zSyCH^XIB2Y7W02sqH<|+8R1OPc21{X-7mqli9#{v_^Kzcy^0=xo^fmK7L}I~>Wd51 z`e=YgP%(*$GLR9+)_y|~9}OVpD2Fir#L*~>b|@jZK5=)?YzVxGgaD^xkdBdIq0_?n zUhICU!C)l#yAXHo>LKs`lA)S&qLqn*_}Sbdr^S-fasqQ*O241Qv=?=dMH|L7uV z4Bfd57U}ua%amv3an5{TwDr#*>wQBL9A#sa)0^+>oUNdBhpG%8F7#BDwvHQbAxh>ZV+KS!Wd&OPG^}_fh#_f ziq)du<8#2vr?!ClPo>n82TT$)KFzEQjNdo|IKK$~202^j=JDJwBbt$!f~r-4cl?`Q zqFRidu%E}_Nk;K3Et1n>QLsOBcPFHFB_cOcZDVQqFPH+UP~a&ZhkBddIVt->KkVsq^3wk7uCFK5#j9b)HJHSZOc#;MpUCX*s(k%wu-a zei`$qjrFV0S;Jl&&sHrc!2iJesrQ-8*t_xPb_dX`T0O;Q$^7BVxfS$hd@7swYp)Nv z7LbEJyZ-iZd!?W_cu;TNw9jN0?I3gF(}yKBA9K}r zK26ivm9rs&sPBHC2?X|ZKQNX{$egjdygz4WWeK9y zK}exsC8{R;hCC748FU~o9RqH4#uzFz+c5{MJj<!z2EhV8;rz4TM0c0S^IGmawLNJ6-6w3$;I&PRwCx0FaU4HU6R*bp zYi@3RRj%Wl02vk2dUs37OcVkj{z+T6C{b<$hKu;d%8-?o#x~gs0yfIcz|ZG1vjjp8 zv#@O5z%yDG{rJoz8iSj+Z+F2Y(t3~l-Jjq>sZR~rh)bae@~xS$&7?r}2i!mVlevO| z!uuHy508kazPpT#jY)2SD2;ta^)!yH|8XOH2-0=Mtx=@{dh+!4K6rHDi_0&oZXD>3 zr+P+5la(Y)dHDH@NIkP<%N-1MG8{D{6q@6xcaX4vAV_`w{P}{as*QkRu!~P4xI@b6 zg1f-za~Q&)B%&-PvwmM@aL9i|(0=Cka^C(E;L`VW2n zK>P60AD$o-M9eS{Mu_|hp`ypp#Ut%me}7k$_Tl)sb?eq0Lov2_$Bs3a2XY^3hKAt; zx0$7-s=ZihHSKdGZGNABqC?h$WA?5dZmDL1f~ui3<1yDq1+$lCQyedEsIj9_l+C@! z@E31M{SEyl>;&Xb&I z2Ufg(4Lf>=ds9=Hx?T|=K@XB@IAl&Azw@i|)1gC$NUH-*6^n5+moY1jfriwR-PxpU z!|DEI<}%4)ktggI7tj0G_VOjgc*qsd0AZsn1|Ins6McT!A3;G$#f(j~1xW_61Ri@} z#NZOjCBhrtymRN;H(JS-xwy1QB(ei-SzH+Ppx(Car`XVqt~_@P-R-EYtz~o7okU#0bR!9a==MzSPBH_a z-PYK+9q;fSxckJO!}6z8HAVnk1103L9#-4+A|Zhti_sHRvD4!3ojCbb=)QpbWKGhF zW{y9^U^Qw=E@#8hV=sT4*(lsgOYLy;-Azg(^vlT0_X?@#&a60H_FaPa;e$&BH7o@U z?KL5av}5yw7A6euWV*A#-AHlyp0FGA<`zSZhkJ7W8M}MJC6&&-T`?f$R(rmR*sY8S z<+nR1{^fXFQw%P7MA4nH@>H9~zB($il3gC7dEACp~W@>S};t7}d1GP_R9_SfeX zo!@uO3bTy%S6=AW&Ck2@mMpotkU;*^zf*x@G zMgaj{-h1Q^jf`~n_EKWT59Oo(H@%Yb@{<^Hg4B`O_f9bkX`ydV#$Qm9OM)nYA)0-@ zYzrTbO9N*y|M}%Kp--dy!MGC!*8TyxL=jU+eAinc5V$A$TNpSl%rs?*k5Iw(fEz1Q zIQwU`Vt`{Ve~q=HK|t%ltQGDbHmLkf%NFv}7)sg=_gtNb_3inIi>>E83WgJ$PxJq7MymDq zb?@>L!S`9HiB2w6c^>>hW0ewi2#j`^e)jkS|6;r`V@ugExQ3_%(SR|GV_*L52$?S$ zYmPK-xb-Y)u~mTojs~l9#=ObpKg=Z6ZlB&`eex>KI$gVR*0V+4KM}~Z^&dM9hrI$f zUel!nh4{G))CPf?w5Q-OP1$f)+#XR)zfm3E>?^6aZZb!H;tp3d2+XC<3%8O{8@gSm z4Sv#v;aw*K2Q$atI{WUWn5o{-@hAcx(ZNCJm3h=9qkNI=>w=5}TK~I*^^f>|r4q%y zd)8gVAo^?eJ6hv<1@eDCSL^|Vhyt8LyGqV3|5DUHvh@4(?_V;yI=_BCwdP3Xp9i__ z6JL(W8XkI_%T5OSc;hM~qt)Y92Cg{Pcabt|>NZoA_cHvVnn_Xc);&drobx_8emLi! zL?4RQab=4w2rc;Z+u2s_q)i0NjqR^4oocbqt@GV+lH!73VZ(yne$U(W|M_dUzLJZ( z%E&cEtrco%$+n&u8=784XTfas=dneURdsdk1s&D()B&ZTcLQ#=_41a*uIw2l=+C&D~y*|b!M%2uEW0X@)ZVynPzxZX#3%3x^)l~!U z2FgW&i2fih1alO0*Z=RsXm27Ucd1QY)nTq$I=^Or&$`pmzQW|_@{4Uf;50K}?qCM= z0NBpH_45D;A%Jc69Xz-SZ31UiHkZsyeg*~x(ky`376Xuw`_Hya>-?c|u<^66ebI5A zFe*}hAE5ulNA>WR+~VJ-$d=G}&-vdCI0K)hvK}$vt%=PF7YV;vvIM4?WTyH3w|{M> zwH&;Y8dm-d-j?l5FCH`*{ilCTmGSzJ+L27URogbMdMvzB!|=iA%j|45u0@7y22a%= zb00ftS28?VU3X(3-+FAtXG^}CsFVfcKaYT{$>T?s&}Kd!faM?*#));@Q zN&QN*?oO_E3vU}LsHZ&IwIQv${L)Fw%96yS%!dyj(EKJr1yR1Y{^z!RQ&&H0JXkQ+ zZCxMSMY(#a!Rh+)eT^u4nYe~0ND6dqTSsTU1Izh+g7KQE8&49PqK@e(#vbV-PdaYu zHh%{o!zO-{A74GbWC~&Xo%2x3JXgMitIKEmTdEryD^sfSZVsSXf0&vwv>k)KMQVN* z4fIrAlv7_E*<9GrCA=}Ve#NT{?z4`6A1p#e0+mA%`3RP1P_H78IP^fvOd(z9E8s~> zv5;#uG}$$>dpAfE)Xmh(AL_sV=IR@6$k=O|J*yOXr~PbUBlGeb$5WS?>`SLTa#Lhg zptRmH2_d18|H{U5KMcRe{O1WaEj_`z#o8;4uH`Om$;@4Ba@$p{oUm>S&dgQ6SAKkf z(qz{Pno=AnH~8r(jOMbcm>&$uMu>>0g>#TK@LRv@Eb+g z<~pgbytXhqqIK}k-uurNRV~*?&c2a2Q##jLS06e1pQrKyPeqpF&ciNe=Nn}Iu`cgF zVGWVx{kKzO>8b2qO}D)N7_en#3>8E?xAM3dy~W_c3tE$^eN9N`j+=G`fTNh`!qDVrYAA2N}T zYK8Ej(0+7HO5y;iq8q$boUFbtulx4)^6 zRh}mAXByv_e5IrCUORP^gp(VyZA(hOl)K!es|J+n>qUO4CEPi7L4hxA(m7MrprGo} z!wF+_m9wpe{51PS?Z=T@fI(5#VZ)n=Ke&gR~_2;V+ZM^}t*)RKj<9Q3lJ4^4# z?OjnX&;9w%@~I$o;oK&+pgR@HvKK4%tl?3KTV^lR8oK|%A1Rzk(<~}y&ew9eieEud zLb_&&@#&g>kjH!Mo5&sCj642Sui)2^F%>=MlXcsIGWCeq4yw;^uAJ$Vl2TPXEVMR_5l%QK;9V zTSN+Gv|@~=7hWUNB+PJ9jsT)3aiYDw{jvqhM0D3TZ{F;T~7MJd7a=Hzmw4)C{_CIp2Qw43JR%x?-L6ae%0iG^y#wqZFICTe_`E+EZBP}%GT4{~#F z0V$4*+?4gVzqQ!}YQ;z7x!k}NNFxi?Qtdz&3D1~5d=IIZXTHACmN%4?wm{zb4%8zr zqD%_lGu%p=!hnP^w;|QP|I^~r+_{aWX*!>d-e$hus;nuq_ClHGfrl^B1S8h1b6c

)7;^XtIFG`<6F?%=kFo4ax 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 glGsfkBAdti+IgfYOMAq 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 ai9Oluq?qrCj|CI8pYm?iT?so5pZ!1bq*tB* diff --git a/docs/images/taxprofiler_tube.svg b/docs/images/taxprofiler_tube.svg index 0ea3460..87c66c8 100644 --- a/docs/images/taxprofiler_tube.svg +++ b/docs/images/taxprofiler_tube.svg @@ -7,7 +7,7 @@ viewBox="0 0 555.62502 211.66668" version="1.1" id="svg5" - inkscape:version="1.2 (1:1.2.1+202207142221+cd75a1ee6d)" + inkscape:version="1.2.1 (1:1.2.1+202210291243+9c6d41e410)" sodipodi:docname="taxprofiler_tube.svg" xml:space="preserve" inkscape:export-filename="taxprofiler_tube.png" @@ -26,7 +26,7 @@ inkscape:pageopacity="0.0" inkscape:pagecheckerboard="true" inkscape:document-units="mm" - showgrid="true" + showgrid="false" inkscape:snap-bbox="true" inkscape:bbox-nodes="true" inkscape:snap-bbox-edge-midpoints="false" @@ -37,14 +37,14 @@ fit-margin-right="0" fit-margin-bottom="0" inkscape:zoom="0.71542514" - inkscape:cx="808.61011" + inkscape:cx="364.11916" inkscape:cy="440.29764" inkscape:window-width="1920" - inkscape:window-height="1043" + inkscape:window-height="1163" inkscape:window-x="0" inkscape:window-y="0" inkscape:window-maximized="1" - inkscape:current-layer="g27886" + inkscape:current-layer="g3070" inkscape:showpageshadow="2" inkscape:deskcolor="#d1d1d1">FILTERING)(HOST REMOVAL)(HOST REMOVAL)(RUN MERGING)(RUN MERGING)Bowtie2samtoolsstatssamtoolsstatscattaxprofiler + id="path1461-29-9-8-6-6-7-69" /> From f414f5dc9c69b3ea74423ff02e2314f80d71b811 Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Fri, 4 Nov 2022 18:20:44 +0100 Subject: [PATCH 456/789] Add falco to tube map --- docs/images/taxprofiler_tube.pdf | Bin 61523 -> 61548 bytes docs/images/taxprofiler_tube.png | Bin 690724 -> 706137 bytes docs/images/taxprofiler_tube.svg | 58 +++++++++++++++++++++++-------- 3 files changed, 44 insertions(+), 14 deletions(-) diff --git a/docs/images/taxprofiler_tube.pdf b/docs/images/taxprofiler_tube.pdf index eca2dc7911f92fb23cb92de62990c60021ece645..b0b10bbb2a1e45b1581dc74cd81bd864bb76b9dc 100644 GIT binary patch delta 25237 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 Q)nNgH!y+!OrmN2Ke?kXKW&i*H delta 25220 zcmY&@cHJW3 zC6{VIxs+NKX(THv8+`o?$&K!=K*Y#Iwl?qbHU`+Xx4rc7ELMo7p{#Wp}My1<6v*;Oc{2+}qC4?rVkiuwyowgk&lN!3ATuU9E{Bzv@33 zKUXl{Ti-9YnuOl8Uk$q6EFzK>nLfAUUEhnpJdU-)+Bj+je`^ zW^;6(BU2P?F*r7d{C=^_!5)LUdA_-68}wdL`PssPWA$);sD}FyP`2%5U%K!Y>P(rm z-!>er$Dl;m-998e7JRk+N=?Al#8sqYIxX>Hojg^$s0^V(?N_3pU8TAy860x~ez*^Cx%s;e9hr;pK)y1Cti<|blq5hm$Qp}#xHC!6B^9ibQaGuxiv$WK zf94||77eXGgi|N@u`9;AL)mgu-2~3$QE}tO-Z#rB|tj6y;So(8a6!`x}Ef0tcSeEY=&%P3Z5x=FIRXkZ=CjB%!h2OhHSK; zy#hPX+W5SeGheHoy108WYS?N;F=^;~XV>6gn<7E6By(#;F zO~t>2cpD$E!98+{ETQa75VDF8DaBbkb&KC2RLK35^3SEts5jf{p7875#Yv#BiT)7b zkJA|sd_sAG1g2>GGi=-ILWEHZ$!n9;@BaE`*nPGk(Lg&%hcE8n2{!%xvx!x)&{Td`yCW2*bwMV+ zka3XEPOHkJ$xP{M{SG|snB<1dkgxFAwNi{luf1|vXXV)~FPr+#kcL^f5JGy6MG`H; zI!ik8XlUyvzteM{M}TunR?${wrRU;EbBi4s=jPI#5WvEoe?y|)NgY9k<;oh za~A%Za^$`Uz$wxsf7wuWDEOXl^=CY0hJG=Kf}u=01%+OJ{H;clIHZu{`l-*OZx#P{ zC$kF-mkW&B1tRm1K)9P++$cSkOW*u!5kxL%5;Ep8t#z z6Q%Suq}7SY$VyRq@u#Vki#e=qq?436nB8SWvp_!Z9E_vcI_3ID$NGyyiORmvI-HI3 z;y$XHfEIaCNV#*}{7mOv({06L4&;j&Sswv7SfIy8z3_a7)hkgVFPSVfksN#fScM3D zTiXh90DG$(kMxR`%NqJi8;Ux>+|Y1e*wR^l+Jnl@{J-d-A1~y)@Por_><2JuoD%WV zB}VDD-&sT9fTigjOD~=ka3w`~+e4;Z`S+)k@%~4mV^2zs`2v_(7Df$U>01#$tM0KL zV;>%}+m^n2k@|oNZrsXWf7XUc1)3jOJ-1Q5fV-DE)25^jrq-K6r>gR?o*)`$nf84lreeRn9!8a>adYvDSoNkS&3$MTGt%Iab>rEER79igCAZZl0SZ3KilbjtexuHb$Pvy2jjwM5a@v{f05SzWjV0vtNT-q z!c^y5Tp_8p%Q$@{wqGT^G9-Snn=hIKh7{X`qtA74Eyy!ocOn;~7O4G^H$h_HtfG+1 zgr`6*-`Y#_2x-WEP!PE@bsEGGh0^~spYgnx=ABY!$Ic|~gX-gm$q;qlpZc#&K4fa0 zhUDWOi*OgwsH)@ZK0-96;>&mkB!cV)Q3u#Y=yRIpRVeUbg7>=eH)u*c*`{z^F)` z7~}!zf*NOxT!v9@eLFq1yd3*CuwYLByl$#ed^5V}%JhR0XMuomd@QV?T7igCB|Cgw zAIi-hzk@yHs;J9R;B2B2VTf-DqvKEUgWQ*g@BSo~+RR#$6wP0+tP*5TH|1IEDCCdM z$v2&Tm*(!Tzocb#Tx~htK?-osEXvCBr6o`4SQ02!T+Wt`&3sf;nCvYVf)_ioTM0F| z0(hKx-1yQ0r<1fK%7|WH`+5dZ()rtD#!UN_{@!={7H*&ub~3R;^eTaJOND#Y3ekE`q*jRy@YH8(^j9P@?7Nxj2rQ&5qB`3pNkbj3_wv1;Qjs zFV|!o;#eABsZ|I6QgQf!HrIc(jEt?E+v7Ll_6bY!e>mDb-?YdwvzTg^RN7+l@VY z;6w_*RugI5ualn~paqb($cHzi9=w25-ls`L;(LmW3%sg`jw*=Om<7N7ghH4IFOh;< zrKsmRHhqj;lgq&d!JUxL!6@@-?a2GdtO=y44=90@HK^eP_#oF|?Q^PZU@fQ^CH)th zzTplK>5_;xPKJaP%~jksu3Xz|OVzWu!*?j z0tm@GQaMoW9ZyWt?kI-!U?{S`N`6g3g?a(us_`0h6j3Dh8oF-9V3S?v^8=6>Fa6z2 zA|*y5@L5CrXpF2^ZJMH&7gRk72`;aDo23(iY%IMnNz&KcYg*zTi8*#6wi}AnXU@-+ zu7-xm1tH3mLN-AN@6saqmbS$~j5=ECV(Vhn|EzU6E`u?*=c&~Y?k&$Dl0~0Z%+U}M z-=Z>SxLL{diDdRoeV2|;I-vXe* zToCpyxITzCFs03nrb-BL;Wi4R)P{YfD`Vzygt2gj)y_;UO69jpI}s?tqUT;b$YovR z8o?rnbtF~nNeAnGoGeX2ipx;bi4*=Gz?jB@Lkkwh$hvOwd_xfC?Z-PVI0mfUsfh#>32s;?(MD z9+asOu9T@8<|M9!u9oIt`rU++Wb*NA=v+XnTK>CIjTM|N6t_9O0T__-gRWJnOt5O7 zxna66;gFoJO9tjSp^%E| zrv(moXX>1(PN`^_g9B`5Pre+6|@9ma~H5U>OIIR)TV@&PQuu=1ZLFA z;7GLIN$00elFqa`0Fq@(isEpv7WFTjlBN|t^^KPIP#E%H9SF6#bmJ&BplD|OOYB?u zLI`%b8ZfQ$XT1j{93P}Jk>Fml`8`B>nOGT`JiBC>x^fbIVTf8)sH^Ee^c@yY;G}pB z@R+qae8{xg)LIgJ7EgYdij}FSTKbS(nFM~V&`Yl=D?oHcNrcT^I1yW>{;&2)XO37e zi^uF%;Co1o3gX)IdJmZYM3lnJKi}U1l?^2l9MRNSxL@#S34q2e?-9qz{(W!QwD~kw&UWVDi+y!mS(F|~`ZW)|G!~a1Y8o45C_#c!!7WcxDYKnW)|BJI^SyTPI>Ffyv z-hajPD-9knt!h=iCEXB1cmIG9oX`?zYMeR2$J6SV&dcAG{->x&<7%)P(4NM);boCR ztqje*Nvk7100{B#<*1<5ee*A~dXHE!aGAQL`F*%^g&xGrDo2~bMV*=*H|7uRxXK0k zZp+q1jZ#*Nd$QWxg|h#3;xCU9WlK0`{|G@Bq43(Q!6WTQ@P8de#Wt!Vlr-N)4~8q8*OPr+2SK+gI2yCa5XijFtgzHUG7$x+(fWWx#))y6Lmz6f=Fdhv|R+uozq!fx#FHd;>%REy8(7dKul!7T2jG7fn-t0BF^fQF*g zlz;}ce&_0YcRe&b=AWp-X*og;=I%l|@LNGBz=K zPM}6HQ5OOt*0W`sxw@wO>DqnNhwHvdGqDkiT+NKm3EEA8RdA^Rr~kWJm}z%`e-xye zyx@A=@d4Fge-qb?`%LDR{*&U+92M61Eq&S+394Z_zhBBBy=~E)F0Wz)Bbygp5ZaB# z$0d_!9%_?3S3QQ+4F3Yb+-KX$T>Piq@tLdn$?ue3fYL0qKUrH^qsC-fv7op_!WZ{p}Z z5tJR&BzM!)%l$CrT15Q&6||LpfugLN4JzPa^h-`>nb)bpg-$PDuHI3rc^RK8Lp7Se zw!=|+bGGQCQB4pkJx5&lIzW!urqFWtPfdi%mhZDNAvm1Sl>+L_d2yJ?mA{nyhC{MB zKm<`!Fy_qR@b)o_R0iZ4#C--|8LbsOa?+yd3_XT|P27`Q(F?HlUUdy{@fbHui%VLx z&^hLuYosct6=MIe(AeG@og?A9v2kuIOySw(<2v)HZvkb1?_h&GKKLD{)CHBNRGV-+ z&vI=`!L}hm%Gl;b5#)>7bu*Kh>!>St9@19brV}&8EJ8Jj4X`Nr7yWjpyqiJ|Z!H}z zYONBvVW^!J>j^~rIel(LF*+7s{MD(|3Io_{#;APCG@@pY!$;u?TH&@NR-bZ50xg;@ z`IEX~B0Uy5Pn8|^%ec~Y#yo1j?R`W%veNyn11p7@XV@eBF#TfhI-Rm^q1^ZpfazOr-q1Nj0!Cgh8z~ zR<-;$T+EnONtya;c7ofc?@M+j3)H5Z zi>4lilj(V0)&B4fIM9Dsphf6IgrbXs@vNhX|BAqgqFr7s8~buj@nYn7Y=oV6bNs5h z`_5l+uN1-TM&t~l<<4}8`Bkp_f*R308xM{*bYe2OT0R&FH2nI?k6#KUHI!D}x2eAV z1I_jpeiS<<(#+DUN-gQ~N0F}NGXZZfop+TC!QLOgSf9CZ-R~mXV2$dVTz8FYDEo1l zVbzr3gC7{Xtyae0bPL9UsKLQQ?Rc$A&C~11$rmH&=FykY$X6--T|2|w$s?pay^LVs z#%*Ea3lAZ&v6QwM%60n`;VP>VOlj>(0&rE__ciZ4AnJm%@0*G*(mIIFri&J{;QPZpQ&)5Q$4-Kx(EDDUzApG98>x}MI!0qR&g?K4H~ZrzLcbyA;|X(%eTEBT zN7(x1Acjfs<85y1;~@DHO9B00sPsBuJoM_=%HVvM}g+{7u^KF z+3e0c-8-kC_Zp>0+zRTFyC=Ep^KLGt^H=I=1h~U%q|jlM>0iI=WF0)UmROa617P&V zDyHI>Zqxa#kxOX7U-FcpV0u1ahx2QMP{;FYlfL)+fcoX<1M3s+=V9TNetQdx_QZ+M z+eKQgUnULH^T*p^*Hg^rw+{wS6nQQUipRA@!T;>JKli(a6_(xRM-Bapbq}l+|b{c?SFe{8A(cXfDOFQf~3&y{^{ zup{ko@u+~yTm{Vtn^J4!gHRu5RXjqkY0ET%Lgq zVO?ufiJ;n4iiDA=&A=fQlVkiuy7a8;9#vE%WaIj6y`4`bgP+Hucszno zFdk5>Z-s5>|0>j}zn)ZqiFL)_t3#i#Gk# zapBe+5@cgx2kgERdQdukJWaQ2nUtrtv)6{#YZz%u-K}`OdVTGByJx!GdfS+j`cnL& z!Lf>rX9Zp@?PW^a?(E>0*-mIwYO)P->QhHOq>~SIVE?!jJXjsvN#ACyiL%rRl(zoN zd|lJux}uxL`4s4%wnj?voA6pk`?zQV=c9GCcD}A{X?EIlT#^1-2U->`&7kXdwR~JA zU;nyZ(C3*NoZa-`=j8%nR_BKC=&7`$;o1C_ zvm`rDIl`vx%9J#!3eL;zu#xoy^nxA# zprr&k5EZwO3nN%KQGixmmyjWx-3fjT)H`MD>b!&=BG9~aCy!_cJXgsL4cTj0QxWQdl;I?q z(RW0GxY8RMywlUuG}Eh*Im*zIMZqNpUVgERq0<*~lyD%y7vE$mJDrmic)2qjCW7n? zY*&wm_H4}@mcKXIJTT{d?FPk_6C}fUOBtI9g%O@?4rWXh1STPC;xz~nQ>;!mBkELT)+ zG}ThAR{jku*7|DueJt#`^!neZov>s#IG4>N+deF&%bKoqLC;sh4honXhd*!`z+Yl? znRc_E*8_Gw&;Jf6Kbs=V!I3qkk%yVdo}N-_f9+S!3~zZ*ws3QRj@fU;mz%7m*JK>2 z;+-R=P?sBT`)eo{#6QQ{lhyLSjr;V2*r7mV)MPU_#zOhx0*L68@j+yI9)ulkb5c6R z7(69US)pKiHEb&U%=Te-`F#~HlW_2ko`I03<@(Z2(QQ&5M`c9;g{@G2 zGvBj5b_kO>P!o5dkA9=t0OjKri1|_%xu*s44P4!grAC4|+maP0lZiiC_r;1E3|CWD zDbt63hK*D}3oYl?fVZh_vvmLM37Zd{HmP5gDrD5#q&WWs3$>{Q@k=Lu=}dU@UIqD! zBLH3S{!CRNOFW&*5x%+^h`t0%o;W-I?SyW16di3r^7NTTvtKAogLclRG-H~Xw9hu)?xhKBMmmfdY0|kF$GVRK+$xBrCck%FqmE)Y>Aw=J z{Z^21_On6n(8RWvPKmxg?TkuvNoJ^$`<3%&`-4diW zx^~}Gb-TVV-qN6LnN((ytwz$ed36OjloZD+zF(Xgu?$@cq+d2L!lp|-3Em^zB4Tzf zVPc}r4gSS5#7Rc@;Yo9@XKcsE#b~eUNXx8$zPHBW0=|g53&?!Mzlrd<_;T&}N0w#0 zgUkobCagBqa{xQ}jzYdGo!+onrFCqhxO0`)spfctwrB0!Eg5WW?`A%yY}o~qp-eU@ zsv^JLFpZpA)z$h2PVSn;62=-D@7p)~Y|`_&ZaQ~MR7oHTT3Ew+9`ISpK%G1WhMEMn z0TI-7z^*r;&dW85+&AHSi1i6r%S65^)2>Hp2#AWIEGw&cW)N3pB?M3R=n_!%@R5_V7cID5)6P%%(FSADAuT823pGJ z)y^8%=i}wpwbGpxFKytZYdX6(lbUo066$#uSk=Ogq@Mo;q5ZVwtsIzeBDtbaret~U zG3_F$x+iSjWQz6oLA}h!G4$`?$0Uii7zs{p$Qb=3JzAiuxHDO^56=yYVly`461q;6 z@QvI@oVqfV7#7Mp9BWG+hnFhNLqO&8IZ6CT%bHx1iKs*WU6E{)Qg}W{Y}n zVAPp+j8Mk77D(y_bZy(K9KU3(pJceak4$?8s7;${Kkx$fh^5pF{F61vss!?eHHm;K zfRm_ptDFn2uPqeee8Pfu%fd47_*bpjBwuO|%`@Dw^7zGjkAt*nS zk}QsGD*7gS@(%KQ{L}?;M-g;On)RdsSX$*dI83_mc1U4ui0%m&Ld{=y@LttTGx%X) z;<-cdPBVh~vYqa!>7zn*FhIwkkOj5L0&}BB&^gtg+Z1IFrVb|#-8bjfB>Fp) zAw}R%ZjGxIP_p$c=PJ-Q1nV#wHuntkJ8IknNIA@5kSQy=bEC*yo0d_Vnk1h}^ z5fwn|`b|==EaFy6Na)NgrO!n>{Q|%W%{&nKZtZ7spVJrNBI3T5=nJc? zv}r#aMsd@#9YiBN*3lK>YStQ}>_Bf6p^HC(yOruXU*Cq&6hq%3 z?v3zz{I+<;Svu178N&or1k?zcUQg_!$dDL6DTx*Y&skqxmIv$!Si(w<)b#FvCn_Ap z8%YIfvA|JDeGdWFN{b{-C$>=ELpP4ULO4{r#0E^ESIa!sD<7|xEB&4#J+(_Fp_gc{ z8B}B$-qGXO-(qPnT)q_YlDbWo!o1Sz#-39&OS@;Gp~^dUqh#&6&+h z*$XF`N89%+vV)u8_b0tK>Dv97boNfQycEH8a^^3T znbb%wG!p44gjGdBFJJa#B7BaGqy};bc#bg$GoZ^X%Agx=6p-}tIQL0YEiep-!pJI( z@rP53lDGOhw~xgf zqzl<=uS>Dl{<;z>xr6zKx|P5Ob)2KO8$EM4H9JXx*h`}j&DMXktkSNC{&REHVs0C6 zzRACTcKd)jO3TPXy{z;>+tvhNnkbu&NoO=Q0gZ{4QcEP6by=Irgzq20=HMwwoUilKkIzpjWNb6WCp5Nl%PpBDscbx!d6n3Dp`C|5n8T!GPImrhG=rW8 zEsJwEKOG;ZBd*Hc2uq4I6SbLEvDxv`X82{P>J(BOOv661{L=^B)&eWhQ(g+hkA*4)Z*w|5-LPrc5b_nq=mf1$?Kh8mgxB&;)Rw#F?2NiT z>YEhz<9uO;6_acO!t|g62WQn*BnIIffeqd9fk+1$E{mX6J#HDO1cLLFf_&<83Nvpa z;hYLh`7?`HB&lG%D&XLhL7<_S2t1s{7e`?C;dp)H z$4Wgyy$OPswaKD|UO|^PBK-cu3R~@_%7p2e>A_`PSL6huWWzUHcDKv6c@G#jvx#p{ z5HXEK{ne-u?sc$?T6or^pfB}|?0muf+$*4~rAvROBO<3Iya2_v-S`ZxbomZ@b2kG|$+2X# zL_Uz9)0A6EGNOPAdeG0)8T-7WCL(EL6XR&H%>HEwl$H3R3X+Te)JF*%^I<23J-I#n|D@hytn z%QEZOhD?ck45*xS@$E3H9-ya#pRCC-SXu?mZp}P5efSYyIo>EZKByycchdCmyeen=4*hh$41X9gP`>lh((4@7L=;B+s`F}~q@NE)h0QR}u zfz3xD(>{6Y*wghgCya7%29=The$!c8aYo4YD>r_QgQaGJ19&N?H=*n?LxsnWK&pw} zQA^aFqeVaI;+W-{l?JJJO%Vc2(VYqT6Ey8l5}ATgHBD4Ou@UA*$n#n;xAeW! ziy6FJxX1QLG20;eD6#7CxJz~~BwY|@S1Jshx}p6A{oS!R8Fm`RB9;hSUkk*lj46ap z2fX@%Aiwz^oBIk=by8fC<^6wtM_XbQM2vBaB^wL2M(`+-&d*qZZsixFioqhveE5JO zqL>y3{ zIlDzPCiE^WY2>py2|-<(&Q4l_BM)zyl-5Jes3N05lyW4r*YsmiDAduKYUCg1#Jl+Z zl#+3jjx16g{V#7Z0cqUgy$&<#iFaeMXHQc7(E{c8F4i-sJL+w0nX7o1!(A`Ol4#8@Y--$`e89-IhjBI zh^(Re!c$AptWCg-Y@d*AI8YdfEcqC=)4r8ybrZ^vt&!M^rk!ZNAg6#fEchc$zaYpd z>nB?RtVWW}7DE%u*H34(LX>=3sKe%xLY>db9BeE4%q^AjBvp(3hcM6XJlmF$ zp#q2D_cR(w>PNqKcT7>80e;a(#~dVtb=jpvN^2&)%T3SaO^v?;k?^f=v5$@GYRONi z0<6J-0o&`ZF&ikZ@9jegN9t!BP(lO1W3I=oOw2o_uNXtE(Zp!*qtLqiXV>iDZt3_C z6ooKJ!L&Nl-C}O4;3N)_DagN!j_mH+8(|(PI_PA51GMRJp&k8gvCHxq5~D)S?h0ES z-mJ@CAom5X@;5`%RNUOR*3S1##1q%BhPtHNVEg3x1eT(=)9yGQ2dBV7I6e(GsSG@k zXP)s*ox17i7;D(rz1vq#=QkSQ=KNFVGtCC4U%T=iJwFY_{(@+Np1hYtx5bs87aR`5 zRmG7UOqN6m-Sw3Oh+|IqKuD|c(qk}x5I|!iR;RjJs7=ipS~|lN6*Y#9x9I%y!2a{X zrriE|Ray5M5wQ8aK`tT2a zqm>M0ypZ91&(%dBO1o9^70!pcEqFz-$QR`=lIP}sp{Rfe-;gX37x0^@Fa-1M|ma4hZF=6}r7S>&Y| z`0T$nZQK&ap&V`IDGABzm?r+u zM>N+wre3&p0y}w@g=4h2^!A#h@ANo8S{a~&O=6$tQ6R6<14>{44Ny-c1r7`Edp-9u zinVzq^bNuj^+AHNAX=g50E^E*so&K|8NBWd_yTiL;NgA;Qz-QV_=P^4Ig~D``FLrq z?L=tETTG_V2kybeQJ{5#(GZwcc)mbwpZ>q5)ii&HIClH92=eVA7(yT&B>fGm+GOs( zj5?p24MSCB<)yZbLpL`@684_WhT;BXrIF5`b@om)pM;XWd0XMEp4`Vv#2K~zZRMTG zwDWZka|Ic5Z}iDmyp; zPm!pko@*c2tw|?Xt_&(uoz9{zvV}#w8}Ih7PqkH{V2uwPM=z#zJ&A0;h2vg51yUBVzG54og62dOl_^?sRYFVT+l zfd$$mK-Y)JzYX%yIH2bC@35v9y63T|HV#Z4X|aYOZ~?)w-md({+_(6=n3N5I^JF6R z!VgR%nV&bkaFno;opl4ky zyYQ4|x(znaMX>LWC@XgXQi;H%+bMJ_KF!s62f`?}VI%-k#lQ~vxUdw8ZsUa4nQeN$ zBd~N6fo1{pvXoO(*{$d9PY_6XJ} zVyzgK$H;vRMchCR9KvzO%qGz}HHOwCt>*WiWJAXve%mGz3GAjK|0)IqREPq?t>%!j z)c2g`O+$WsUH1{9;p~ymSv<#gjDft{+a?vEgAag07GXi!<~H+qMFY@D3oo)aPqbq6 zld9PtW($QW#~0*?F+tkT1?1=|D}mYR0%gb}QeuaNAJX6<3gBgW5jS5=ghzW&L?Mqj zR|Zo|u`$8W^vM7q^l}X9bXh=>DN~TatN8k;YzQcsEz0upslgSBn}d{h-V>442*|nS zX>W}w8)A-xZQ5mrB~Jn2LJ~o}#>vbLQ|CRKJ1i0|If)Tn4lR8QX)oDZ2sYsA#{jVnQ?wXa&@Kl+-eX)k*f!dw-GDEKpVurKL{oH$Q2>x2_0$q)z?SH45!?LzV!$kr4J6QGtu*cqdw~C^uYR z{mW5S^~f|=xJE$@-jD*1HYg7L3q0}}zdQl_0}v|uNZjALKI9l)91KTEKXYSl#GlIv$IVChZoY_HgWWW^W8{)lt23f;54KV+Xkgb6Y(HxpgjU@dQjCiU zVLI@H#^4*L46gX%my?cF2=k9S!t>O)bP?tg-3-#S=fbI8c|z&G2<)*NrNX#2C({$6 z{qseZNZ0el^l7(yef@RAp0}C8oV5M;eX5XRYd=@MJrEm#IMOL1I+j2o^qBJ1j5YqT zG23G+o39V)pWuAhEs7mXMOH?KFRc1eDM5t0bjF7`qiR~-Eu)a=fb-q1MtSD}y;<R`8|&H#5WaEh{-}lnKpbY+8m{hsc#x*r4P;})S>|zEbusuYg`bSWb9CTb z^{pIlRol$n8fS$vr{7n+mJ6x$io?t{^PHU??7SP&ipbl44ghlLd73fs0&SVnFGd0J1}hf8`|vjRZ1KuThqePc_c# zmdF+#xN&u?6cqyz>rb}f&x?mBItQ6R^OcrB@ZS-!du;?MZ&H!=o6*yB2QEM_+))p} zg`6!KYK?n!a=Dx-T93)f+hKUlhS&$KgY%zk&!6XhlUT+%Pjmx z#zwUbO8p48CEv<%trK#%zk)L=9Bv~-qcgEZY+-w1r>LcI=#O@j4q;{)Tfl>;CB~FV zI*&)_Y#evj$`d-2i0n2B7yJS3z%5$i1Y+zdN4meU=*cn0kGhdrs|<)kPB$3YCU+&F z@0x=j40|bRG(-+x99<(~>-Z3O+7e>Lc#(Jt_>@Kk=bts*quM@5FnK zey7YLD3zJ{`&fI#F#H>C@zPX*?wx|tWsp!Q(FDTk3;?AwFM#G8cV|M7KBtHQ4n&wT zHs=j|ti*ln2p;+x7zEc61ewE0PI46`y=vQvc(6|{_?Y`EO^&aKe#7dqFLJl!Qgtdb z#v7f@uj{W0uqA^UfcYgg61w%;em3n^mwfg0o}nU7MhNPyeR@H-sCZjV`)HWz0eV9c zBT^3QtmJR}O0F3PGU3Mb4|wV2 z%6=qrX!u@q>=2bk2MGhzDa&;AzIV>7N*;qUZMGy>wJ10fIfUp8UpAK#TZ=ZXJJaCv z=P0V9P>6%Y%eewV_dF{*YI?zGPW{V0TwLj(l$@MK$a{HH;C(rf}K)kWS9} z+Dl*IssvFf39f|PU`TxadOE=ly7al^oTK9RYj2Vt`p@#nh=9LJJZ4+#UaoUjKQt_% z=ozUqtI7BZVl=^!9kdrLnQk9&O2qAmvGb9;toP@KR+2xnKRk$F0TEj$krMOdCImXm(~(7PoyX-xtnUap zQfv;w>3FoV+e$k85M`5*d1hWF9|5+df*5+xQ<>M=db~yJjya@Oe(|Ey> z-5#AkDRdNWkpDf!84mfx`X?vITrVh$4%IOF6tpDHhK{4-K)ey$nG$DHWDjlC}P4C#!%>#3{3BQ*Y9lRSJ!s~0kkHN6e{VKxE zHr+<=YoXmEFcN<1)0h<{AO#~D-I>fe1%8plfq5zM*wqrk>ZhphO;Yu@cB^YO%a+Fb zlt6V%?jI(t8vctTqA@3aB!OOMp=>0i!s;(w=I(N|E0#dwr3dX04+Zgf(_$8zNY|s> zR!ACJBVcT!DpSQ*qt$@H?94)zStDw1ws!o;SC||WV2wV_?kIj7LJW@0@1(Q#RRZQ` z&Tc#{-$g~)dJoqbZ9D6g9H#YXnB&~YV&QZ4pVpowOCxXRX$cxHO*L;u({U*b0p+Y^(eA)P)=wfkNXqlIJ2Te$8s2)gA z?TJEX7v|fSvD&IpUX7Nz1Nu7AhtqH&QRe)d8W*{6ZO4)Nfb>r|23R@j@$!K-(jwNd z7;`QpWT2nw)#Xw}>)6^%YH6md^p5cc-MX1y`e~YjVqO^XkidMj?F2`*cdvN`Gj1>} zqa~?w|7@Xl?u_>CtHYt~C#Q_LWn9gCV{W?DmnLlQn=emWyrgi6kA-f;6V{N?-}?Ha z+$&J1U#5*+tlWdhGV}+-9qFP^{qn$StY`eNS9(>c1&sj0r55N*@l(hbb! zIUz(?3=DliXjlupf{tc;5ZikksaK_zF`K_SiQh|PF-T)J7G@?g!Pfi1ne}Q0R z9g-E=<~^k%P3O$^JHSv5c1c)u?%$tAL^%!WVxoI&3~(5Ks|oo#zOLV%+AyOW+BE)8 z9bWKD-|XCT4aeL z*|L*8Lcgc?``-8ez2o@LVdn5$_kCa2d7jsG-_JJl2vz#!9lWU>6R7|77tgox_its} z@x3vPo}8a`jW{3n98Xo1D3m2rv(sFDo(;9)q;|62GnFeF>X=z*VScNDYl929CkA^x z5nC4Df8OcD&ob89d*+<4&og-_CDT(wPbiSDS2;Tz|M~b5^N~Y$8Y#~j8Qm`#h6`Mr zTgkkbS5Yb)w9i2qf2OhNoz~0?owY%66&D7jimabc8hz-H+@0`;pFeoo$BB5q;D658 zj2Yk{W|s;}r~0%MG4UqLEZ&*_rn}ncV`r!ISXblJr-S|%6^Cjj*&JMzD-lbWwcwJC zHZrHZvSo<*%@aM`M9J8?evW>uVxLb?tk(1A8v6cQ?_t_+jL~i^^vq{H247wfiz_(Z zWiO%S_fANpxbdo8&F6!+1nRo%+=@oNQXVFEU&WU! z`Xsj5H)e_?zlx`*sRS*YEE5$rvcIVu%3-j(s$#RDs8+8qNY|wLt9v8EetX(r(YV<6 z*13&n#kitmddZiD&fC*mwOy4|PO}zIVZtYkDxV5(dTFx%JNK}q++pQ0L-kHL4lomM zIuV`bAuXV}&}WjiUy?DH%BAT>&QMM+C+}PcLXF1_ojqGT%5{ zl8RDm$@xjuS66M3Oy8ak@Y&d&J{6ajdTt{@V9E(@D6nPG48e>z@+eShJf2OgV|O)F z6ze-tT4H#rfBWw0m~Dqj(DpP_S4_zdM(!8f%X#;>CIOp`JQhv? zvcKKT8FdckRq8>lBjn9)Mw7QtyG+eiHyd)ZyW7;aF*Czu)=)8MD-l2Zpe6H7p6MYk zfAPxXC4qH;P5)Jb3HZq}gSkLzyaT+x&j+oQTKEaz!jytitDv=Ts9p}L^u97xe zgNU8!a))~aEcTkez0M!8mZ#Qk;CD;262}&~4LZP98Z&Jv1DP4hL2GMH<4&A0TUA6! zmu|NrL`>TkxZYyD6EaIZ`%0dgrQ-`hv)Ue*&$HA}y3 zF=;&y+Mg^Q#dNRtWr#vnjlgBaItB*r$q4%kibK2H!Qt=?SqfIY=d~t6?6#XGitfEO zuY?`>uB5SYoOM{GZyfjO@Ov9K+0kQpZtk+ISUoU~|3t93u%T#WJeU#ueGq?l2++WwoV3LPecy9gY z8ktiRv5{d$97gO*QxoQ%{)*64utQ{Z>9(~at%#ow#1s@$x@Iqa`@q$Jw9$mX6H6hG zB_H{kr$$>7p9N{(L(dRMLXZlq1370J3(UNYmK4DB0;uxA%! z)1|*e&*dZ@g}RIoV~SzQp+NYRo*ih;_hL}r0J!Q`j&AfZq$06qyfeA_-7K5?3%j2w zr#@!l9sR0UHsx%r;sA~b_Vk7*h%ps154iFidaX)^}1Kxir+qK|fA97raSAzaC8FEsno*@y{WoIKEb-+gly5TVH z&0nU*w#jSkM)Li{AfK1q%4+2$lW8x{gE>p|i_F)raigD*$_0W5xt`5XEBwB_JQ_Md zwxfS!s_%GPnoU*#m3Y7sk%eh8lm2W;oaQx6$!cLZc}jnRavGIbcU6_^zg-lv_EprI zNmH}*qRBzI$*m6%s6@V!)<8mo*_o%(Y>#~jPclUR#Q#$}sXuJ>C*p=|*kmCnM=PSF z?l+Vb+sj3pwd%=ENK$(lX8Nro8yJ+J5bz+W+%n<@Y56ge8MMh)_Wd;EQrhKtP%F1- zN>BrXyqCUXC-fHkgUJv=n@UDx9T5A=b@*`zwtrdBG9eeZKxN8Vdijbe;jcc3tg1#c zj!j-u!Z<{qv5%p362kneFoG%J9t6@78txz;>+Q+|HG4K+(sx`<1ap@|A|IF}LH*iM zi5e*5tOff<=P?ybx2Ho7BnN5>v`|3)49In)~I%VBU=Y~HhXZ%Gb$f}erx`| zjoZ|U{z>{hC?gkK&%FQT?O1U!;yM%%I`^)=n-enjmzW!+K^&3!+sD~tsgF+`BVSKE zYq)0Sz|)+p+|?U+&PhzEcb1$f%vW=ZrsbV#K`$8oHOq^n}I$zcgnmd zWn^mo@SN!FGFg;2fuC5&Kylt@Lyjt6KcunrabA@9*w8lIKmGItrd*|UFU4dvy77~^ zSwmLA6&?7@$->zy5;i!N@nd%%^fu_iyHC|`b3Wd<+Aq6h^};^eS?V2~-mvZ*CkNJk z>cUyUCuR%H1fh!L*iohueW1c1_jI93h+R0x^gY*|dX2GD(LI9wh4KZWR1yl&%< zUJG=Is_OE;-c^t(ybgIeH%Sy>Q+ql}~zBNBNfV3Ll`P za&T+PBBD0DAXRj_<11+^pYF^n2AImZmt}n)royzrSp2mw!M&?|WqL(1&@Unseal}v z?@-vkN8e&CvR@jJOd1s^4S^QJ5k%5e{x(mPQK_j)(qD}!ip;FuItYK%4-%c$c^7Rg zGesT8=6Ca^&+Xfg04G(Qq_pasXLoIrSz{hE-f+)Nf-sO zHIBXmCK}kZ+(Z~wZy$eg|DHsT`wC}{?Tc}LdScyX%{ZJ`?cG1F0*@FRY#65(bEmp3 zandR46=lhbNx4PyaY&UvM~QH7s0OEb9{0M6Xv`%g;jB$<^dX0Dz^(a#J}@ zi;?l2kNZXk#J}pcG>%82K59{oU(qG$+=}rlZx~;bo7uJcm}V&-$2+|>OG%|`939|A zOB)*IYQRIgIwIGXIoE=c8#=6yCtXJAYhP~gge_0ewYZ^~V^6L-!4uy&4SvyK6R=A| zh%C@iTOLxnsxRhzf=!=FbQvRx>y+4CK1Zg1c;~2hxzPw)u=XR7osNPJkk=b2{%NGtk^&2u^|g&pO` z;TrP0t0C+$LDL6d4Bur)H$W9fve0Jz<^dRBkSjwfi7>p<%$XJ293zogStYJP@zW0T z%*cp4F}(vz@fd%YTzd86at!;4nQaAby=9U1&Yyg!E$7tXIFIoMmxtq)-b_}(NQ+G& zO6f_yq`~$VsnT1WEhV;Ql8nhB@ep&}Ft{td*Ess{#T1y+L+8MgVXr61s|oBUR!jl* zfjm;ykfCBr*2DLTEiT!Z*E_NnRG+u1QgsSw6{)&;T(y*j-eeQ$aY(lV;N|0cCu0+Y z@tsPBwA)VA7dU0zFe;G$lWMdrPpzojsb2$AY$FHebsm^Ymwz!lUM+)m_WdxLl1YW1 zbqYKkmbFPp;V^Jl>msYlXq@cXPG{FxC%|;P$p&GU|2QtY`27<}2}+Dp&|J_22s^r4MX@~T#fvoKUfS}DgI$o$K5>pYVJj%Lk$^D^%hTfN~QAmwfvYll|7 z+R1@D@GS@OdlJ|-$JeO~)v{zp_?WHpFGEtHnS0ykue(oV*TjBoJADwfy|LBh{PyRR z^8KWJHI{KX7OfR;QX82i7V&-dTv(p+Q?(aD>GfQYL^vve~zvUzu6sM z`JlSh!8E+RY;)#SeX#*Epr6@83X7bo76EKJ<4 zaTunu87Dr^dZP?Q(|&`8*jE#doOt!| zV>~g4_nD}=vO)0SDW8XVLPjnXc4xRqn`RfjJ{&cI28X=#?y&RqEhFzHIxl^*6Gm3okQKQqS)z>?g< zeyVmnRv2CT=28(Ie5;6U-c^;m>nkE>^iz5OqsR1F9a2MrZQZOVKuG?6>QvledcVQ=naY`LZOL{g5-G zK{OZqCd#A+q0KPwfGRlnn49T@fP|QzbxgeS7RN2EL5YglAgdT|@`bKr+WYz&_7jr@ zByQ(6L{Lfv`IzVI>j~j+1TVbZUt<~5svVIDwLvy$BRNArqISz(ayX_z*4GZ99hKam zo2BZoqSIsdcFbjmd3v9i5-o;jLhBa^wN4jTHC)xNIJh0{x%bf3WEwxcDKF-D9v3|? zu|Jw!pKU1{<$8*0Xf8y~7P*RlEhOh%-q|I5fjwc~Gl7$-yV0cnBTN5~4VG zTsc_9aVQ{Z{=+53OJnC}5}G|DQRO8&6BE7{=aN8VNh# zw+ON>tB3OoTm`hTN?2d&re5RF=|~<{ zzO(YdDlYG^Y+^M|az{b<*hIT(#Pu9`uTKnYk=cfx_v!|G7O!fObq|faeObP?ujs6v zcF&MMeNE(nX}4gBp1Nfm*sR7gW(X3GbtCd}dZh262$S~Glj%+4=_|(x=pnyp$xl!6 z+_o;JN;c!}HKkXUt*yRDM&fVFagt(W$64mL+P8g&^5D zEx&yCY2nG4NH5cQ+j{{9o76&=@~EoGYS|A43pcVhNLQ8b#vc5|qWp#K6a!T&8Q6c? z7M0AcZxtfNXkB@k|Jn!~0n@!57kai}q|deT(cuNNgE;fLqTZ`{f41E7!_Gb#Nph_; z1*0lrolsJWwOy~fCnbVU3OkaFcF1)Jp;uQI66{DGAt~VwIM|O#EaT2#^8|+C4eTzmT}rrGm{l;HP2rS{&(it>VXEg%T?5Lg`KZ z_(SU@ch^hUH?E2-jvW71r!-oJ8L#te4@XUjTJWYn0e)A#{V|-q^tv_5;AjJ32F1dg zw2r$Z6SKIyBfam7`>HP&Rh`UZXX&MVBTbi0tV((_5V|GiLhkv2Q`r8kA44voCkazi zEBGS#j1=_xWJlCxO{KJRLcT(KqyvzLc(Bw@ayra>($DPtcFHQ%n?OS9P$ax>;Se6y;)#%Izo zZ6-;_3eds5#mf_`XIm3z568xuzkKWpX`*g&KrT<`HB2np|U3upuu#SzmFjYWkZGbXwx4RGenP)UL;Tc93l4M#bgP3sIP`GGF;tBH4%pGm41GOn zM$B@}On9@#sk=Mb%_O7p0HJ-bnZ*<j~=Q>4FwgQm7&I`(SxT_NIHa z{$?EPV?xr|H^pG7+6QyB{DPa6T#jUeUH%T!sBwoIB@bD)TJyJWTf0f5D8`RG`>o)g zC(WjXX3u`=YJ98AM0It@Zy0?8w-k`qvP(F+JZ{e7?(v4F>j1XFqvrgf>iW3r1>FHc za;1)qt4Y`6$+LQiIc@an&G%z6;_I^qqS~L^%KnxYy7=*(f{jc``v(DdAkbUecPeZO*gl$m>&4aV?g9lom^0NuJjWg>u@`5zpoVr1y`Wag$yy@5sq>N%_He z?ylm57pcCpf_1s=GB#&lOOq+Ft4^o3jcU5MAk`4sxkG|`E^1SEoM-2J-I4sNOryc+ zt)C-ftBT*I^9aa)7!$q_+ZM-ky8pUIr^SIUmUen$Ys9xyfsQ-xNuRv0;Gm<0BWF*{ zaawNJh#2%sx#|&qzTm9B9$597x-h@~dj2=dlP}6W@itV2%s?ps`S)lJ{(32`R66(4)y%=0x%d1wR4J>9;8-JNt2N%nsyAH0MOb%Bo?H# zp>ZfYl6EW-gW3}h1h80|ejo~q0{*g*{|6X|13{XO02T$}_t>yl9IXw9!qEl+a9I2v ze|Qw(UjWH}6v5+=Xj+Gm2>(I&KL821J<6bw0Gd_>G!lm<(D*~601Pb=GztfjX_=sb zy>g)e9FCR=8V%t8#RMXPM&k&yM9>%rA}tsU9`)aJlK-g-G>8WFFahzv9wt~cdJhvU z9z#n6z+kbo03i*K|LzCr4`2uw+8_XkB+!BZK+N7+072Z|u>?FVV*raG&=xR&gCrx< zNCV)Y$h0;*5=F}xz=OcQnLtDcNc5f}BtWQX{GpLZ@NZ?ve@{y^62$Jw9SVt~WrBt# z1T7ONaeLH410aEx2pWw-(hwm-MT14rGC^Zd04)oU$OYN<0K@9*d(XeIy9g0c{b1P>#@4 Tz8?mx7#x;WN=nO6oAv(y{)3G? diff --git a/docs/images/taxprofiler_tube.png b/docs/images/taxprofiler_tube.png index 8d053b592a96bb8e3812b1c358c42c5d29857970..1a3b46482b2be4b2e23a8563facc899edc6a4882 100644 GIT binary patch delta 564904 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

N?YlJB^#$O2AQqzH>gkqU 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

u3X0mSO+@L2Qy!@U^=Y%GKCfQ{o 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

D*U**PcDzZJ|6fTP+oiemzZdvvZ_)Yd<(R0RN{B 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�Ze@{~`VSX3svL?dxfB6yUG4=NA}=G~M5k61A6 z_WU+Dvm?(Dy~5NCAXj1eSHLOXQ_41#oRQsOM_J-tw#1Rypbf{wyS}K-vtpYFPM)W$ z2e@3p3%R0#G$njDDK>6UtDQf(aK%h;e!)tpHXZ$PL#VObdu}ELa>`o0mMU$cR9yml zBIe^lpW^Vnw41P#W5hnK{BBN;=N!$Ss9`aNgj*H8gwmwja)?@XVcN!R2gqro*6u;o z+Sgy6zHmdpcV%V;nKb4k#*kKf7^Vv4ShvGlH2EWgy9O`;vqu&xG>dk0U4v^Igtj4& zGfMZb5DF{_C`9yt6p?%-Nncc*Zc&~3y3>a;o_GIztyAX|3J{T#hZ_r{ymMdP`d$CS zfFtOdK7GUGOG7hKD|{oblxJsAo7s31%;LsB_h zAS)w72KuLc=u7z7)8pGWi)!Qy*iO6D@rj8qo#f0u<4!gBbv3~mWiLic^P2WD!pW
Nz!g=ruPtIV=K#JD`(95r7%NS7hfQb zS-k1Bg0_u;c)_~pjh<6m30+ydg8aVHbP*}1{2g0nZqRaGpLUVA7(ICS*!<%LgebvJXU8^|&?~eIeKuQ?~Uv zd}*541k}(cX=4#%xI(n>bt8wTqXgy1(H$r4zBtMBzR?4C6^Jn`z^MCvxo9aO*wsN$ zF!gTT4svL@WZMh`D>g&PS)`w=mUeF8FuxG;#?Pj;0q#+YsQDsq7;Bcfl$l6@ql?0sC=OEkn;w zhTOly+;`rOCNaptYPyw*YM{w;-X=xTlRsI^oi?D#xng@m)VlMpc$zDR!-tj}6RQbu!e!wjpI7@Spl`S8MjwMf1l`1=3$H}H@uWEg> z-ArLAlX6je_u;qr=6hxJPH72(OHL_TwoyuESb1fMSsThYI1BrnWh+jJ!5O~}fT>#C z9I^xA3vdCVG3~K2hOREp`yWuN9gCXU`?`TgtUGTcruhSk#HXBCC}D@E-~awk~zm1L@an z(mlo*I8d6MUy5cDlHd;97ewl5dt~)kHK%|3j^1K4-v?!y-04ye`dH7FzaZuyheAJg zbZmrSC3!+pZS_68B4(3kJix5!7ge^oeE0~EHw?^}kz|x3>`&3Ss9E<=pNyWD#c4sMS}}ahLvTJ0MFqLTo*KZY zAq>aeUcJt+u)oL=sqZdoi{%c)1f4+#0+cy5@g-HlBBqP84+^GR4Ma;B5gy;bIN`4) zw20|rcx>GRf+9?g#nI#VM=c^Mq|v2_O+MB*v>|)MbaHAyU0f9u#)#y(i1Q9MN-rKP zxVf)AtAw%Qq}CHnCi@l2hVP;27s-t$s(xcDe6>C5Zhhn^=m{TsvmZGZgvsQ%Q!|8( zLAd&|n>tnDPgmxfizc&*ma2&nrz!&G*)-%NVYDuvJyopU1APY!9{}IMxr!tqrH?lA zdOL)Fw0)^r@69?|-#=6uuN=G}mt3<%nY3alpDY0F&lH_nbHkxT#Sd-N)@oy2x$|$Y z)7pPMeUpxrR<6ZnnH@i;Tx;6zMzoFo{(8yU&eIo#zD+(R4&MViE^w%`N}^nn#pE#F z!v8)Gss5hv+{mwE<}4voD>3$sIr`O~RH-7UUZsqGoP{#r&NEP_E&ZFRm0=5whKLA2 z!u#nqP^;em8hy97>xt;easzO=-A^StOUFKBcQeFGD@Mwy>`ot(;V^9yi6lT$QiL6{ z#$!XxP;^(_7(wU#Ci;Gmf~I#9BuFjl-0bW*d-VaCr=G`7c&{=L;ADe&*fIK&oZgPk z>hLCy{am8zcH>S7im9U+TZKi^VWP*`Y^=}~ zenX|{d4v{Amy2UPBkS2qI}B~FOz>Tot3A+skZuzjDYCx;aR^*dIr*GrVZJ3vX0OO< z-Q2xW(I&nP1iEqIT#T$S<<)weP9()lmXGlZxw7QL*g>Cy7_g5{#LEox__pmkEsWL& zsBa3kR=)u~UGnkc-hn^@g7q9mHv<%sRWsS4It&}E7MOS!?mpUa?$;UH{wbcBp_I>T zE2f{0OGIx>P>z4Z>21l(y1YruT1d2WI4DAu`+&araGim6@=$kdOSN+RTUN<8pZHXC zIBnx)G9?q_GJ~)63K@$w`A!Z`&FIS&3)*PaQZ8BXj1{RW96WpY|LlMAMPTJ`81M*< zb{s;HR6_6Dktcwi5YEi?|+rb0dCbYd$n)qRdEjZ^3<2CkNk4A)Z!}DQ?YJE^@>&g%@dd-IaG{R z-A)>2a?CQ1^q@5-Gffg&K7I?8Ejbn*L(i1ah{+c4{TV2z4%;z-cFaDu`SJWDDSq5N zk_FdpLY1(uo3A&@16&2i0A!eN$uDF$zIVyM3sHrfNDqdO@pq=MQWpHTB9Hk{A@DUD zX0^v4!c^4O*7lzRhw>oy?bcRk(mG3rIr&7>aL!E4sP`Jkr|L9(E%K{-(4~n+!2^PJ z*+?#Q%=X6e5zG0jcolfWeRR>nU=&eADO*zuX z4o*uaKAitOJ4Ur;`b6;O#m;8Ek%73xl&Pu7CgRohJq?kfE^BpWb11@sHU}YJ>7ADb~R!^kjz* zFLBw#OGcN{W}p0D{J`(t{dFRJ^4*pCM8jyG$Ld18G&<9u7rYLuvM4d{58glu6uWMEmMdT=Wv#KkqVplvg* z*;s~YvTP7yS!z?P|FJ1*li;aaV^@IOQ5s>->m%50B_*!tsl>-3zi z+Jgo8`I8tmt+zN!j4S7w#p9*KVgi%h7%xTSx}kyJ?I7^=rqmuzBr@(9ymWn9e{FxAo*YK|kdnsar%3 zfsdD$Oq{_A*`N~$=?b42(H{mUQBrtHW|H7ZZgrWzfB)VF1K&x$Z3x7A1O8nGP6#@< zF7n*!u#LvwlSd3Wl^XiU!I&T;FBnF>m{{9$L0MV3kaT$E51ehjsOj}x_a<( z$^XaIn}B1vw%^0%GBgk&N<^6=LrDq=AquIaLZ*@;Lm6|Ulp&JLQ7A)YEGk2$ipUTu zDWS*^nI-doUG2TU_ji1b<2~N?-tj!1`x?%3t#z)Y@gV4w$y-l(@K5(Fd89UP)tAsm#d+8uPqt^ zq>h^PO+wxhsP$yNvA~ap2&)yu$;d0#WFKX zX7*{X;*jk&Tl?|Q!uAcOhUIsYr;Q4Bdza4#Pv}iW#JlKGtp!>tcS53s>ueXpW?Jfc z{Ymrwf4;i-Tg6|r9;>O_wxe34&LL`J)=fzqfT*2Rk777SKM_I`44&HJ6$>xeEdV5s zsLj(oG$#Fd&sCBok6tJFmA{EzA zyqMa6SFO2%zLxZ{=$>@+^ddpIkirTIdAq2cMKzcu%!f}pt`5;%yG|e%lm&(!@Z96% z;pvNF!x;kc-43{uAZjlH;ynn*!6u49SB`PckMO5q$!|fqosG53rL+%|4;&m6N5q{w zS(xF#r~lR>m(x=vvAAHoUTG2_c#qiwj-sG3PWm1^XakfYO)W%oGQg@YnTWC?j%RKXvn~!@rM~J3U{Wi+iGI!{A)AV zB%2h~7mrUB*yMX^O^S05iP=UUTK@Ci{fPjth7-fFiN6o+;f&;W{b77UK;_b>;*`0J z-t2;B&&-^s4+-es-x+T7`un4TgpFsu4R`dL%~FTo)};CUpXZG#bVmNC(6WVRd2_>> zn+m$iRy56CzRzr?b*Ei3?eAlUy1+-)23>9(L|2;?p@L1r2xV$IvVtc~3 zTnU}JRL3|kRUBJ@v9ef_o_K_{O&bY#Khyq)Uf@qdg6 z=}QaKz4i&Pi%NrPi>p75R6Yb6(dqVRI6*livBXOMJsp0>m~^Aa9-Cmf`8v&hVbia} zFWzmLtGTT=M>pAjp^oLyo57RJVPS7}KAe4{aAA*c`@-vX!YBXlt5fZT zKx84MeA*>Q<=3%IoB5?$okI2luJd{9r)EQA{T|KsWHvSbwvVUm?(5p}Wg+{+kNlmC zNg3|)+O50M*64~+(TIxWPp6ygO*K^^prxU~D6O@5f{rZ<=g6A1j5NnBus3Hg#6@IZ zDJ&_qTi!ni?&acr*3ri!nzYr9`Y0+SRDqA_RK5uT?4T#TcaQT6z(-6iOX9>6QcyU8 zS^e-2XSVLpNg~}Ejx&3>WVIIy)r|vO0pc`Vq5k8BYa}249oF2+pFKY(-#^sJQD$3l zYp=aU((j37gJQR;4ZojFc&Ko&_h+3>F`={n{UY^Ona0(+n-%u*J6_+tn7!a2kIJr}y z_Rj?!9Im&XJ&cwVxXCg4CR){MASKAJ(}aJ90_lg>M9988-*Ja(wRK^LPz6G9nM*ma?+){x6H@ z*a?Xm|I}{s@$6M3)w%GmLQRGqe{P)sCKHhm2BE9=Fb>{S)aWvhHuys z^-(IV^XLmsW~PZqf1uC#MZY|AaQ&PwCR>sG9d<_z+E4$H?S|Ap#u{C0^}) zoaDt8-crrY2Z?eQqFeNaE)#tQ*w_0YchbjHEpe~GSa*3}42`~IYinyEu!nqP5&hkB z`awgS_mV&J474>FJ#Rr-_7F)@U;z8^eoU$P3u#0BfFN$$7i!Dd)V@1)_fqOz?-}jV z`QNw6-a}`Ag{QWH+BxC_D&)ue0{EnQ^d`8*7oM_>4i8UO=P6_- zMHDvM5ubm zv;<~}n&A_20SR5LXY1X=i5*J@sz^oaY~ap+alVoAB_K79bbiJXIuH(YcH{i`-NpAG zsmx;u;UtmBqbK$hpxYl2uhKm!vH&_0gUegC50+AlKuTv*$t;o;cB zwolA~|64NTPu4n5N}5KdQbca>By=ArmAoZ;FeO()q@kj8h%mxGKDo-Jd^kw-$Tun`or=g8z+qoaN!<5islXTxkJqrTr*lhAX<;I7uiM-!bK)h{hv z;wt)84i%n1{&{BuR_DynGO-OBYn1oO#)gn<6<;;ESnLB&zt}f}s?2T;Swi!JH>H-# zX#C;i!rd3Mq1pXsJ82e*TK(SS>{YkOPolOOdJeDNy&?VRqo+m>9zJ`R-n3El;Zlu# z2jxV52es-8=S~IO6bxZ&9cZ7r5fS8BU$?fmr|s47>~vehEOg!O_0j`6Lw|Ph{QOA! zRa^l|u|M?^BAd_Zue0tnc_;+m+bgz10^cj1DE;|ev--GpK$v7h{{3qv(Xvynwjm2r zRHjCiLYtDsd9m@lXDaGk$2ML5=(Y-mxtzFW!ZVSGehpe)68DsT=uuSVII1xQ8sZH@ zyf)Wozjwv+ByKiHWwg+Lim9{{!v)#E-4RXo$rqL_1M=DExM5mK5|~RCX6!D%OW+KWx97O`O!>r(46s%Xf&>$TKB|ng6vB6q4nF3JOkg zhDt*)%tfk!;njb=BdCA=-|Df+4JM&%nyRR`3Ee8uuJjTr43$GPlIObj|BW7TvJjMG z=dzUCBzViB=5;OiQ@W$JWih`rPOZwOee3(FsI2au)28W$>O<~~Ete1H#{8G|cU@dw zo)g$`70LngljSCcLLPFX2A>q(XSgyYnoWLOL$SubcH91;;`cT)iyS-8>am^LA4<(x zosIqz6BI{u-wY4;!#=M5h`Un&V$aLi{dSU8A73G~2|kdOIA=%yj9TJD#<4m?(<6oJEav?!K&(z)HfA6Y8^(j*B2Zi~I7g?-r!2;>sOWQ!2NzLH4dCWtCn&ppmvoD=dhm z87=L|+_dxM7D~(@nE?Zn{s4Bh{EQYI&z~ph%Q8;gTErL~(I#$V-GPUl5gF1W(l|wjBC3ReC6toKW-*07!OZJZ98<* z#?-Ll?}vCb_{I%ljLldjDJhu)3RZ2u`pgVkr5yKhn-@LkzALaMAa*BCh(L)YsyqJq z#{V9Ha9J%sPcHMwImVp@lCE)!$0?7wHmUmNLq(SzzxN-y|HEoc-pBDl`9MRiWt;ArzOLVND(`Nh;kWOx<67Q#;)io8 z+Spk3ImaB0*>iGwxUPcVCdx*7aWS~dW_6E`+D!-V#h>T46dpeELisAV@BXdBhY;Kc zvC9%rpjIO$al{Z4{^RsG=S&g=`1#L{Yz561@~p%AOXmes;~aBZxNF`FOQd|=k+Hn6 zFzb+a=7Y}Tzcm~P_W&r#Q04helznoVS-pd@ZpoR-gtSt z2^Fo`@iTMe%ZqzVnYV5}y0rVW<9P)UmZEicKMYxMg?S0m^*^&5TYEU>c6n_jht0<* z_eDEPW;s6An9`Y!>^aK6Aog=pG{=Oe-)6+y6J*qG=uyf1?_>A4WlMFw80KKO<87xM zA!9nXnp!(J+`vSkCCtj0GM(YJXF;9#dxdOJR4nLRwH4NF*M*M~FMPDef+8Xs+0$4P z{yHgs-}7ZJ?6I=8K8f;tM;))S*LG;igx`*&%0AgLSZ%-W%Nh=mzl&Qo3({+xpiC$z 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

7ZtO;{tgo6 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 YbHXB7%SpX10^#IY}OG<%Rc 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 delta 549644 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 z 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

8G`G-9+D+8Dp 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∈!;wVL*-2Uxh;+;ldM*Sp{p`z1omY( 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�&r_7`LiMers^5r@W~UJnl>m&VZI#?Wc$;> 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%0D;CQ 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 #FI^~f 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 z zx96*q?qzeK;0$VgtDsST(qlZ_)J^I&1HxI%s&L_oRl!V7lrbg()DW?OUd)0p<)Edd zWmq&fD=P@b2l;@PYmHM1$*Tw1uu=bWKLayU$JRG^b*+s3ZADz8Lcn`>V=3E*Iuxlp z#8>Qn7jm`W>QU02=1c2ag6k{&&F4>&LuCHLs!TXrQ@uDmI9Pq;diF|d zNp$Ery>iJ(b!xYO{nFL%D4Pq719 zYopCQF3$@I0UqSE8*dne4#vq@hTSTrJgZPs8=Xf_)+yE~wR8k}Yz{%d z@NBvlrt+Z(1|q9t_cw|$GuNfHN%!(T7_6;Y8vT*NL&VRYH0t|lHTGpQH?RORRrJLM;=oQVUTcaDy5VCK>hO_5g4wRbw)_f zc{CUgEaM55{)M6)2uj};%;sD8&43|E7Xxe)#nDDyvQck+f1p?z+PL1nGv2U=RM4^x3*!(I zA1ROz%~cF`x>m@t=YXOF;pwh>y9W9c1g61n4<6Ltb(#&aX_XP&kO95oxss8aGCGlZ z)vlY~u_Yr%=E8q*{(;pb{5U z3P~LQW2vfKF|FfYq^oJ@9?55})U$3gzUnaRV(oElO3B}8in*F< zYV$n^P50%Dh)z*i5o3p?4)?M{`=EynJc>mM_^FQ(D4nM|~`&ggA zuF{wtnrzB-PGjuXqF}c?BI+Ic?cCjOhtU%|vv&0qHR>TCxSJBLwykEpTKkrtw@(Z( z6q*Kt%9fH`cR;4gGe}PewCh%P>31HF$ZdV}D_^a>`oKIehiYF_lWbug7M`Sc{4qPG=`~IA*TB^xCxi!yb`qGTX z!8e*l{h0OP84MrSCu3MSGxC&&s`PC=AO#F(QVilFIOGtzDz?iXjA^GLk1yjD)BeVX z%}zHxcRioEpVb76=b^ZV#|xeKQIl&=V?TA=K4vQM(|-ee*2RR%0G`QTIX^hUr@T?S z$rLlPIJCWTD@!DFgL?3tNmB+#R?T59*qqmI-&P&JDJ7SxUv!#>CviCx0>^U?kuE`f zry(DS+SjjNmqB;xJm{Xq+lLM{TYybyf~M5x&!1lhx2u(AC>PwRq@-lLK0oxB)-eQT z5Zn-FiI2f$6QO8ADMVn@i(DWI!ls8mGkoCU1q|@iF}eNlif?3EoK~o$qX3ok@~x(G zQ_1kfsHHt`*)6;Jj_{Dx}%C^w7 zD%p1MfVof_&UJ9kj6mzr>pK}mjOLBKw{Y6o7=I^btsl3gq^KBr&iG1p%F5Qj?gtpk zRVCOrYu=N?4-~5j1iq5L11_HeO3DBB$1CbvE?YCX27Dt}iVgs~nuxh}{#`Q|$`$Uh zIa#=~Ic>`ybe5lg6efL{fPnsnCfT-Oyjb=0zf>pA3)jw)PxZWbUrla#%!OOx96B9^ zzvQ)w(mXu_!|f_lgNXE7p+ocb72Zd;^JJA1j+@V)2Kc`pvMs3oeiP{ zlWR(W?lb?HVRFYzsb%+nc>S1yB9r|TtNTj9seH>GI<0J=I$1Ot{H#l!&>EEH$KA@< zFPcgrYIj5X|8Hv^{Y2*ZpUbe174F+zJ0WbrZXd&nA~22bJ--Mfj3U=h{`W_fZ;%r3 z=>Z29rS%wwn&I`Fmfg)527QA=L^=mU*D+boJlF=-@45-`^-SPN@gr%MVWaq8H_LSz+V}nCgTeAgctqT{3QQiQ0 z<)<`@yce;kf^6SKaOcM1$`3+CtyA#DBOrsGGVYt-F5DPC!^4BdG}-x8LXA=tFjBZa zSW}eMDNan2*NAz72WJ^z)Mbh&^Sm^+43enLCP1 zZu7^oejo6j{j}p;FL}|yqi+;Y4WG(>UH@o%)#WXJ{;+5_i>Ab>E1v}*Wi68l`B0A% zjV!^crqX}zVI{qiGZopH#s4d-ciUOTJ!7$UqVe_Tk0$ijYQOYI{dj1BUAEJiBtAVr z%sCxHrFEx-rNe_rAt0v2N}t}o<=f(dQ|K-wa-^7qvgGuH@BsZYGakEnu{VV3`q-&j z^I&E)K*Ml8DHIluK2%tEs*B}~Mg<$AjiGYd1xVy5Dv|*cmSk`6Skb=+ZdRc^D6R4* zu}z6^`XAYBqt04lQBga!hdumtEWms zCPBoTglY`NMZ|**EhzMW))GIyfA2DK_1I~cV>E}*Hjdrw4VQW%tt{TJ(-U$q5#t|mr z(@~H>O*{kj7sHTj!}sR^1=}FIi+=(=e1Ji%5iNUPnU*BD8C7mA^MsSVtR{6>_dxi6 z`BYEs*nPt_xP$GQ@SvkmL?RFV$K?=gb`FIh~Eb^N9 z(Lp7VyZ3v?Mjao>>5MGr)zw&ixZ&{m+k=pvxo=kY#y0l}ndd&=rY&5kUay;aBz#AN zQwGp7g}%bUS^dLGO5XLa>AZ|)qU}Zu?XIbqfbV~I!Hx^ul?j>$w1k;hrHiWf^1gpr_AKQo-tu!&3PN1uUp6nGP{r#+`W`99#)yG0gVQL+`i7Qvk3> z%~|D*TRwIB5MY{OU^DIj(DyWX)n@ZA*Zc>}z(Wq7&4*2LAxB`eUdPo%Yy^R#cLIW!3CK(_?iX-T_!^;)#l7*~wtg zup*T}uaM9%BWM~5@U}f*I+2V2nBRY2u5t_Lt=Az}l-|#+6IbLS{M`g;8Z*;h9M^gXfnUiUz-268xa|04PQNJe|IE;UN3v%VBPUdpI6x9daV z2k0SFaISJ!U$-Hpd4H4Z|GpDQ)zxVqMUb^2}jHg{=e z1(-DaxF#B^$L(dhIsJ|bo4-45Plg(dC?ItDm|BhvCKtpc3qCscP=JcCS~b_WxVUie zYQUUhCQjp+j%q$e{#@qy_vI?59`sWOvQl^G=y@yCy1qVK_*fP{d0#72 zydiT$yC!^}|Z1HGCD?-d?gc|ZWgK~XxUrKMg`s+alCdS4AGeJfr(iaN6PV36Zk zC>4Ro@xjG^OwOPCH|WM)?#yCcE@85IM=n-Ka#f$~#ruO1XL9JS`{@=`gpZGi3j=02 z`8Vb`^8Vk!_EOhJSvWND#E^+qe6o&eyNhmqI}y9bx)EfmL{9vR2jENg{>0vEiKaio zdI*hs*bq-;cQ0icNzUn^R9P=GzlxlU{76me>Vj7OJ-Ug9=iWH?wSo`u-eVev#S27) zu@n+mwINfd`_wccBoSbWut^cX-b8W0%I^H_NAvf~FxVfTZXXxN-_3K7xFbtWxkLT* z_^*b!?*A?iCT|U;R3Jv}UioYq)t$S6xBkiP3louC0^TZk8$sr+dnjVKq?pHtgucwz zQjVKYEzNVG&6_s&-=Y2ap{?|>)IkA8qUn$dsQ-$q3hN|}NOGX7_v~>gSGZZ~nb1-H z{F*}Fo!s;PR2Ye6`hVEE3b-h@rjMdvfLsF+5m6~=r5h9xX=!PdZiJ=d!9cG?EZvBN zfPl0#qJm3zr_$|GF8R%adhhG^zWck^0NFjyIddld^Pd@u;I_Zp$?QG=!$EcBO!GeX zi4XNosFExoJF7z`VM9^mtqp)e;wjKUck9D1&q7k>a>+Q%(Sfv$Rz0*t<{K&emAL+Q zMe2s51&{9+N>;E9$05Fj^AGdoA1G-!Cehp;rM9oN8+kNy?!>dX6@=~Uty+Z_xj$to zyv}lvVHeew<9?{~p;h%qGVdgV3R~^)wr|Vb@y%rvOJ+zFhYI3xNJW?c#t4Jc&og!P zLmE~glU_Fe=n>)H+{k~9fTfz-@zqX;ec#?w!iVs^`(oaVv)10}Ctqw%y@}+AS5x_a z`r$5e)EUqd^k<%Oib#n3T7<><_wgLYN&8|(D>|)xCAc1sne3i`s#mrr!2xv(0RVjn z>FUeh{viVWvj=Hes%;}*!0=FfUaN?MgzVq~8!IC$p7KRe7`;#SZE-8W@bk&H7PWbPCD zqh2YWjqVU$Pnx?TbaPK>@v&I_BV()M@ZKyWaLOMQ1qMz)e2~Vc^}GD=pKVr^YP(2E zGH|fa>tI=v?@cV<5oy+8Li#XHKHk%6F7r6oKWgJk4j%FaD67JK_=RS(I8S&FGQ?p_ za`DC!%^mOSGxbi3&3C)i&noc4=XP)v4mi{Nj2RhHHUG!WCf8_lwjVieKSws%E;7km zVmD2{SV`1fnrS+r^(i|zf`P4k7fMXMZxJ0vx$Dez5T~AhZ%<*4Jv~&kqx+>)AMuag z*)F%|>96>!oa4C}H~PU^P%$r*1#}2FmelJ1P?o|p(go%;Eclqs$U8peiY!A=z#v$S=C%yX8T*$ROz?iQ{7*5-! zB0gqeAC2VW6H9HE;O$er`yg^*j=>xQkLVC^x#sx)`@pf=>G#fVPKv)@r!~)o1X`M1 zo8|jL2~WYy^$B&@_@Y|fk=^J?wV8YA^iK$PrFoCy?Jr7)f~>5xfLO8eCDn67h6a#D z!;e+iaG4+wMdF-4uXM@he;|N=WUbY2Rd}!W)*iBQD(;*IN@`+290SHg)01?!tBFeA zJe9l0cKe+$FtYCEe$};(;C%P&&#tg_f>}UE(h`EHZ_jDE-acAd&YHOpjpkocVbor{j^r zLHFmEjjBtk!^DtC<>&^9j z{kh$xCgUbQ2?HzrsT?ECrM-q`E{7uuX99C)jK*yqh@7k}u{x*v8Uv4IIhm{&brOT@ zlTG8_-Ku|O41MI1lZP&I?c6ZvUSKM>$#H>0HmiNOSm+3z4<+fR@6PylzxC#g^Iz)o zcdexp+deW|@`0%K&C`5vs|DYjPO2wLqFih}L3=#$ zjbHs=fA6y_7F+Xp+0$Uofsxc(B+#JFkP%I`-4GF&vAD?j;EvIG`k9T53zXmMj{d>` z60fyiEIB&T9{f|#_Z%RWTJs5f{>px7K1Mg{r>KYQ84A@{_)*ocSaTIZxibS~ReZF- zG)W{eLBJ1;hOyTrqP9!pwH4=LK^D*iC9)k2X*OteH#t})0u#kgqr(R3bL6nU9KL@f z1Kwpo^-4H}PRy6D(Zqr_bI%h!MFe2QYdzQAFSx$nX`-IOOA}IyCm*akymd4JH4Cp6wY~0%Ce8wyN*E%FnU#nWC zb?X+)2DtOGiHnodv@u#p#2T3|n)tDjg*1R&Y6KV-uoqg(<7!x<|8c5(>h14oX`Ylz z4~`Cf3?@By>>whn+5ymdiU0kP~atpQhT{`Y(mky>6!ForwvLpvYcs4{vt9oGK$LE9|Lt4$NM4Jp6OA!FfEGRQV@G7=u5y(vAA@1VV=$XD83L&*HG#pSo2#1t z%EV96RCi3JUVOcAJFa~3hx9u)o93r!1?ETk+bAAa>`~N_OuXQoEA=aY2>zQphv&hr zr6IW}MkZlPs?6@|FQDnIzz%BQQ0prV5>MTNjfv|%$Xe$|W}1;n(`GI@RU=9T)z(y? z#{hxjE5yxrVNP;=oJ1U9X+lj$M`zB8*P`_ign#b<)^ULGuFZvZh7cyk2`g}bZ=ji> z^BIL)_^eI>E&v4VL{HDXPYZvaF znbn`#{l|<6*A-9i-_3rJtIHi|v^#7R`eAluXozYCND%I$l{4v<-rm~#74*n=bSQ{* zDnAsJA7_HMhH`|w*>!zw*OHQiS7y79$)|j38n`a7adl{ zmWJnzzKZZfS0Z$~55RYux`+CT3@Wt5CrP%m$d?;877B`4K`&fn=I_!jq>MEnS>r?= zWy#-lRFr*c0pwFX2OMLbWydp==>joYXK_FgD~c<_)Vc|nwVVhu4fLEkH0onS3Y8$s zoFlKOIQD|4@qqC4coa0;RcK_gvi1K%jdmYQsjAc+Hsg}|R;qvYY&fOiC%4=B{rt!- zr3GtAf8t1Br=Zwwrqy!zYUOaJy?So(FW=;{CnxUfG1uGYMGN+YhE&fNV;=}OO{+sP zq-Nv^T_Z47tKiSygb@OMtRE6BXMhk&c1AD&*_tuD7sDls8-}|%4p{CHSSfInQD8~7 ze%HGFu7Cb1A*!=Z64aS-Kf=6z)G!`j@@Cyx?1wV2$>< zw`Ya2%MAAYFsI-AZsm$O=xHRB8{7_gadH^Ej0==GiyOrSJ@k`;m=|&tNiGY6(e_mb zQA*7f8EoRCz}Q%%5s2o}Zf-(w^iJC_16-<^4u1rI#4?Ddf#(=%D>&*|x@Ws!-=Howl@&r(@H%nU1 z&d$wr(?>$N4A1Uv-~Tw|;-EnCFww&g=Y8zunl1L8IP@zPS*N2`+;!trzY?yT1&6mf z!-r<#BmK~)0wliZ9IcMYr*R#P2t%?p&PS-}a2#mFs*3U z$^6EI4mLtkAFo=HRm>h}XdB5@Tx`$jKFPcG<*97FKH$q|Z|!qI$ay+Hbl&hBmrIKU z9y^cg;_b&2bd8X+e(0C03m;w$XxS-#>r+4>0?i56?U=)V`!6iws}g%`!^tyNA$Z>O z)&FN5$d{jX^eLMJZRX^G4HKE2QjTLK55^yURj(}_5J+0=cX+?T=IX@wcHs070qe|b zR83awve0;#tMo5Su#OwZk`Uxa! zTO8{z*SvH6{x$yfr%wP)3yuazLH&U{kT-!0b?v{sb%xJcnmnh(kGjWEVX!|A{(GlF zEkHZN{X1rOO0bNP%yR#TTr9Cp+k^45LQcmDby)v4-LAX)<6GAy8xBBlIQ`oLP#zk} z^a~CRC81?ZhGDl-!2ON5bm!{NPiOcaLCUj=cFg<5d#60@K3-%$BH-h%f?oARhGR+x zgCYY@BfCkL)LuX9LujNgLg03GITT58=v^?OBs8?@@K9BQVbxG*B{R({(PJ3aRPSQY z>gb5B9*DS`Ri>}qyLTCNPawtb`EwEbJfZtDe8hkLcOu&8iIkGO>+Ifc&6Ai&;eT%i z;+I#S_w(MC*kn~NrYkKjbBC8$Ow`zNnQvPkPkekkj(swan3VVa^*d;sM!jhBpj5h$ z;~0nWwlTeNa^-f9{SD69m@yF>RrVKWgs?QW@6S)3a%odscI<;Hivyn zLr}1X{L^`(Ob4BG+(o(W>JMtO&~vvN|tX-&kBuv$IhjYRn{ZP~Q3O$pG5D z(k~C?6rDTgf897xH9g^G{+k1o7Sb&`&%ADqFyDIK%1ZH<-hm4y8mk%yZ=YkobMVn$ zS67X(^{X4-{(i;~pwJlY5!y9VJa1Ly)ws6drdk7_! z3wfqQBGyK!rH7`KQ{~NofhFWIn=J#$(?}MzWMfFST3A}vf?tsf)PlDLWy0VssRB5k zjS6ECq>OTJe|W%&0{{$5&0{*69A#UZXVF${Omb5QdbBiVd9S2{y%d0wB8Rh{iyso` zvyZZAWwHzJm6UcXnBv8s`(8Y?19i$NgJ*YyLkN?u{17G?-m za|Tu#0V!3qUK2=crnzg7Ken}fKk|5UIYpuYYE>fq{1nY2hOWW0)O!qV4EBS?qL%RX z{JgrK)oi57mr$!!j-}h0l(Dd};SfF&b$e^Q;fD;fBt?8M%(Vag@|j2Ov^V0Y>=YYC z7_^sNTP#@XMXKN#;zcY@HQ&U*c-QW`MjOnA-Qq=?zN0Q|&y?C$Lh~33*;(im^KpK} zb^9Acjwq}b$*`7IV;SWgz_T(PD0ZUka~%B=NSHN~i1PQEHR^GO8D8dDAjYQC?Wsaj zi9vX9XGS4i{soby(hmk0Pm5s&hG_?*N7$)rrzrJsfmqVT0j<4R{7BIRqsE{4?Uke( zH(~g_bohOs=I^<>&-F%Y7lma_LiEbfIk5w>TR!Uv^e}x_dO2Ozk0z$Rn=^GmYVDx@ zKxluVDB=4OF2bK#!kx3o$Rfwps|CTudrVGFemTe-9RM+K@`Vj@YHkKdUE0P%LfR8@ z--BPTj#uzov?h9P^bIw(DNDqF$B=)Qu@+oR<#OmOsb$O+&y6N)ODDt@RKAc&j_7q9 z{CAm>Yuv6;qe}wJYJ=JsY;Ed2f;fB=!@Tk`gvDhqLgX|5l|w3stBfV0RULz!)*Xti zH;B;7z9h7PbC6x~k5iu43uU)q5vD!y4NB!2G_>?J0?Yh_#=}L|CtnLe9YSk&_pLxN z0aM_85jqRYLwa(}%z*Ei{v{TDjLf3($Y-yVUhwiwe;>Cuvf2jUfNK zFQ2Ycmlz1MJ4{sG7v1bNK@gxB9QvJME?zQpcC_R|u7;Px*Y~5DCO8c)Cab>ZO6o5{ zGH}FfwK7=iKCX!Va0Oer!S-<8&XZ9T#l4WYk3tAxNY7U<67ti*U@kAw5x&S2h_;)e zJxCqe6a~gghPDvf@OwzPQ;CX=a3Vu*zxdTc^aT;E_yuCVr+qiW}9-%GKmIru&UT z3`R$TlpA4seWAHOD!pLwB1GLBd{u4ARa1kTJjZ!@fW)wLpThGTD4Y3Z1E_dvf`BN- z&hr}$rNRO0Oc3h4HY*CD(SSotdwc-V`i})e=9C=4F>@-fZc0cq_i*!Z4#AoD%qM0V z>i=9Vd7AvTvjTq2DCqn)VS|-TCx}#&K?1o0lNRpZ<$H=r>~cwo;_V_^gQJBn7umUS zTdCyaDJaru^DdNGP23h@XFEnm@Z-4$3;EMct8W6wX>cTW1zABD442q zM6%ber~~P~SIx5w9Nqp7qV1| z#QfuqaT|KT9M;E>5xG)w0WIO5*QAhK(&*&j+KPGE&-K49R;4M+%2yh)j@2c84`arWU1_SFg^ zD zy(sv7SyU_|yr?}Y{Vn`uGQ|BmV%5`2GG{_WwD@df1t%lJyl^UZ^Xuo)i1CEuD~dCH zLDDmIHOUvpn#St4tgw6XWo=ldw1RkpYb$KuDo)GEdMOe-ZCI!mYdmnPS&G~11vy(* z1{n5EW9f9Jb>W6?@i}UJo2C!APmu3r$$o@B^U-qj7(>iHXSRw3NPM3p2V*jaHw!q-ou3pGqe z8&oj|x=;9Tt>-9Z(1^KX#F5o(e+@xJrx>vI7Ut%Y?Y)iL7E zN&3T8i_KD(^AneF>l>nsG5+Z7ipjZqr-cPRIX)`Qmc`M=OJ8GR50RuYe-aC!<{(bu zg_iTdftJI$3vx5P;|&H~703<>e&`3hSyvLxb`-GpCOnleMjEiv@PR7m2S&;Np;*hL zQkjJ2C4yWq^WzVzuL1 ze}Age6I$n6Xg%Br@8@oiuv}0)*4tHnexfce6W%+M<-4C(tNi@8{{e4HG%2>LVu}qf zFJ0a-R8`Z$9D=W&LuK!_yn>CK(%CrAI~$|mEs^Y$KEBHFV~aLM$E96GMnh0G8@fHW zq&mfHZN1)5Ya}BoJ*tJ-i@xd4S93|JYJD_Ap=U)md)6D9i^3qfV9->#keHCfWKF9x z@VC^Ktsv??#wRvG{kiOfIjpg)d`oKlf;N7XKB_FapnxAGE{=UXG3i5mtq709>H&gPQ9k8UVGcj&c9(GXHu;B}tuwk})g zr16{uM6c-?C0klFav*-@BC4i-zv9=XY(LjCnkd5;-d#>Y1**N{r$Cv425=!$9uyaK z^K^2k!x}fHCBB}#-AtOto7I>m-DI~~40L@lz@29vT>IPu5dokj!wsB=_1D|`Ipwao zyoSO|D~P6^h%dh)7k7s8A}vHnalr{_Jfoob`$_0TfI;O5#amiJMR_`n?~PZ581LUzHJ3O&xoZkp9aw=)J1d-ON%Mya(y`84S9Cfx#OMgzuJk#?JazUo4UI^Crc*|zzQIh0!?jq+S$UlTqR= z7-7SvLzdw3)b(Ql5Nps1cmzg3B-&cUzA)@AQZ_sQ045BE!-^iGe zwmklc#@IIm$A@#LeHg%yYG*y&UJUeMP-biI?tXrzlwoClT786J*|;{`qrj%1hY8iG zXz@ZR6r40djZ-V^F|UBY1dtZ%=L&~nwR26!s49L)LvxA37B4?h{1-qqF356&m-kEJpC185L}$<(>qZ@x7Dse~2T}OsY{5tQ|=CQ~EL0&FiB!A8TbiuoGQO{u!Kf zOPvfE8rv;&7^;;R_TvT+z4``WC{Q>jrIW>kNu|2K4GL}9Q4iJ+x@)v|c9xHShbB43 z&?f?YlHEud8XUlVHgc$;b+NXu;As@32LP#trjb?zakd7ob(L0(ZZT%+x_ksF*{J|j z6D$Cz;sDfbGtlH&CD5>9i^sD44UpJb7hG#Z@Euv+e2}@eg4|=Q=kjYhuYncFJ2pV; zgIuT=90lfXQ*8*FBa9*#gP>he<_RLYhv82r>UnQpx=0qHt~THX&;HI=xHV9<-xz$@ zNdrsli#bE_Bi*dpL$RU*n-kdaiB8R})wegpy@{V-EC-;d)L?{R;3K3EJ5!y=iAl8t z4~jkI9v{5(_0!V`!FyksBoKJ~BB0afLOIJAq%-EKj1gyaIcPu&$%O**xWbC9IX47A zjq;uuG(-omlKD83!WSHKT&XlQk^A94wUQX^@Ab#0SiO-=<_+-&&n{FnyI3!Wpx{`P zSfnA(Q`R1k9c3W79tK1qU09-&nRu3}q9TcZ zFMw~oc#?`+s|skh!BDQr1cTod0irmR@`rK}e^a|q${CU-0x*xyU`j9JU0T`F=>0@Q z?%~P3#)Tio=w*9Fu;4C_MJ;s(%SRgOX>EnwYNmYb7pJ$ajj0*mdRh*GTXIq5o{p|A zkH_k4gMolK(wCh&BN2c2Sc^W3(Ky%KyN^eN@L%X131eYYv`J~@%Sl`;CM18Wn*Nl} z-Cx%eR#&GR**er+z|A8nQ+iT+3HARp)#M81w8RIw^E_=ebnyy~cxy+(wFKhR$nQId=_Q15gKF$-D9k3n$hpcD&$-q9T#VNQFpV7GMCFSz7XY zXSDVWt`?Bd3iASdJ)^GaGkEn6pU_KLhEhI4K54oEoU8b?RvZ~P07r?ff?`NQ{k7g& z$e+xVH_$WO7OW6*^VZKPuU&KZZQ!&1dL&A}wtsLi7AmlWpu3eZ6>KeyU1_!&GV@q5 zTxWy7Su%WK*E`&%JTq_S-UtcHB9DtcT29EPv3&;*Q z(BJ(LQJ{ObkaRUh@G!$;Oq@(sUL8VqHdhNP6lH4SDh}!y8pc84&*h!(bUT3%_>yOO zK%u$A@O@I#LFm7eB`g8po}T+u5~#CYlCF-<&hZ92Z^wCP*T&I!q&W!A|KG!pr%1aS zq>=j5s7&T>=LCRm_o=mftH{I;I{?8>skrvLOuhEas$%1o;?blP+4L}T%<8i`C7ZB~^am~T%@nixSow(@G z=D2{sduK=t=+iEc4?v|>7Gc{CDg?@*fYlVd(k6-RZxXil1NgBzL$xo_4A6V$8fqv+ zp`@Am((Ou;ENW1>`dMpTZgDQ$rNHXpkus3O{*g$fe z?L(~8bp}L4Sjg$FL*o%#j~Z63K-rHj=1j2@KJ*nXIN8`ExCH0wqon7GhVn8x(B(lKx`?~Qx`J4nk?bRCpI^Cc#jxqlXgKsM5`{vgLQfG$3 zJM)pKF7Xm5eMR&AD41G&QG3O6XJcrgz4&O5i_*8n47TXU38JV2aO0?>VaGO!fEkKI zBx&sttr)Lu4J z3YrUE2$8yykqx)4B%wRJ!vgMfmo;HmghXyLaxgXg>KCw|mx< z+xY4XzsDTZA_hSZleVcLgm~_&*eB@Bfx-_M%eihZiZ}MBpT)n3V3_KDB+{D!Uctkp z`T>1tUUJ^b;~BJ>%0opU`KNOI6@U4Zr<6Tg(9_%%f&CcuB@(GJozzKmg%)WXbbTux z-zExNHnZOpZFM9ySoLC8=5WQU#$Gb5y|KK7%r>-$=vs|omW8~I2sYHu;e%sISXfzO z@S5j)wWN9=!_*_&6UaE&p7{sr9p7KtdD25e#D(_WRAfOct;*sJlS%z%(yFBa>9xYk zU}w*`jRpd8=6>n_n;Li@mUzCV5Sv2yE|hk?DEqrm)0x3)#q)^r{y&vljL!Isyvrgkhz#9&D^(4Ns+9B z?UNrA&BfTRRwO58o~ORVkeZ>qPN6it&Pe`ptY(^&L8?H$;B*`rO%xej6t9g2#u8NE z^NwKbeJ5NcXLpGhuD3udZstZ&shd29l?IVMNBZ{m!=gEwoq%z^s39ef@dz_h;F6+v zT**1@uJwTh?=XaJbC@(nN8}DZIC^EfLKaK*Ms~fZ%fX-5s3hU|I~LoiIQH4E)U>qQ z6e(Q7kaB1Pv>!tjPpb9@rbws$S->cy)C1t|_`8}F(e+5YC%e0-_PQP(&og#xe0)qg zWk!`xmZU@T-mubw!q)kn08s}i{1Va@WH#S7sn+H6R=#4@Bqpw7wOTp#O}<8KSIFtp zb&L&CHDF6+l;o;sBVP=NQ41GOLRvslKr1Nm9&r|56zk%;WBNMB&_l&`K|z@_-maWw z%dHIt;7qlmOn*X)zqdL;PybCu1_#>Ep{=vC$d1)>_H~U(&ROL*&(;yv{<_k#vS$Kj zDY}Ald2J35&QsD7PmcWIB{r|AFE!lS^*@BodLE4SY{06O4Z?%ie@Nvl1}46KCeVAn z=X)hS``}ppiQ8L|qrNh=HHKDaBCQM6xV^KC+m&$6c1qRC^3xky5-41wKfSO$zaXrE z)J8K%Y=8H61Yd7r^0j}aeOl&HewG&p>bjU8zAL5PrjV$)uWxoy8Po^Qat7GU%r!t!!)2~#4nLXJ(jrhqEU zjeVnBLAHXP+Q}x*$IUKg8dr(S+IZcghCu1f-{2!$f(YIP?Rlb?@HscRo?+ZGK@&`|S5?D;;w+g`H^Bg9o`@)hEjcs`?Lq$tE$@u?v z6O*T9r@3py;QqT~KQGnpuki1`$!TPe|9BP+v(T-x-?Cx~-KA#q`-#i1k_LD*6U#0N2Wq8;Y~?^7EZ6 zy&zmt5?g6Ml(P4kraFtG;!CRstTti#&Nzh2`}=dPm_E1@Jodwt5033Ai}-U(V^>*2 zxl`0XYs0Ax+|rdVIbD`jqVK7gaH{s=IYSeS3Yi4f^mnIyR8Q}Kz zOa&PG?*z@_2NUCR;9mH|Le-exmqw9==qGgE5X8no-=Z@JWZcnqtK5+FJ(SYt0DU;E zVPaYUl&B=Od3ZwOGjxi!`UiDMm*zp=u03UggHSOf2hS7MxL^gWr!Z(lcM=4aUVY|2 zfdWz|bvyN!@@o*bi@!CoDe@s8;t`$}3J!zkaT!!B#`B8KqL;{129RLS`E}#Xyo9!Q zNs(d9Yx=R9!yj=IGE5T{6`On|4k|4;cy3oP+$=kQ&z4Jj^n+yfAUj*R<|=FMv_BwO zHacgAc*KJ5qqNY{+#CRf>FEzredZHhzn;k?)7%V)piKO=3x$i;b{MG|Ziq`<5Zbwvlrt2ri>dVx0<@%(h|uW54Wh@<`wd0qfINT?irY-Qn#yko`H}Lan1xZW z>a~#FE-=r6G};(6f=s{39baOxP&MO&=6Tq4Mjt;UDhvEmZsYx?U#8ugf@E*=^9=3K zes>l8iWt^TLEd&*w0Uh zQ)XJCyC_UK0AS0Y4QO1XBE-`~4o^qQv}O>Qm&qm!0lQ?}T2Yf1C)_4i>D6NBL6w8X zzG#90sGu5rpiXv|OITeg}E!)y*oZ@&Fg;yh7P?crv!P4=Gs{j)%xInMhG`1uV&0(H#p@pw>0rp(FtwMZL_Yo39h4$M<-I4oBFjd z7g$q4<1Sa@FPqPd#>C03N(fO4ChQ8NmujkdEvzP5Y_*#n`j^z7TqtxHtBrO>dM&`0 za>VyEdGph4bk}f$_i>1U1BC}1pul~CRN}{#$fzi`f&~!Qpe$fCQua|?RPylf0O>6L zP@|ctM|eCF#$_0roSfVhZD(cW@iCu+gF|S!S!$_l!HWwT_gJHm)x%ZDfRe`=X5amM zeW@ZA{_-*tx;7!7XEJSUZ3icNf!t=d8VM)a6+_zG7A(xaTFC$Vtl;-$%?crjqUF)) z`d&*<{L7Sdp2KiG+1`4x6n(3}MwJJ#>)yniP8(y(4Z2+7Jg{9G;ZafSjmx9Pl_)D0 z^kq--s(%bIRLI;|o34+{F~k$1cHaSUe+R@9deSrYk^uGSws=`tSvgkjAsvON+&uNjGefT(Si{rcnTHh*1mJ>U~}#;U6g9nD1jW{3ea2$N`QI zv}j89_oc79xtD z78XtueEU=JQ!ZE0?1_gFJiQ(1V-8tZ{I0=A84kp%LTS>>`s z%{=WV{>U7pWkx2|&uD6)VPWO?tsmwN-(`YwofYRRuF7)iPZafx?H$Zo7->44#lL`L zj&6R$B2lrT?rJR--KwaM8Q-_jSFzQH=JX+YmTXaBwM@?_sD&Po@d4DuuK+?wpl>FR z0U{*iB2jM4KQBo-^`Q#)T%E|E&XtZRQpoCF59PSw?Rgd75ffChEn;EECVaFkgxi$A zBdCyh=boek0{*}f1!c_R#@+B+tO~d>p=iL5VwdpAcY%M4186l2{x6)oSV@8=kfdee zqp0~T)lrKMH|PIB&ZjTs6)#1GX`tv-<>NeF=ADg<(Kr`{`5%GYrp12TrovW@PPi^- zWzKE$9OUa~a6O7p|4`CD8*H-i>TD08`H8qXCfN8Yjm~c}ff8GY9HHJ!JV@8BEWhi7 zf|Okzm=!A8`?ljT3!Y|>L%{yI46f6c5{s8K%k*~PO(ga8YrPj6Tq2ATA{^Q!36s~B zHEY9DANe7xqnSHOjp4!d>tWzcv^?!rhZxURJ1Q?TeNYsXzAp*I*;j8W&~03|A#JLN~Md~O>Is$f{W(*nP-i0 zXWP#~W&Uf*Gek*>tK)nBM_5d$Q#v-iA~ITtuW05NlIi|neNRVB;Vc3DDIbG3U|kb~ zlxq8n937!#AW5B-l6K0e1L6aoID!HcN(2F>wk2J&hyMe(5Dv{(NGWL_+TI0ig8InM z{q_X>Nn7z!`SxzQ(E}k&?XK$9_Eo%L4bxCRv)k7Kux+|x0wP7`*E^AKw6)<=!t$|- zoZud;mSFc&P{lm%YC~>1O>nps6fc1hpy~sD-7fo}n#Qgk?35ZNy6a+yoEvOe*bt0P z5Lzf*+TA+(Jy9cYeQco(f+~jWkfxRv5{5FfR#sM|W%k^F>ac%AnaHR7jfHD#R;v5b ziBIs=j@FjIekWOchd#ChNni-e{9eO7?&(EgQm@`*R3TelAmh+u7UY!vTGGmY()h?2J?5=`BX6_E(zvHIEo-0Y& zCBBGA$S-6P@M0FS>Kdik(Z!tJ?v1y>7JGL@6{@3{CME>B+?gQ&S)n5rmT=16+>kj< zpWZ};>$%}3TKp0O;E4&eip!k#jK?1lo{aDJ-k3wP9xWmS;MmvdRw5PHwL|FYD)%JGTYnR)jdgWzSVab;6wR}z=ky(t7XeV+hK)4 zdydNpfbfWWBXkr71}#1^9}R9G*%8Db^_VPG$8`H`em)=6pf=Blr$Ax{HFx}d)DZ&qQv>9V$5_;Hd}La$H6uB;(I*t*_L9@AUzVz!bm_N1M;}W7-sV&k8#I znt&m;0KaK;3uGCK+HJ_~pe?a;A>1%)O_bIDK@Is$@cLdoIU5PWhI!}@HTfe&z{@dk z^oFx_tJ589?LfY}0_~92?p8Pgy!z3K?U{qzmc`p|MuqxiZ$}{joX}8E6h~Uy&yvQ?i^1+9UN$>Akj2q%OX)ej|1 z^WI!-Vv-QxIE0PE>4u!bch&$qa3D-zNzE8*cC?%-CO%q`)9IFJ+ui`d^MzaA11-68 zXEIB6xm;KWl?jxIiMIZR?ozdI&N+}{q@c^3}7UF9tYzOf8Fi+|s{~ z`M;EUuB4@6!`5lK>W|#Ycl)OK5}Mka)rjD`yZm=MAHTYZrlJ>ObDb_nOT*OZ>55gY z;YQu|t=7%f) znRsuP*o4*5JQ)X_l))ZS0ODzJGS~yKWF;lct1GU}RXB z{0!X>X@^-~+_23vrS>(lth+3ZGBWu7hq%P4jwm#9Pb8W3XKuRO;>UZ?_^WFjF`x~W zIhBWk^gI#IoW+)eAa&)6WaF>8*j=~w5_O@BY8s0$CC2dKbtaLs>f#33t_Ju|Hn`)3 z%oIDq+QJp@Jv(?e!f>S`Sflc|*?Yz<7VDvwNR!Pr@h=tGZT(-mQWjvG6{|EJyK?k! zsfvLs(_#-AXV#pRKbK@Q~ou%=Z5-QCg}Z zposM)>B37VH_uyWN42kIA&qcc@e{guYkVA?Y;5W4Nd|qZ5&>opuZuks^f-RC=Ssw7 zea?2AbfljA+FK6z<}B<+){Sw!u)ItzVg0W68wj?>PIh}c1rhadgu{ut$I4F z?H~+=dco|mT9}+#3oF^o&AZ$aNKnPbg7IR3H1l*>^}Iou>Uik*XoLqqfEmKzZosy1 zgLY;U-rM}-p94-ChlXZNRKVp1UJ@EjCSM}B4~B2&QGGh$N|+iYm0?sK&Rv8}(5mER9FN0mUA(W<6(P2`8dB{^(Xj%mKMSwEq zz?(<+>9K3Efu2h}qmSsAUpsROw}e{R$(wFD;s@3ktwK-6B)d?T$pgKv%uRU^3C!cw zvP1LOM3jY)9-ja_kzJUi`HA}Xl5X^?MAlCsQF|F|WR?(`D23S@uh#Fw*W;gP7uxEh z$!WCU)(sNoK@0$kqHzfn=Y;{_VqaBm0;MQ!o8N14jd57C>ksNcERKB4?aJ2TG;}n zfC(vnjPD|p(<#Qj=O7H(F;Z-?_Ehp^idEBPDwb!v;8Wwm>K^qttPo>un3%alRb$)$ zK4M-_aCX&lLJyPZrb-aAGSUchNdPfZ!<>kx_{r0jEX;?JBGe@Xq8=2jHl~QLq_Q$U zxJ&Es<-7#|JPiaesUkbe$~)?k7hofpg{R-V-d4Z9(d8%j_3vm*t8C1m2V82jObr-- z&>ImQ%Hd);ghHPL6t!=uQHEqAS}%h1%zB}J76r!`HW&bNG~yk4Tc!kDV^MI~vV(;w-05fcwHk^XI|6_8RP$21;fVUF?6@bnVmTG}wA$R69dOfoIkh9P*p-_1TE8HGqb?vuHuTf&fPwD2;?6m|5m{blUxZh^ zo-*)N3r83q=J@%WZ3SD|ql$pzVNd^|<~!)McOJ z=hsXvf~1B@nmWrZ9i0S#I?emvUxt3lwE~RCj~-?Dn0)@P$chSW{MevurOEyEPWlV* zN=TUM(YURqJlvqB=%RXQY!viHQ z5AyT!@~Yk+Nc5@kr~5Y7S4a@nGBl(EX2$g*hp|%!q^@0Cj=?W3`aF5^B)RY0h4suB z3B-VRmPb(V6f_~f0%IXyzypk*LThr59Y4N*=IV#n&%S*5QV9t9;`)kJ%ViQ062c)9 zzrX*kBrG8lCVp`uE=PbqXWp9lw93)f*Y`XttK9f|D2p8a0pUxusGI6{Q|a)isE?mN z??=5n9tLd{F2nLqP?rO(-57+0B=RuU2t)E%gOC#R;ygn-&2@&l$I-rM|f??zIq zXbm$nGyTPj2d-SX0=2TjaB&_30{HlgX> zD9sw9KY$Ehf_{UTnND&jZRnyhiWT?LF)zG)Zf&h;B2%yE0dx*cwf4?NhQiR}SscD{ zeC#LJ?l$ip?0BYeRVkimZ1`DLVEoTx4TrCIv>-2jDc@!^IMA!etT;JZMS7^WkqG4QI+GpeLXT(;<3gFiGE@`JG&nQ!Yd$>##utw!4J?w7b=_F zTb3Yw=K`X^(S#s1c0=W#;cD!&f&zb3W|v&{l;gjCJ}f9A@(sk8AS}VdbDZ?Z86S04 z-)k3CWR-^=LWoNN{VYDfw@2pY$Vo{_6${~T)bm2p4+rOv95YNaD~o17hdPbmCmug}LN6+MhJsG~69UYY!>>y0hBEa_ z(79?KdIRZY(AL9zE{WlZi3}hdC*g8_hR8k}X1zh8`z&-KiL`xLE-jmN{}EN>{DaB9 z&~<}0+7rca1S5A8ltm5y<8(!fleP)oRW5bPXGAxTq(!9rKB zUbSDH)&BJ9(>ZbRvoONu(&funKyNGpDYL4lM`)-E4w4_xiHBeTze1nj0J)@hIXMpi zM*(RnI(YCXB^x~Wqo^pF($dlsh`1R*gzp{3hX0U?FTNIt579u*Xpr|MfngLJyMPdKiDDF6Bw)-fvQnVzr$U^PTQI!_PKq6`_eFhe%P7pT|pZNT#$)IW$CfS@znLsQtwmd0mf>@?rNG57(W{(u27kJa0dNCk-O zdh9pGV+UbMAB^7RF-rjJFPGu8Hm`3zSW3OIwop?S#jv4pLz^%<;)a4kut;ZB)m~@{i#C`&;jIAQeF)5H^emy} z_^~sn9Kom`G8h3=IsD<_9c$~i%VXz|3#x@+bzj5qmP5YHXGNUJAYS4O7XSM7t34Pm z-|F=rKi=>HF1xw4l?_9zLYj2LA+bL)JNsgB(H@K;Z(=VC*;7XR_Yh%1&tYUs4|daR`Tg$OU#o+f(6zfk)vFeh6^i&NDO1ESB5kbwpJ%VMD14msecoSGbV(4U)sOF(?3Xm%QjMH{ z{P(jUVMJn2ejhPa*?r<2Qif`aV*0UC?*r_%hhB73w9h3@**;4-ZR2z4vw$z>yL8h3 z@NfQ8-5fnS)`zy4{i47MJ{$!N4NXhHb?~{IpzqR0=p1lwx}C+hDNruy02vun7BXKl ztv>~w1WpSJ;|&o%d1d7qs4stqnNkG{!dj{ceT{(#x{r&C%hk>86*Ocz6qjys`SRt( zwKb}@P*$Rm^r~LKw!ad1wlBiNPx)5Y)YKRO@fzO!QALFW89Diw-x?lY1%7`(WF)JL zo~bDl>SF*6?l$O!1BVV>EpuNvQGVvywMcFR){mm_^5%=Tb;##d1dh_K+vccR4K-aO0rx$f#_y-u4=dpC~Q66ja2LbJ0jEtmV%U(sYM@dOmMzSe;N3ws% zRiDrI`~CmDUQf^SG`R2kdcV)}IF9o;&+`$dhIIc|MCeHvEq>Gst0$=K#OR7OfQi6v zQmU#O)FLJP;61Ci$24F8he35Regerkr%wS9J&6Xv6RbRPqE~bbbzCNm(s-LSiiH(-3ppcZ<*20up`$U+a$5LOxN=!NOW9B*YVN5{-{~!I` z;TA=(kYRi`w-ZhrKhI{xwZlmseaTLCuttY%gsXK-YqDonRy0?T*&&H z_V^OY26iKnxJVp$b4(noS+o~hTU*OMd{FHF4d3C^XzP)@0g0PS+w@-(SIPkRLX5)h z-ybZ{P+7{7i~dlvCVl5x_LYQA$3G!Pahb!5g3XmeDMPr!dwSTBav_b9SG(Y&Afvm& zemyDsvr#8ccfYgSUAOgv>KBKzJ}N3y%}&%e&rxS{#Nq%)KCy0Mt6DnDqQN z_`kRX%%XdN_%CPT5Uc3wZrjK%y4&f&^XEIsvGDu$?b{FF%FRuOoc5un=8RUDb~^~v z+Ict9my6D$8HC%Q`R<>rd)-{Rf<1|KdVad+Ickm@vQlE%qjA zf0NPE+kqo{@BaOD+t}Dr9Bc&MzkiQwuqCzV1~Emova&KcGZVu0eFOvyK~3mtr$LY7 zmxhMSt6dV|eHU7sFI?E`&mqp8fASqdE4f*veik?Mj)3VM$?W!I9iDnW_IK#brsv|~ zikZbvGKF;<}-FlL)zj!fy zYu~~I*YV?Qz<|N)zZkwWTTewrHTfqysy!E@AqXNovL35pGo2=k%IsNqbtzDmc4k#L zKTsQ4iTUR=R|9AO7uFkn?TFuk+&b%0y1azFh-be@w~#&=K_=TiXWP z^In+{X}CNwt2NW62n~bvvG=O_x4yC;P^%|eFlFg>N(zrnXCaphxzG0x``aH7&S0Xm z^9FNTv2eypg}V74a(UHokl$p2b2pF7m*<=b%15FmxJzH(eQ|tG%+$~k`SgE-=L>ge${zuYKkkw2rLn?=&N+N{yC)miaW&mt+oK-qQ^e2 zP7Z@mhCW$@K6PVm{CV{h<39QO5n8$}c`q+qxbWRev?WQ47L)t7ZZKO*0X+As zn7Y32$S+f3+skBwdS1;XcYMY~^JA)^8wJX zZw=$NZTGRT5maH18@Z_5kivsH3|9504g`*rl+Gzo z_mH^=sl5+NtE)F4|9joOO^u~8&olBQ!yY~I>h3l%C~{#w9dUw^0%7xQL&FwCA9;Z8 zZML$qT}8;==TWJRnH9WP6@|%mnK?OfmX_Suqi`2#e6P5;q3se<@L`L(-P^WpbGx>L zx8>}$ACqj>fN7Gf<;oRaX+m0ha{7l#Sr+yH%OTDp(}q?aSdze4i*=hgPHawX{rc4e z<1X;xIk1G$6H1Q=1X~f4%IHd{4P`M4Zf+&$?90flYuc@Svqs4b*G`Rf7n#21!s_TRWutG01||GaCHz z(-xaix47AyR#Bm66R`<#9@W}>A;6fDGY5dly$;*d@}9bD@B@@)U+v;h2;g8&y<~3Q zi`SZ{9)0TxaU7VMTYmH#W!bbywR+O1YPZj>I?L>Z=KX&zb$M9m#!+@E+5085(TbMS z^mR_m>Q#DQo^P(7i!#?YF*mdESpKLZ4P zmy5{@fXd^x&f(TX0h1y`>}gjSpsArXJut= zFK{|N!~wz~VB0OlE@~?!w5GnYk`{ps+3N^49o<6U=MkENJb2iunRg8h%}MUisz#j7 zdq|6YzsA}`9R@dJs_90E6gOO4%FD`5Mhjz=2dRyWw!Wez_fIn$43PZiJhbIEH>UQI zcM%?pK2TZb^q%o?etTXZAYsc!^~B0@L1cey=GzjmOOhqkmqy8b41ewMQR^N2MunWZ z7(jUd5q@&6i!cSP{*A8K!%pJ{gTupB&qWX`kihPRg`JI%WZNy$O-F%hIN=40M_E&o zPV|ard-nt^i#;D6?u#)kfBUv)WW*Q7g56+8J$aIIxFx&>Z#DxcN!!`I92E7Iy@lz6 zP{tXz9X9b$mU#>cNAWb%hb(x&&^ZFi7aX~1LD-Do;%Wrd#&Do_7MmtwDP+k zq4dq*31n2A8Eqww)aK!aZf0WIZ(j(V@UXD39PSO)aC3*dKyCpJ^}yH?9)eO^ar74j z1q6Dg4k=Y~w-2a*XYSQ5y5`%rZqXeGIj5jNizq7ZkUe?t;npo%WNQrzZwQbW4!Eyu z0qwXXYthay+KJ`YjO<6S3k__6(4K$)BXF+09AJ1e8=Ego!CXRNF+IH@iv^mzA=^K= z+XO{dBQM%D+O2h%v7>Hm{IPWAKZ!%7L6YLB3#F5qMgG=`bJ~;(8MMRKt6X^*A94@v zpelMq^?5C&s{&;}Ibhd?2m`7|*%SxYQk`iM>Nr(@HiO6ZrZ2J3{ORM`^6Qk(FC||+ zMP5dH#Y}i`OROr$YKK@{&ZqqQdx#P@Au0TjIG=8j$WI|;QAYtlbTG1*oL7P2h|IydKi%;JnuRZhgEF)4KKRJ!50{_18uoa%#sN5Wv3AuZZg?91)P7 ze56OdfB*i0;R~PI{w?dFQpt?~Nh>NTJv@F7&l=DFpB*2Ta%N^6c#R6T?G$tP@Y979 zZ4atGj+(6Pj|CtzK`COJsO@f~h-vm+$f4k+RSae;2H2HeY?LVGG|moibq^lr0q0hj zHEJRyH$hy9FDK%??-w6PI33Ay!p7R#4^qgdHG8Yav8^pGP~*m!^6FCE;wg$fc>P$CryvJz=@c654l9RSZOWe!^enarqKUy<>2*@nJn1fjX#{Pr#V z#O>}a-m=*TXGHr!|MnsE%FGB{#!Wb=_H3Q8u`$GCxfeD-6_P8zW#+wp?mnbAkAncZ z18JjzGbHXYCt6q9^F2L1pNQ?jsd=$MnL4K}#p&~Qs-y8$E{< zR3%?^PeHx;z`m6(b&Z|K<*!Aqx$P?eICqgjs&>lA#wkTaL|A;yj5hh)(!vT=>^=U` zK3!vwNUSh>5d=@fw*xnpOr-$Qgt1`sfM`F=hqp>fLJ8=Aym|$WBP@8nx>55wO6cpg z@yJxCm}rU9OzL(_Pe`CeK&Oy`vMBpD^7if9j9a(HDi+-BMZ!i|FVv!=zFuSK*bl>m z`uck1+JyTdAxtNnr)9GvT1@XF;+}7Rb1h~T63|(P-~i<5a@5qKB|;yzIIe=+5=%2* zPA4LRKsCIF(2!DiZ=xRO=|?k~7@8W_Lu(ai&dgnCIZ>jsY(+|`j1Mh~oP*eE&KVpv z%u1zGm7t%QS>wPU+`+)exVxU}TRx?|4b^qEC*$%0>koM_r+E(kd@>$q@ui;n=H{Ek znP_ifgY0vii6?)#1|ciE23+b?u9R%t;eW#_`7;_IZb3cb(F^eLA?32e7ps^^Fyi<8 zBkShP9*}a%zTsu|^!L9Aa>O8bZ(y%=&31Nn+Arm={c~vlS72(WQ@3(Jnn-)Rl+`X# zTM9%f-a2;Y*39$N>Bc4ex+r1&AmC>m-U~;pgV}ZG4@9;gz zg1`mj`3=nbV=gEGkAlO+uu(3-4ttBlqW&l|B*hUVPC{u?vHu1*g*s&R(_M2TEvFs) zkqns=?*WjR0Aj?Fwi}JKMWu!Z$faq~+PdW;;3YdyW`Q0XJMu2J2>e#Vk z(8qK#^_zSH0>bojv$8Z?YEYH)X*Mc$^F|1dAE^EWSoTB0xDGu01Tld1z*+5+=Fw=w z&#|OIP_B5QtqC}yflvKJWd{fiqN*J7y9VqYWCEy-5a$Vrp!0<`Q4Mgs5R{vwe-i5r zy;suLdLV?dDpQCsGS-VE6w^n=rgRD)8l!2DOmzC2+%%tmZ7XefB=v0R)EA#M-fIY3 z_Vv~I8?_zl97JSgUshl7Q2NL7YFnY7Fss6rmy^u zfL3hJ%&lGLKo2e0^udXLLlR^(aCAfxy?Ph$832199Qqj0qQQ;=5zK4}fU=gDN{i#& zm|?t&02cyHc@N5DyS(6NcIlFDg#FB*Mp;x0AiA&D5V%umQxh{j=X>$-2YUPZu1$Ye z8tp97KRkJqhlifj`+-lGi+O=o$f^-wC$+Wp*y+k(@Zp}fv?p9<2ESzCXYLjdV3e}? z(1)0{W+3%U+P8%6xPTdAc9wZODHBDXZaB+hW^oODn@^lL5s1RJ?g*;S?*n!PAa#;- zR>7aW4E6jqZ@oaE5^V?L0jcy}U-8Cg{uXsOvLuf3I3ouK|2GviwT(caz7WGcHC~_S z^aEe6pM_DN4tp5Cwza*51E4liva*8kWt{?RuUaErWseF-{YWc#COGCTkWuAFyxxGU z`ve8Ibar-%y8cQnx7y6;Zgpq;h=k^MKMGQ_KEWTV%*e_*cUgKBhtF}Nv^F)cJrTcIEce*u?xM&P@5vRB$(Gl15z?$m+` zfWb$5YV#gEc#vsYxe-M5O!Vh6Wu$cwg2d6Ti57%24E3RV^X3iblI{d9An8Lu+#+I{!H9gicuAdw$&*tQ74U6K5A^^pk@%yXp`IykCwaapWVV*pY=6TXRV@4^$b)C4 zG@#@^)Trq;vF+9q@t`3O@)#JkAAJI@8#!Lb5MokNE2WTX-#O!7Aa5{ zp*3NGkC*o_ChRw+>9f|<)Cl%v5Jp8l(C+BH4pQfNp5*7}-zIFy1jNW-XlNKN0P)2W zVGd~Z(6@|0oNhV}TD!M3P+J%f_rvuJ4A}A06V#)&P#~S%Z$>wuHz1A3Up?yYLx|}t-8rQlK`_7o?I$fu~uSa1n07oMh<>If!?gj1Ls<0Pbzzi5s=jph? zu1~v$hKDae8nUCl61pc;nR(;7*V);!5NJ>}-hbp5@GeSKvSIv&(;dDPR4}3o49R1drh9w~`uC%uHbpM-(2o3`SgJMy18JKFL!*g;z6nPkB z2UajZ%}lGNk0UF_^_7PsKaCuH{_NQXdV2c110&yZQo6_X3k&NwXnEK2K~_Rqrb|O1 zmIoG}^8}VqI{Q01IVoUg2-6dh5)fD)C{^STTV?BVsHC^y2I~gNhd53PiTF(1u0tul zpd~2n6pKE3^27(A{*ISd|MuS}+!9|*F`3rvU`c;UrfO)lIu@aqr)#h z8Q*_(<6Dp76pH1bC*uU}$2FGM9+lg>yAG6Q%}ZT>@#6TFuwaJKoiuR-#j_4!P_)#5uh|iHLF>)ddH^Msqfm^wKDSLie1fQY(I0_n%s1*? zt@Di=_a&x`GmOO1LCxCt-Y+=m;-yQZn+cfq<4BB~76|rQvOLj;(%F4~e|ae>kM_)N zL`!!@mZf9S9-O;HbT30(xs?MLT2@v@iR!pu4%i~tI)P4B^60KTN@&9)%`V}#4ZfdS zJ*QFd2|C7tDj|70YR<+hGsDW_?WOyOOKU9%ip}XrUq3(QwCy`~_%xF>NrcQ^U|PBi zIoX-Cx`qbsy7}o_Kf!FKhE^-2sTnqG2w5=9utDVq<_zoT^k`MZ$j2ce1QWBvbUfS? zhl&rKO=m|%p+4dCE;DoPm6I8;KtL~|L@1)8ao@^#`5UglW)2R2GM5Q}-O6AXg7#~3 zRL#b_N)Fi<;@ttsrdLlv2VUXfZNtgB&6fULl+@yL^OH{ zMAY|=UG6KQvL6t(%*ID3qJX<@ov+2O6}=U{Gy~I9Q!oqDPY<41Cdq9fNAaT;c{7xH zlt0fc&D+PnC(N58I585|R6BA|8GV`l}5PmzRfEbfA*}(s=K6Bq>GGVcsXX2ElPQQleB*#+=hn%bFyVky*p?=wbdZe4zi_*ZI9_~)3oTPWe8A`LYhPPUtQ&CZ1J9cjP96d#L zc1~b0-%9b$g|!w#6wfbFIf_y0FH&Y)6nV%e7^hiEtmd{adiiUS$NWoF!k4~Dc}nVXv{KRa-8vL$8_1fWs$_ndTMIwG8bLl$K6w4%^w*0uG!gb*>I6% zF%OEhuBVNCI6OZeKduMo$yGfyD0jd)HwQ1vd#&KWy~4~S%$SdYy9-siU9y#gcCxn8 z#iGrO%&gPnr(q=7$ud|O(TC9pj3+v=XdYs{{G_utYP;RA4IMsulwbWc64K)n&VnQ`(KXJs*-2V4 zvgJ>HbWNR}@7uiR0#WH}IN*F&5LnK5jP2C-**OPk>05(887`0_MQ%jPY%(`#IDzUG z+9~y}u5L3po&r3da+RcQh1;Fr--}IJ{DXDT)TF}%YCB>nx8qGSv;8kr!*2nJF>BuI zI(q#0@he@$hF`2VGcqzCLUHNTKi$7dh7IT5*_q6sa-{Sp=2aE+Zo0B-of*$ur&3Nz z`GUH~t zw`o_i1O5IO*an~?$25d9!e8k8pPjhNV&CrqI0H za&&deM#_vB%9P<@L%2oo#pKk=`c+`thmQ>o|Mc$P5;b-ss^w+-q{>2i>+4i6A3yGB z`Qyji=|fgKKi+B(ZoGTyOV#1mLhmn5OiCNlQ&csjP{?Qz``&c~$Xu6aToF-9jy2x0 z?KNxS&#m1@SQJk;J1F#0iBn$QSZ9^=;y9PshEpE-&+Q|rwGv9>|E=DTr6X_-p$;mp zBt&Gl3_(U_mH+v(y)jg;UcI^<8M%w({)kTHZEb8$*{>>N)~Z3IhtMkh@rR1|uS7XA70-Ax7-o zw=dL4L_)%7k~G!`09yZESg2yqZft0fM%`L&aZCQ#{f=ge()aHV2Ka~eegD43-QB%@ z1wzec6zu~8iOto|j%|g5O#!lk0E#<}spquf|HNY$(wLSzoKbN^f61Yk0kr$C0d#Ce zkMK`93*%639od2P8#XMZ%Y^HYW#3x?a&QlLp`P3g^;L7o1&#WUMejiQ#?mZ*6q@#+ zu+DQPbu+`Te?S1~^3y0L+?+#yNy}>Mwzs$2!Y4)oAPQLgXeA{jNoR2U$Pzrcu=g>g z9upHo$ltYVSLhwVk-@=I1a+`GSp$P-s)n3}y3hHIi+S}@V79aP{OOa5Ep-ZfH+cc) zzQcH+;mT=m^wbi2<;rSm)RK-}ZGW>zPpi`X_bvkW1Dv0ALF@^%hkK+46V)*su2TP< z$GgYI{6IPD?O(onMOxXHF!NB$G{I*(D%Ow{qKA$aLnEVia&kiM@M61#;QZrkU$IBm z{@rp*!W^N&{S+s8JU!W(a{mgpT;oBTGVK-XH<}%NO>uL!ilHcun23*+qx?)PEL zRk(avYc4Q2)X-u?$1#<1r{PZBrfe@I8m+SrDXs78 z6V;zC6@QTAlRuwA@@x0LD78QvwYtz=>PE%xl_VK5|M6n?c~13Nh1qnKKS@GXcD}s! z7^@`8sEF6l|K|5f=6U_OQ20f0J>+?^o`*o>2ZD1RdWzj`LSo>@kN8GCpF0P5xcBTS z+ihs|pPAs~p`r2qWeE{Knvl8I3zA?*&6Vd#%gFrC7VkB1i~ODuSpk5k z11k&7Anib*wcFwN#Su<2OGk;StgSpR(0_jrH2=8~DF@RyXbRJlC@QgKFg0*Qsl@*p5(mWL;Eh zv>+1NbkXUdPGuc#uxXP4_=C;nEZ> zX=8x8&B{iHMG_ee&G$@%kBa(pn|W5&T&!&saoV>jcJGkk=0s;e6Y_PmOw@U=9g4P%Vc$b32&WLHnI(e%K2hir;?++v;6_ohZ0c z1b>3zzJ(VW0agL$ie|B{si|U<dWYp{TH*Aeq-^^b1JnSiHxY%<=~TQ=iZzbx^ToEvW9f$1O` zwQcT5{Rq$jgyplDzu?U^0XU;85fFiC6z4N$mUJl%t-t`kTG7uArJig>7&ImBqHDke zCt5et#IwPQ`4Z_01BE+}V2mmtoxk(que2ux+%lf{}nYA%(1 zAkGM+wzT5D|W+$tKw(p^|ap&ZKo`8p=@HO=$evx zG~8vMx@F)fWovk8H=l=W&IBv}_3UiV{@b2?M50s2$UV=NO_ZOK|3fMF?}wbhgMPp! zvJvZn>K%CEJYb+oT>eQdE1O(S`~k=@d%r8gdpbYBu`gZro=v@U{W;tnmhJqOj-48+%6MGoyuPDS<-C?hKdR7M_^O^vj9h1|*yJdY{ zrgfe0EI@R7ce)FnAJP+v2kzDVo3ul}^&%LYy-b1Qe49xF*T$V<-!pn@AqRAmE(}K~ zNI>kd7@%L*(xL#hjTDs0+K-27w7Pj#+Z~v+5Z0?6@jYFo-z}xD&xWgO0iO=)Hg}*4 z-K{muG@+FDXJ605!xQ=oEi#XBtpu>UG`?oLsBJfEG*Jz%RS5&c8ftgc)*x0hK%*sv zV)!#E0QNU;+qN!An_HAX7a&~sOBDhze&9`zis!9?-@ku%BM-n}x&<&9dt`5+8G~fH z5X_Ygi+klqU9`RO@{Y+vfW|kYYu+X9atB3Y(k=}we=m>7I|jInlHP4tlzeU8Oy!`^ zNgA&qHoiya2Mpe9q-Ozn0hD;%x^<<9z%;cvnVC{|>6oY8w|n0gs;IAL+_-V$UBO&< zTcWKc;N^&Yscug3Sj>?dzO*Skuf!`gOZhjK^9N1ocF##D@D@6vNOHGPXPj_M9~aTN zKHR7z6f%!@f_)W7u%R`j&H!%Tu!3`8!NFR^E=$k;GH-9PJRz|by(6-qu_jlq8h6hM z9YAXj-nA?QRwfAr6y{0N$Z+u}EQ30vwj}G5q`oP!aoY{<;%f@gqOUkCB)8Wc3ZK&@ zGX$}h+h8D<%2k22L&|)oIA#@>_7G65eYUkdYBI4j{Z%1g`Y9-}zGmYb)zuUSK0_J9 zuR>|O_JuA_pS&5}nck2?5oI9WI%f!^BHz9&YIf;6NJe;PW6n-YS5ejc{y$H%mOJ3m4iIS)fJ-RIeo`0BCx9uZPC+eXZ}Wi7w;#fJ@%Q{YItG zr~BQ(QF{RKrky3}Hf^ee@&{m>5;Tuq)J)eo8=)&-)rEx4?1T%P4umg{jSiFe=^(-h zl4Ul`NAQ#$83PW3XT>u*`h0ZSR1U5Q+A<9tg43W%#v*NzhR=3qIHr6+`0h8O=&S*L zOi;}(XuxGEfVWUDLI-Q!1x#fpZD}}56Ic8X+u3`9|CCUwEw5iXp;9#Rr$$~M=Hs&a)nyupBT;tf_?4E!hYy(j{+95f zk)Q2qqxg5T^(B`CB?&SS_@|GKZ2v!r;L5*=;DEhB!JVU3jhwf?>euSLW??>}v(sZc zV`+b9>At3Wo+)c?hugz-l$^VEJW^*OKl-@m#uDm_mWfV=f56w?y_$O7TMm#P;LKPX zD@rk>1Woqfp30S@Ad7)fCkbk@MF`d%lW4aZXyJyx*&dKE{5BAXo6~sdSIUy_Jc0B3 z5cJIb)3m>C$9vZ3JaOX0By7JQ7#x?M6xy0vTU(QzNGHO$Wk%nXlOUY*bIr9QlB z^&OgsOVDmf7l%ojc9JGK!XgKkKg}t3_EBDhrM3@RBHG`D*((8hcITPKf-~>@fk~daYiU!$H_CPa0s>x^Q{2xDl6s(+`nXw%qn)&W#*k_eA zNxJ>^z=!gEqI@72la^5SJ*0P9QPBhJl@#I<6B7?vLe@cnOb!w1rJ-^X;QAw1Clq?wPsPYvm;(s zm$VfYzdO1P_c&&6Vyl!?N!&sUgC6C6`l~0T$$%znsoqE(o^qV(%RaPN-MXTG=5~_b z*zFW_}*YHQSP)uT{PH=?P3qI1g1g8q)o7pHe|C%Ug4bqY?4 z;Wj&-dC9E4h|mao^tQ3YTbEbLKb5Q#%zpXW>vr%~mrXk!sENBo+1&QB8$kE=Hi3^j zKkEzpsa-bmh>Pz8j+6ob&O(hAD<^+A*Q^jAaaLsciu;3N=;=B*vJHfETkt%E*bngV zsMthB02L@Nd^(hsX>p3|OKOk2s;<8I`gl8+lRqfBPc!CE-GZ6!#3I~cqK?B%oyDQc zlli(gV*LF#LdgmpXgA)Pe+pv8A3sXp^78UEoYVUGKPjM_n6g4ElT(^teyt`frpJdXY%l z40w4rKy7Ss;E9CulI`CHg%|pu3Yza$I8qG@j)ExAqCMqq@%IiVg7v+;DEjuvN|lbp zp}<9vqVVumR%7&iSv03^N74LFU0vOYfya`B1pdlDx?2lsuvpLomQqf)=c}YJGs60- zUq+fdq;N!eH-kQBp_lG!YbyzI67lnr&!o{oh$HRW=wl8%UgGQP+dlBmbS%gv0g#g1 zE&#Am2~4h?pMKB`Jv$jCE7FinVb}H{%i}P>Jci$pw2ecmNb0|yZnvk+v&fW!+4_Ppuka|%wkL^1hl;CbSjFn>*?)sE z{)=1mZ#nYv2OnqqYwv0&z7TUwR!!x-vuxe2z57|x&e7&3eK~xwY;S7&>zxN*lpp`{ z^zoDPoyn2{Cc2EBc~5cli=A;u-+{ZUV{8NFIWv*v5qx%}*@Pmm=QCg!Im4hEJ_WJU z_&*_fXL)6hN%HdYl6rI5HxyS%Gk5srE|9=z0>!JCJ&KOQjVIrFO^bY0r!h4(ttYjO zhvDJtDPWE9LK_+M!*he;>!C4n!=}dR^Z>&j+D(4IH|MifLmrv|aIqx6z z9aK6oTSvzVqy&s{P`q0+R2Tg=p;F7)TD?Bc{u1e@jCS_r$y&@`dYO|`K|p%ULiaUp zFsGXl=9t59?vMLL*DQh#GxRZ(R;&JYF332iuWyPH>NO4&H&>4_{pM;OaZI%9$jCQW)&6ho1AJLDZFYtrJj%a z6f1#g1R9pbw*(I#_9!VSX&+FLK%W{ldPIC-TG<1~ckL9Zx#v5kaDNLSEzgK4-p!z4 zhoPp&AGP8hMnC4Y@%Ce+9R(^?DL`i?`nKCk2;*_ciJ!H!{xCNxy@2NG{DhS?K}J^Q z*5r|lnP{3%BT6N5W44DR#WTzpP;K~1VR6m$(iZc!mpfFgzn3JGeSNv#GW!+Jq+Y&P ze&%JpW3|^1<9R3l#Q3`>DoJ_p^|L^W1%J^~6zwaNGZnWBg@>0|Olt4P6i`Z?=Q&Ry zx%+!>Wpgrq-}hlJjv;dk5l2bu{;M~Vnt*9SWkTZdVQVo5np;i|vonW> zMK;~2c``NhxY(02|JRW39@F>bZ_Jc(W>jToR=*ZZOeR(p`t{AJ?pVJ*=?;gUH0Q0| z4X#_)Xgu6Y$9*)e^&x=4VcxXq_lnRo1D~6%~qFP6YsQnjkJq29oLbGU4@y1 ziFuH!;E{iREavea>ON8Hd{ZRKYeVoNh17X?y=Kd3cNypyjf{*y%&nH5nEmyu`LTe% zJL9X?(e?p9aZL7H7%!N(k`73zYV0<3mmB~APv|gO8y03;jOmy1#Ib`#jnDse!gcG# ztNg3ODH+-Y*R7ipHDpk6IpadOtNa@0!MbNC4AcXtU z1U(%RkxxKC3*!DPW?+9UtZZv*>z^HnB#cssGifi+iG@FXngUnNWtc87+C|;OBnpR$ zp6{OJx9p_PBP_mhI7eSVk{jW(!G3I6yj^XiEM690=l}`WoBe(~PmXU74TTeK{1Ysj z>COI0$1}<%Y8!<)%88)Z2C>#O(hdh4FiRS9NckUzte_IYW#QS1Kz2^6zP9C^I zRLCEN*1B0NkFmhT#wQwyf5gPX@&W}OOzOAMMA<(ZLs$w1(4T$m#Nq^^hUr{O%Q<3Y z7)I=l?Z~y+&hB64%(N5R3dh*Zayo}5<7xzehM zcD6>Oz0gOG`a_PO@{)n?kcjWDc5Gt8&E0(#n0^E!^K%O>f!jQRR>~m&`rZ{#YKmV2`Ezi8RX4a+o zd-FWI3n%RiHyzrfW2Jp6!D&@z^c<(cliARN)*ETi&x`uxOA)rqA6!g#m+&&;;j zcl4{glM!sR44O^DP1zThU7Au26^gFrE9p>C8}7se@Thk_njd%#c}LQ;68vQ@9WR)C zgS3}F+pIrEuuxsPc=0mKAaY_roksZ>ZvOmnO)*&W2Q$G|Uag=wlwF5VQ?&W0`IuWL zd9dlMaTAtvm^js9erh!2!dAXL3z+?z1~!pbCs;$?!Y~2j2F$(@2AV{6uF8G%{COID zAQmWQ$Vp@%Ssu-RU^=@)-~w?6Qk8c1va_?ZvZ^YtgBqS!6SBGVT$*u-5uWTJhpq$Q zT=_j-Y(9m%DB3IDzLjCvA!NJQj`JZWFF%Zlu=cGFN=u~}V17V>?sdT>c)zZuKgs{WvM9F!p#o$s z`g0DO&6|^+6~7k~AeFW9UVOyQa=rk2{(?YSVo^04#7_5@^UlTl2sm;x(7T(T8aN*W zJYflE)VDX+Vmrh!rT+nf$6$ygTc|K51?OTt;m%l7oC8JogZU-+UN<8S%(@uRyTJ1;u(#8?;Y zod_7_NF%I$Uo%-f+TV0Vqu_(<+t?JIUnZ&3FYSHBH~mmd>u>nZ*O2-&erw5&=LbuC z464};^ex4;7cP3c4(RbUBooS}lJ@`Sd}@{%g<`hn;ZDN%rqZ$2)}Xi-Ek-Go5w7Wq zbB0~fu?Lq-U)rz<+>*usPW5!MpMfAl{@b}@1tG0wf|pm8=6(GA`Rk8C6w(712G4#L zl4^qIzXPFE-~8BH%*s!}aM$!waR};}NKw}5C?*YIubRf#H#x$zXkVxMoMFOJXZUAx z(v3U5fTR0dbKUkWTVlXU#fsFc(JX`*8yprErd3NrP#Ex`d<#M<*BOaZiXr`94d~ae ze~5a+s~D_wW&sY@R8@WOIR{UNWuzL&@KaY;SN}KU7j_q2zkOr`L=(rG?^j%_&0nSG z_3ywsWBD$(pMEeP>znL(wSO5C4#i+i{G8Lf@?_IavBvQcA-E12(aYmQINB%~V*4bS z8#-M^_;8}d+z3b&WZJWWo0tEP*(3hqqqCS$$MXBwO&6DZXsOn7JqGclK|R~1L#zWk z2$Bu*UcQ|JDzyUPU%({#@9@Iix`R`((NaPxdFVH_nKJJ`S_{+8bG78+E$*NOgAWD; z6%~Y_23@$uy5Ns-k7UxF1|uHb*8enmu5j+u(a{FQh)y|TS>kV0W3_rjJT9RsPhoN{ zxfgaXSvdJj>N(B?Dl5g)>7ja^mJVCmF7&JH^5cKL>z+Z{+}8Ki9rJnF6SSu0F)hEHH9a_z_6!NY!@6DAJ3rw)z$-p<+Xhvkm zaT(CzS%e%i0#)R9T{${}^^A>ZLH5*vJ5*vtPr}pgGz_?21FY!jj>3W(xHhh@q#TP|l~*u2~cEdlWw7uYCV(Txyf~ zha5M6nPpF1vAR<|bshx(J#=cJYG!J`JRw<$Lq@)-`CkA+UwT@x{3b9UAOM|o8Tp-= z=Vgeeix6CgZ6DgB9E3p)OeieD+r`bv`5}4{q;;&OaJISEed-#5=WM;gE-rELj((S4 ztCFdWkI0YlvlfOVUHFj~gzH4+*i(-WpM>Po1THdzvfD8F6qOYf)ipJPkd~Qu>_~=) z3;i$!;C>i2w=9CAT^QvE%+TxX*MkL?uBZf~sus|c!_0biav&4U`T z-T8BNmT%@kkYKp#FnqP}$|gf2vxFCN0j;jt?u*xVO1SCbGAk=7X<$qiSwq~mEfLka zWI10J5{i&5oV#{KUZ^eUe_}PdvV&ksxZ;Z8HAqFWSwEKy(dS`pL|~X_=#wXw_GvIP zt3AaeT%R(teBCWSdzQx|i!MhuTBmBaWZChNr&=y^-0 zZRNn!HCofqu;(L_MVtw4+$yGL6n9DTrny%R3e8tkhgEYl+=nu8FPU@r^`jk*!5h=< zS4U6(qg-oK@_XdJ(XNTMs?ELG*jz*rr5mwhIqJ2w&%^z*9Jav`Pk-f?d6U=hAR2m& z-Dg83R(_jW6Kyt91snb|6TCi!>&7z^0ggo?O$h73jUa^)sbJ`l{t?Ym_xw)E%>xUo?5Mb{)(FLFx+9#P~y;cn;6MeB-p?>=0}V!C03e)vX|Y>{DA(H#|*kg$BI`MKyd z>DBpKVg`|eDQ^_~STDEZ`co*386^H@9^z2)@%FAqXGu0X6rRRgoSmMVYazE?+~aUj zggucf^Tx45hfbrm+|&@Sk^{DkZXf0w*CC$^!O4hl|9-5Z7xPr{8_FVx{5mcCp_I+Q z^0&op0W&r@%QNy)trY!6%OWPT~Pr%4V}nu{UnpNHkZFSob#V%)!;K~N5$@1KOYYpf5H=9E&tE8NXauwuWb0; zB6-?pBO2!^|2MX8kRzuJdpv!1-1W@ctAp-&oZ}twpBm$w?Qd)0or<1?1%>Q;L`9wx z`~l^3WfhfRj77@5EE1Gos4vcjaoW*dUHwITm`}+2gKkV*ZFd$7FCh|YZGxm^ynxXAv z<1atQO~A{4smn_;Ao9G$$kFGZ?YOgZzN979So|3}x zoc6fYGW3N|aLp*fi-+ydkJ~|4qZTjym&N~k(!7R;jqN)h^D8AA=BBfxt-SA+{rd(E z2OUukN2NUpaU7pwgHqDp-=|>W-lyb}pB@t0ztURf7#H?SrSswdaqy*mZG5 zCVxygRx2vxrB2lq!ElGRr*E0r88t`kYb)c2g0J~r{8*Il(Rzlm|Rky)X2H~oU z3EckouiJ{0m?V9&Fg3@{=9|AW1YY5kdrV)Lded<3! zV(GDC*3w{5;;Q6Tx$LyFG3SDqn#A)J7cGg`iH5!Bdg_~g^o*VBwO3cmDb#WK&X%Of zjF-!L#CXBNVQBHj5AL1vN_!aJSFcQ+;#zt9=coO79bSJH(3dha)JC>MyD##uzLB$v zi2Iui)a!*WH^>4c27NTM8!SdxhMaNv+iUBmF|oeCXt2E#Uzq>?EOkP1|1QGRoLKx; zVFzSRLE-PZ%5izQAU>nJVRTQ&E2&|z_k;U6O;ryD>ut>Ic&T3JMqF3+G!d&TOx1UrD`}0c}K=oMa%#5F=H?D5my(L z<;WxE*VP_nn-S0c&ztGViog%I$-Fe6c8=FMjA&oVAK9S#_vCprkVDSM1`&Y%99XrM zLCM6BJ8B}tQ(zJ_d}DhOrUN=UI!&l3jvbCINf0ZBp)ypPM-*W#6Zy4`J1V(xL}O^= zY=`7xx%1`vZNyMd(|9C#20|`QbnUaAuN!2VcfO&ti8nNz?TW*ekdq8z3f!W5-*H`< zKg*yVYvh+heCBvM(s{Gf$3nlB>(zd)WY_H1eBUlO6(NnQJ!SsiG@gA#qo&cCPkiO} zOf!R~-n074=`2T9dvl#WhpPTqayQ+npkzh7P`akjF6mmE+mI2d*s{rf^~#@Diqo{` z&vf~UX)IH>f_5U;xeM?Kc(MxW)!iiJj3Q#`=KNx(gajS^z|ipDfAxlwmsb_Fl7^_0 zw;%XpX&m`g%IJPj*{bWIU=V)LTuXz0ZQPl{baHS$lM->6&+OOCBMyUuIfYGl#<%}{ z#z~i6;~CQu?T1usjEZx-40n9|(&lXZgadEyWX|nSH}2JeCZrI$bs4?c=QxZwlA9Bs zs7#{()IvKY3a%$|d1lJ>*yjkv3=2|HFdUT^kNx(V=ckJlp5if*{FU|2jhJ zl9DE&J!kQ>#p-q9*v#Ks_)hb3h?ejZ#nVgsX^yXUm2L42Kjbc?_fqeHTCd)iymHge zRpJAmX039hxM}tOJgc@pqtn@sqTmnli`BU#At3=PTlTOX`E-!N?^Y^p~?jx>bTvK?W=Z*uY|TkUz38!6PolT;xU8yxijiOurZcbBkd9gv*D z#l_R}n@PDTKdMgjFEKNA{47~*OxdIJOybkqPcltAbnF-MIPWFPshqYBEZ?#1`Ti0g z^=ibVwcCC_Y4OTyc)0EFr$oM-cEYRD8OP+__a8ql!_l*`;|PoZxImxeysNyv9!WSv zbbV@TE8S22<^TOkn3@W+xuL8#6(aDnrFdUXk(Om$+2eWq1*yxgP2#d0v+B8~eZ;?_^ZX}Vr_gl05M_wf#h!M~t3|6jvX2~%;%7Zs|Vbl96 z%bffxYpcBLTpG4YDt{?ZS^v)iHT#^$^Q^wU3e}HP55|6ZBmcCg;mPHOB*}KkHp_=B zeh(uSPfbtSt-9gmU;_zi&JZXcO}K!_3!(ii>@zyc(u$XV=|8pFBtiU++JXIisrDFN z;RuT{kR6wRfCedWu3xW#as`Z^=?I;V_FsPp8i<3bgg*m7JPVQ7&CRV{kbG>bGF(R{ zSA$;FTIrYX89RL}UgmOwRNl{icQ6EwCR~+>xPhh(X(;hBk@Dxald2b6Y{=!~Po*s?SpDM!;Zy|ZO78B%v5dP-{a5h47``oXGYSB*aiv8CZ!ahonbe~m6CMwTt~RG?ay)PIa(4a#bUF**Z+wOjL!_JX6NGPkz3SK z8>)O&qJp}}Q2e8P4wsh4(>HCPh$kyc?BBZ3xQTaICU?2YE984fic#RFPoIt){trcv zPXZA)sn9L{sd12mOWou7gq6Tz7p43k7ft^Jr})o{bBg*BLSk|^J8w1+cQWDzIiM|X zZ;7&xyR}c+Kbw2=Dj0X>;w;{T=?{|fdq{O3evuAwJ;Us zplHEon6Hh7gGM+jGB7`mb!2Y$v18{l3a5QAKr03AC8{~Sv@<&~E*{PM_1F&i;-5%2 zP1M`#At6U$Hv`f3;{ds51M*9CVxXG&yOHP1DYLB~KUZaae>BLOl3MlQ^L0%@3eFDr zeq&MCKkiVA%E)Mp&_#v!^FPlniwa0|M*aW7Q`n$GWcE#ehu*WM{lx#{>bnE6?%Vch zCn>Vh7KKDcgrua5O7@Pj3KeA(%9o@`+GHcYNH>^WN|K zyZ*SJo(8V(_4%CRIFIu<{)B((+Lc(`ZPX9LP@14U%)&8CE+C>#)olE#x0;gg#+8^A zlqXkWa(aT~vvHEo=pLl>j!W>!^O%dh_ghd%fANstapcLRcSX~EUVSbF(<sw!QgKpOPyAs)nZ}9qXL>GA$9W!D`{8^2`*O{! zGJSZNQlGuX_RejpMWQyCTd3V-Fu$RSFZL$WQDB1wZs1S7L(oS(t+ zb>8!>pP(|gA9^Qj&ysRMtBA&&q0XWY=T8}zyaAF9z>)O&=b=h%0VE>d=G(0XVSJU+ z{XAyJJs2N_#jY-?X|nc|Ck2oh2y6ia>9{-M*#Gn{SWw(-+Qyi<_)~M(mr&=|e zvobR$yY31O7&I!)O8m*q-0Lf?S^H%uady73kuTQGNyGZ7@3&Lm`@VJ8^#A)@$gkx0 z4{_z>pPIeoAv9sKPT`64-nRLNi**gnPSv;f>At^moMM^%ZrX!(JW}7h$GlG|a)dW% zzq4bm8AH`ZuP`4WkbG~#+=2W1U?>#vHKW$0;kXdLsY-;=0p7o@!9 zAb)ZrpJJ=+(6xxx`H)umoKMBAE?!xzf1Aa=1SBs_jJMnVD+o%thVAC3?Nc3mMktHV zC$=PuU1>c1e-oWbXxYL;ht!8xGw+8jOwj)bpI6H&UVJPx_YdQ}l%C-+cPMeSN$fEF zF>(HWn01cAn$cjx=`%?h6`{bhaHepI;=xc#0$AiQrIV`F20M8I!~eMzd<2?E+SrKO zl27fHmOcZLe!UJ~WYU zf)4;`nxbLWH#CeSpTOObjkvm&O({R3LFWU0$MZb^K0 zgwg3~#TLsA9GWRv zEhe<(uak_xrO-Xxo5jstUR|+hiK&+!-L#nS&5kQ6c^$vc{uIsryM_jbqA%FQnuNn~ zzJzYYb8LhIE@>Shr5C~0F!k?F8U)uy6)@v|EW6c$e@j**0xOI&9N)mpF$FH}@`i?n zGflAZ6d|eKq3=oh z&_^ zKMp)IHv(R{NJT|y{R&E1!yTR>K6AP)W8S`vwN6#g&^dnY;LXR3|KBmy`1>SSjM^Ue zSjgO^>q))*I;9vHA@f6ce4PTD`V{pK2_w%R3XWTy9Cy6!zVZ?pn_whu&uwu(+TxZ~ z7XPN|dz450ANq!jT$dLPyRY26*)TY^Ed7M--HjpV8f1C%<3G&{bd&HFb&?R94P9o; zPK60`ceG-#@eC455@zp#vkN3QhL1YosWw7vv0&;ZELVU+X%`QoU(|v?r&mNDIg5Zx zxp;T(EFUSx(}7-zg*J7@swFdS_V=)JV-C9LEz*{MjvPQG7Mz}LT|5Zgwii+_!8-u- zngdCk;Sv8>0*Zo#+2}1;e8KiFxb>f~>z)kItyljMT-@BwlU;0bDQq5afs%Qe6a%|X zN2W9zI-g<_2ukr@fj9G8wd(%WOSL~bsLArMh~t$suEN%+?-+)yQI+85>W&soGYi&y zvXFOdp}jyYBTP}?k!?-*Gm|p4!UyB!W21J5N13VFaECVH%(7RzzyMs5S0!xNWT3tj$)H=3W|pf5QQ7D55dM#I}% zaLBAGh$&cj6j&ryfduS2KqMa@-XvmvvRJKmwD^xQNF*=8GifWpASWw14RGQKR2|Qy zrs6^j`LZ!R2Fg5$N>~%d3bnrki>En_cqj0&WP=P@_x4H2Y)>9n?_5JKLD!t_1wLU-Resl_cBkjj54EBia(cLLFC%@t4hieu) zCW7mOQlH#vV5!f^QtLKhF|S(SdePPTa}D9JBvDY;>;c@;Zdcj@DC3*L!R-ul8MPl{@+FTiahLb zH9RlHUXRrIXJ`Gd;|cDfuRC;MVisdPQCKG^*25nG=riY|KNuPg zW?p1@hh}#u4UAqT!08MT%_JUJVJl5jPYi_>i40RG&2aerBJf*NIEMU((n4&P6%z{KHO|LjUW<=L^`_ zDC7*kyqHqW5)z#+-@Za1Vb=gX8GSur_D>EXtG{T647Zs{b5{nDH|Fl3QlH5;Jw+AZgr3R1eLIGR)P!xP7#$ zrrM!O_vs;84wYn|w6zvd>qlwK^sm|h&KNYgW_4*upeHya{??Mxj_rN+jno}nl3O4F* zovL$J^Vy~L+I}&9(s)^QAGCNkU9bI?U-4xTsa-p%uevn`pUCM^7qWF{Pz$MJ+tzwE zsD|01skUCEL?JkdJ%l{HIHHG*a;oTtS^4kKTJxLGIY~NG@B&*&XCA+o4i~kECYdMz zEW8UZgYqcwb3&#h)FElymV>J8?gx=awPdmb;a30NzeTY#N}#ned>}=JbI?!iYT7R@ zo-+MGwp;JzAK5fpoJOHAxSZNxcqVzj`Y6ZV{h3GB)eet6KQ#KYkYi<&Llr;n^r3}0 zTTHI1o;sr@?L%t&*;FiOe_;52oe=f4_r~RC?b2g8IG+Fe6=m!>z-jMN`k7uLtbV9W z&FNN#1o?CMOOJQ&by6UBWI%`C549%%#Axw7aMQ6&8>@T#O`Ee?T#j`FPw+pyMah(a z@yXLfz{1?E2>Kzv<0JX%{sNnGN_m%htX01yD?rafrHVf4MhjXgXfh z8jm?8fPBi`6Bh~v+Qe?27=x1_!Ndr4Jr7Ad7Dfiu*49 zb4H&RKrmZt5xN{EET}W{#h`Yyb=WErD&4ES5`R<+eHVXlH_Z+wjaOLa^cFanDUNrNz_ALW1IM4Z=j z5cDW_lSj>A53}EsHeXVdXb)X}wERF^XiJL+-s@fCUM0=g0yc$Rff*9Q0kOJE1zqq@ zTZj%ZhM6iU3RiIREzs>Td!d&aE=@VZRU#=4tjp7*g%iHTvjcnf8W!rH ze2XS@ej@!1tSBJp;lpPr*$U3zxqX{?x_b|4tI8I~R$o2H`@W*f%YA5Pq1xGRk7%ME zJE2_-3J%u%{uhf-`Ea#86Z&?hc;4z!9V314`J4;#uNeRPhX0wrkjtf>=w;U-AJB61 zn7Wu*oTA7Ig~W_Ez2ups$?XtPc^dXrC&5y9g8R2kRsgd|K@uv?ag~~{x$&R6&&8-K zoS!-|$`Eih%LhFU4UK!)$z6MOo*zc92l`2W-O+`)KAE-3nl3u2O*fhmgpIE)K+j|~NVG24EuoM|fvZA1m@v?v-3?{U3UZRW1xW~edrnE)iz&F9*nyVcRcC=BVy7)Tf zf?e2Re~)_H#P+L;Zt#NVd6rsWg8%25mL70_rsP}_qC6@lR{8T%{VUaa_iC;UqfZfd zT#q2`q%on&16`XJPOdF2REu_Mk7>_^!Jq6e%~ofOs2ln^&woi7*JgQFK9o7J$MH{p zc!CwPYLRcXIgLlYM$N&ZyUbK}XVD0sX)#yt!kQ{V4l$VOh_1e_8F2jO_EUqM#YQ5| z#;gjBn@)%yG+Vsz>}ilPYeo13Dfh9CENeS9 zsjKkX0uVXcmkzuS5^@;@?WkyPG=mPJ(mAJXbW@YulcOXTb~*(K9}NgHd550kr&ozz zbXJ(6Qm)^#={1Q}Ip2Au#ZNeDc^{l#5IkL28%a0*Tl@Kgl2?0{^F?3H9hkXW{UOHg zh8ksGW;|vT5T%o%m5lA$Bt(fHU>6dc2xVgMEn zjG8JDow0E6D{;5o+}sx6+s{J4&hGnL#t2xpqGnY`CkD+t+(d5g3eKz+ey}W2Vh|n* z{vmLw{DDR)IUdT}iKx0kzjsNTlaTBJ`M)*8wzR1Hn(j4V(A*aj4FL zst2($7Lc(51F~O+2qUbOw`HZ5Y7AopBi@PJJM~Bmx8@(#g;(YQ)%u zv*Q#e^HdO-mlX!feL#Tb}Vo9Z>1MU3rIsl-|Ho7u1HopFzlZ=BV$wQ zlJ3=LnNzTpgJU53;_?j5gdzH7BdQ1wGATFrK!G!PpWu}zg2E26O%o_JqD18&Hun1$ ztHI{q0pH3e79nB!_scmymlQSXgRBs`@mQ z->sagoUF;3@*kemrNwr)hFn#WfB&SeE<0;>&(0%`+&3CzZ!TC`Zmd@se#Mb^{+AWY zz=qD)PukUQ3!*lA|1CLr=t-bv*Tx@tx=Qcf@r=(anG4QbzaD)3@-gEay_}nWD2JPv zinV5%d6V8{BCsKP3`YzlETI)6LMDNA2FB9Wt6i^pFrr1*PZn;-#EWG*d#64KQrwE@ z?rLAMGBd~GLr#QhSN_j8o1pH$KiB zkF2$z&1s;f5&`xz0XHEK^^qVtU@x)!C3&ntX&9`@NZ9h*>c%x9NO}ls$Me_y2NK@W@tKQ}Y?NtObFfq5$45zvh0||(pXX&Fv4yW7WQfq*8-mrvnjz2`>d7}DAHNfbA6!}taJ42 zE4N&`KxR2Z8I{cI&z3yd3-%kTI2eOuW#cOdQ!S%Q4>TaciJpJI8CN*x?Lw-S2FzYQ zHk_78#o9gTK&$8j8#N!SJ(B46Ffh?*1H+GyY4_GJI}PW61r4Xm?@oBHF%b*8Kafmf`ZM#<_n-ehs#jKWEYE+8fLZvKM{AZS7E>KcPbfYOn{e1z!%--AV}AB zNYdG0kJB@g$Zel2LnO8wb(LX{znoetfefPgFFS&`@w-BEQvnNND-Wl?A5M z9g(kCZa@jB>OUnfC)W?cFbZ;;b9{Z604B{Ot;YXI4xh9R)cqj;LhS)fR^inR={iC` z3eShO&+XAlHhv&+DN^K8{!f`CE#9|)um1N-<%(`i1mGCPRCh=b=2PdBNmG} zUSk=v@Y0ZBswGPvDYzMC0zSTKPYWS)<1~;Mf8W>5OW@~+WbZH^L@TxUKh>9oY%NnJ zub$xjl~Sk3wXp9;;#$Cc$9I#)Wc62@^0ogAS3zVp#I}jR?-m#h($Ujr7r4Oa#nIWh zuV5ae=E0n1!z{-KpfD1$bdE&>bsU>Zp8(ylz|{aM4RGL->TrQM5SWt4IWir35E{Wh zoZ047|I*s%=AYr0VtxAjtN^^;8E5=$?SN&e(b{c?3_LwOXTgX9Z8-^J*566eC@C6% z`Ce*YKw*)D$TyP)c{nYMc9l+_e(7k09FT4Eje2z>t_p@Qbp+0x*s9;M4WG;-D{K#t z-M6-`!4n`kd`i|9#CTE}g^oHX5x^wuuy{=lL{`ji3i;~f>g@IApN>7j$>Se7%QSZ>9wR?Qmf;FGAKRc*0+xgsP6%F`~@VhHkQLYaU!bohE9<_k-7A zW|mhx^z|XK>5sg=$Oa^%wP8g;ad5~GF89`fOTRH3tJf4+x_J3_ zo-C2HoPW}Y*|I_BhNAoHu^j*&yyT=6QOhAqi~=WnZdAUnOoD+qYjMWC%k=5-eU=_o zB7!aRy8?B;WF8eg*P#_(`%BC@!SQgYrRKOg%R0e`>UZ@c*~=o{Xa0?jk~W%hQmxap zl-kSoKZkU&{*Gd=?~2vdQ+!8ljF3xW-Y%V|<(2!spG>uRK9G`4O(kQ4K_wm~tPVg| z39VCAsXN1G&ag^Qn)Dt$#=T2rPFVl;=XX55+y9o;i9q96zg01T`1etvN+!G$SoZsb zeXO3I;JFWlgdT=f_Dg9j@j<#&0PcV6(Yp*R7T^_{Od{GD+NVaT^`b)jfs*uP-fvvy zK@1}I+8Ba1i{LMwh{~2MoM0f9h*q05e4^DVy%8}CBqFnGAF!Ac1%81<&r}Z+2G*() zYN5W#uq^4vxL+Mrk`KnRagitvRIW-qqzqDh+TzlcFEz}5Zd0m#w@;9 zIYZMcPL<5NG^TF8Y{!*bM|dRU3ZckyaNan|Tn=Xs%~EgB zgqIbzC-b{~r9PEVRBfcRK86w3s=tyHht!5mx#UZS{w7h``dQ{a;DQ_VtH(Xw3-ZEg z>0d#lgjsA~2Ak{$=Wd~ts(dPI4rVamv?_ZygYO#03me`$9m>qPy!K~^ssFK-%3vrHp+s}5&TUBh%hXo~2MVV8RKO>ve!_iNE) zxsE4hvkE)^QM^_g*xHWHMPnaEWAT11+p&dqt<63J#Wo?s$8<+=uJQESx}fNkto?(} z^kHo1OhC&~4k3LEoG9h)(EhDz9g6kh>ORVx+z|ohlOem(Lip~oN09QbM-CtQ06ToVH*3nyZRIpO7R2O^~J8nE&nE z?>4O)i>Ch==PZ~%&J+-g$;PIGl8Ws+x|$5W%xuzKOOTl=u5wUo9W59 z0L2ZD+McP_R`Mh?ouNyze;_*`9bFn;-qWN1VdQ3AuTBwDW9v6Z=~tG6kF>V@I^w=B zXF^G(r!aR9-pO0a?6)d+hh+Y)!kowwhug)Ye{YR=5AEEx?vG$^ocWV$2ME^o@2hlq zbiNYEvyv6ZEUwgl5m!n)zu0iQjz1G+6MjI5U-TI;-;CL*aRFP;B&nm1IBUnOVRz16 zkQET&K1oHFO}$Fnq;+Nwxv*7GwStOkr8Y)%MK?GLu!1~~s=e1026!*dUzpfeYw1SiMl%Gqx<47zmF z-=jn&pFB$ZBVLj!Ff`%oxEfmGhZHxIc9XIgOa&5No?+Z_Lfi^bZf3sJk;i__#cTT|v)87xRRh(y5 zymDkzd{wv`|sE_!8E4C&owCW2G!D-~3$;&-_~n?aKU` zg3Qxy$K>CC*L-(EIP9^5p{0`7NFgQn^bfiRid+Iq9Bs0=-q5?00g)ndPB*;0yUR)> zPLc4++V^V89tqhxT>jkl zKHRJ9KCi89k67FNjaj90Nptk3UT5w}3elc_$$tCf4_{jsYTwe+HeJ$%D+^_sD{^KI zjZPGb-#l>W|5qFq?O2F= zIW~ES?gjO_a&TVUGca(&9fmD*Sj&&-V`906EVV&O)^q*Fjh^ViIJvlp54dsV4o+dk z!uS{L`Tmpa^3mlLzE59nb`*GKFjkQ!mZe($;@0OY3TILGu|uC06G$!x<|BX6aY2A- zFHz`sVD>@xPDE{?NOS{j--`5jN`(h!CA;{kb_xGZPHFvCFI3&|S` zY8xawesab_pS$1A1#w9g{^UF3gwn*^zp=ws63yKk&?f-P1pXI5}_(Qs7RQF&j9fjThxb@LBL3Cm`7%{Z|) z5@AcP{xYkfIcr$OA|?>&7nV$wod~WM&}pz^Qa)7RH7aOb5jfe$(Y)x+NmMlcefcZI zmcCt}EfJ*&*e^q+D9D{zt~Iq{*XYWc6P^)^0=Hfwtil@-;}V15rfLXzov`u4l=IFN zd`E=UMcnFIBVavz^tzK1u~+6flb?OXozdczvH3TN{3S7e-DIR`^HvvX%~lzn?N&JZ z{aM$qE98f8s=WET<$MB8ZO!%h}JLmm>aqt=_QfEando zK3|X3$e8g%L;*hx-O^iHt7*&!qzCBp#3^f+CiAt3+)1B_JeGD6gmtn9~fm3`1 zLb<_xkok&1g{f4D6q5G4yQ`~9tv`pBh>Z5b)fWYk=far-uf0Uk$U&XPizUn_Z zps)$Li>9ayuECI`|9Id-OUp)Es_#9K$$JiiJR+kH$xUM0ygg)3hxWkG(0!z_D3ClZ z)W@y{07e5D>WB%Z;AJ>td=CJcm6w%0z1I+$2BIbG4xu?pl<0`CwQyL}9Jv`WwuCy=bSI;rZXy~R>nL^^^gnh(3yLwjOXCb)| z96Epn-SB_#c*1`R;A) zGIGru1DSZcuP6D+2BscGr432Y)QZ=o3>~`dW6Kt?)$a6r#Y*jSgID-_g=x-KRL0cB zWqR#42VL&p7q$3H|LY@nmw10!lGkFq``wg_{8{7mXD@R*Fp&!k2$*N-u)uCa_Gu|RPf29D zfs)X;lCcrwgj4x`8{d{RyoK~SP=>wZR)T;Y;wOL-cmYLWr+9sSw&(}FxzlSDt(hn3 z5&0$2cxjMe&%GzE?#Hhw)I~2qgX|yJ8VQOej+?;I1`rtuzP(?*-u68A#e#_a0 zKlWz>r>vh^>9-cH+Z6J_u4*ZbLvNE#n;mCUyY&6#%}f0&AKfC4{r|q6#XH$XjmlDI zzc6P6elKuj)@fWb*19%S*XuvAY6D`Gs!$fS;Bpdv99U>$l%gvd++>j{wZW^zMYXSnuF?7xqzT;l-QZhJm z=2-3az;_?9d<|JgN~I^)KtLWIEwOJ(tOJ=a?SOW?&*k$LN2#uCRPq*3wkHrV_=vv2nF{4 z@8!>!6G5NN&h6mUoVIOA6T^z{dB(fp%L!BUTOKuXl*UQm;l@xcFs|J0bf#u#NWg)~ z?0ggLqmq3^9TVXST%}|7hmQ>#nONH4cctRJB5o}TD9!H-R?0xv0VPD)As#uot!np zu}8nHt*t=!=ob>Q+krWiz_M?vs`xSoQ(-wAKS+GQp~H6kq{g^T>&*m*l#A^mc6N!k zoE+YN*2v;B&0DRPYBBtogUK_mtR+1E({YiI))nbT|L>tA|L?f)h2<(a{-1dby;sep zQ=xg&2gMh?l;mE?nsf5?BE5J3p2JUlucAgaE1P!L@Ny+7&xr3i-6z~48Y+~JEPl;} zD|U8r3JR;VQgqzb$!LuD_$$RtV^ypU+U$(=jEozPKUF!4LiT{mT<&Mpd-qPRI1#33 zw=(9{Yv02wu0z=!RD|6Q^i&M&ETj-j_98W4^2iRge&b4>tC(lK0gkooOhZM*a`enX zQ1l{hn#5=TCgV&O|DxA4!FIr{)ObY)2eG-iIh?2)(>55lzftg1+EraYYQ>|X)mgyD z@=d>pDc13wUg~*sUD}6YqmWo${0PZ^sQ>xZ$&fsjeF8MkudqtJvpOf`R%@bDbCSH( z0gserFG9~Ai7~S{JMMy8>9561x11;nLthgYqlZo8v=qYuO%^H7Op!s?)b3NGQ^mWK zFPA3Ny1u@hB<8z!#qSzMspX3Y^KT_2E78P~5Q^E%7zM4?+jsAF0~bXkE<-E&5!=Wa zCQOV!xDn$(=`90pP~j^pXUcT4KhoGq+vDJd7ox#lO@bwJMC_PcK01#jICvZEP9Z8WCQEOm_muqO=Iwm^y5la7UNl~WsVb$$fGkJSECXRclqhKMEq zTRjw+V?Tc$xqkgXbaXVanjh*Y*#->kD1HZ}h7CYBVo#=)_^m_>wwVtw5vC2WVuc?l zw4PHxgg_P@I6UKq;FC;=5;Z6ClD52jdy_%YFsW%!S1NlwClLbw|6UXeo3f@`#uu8z zlS5qT9+#Ji(XagehAQ4k{vM0Sjy-Od0%<&Chq#vO>MS)payV5Cw>R3D3(p3M5ap;< zUi-=h8F3x#X6{_Py77Nq?T>ml-#li2Xt~oor-RomhB^9W@0tGd{EI3ejE-n{6#x3$ zzyKX(Wo4CtZ?=&is(D~#Hz&H^zn2gzyg`cQ*!+2$|B?wjPweuKMs>>}(I|VWfG)v8 ze>KBHvF9Q$?}W*DWq;+5?KST-yegW;CD(O*NG3OMGxvo%xiwsJ@s%;rIWby&;uA^ps=%p=Wv(omwW1H@C-9IU`KHa2z`B}!ek zg*uU2L{#Qce@35@n(7aW@_*89H)iw127m-vz@V}MZ05TgA%40EQsAtndsnVpc>~BK zvD1SYmT06DI8u;+4cz?`ei}PPMK%2BLC_1OpzDZ=b(!vIHXy9WA^bvQ4Y8)M94&zd zG&++Xc)$XOhPY?qm;vSWtL{-yRz7ZMxE1Z&Pnh&zmi!F`r`~W{COFne_M09Tp>qdY zcmssNlYei9_BV85IPh5!EknRIcSA$ji_$l4+2XTQU?oEo08yv(r#}Dm79b0cfj+g7 z_tZP{%fr4ycI7UDw6330==qhJ*KZFwqCvZXV%d}PWvRP1t$y)(+*P(Yw;JZNUzJNw z{^>hIG=WuDJ4}mj|0qAiT*aT_=IQL#I{aE$R<1$?QsqQB>9MpkD?x^&82*z_U5{OI z>s$9)S^ZAhsINb`X{?0G-%v{ zUQRSdWUE%M=FQ&p;9de3&`zm=zrvdP3Z10v5(8wMXOq8X2_a z*C*e^v0eK)(KwtNzMfYna!~O>wt(5z&L*a%U-gogSIIIz<?WNDPuU239AI?-IUY8D_~1M!ad9F8N!L(TIZc)jmCGk*{vM3@N3!GecgPktMz%z#>R^@l@f zz_RkHt!)PE;N8=Sx%S1cxr|hAZ>!Ao7sM&z%|d#ENEs?^DhFPr)}PdR5q(JME?FCP z;7YWAeb5corbfSArIK+~qRX~3p5-P*EvGOGE}OiaU3UFXXmfO8M8LY^|AdCHl!qp6 z3CX3NJ;u8ohtYItTA!U0DE+E5Bnrmg?=yp%8x|}5A{g$k;W_l^ z`dR~q*KJELZ(+m77O&OEX0T4T*4TXU+u|E1!4Hz2eIE^G)ox)MtrR``+g>}L>rk~F zSSz=Xw0A$NaB{=j#9d4DZu&eOxwO1`LiE(axEhnZr6nJR-plpViDYN4^OOK$W=e*i z?glvcEy{pi8+`-j^m9Bapoxe3?D5k7OhqNA)zRoocZ+Yv8f{Qlmz9j_KYkpKQC_Ljzq`>jj(r_#T(l14B8z`>`xiHim^@pOgHsSM8T|J)p_%-Y`DAbz}fK5sxYaY_ z89qig7HQYjZmw}YpDpOLTZI-J%B^c%KlK^MI}YEH@e5gczm@)fdJ7x@rF}>>x$p_8 ztXwAkjf+!Q_@QuMdo0sxmsuMgAT4($zw)~`DZN)@Xgp&}=V&$c&t0s2?^LvoutKcb zAJx>>k|2ZvrK~eY)Z$YDBSt^B0gI--U&p{8HXV+TRk3p0jk9Btg18s!+}zw06h4-e z9^~d;j%uS4G&)Wl0rkK@D$pIE$)@b%fXV96#<*t@b*fR&@D5xbi&9kz`#U$6J#R=u z1BeATQ)6uND2Ism)fK_Q`ax;DXF13xd5*{&LxYd664}q|z}k&n5LUC43CYjQ$S4E; z1<5p-D459JO8LiH@4p|P_4CZ-)UItbz58jIVqPmxv<`15?RqiOa-G7=L!!&6wu9kMtj6K1i38-ZM}KMP z7~7cq%F@#IWk)=Qm#NJ!FLYQMS9R~7Mv{Ek&%rf`!8K#Y?2Z)UUd$)L-fj1N_@ZC` z*M_;#`77>C?`j%~w`X(ZhH&^upMGy~Epv%N9<%3tsf^_eCrs58QfqePh<;c|50;44 zqRjn@W=6&5jW`4O_WnJ6%Vpj3xVX3-TwHSLdDcX|%*XKU+^$O}%7_TqSkA7Kp=ZZ9 ztTSJ}ti*N80AbC&Ndit~o&siv05f1gl1@g|9r(iPfH+LXo@Znn!2rc@0tQkH9-PMTW{Q+YVYT;U*V{Q#cK{CR|d_0VL8XaM%m2 z!<`O`7#)Vl2cZ_`fim?VHNP32<3tx5EUGo&2|64k|9J6Lf9EE5snxpY3H$wmcR7SN zZ}p&^c(kNle%$*aiJu9kRZ2^nCaL9V+nA(0h1Xb}?J|sVkje=BDD@pPAj~gUpo`|4 zZiPH3^NrfBB;ayT4&DQ++}FNKz^X?AW+bytDLTf^e!7z~=fW#$9thBu>|a{AZmB?H zg|d1s#}k_JX4*}6Xwe^97#3_;!hbo$$mWu^^1np~CCkf9hds9ysF>ssMJs%d%4wJe z>FasgeR^iF#l87$Kp&l7>@qd=xAdONnAV6W7!|#ncNTH~?(;IFJBcoAEhD_&z|3)P z0uZ_tE3TX>oaX=y)<(^cA`m#xGNlQ!3BT5mX!J8~_xvI0^7Z+x>(G*hia4d^#}CWI z3(d+4yKSWLJTcS1W$H+#<@bDi_RhUtP~c)JQ%dTvR}%O%lzx)5> z-nGjZh7q4J79mIRUcU@X19v@?^Za_9&vYcha*>;BN^kMAG{BeN zbl2<$=v;&SA`-(atbPO`hPW<$znb@1HA;nNAG|k~tz7B7#e=7#+SvU3wTwWXKU0UE zM{$p3hZYv+y<2~_R4qfD;&I*_X=JnIn)W|m9p6CX7CeDtz^%=7`jxbJ!|sQDrcIc( z>eo0rw2C_rmuYhS#%qzhYm4|`cldYexA~EYO=dN$=6<1T7UTxe?s62q0UWtDtmbv( zGKTFtcF+n539U%212fL8o*9_RPK{)(wJ^T?wSx+ebA85po0nSd5N4U&#qJq^a6 zhe6D1pCE}6oZi(B<(nhwWU$8g3Bm=>2TQ7Bh4qX2!gYgIa($I|C+FGg2|Bp@n3EyBcM*n-~Bo+E-^J= zm0F?dx$DZ-wVuhBA6;2*p#~?Z8x+t@rOJu%abooHwa{^cuCA_S-)=6hPHaQI2Ac^3 zL^%(=$@SO6c^&AY15(4JKbFYWVT(?T6?vxKDh-ZEXwAGK0k8_YmKETtKz3cgMz$dn zy3P@6!aVQww=u)%89p$q2jGgn52SY;U0u&0uX_p8fmC&mPNwN<*o@F^hLfTYB%SuC z@!@0VQw?XR7W8bHNd2rxr*yhTaA;G`#tUe~7STx4g!l!TYH7FEJh)a_{A*9PuKZ-V z(}BsU5*3`gM-8V=_60`RK<)#3EhA<->BsZ!O(a%_G01D5ZM||<_0e1{^GQV~S!({~ zF_XCoaSjptB5GxQmz&67g|eE;)r&4d6YNx!q4+rm3W1;dQtE{tNC+JXl|ORbIYa zX;~bb#=ro2^d;Q1fXbdW%wU#%2%_48pMPQbH%r)9emkC=umpN9Svk37;G6n~hOWvp zU_e_zaCfAw1eGJX$KN7eA9R{r1$>OU_uzrNvNFTwEnB{IcDe#C|I3l8qotI>@yNzsA1T!)S3+qZ8&ryk!v=^nUgUpMpf zguP>PZm77clvkoT+B(Ie$W^M+F(>@vUJ2j?6)ns8%8Wk2!+pB{)b=DzG4a6#5aN*X zurV=usVv9MLA~R49coaHt3FWb4)JXJZL#mDd5wd+mP ze()4`s8Af=D&Fu>L-vraaf9k0UC{9sjCrlcIO^)^xHE%hfDElj7XrLa8?b6O7-xR= zAe@dh8|6#)OQG;m;CeG7F|Hh-@GFup_~*L=Btsr{VVuY`t9}mJm8`faic$u$GBoy-&a(*EN~aPVd6N>1}njy5r?UwYZOXdo z4FD4Ci*2#7u?f;I0V?-@&e%x?^duX_53)n=XajntJLmyATSR)+K69O0X&@{tj5%nc zY_pWh+yPd89al8eoFXFXJrZ$B!Lnc?juELHsz^u;#~&-jw*Xaa$8;QK%XbX~v>nqt zJeGqe;svcldXSiL5VW3AM1h7}wiABRzFTt=#5*pJ4 zayx1g_z=WK8?ZHr{T>dn0^Em?f|Wu9*1}=-`t|GVzph+nY99VVy=3Iz@B)TL25Xpm z`uh4}_$CMQj5^>zbz;k$Lry+9bS5!KV*h>?Ovzs3i=A??wIvbSe0J}OdPAB%G4F`j z?H)@$Pwn&@TgINr;rH{!IubB5uC}s`Jz4eEwn90&<`qY1E?YvI@(|Y~1KrxS9D>QOa+~)e zasre3MORA9F`Y1P?kBp&Fk6JTRZtVvf^%vEv98TBE}K!Dyao*&sC~C=pBctq_)?)* z@>TOslO!f8C=)VZMRncT*#tu-zjr510{J&>+GIEIY4s!VWS1*14FoEIn5o7ovE*2x z$~}uG3unZ`Pn)aXzJ(=;3{*g#L+J>c@P^$pJ9g|~7ov=pZIy8`=x?R*i-_=nPV_gB z$%#QwQ@YW*)2Bbk0@>&x)^R$;H}YCv^@YGpBEx=AD|NgO@3nKPgQ^5A8c6c9--QUf z-ROKtmttUGFb2{$%WMW%4Iz+`i@`<+@pVCh;dadcf5;^xN;6ZzC;M>M~f&)7hh3y~(F?R!7>x^?SF z#DGtRJeV>$#mX=eBWlXOW(14)Jv!@oct+^+haG{z6IK5A1wkqp#1z4 z^iZYBI5l3dtp&5Ol0KM2xQZ^dh<;_8VK;bh#M4CHj!_H!ypx4&%3&{0TbOA6L<3}YE^hRd3e`o5bew`-LJ1m3l zXfG7Q1yb2a+=JjBM0LpS;DH0|_|lDz(!j~l**-;|4vkjYLo?qu+?f3l|NQy$j|WC$ z9vmW$Og7k6TS8TWAHNM*l3B#O=A*IH*>Ktw+63FGB1q2iCD;~9*>sK z^zHh&j)lKZ3@3>35*myYgFLlM8;6lYbDX*y&TWNZDDHO`5N!@`ZvfrC0@Rs&xO|;V zAAH+$l^8Rita$|=mR~-5a$iN(L_$LHMG$O|IJQVRyhcW_%Qwe>5-14fSZ?3}B}gOJ z$d1-WVR49Df-f&F9fecer^wwQ)x;TU*|KH*_FK*%_iFW(Ow9kCGD^|Q@rtXFlk>np z_*O^=#RjYMi=S$zyy`I<)ZA)~d6t{c9zN}~6qudj?57x&v?t8KhwBDDyHJqfsxq*f zWRU~096G{f$JbMe_mPDawl5ZQx=BEQVvQRJGM2xtU$}fZt^L8^n>TN|@TM@>D8pO- z_Wk>9@POcZy;4hy(o*W{`~IDMjy-diwe?{rB&Yp$0-s$kH4O0x%PTBUqCf29l;5Pg z_26|^?h_A*7ce{yx093(Sv^+C(*hyMwFj?{okc)E6{(v{AAaa%{*6mT78q4<$lOJ9 zNjxAAK{zX-30~P+1(zZ8qinUh7Ow9wcbJK5G7_P&`Sbe{u}>ti4?5s?2^pOIw33o= z>(r|+kCYJwS3B*sf3ogqafyksG5Omhf5U8;NB;#sF-%J@o>elDm;h)Tj5S7LTmK5Z zP|j>5%=kF@f@(HT8}ELeEi%@b^4TJ&O_E`*eRF8`Hp(V#m%}28sJ43#i;fg~F6YP! zJIf5eu#=@<9!wM_BE-N1*PihiuP(;?O?_`FDxLz_TD5j9h}vd8p-NIna3uGmEaG-x zj=u5Cu;#`D&zSQXfW4*fP7R3;=t|M3KUlIxf9Z#jdlAQ5ejP2f-aB3$d+gn@9&q)-kW#cJtRovR0itk6 zr~PeCe+5zBr8iHg$3G znzqA)06;6=J(n8*6%tx zN>8z4U9z6y4`2gU-A^_zyKT zO1z()WDf1h2Dgv{(_i2ObymJY5pW39L7_gmy6J#?Q{o?vIp15#O%jhkCV6kTDt{PEcNKu@M^8 z6}8y%30CgAHryKQ!GC=FhlY}%jr-<5I4nkA=55;^kZp)=39KO9hNUg3ss@|(zOJZ9 zJSZqG&W4P19A)p*p0Ya-THY6V(D4?ZW)hDNwS2`2!bs)l(}ycB03w`f0FTFD#@lL( znrkh3NOzGnN7Q*Uu~gWq){9|p_jkoc!50se;z%2UlG_j20rU-^CvXmhh$2X28(@z3 zQLvB|V{KBg&0z$fWP)T~0cC!=Gv(l+Ag^5iJrqV6ZW=?c?bCA*Xo@Vt_c?3p2N=p5 z6gjb=wP>7?l#{E7c)jf)jFYz0D9RntIJv7FB+E~}f;!J>;8a(JNc$<$7R4^&zk2c@ zTv=BEvo6QaNl2POLCgwqYQzQ`gqQyMxHZsZOT6L(6!i9;JDj4T6f@rBF=Jy+$PJyd zuvm?iEi_ddkZO)YdBv`Ma^L>_nmtztS+j{(2`fqm9ERBcGkriwR1OBp@87>cFkMI7 zts#T3LXCGSlABXlLraSl^!jzdCWu~p>_psgvZ6sByLBm&gN4NdKg|vlD?ZdFaaPk) zm)eSNZo=-1JW4k{jRck0W>&~P(CfXp$g7iQho6ops4ZKuBAOi4bi!i;&uJAZmi1gA z0#M!0ZoTe=XQz{Ev%@sAt4MbMeHZah%`ho!NJC}?t zi=SO7Kqy;5PuS~~fb=mbz@xchdYorW-nsKi-DTI9;2_FPMv_LFS|OQSa(dD8&g=89 z^3wdW!{O)B&4f7CSe5QsmC$$`=&h+S>1bgycoz6&v`qYWGYLh~M`1@mB%{=e)?TKVH;kzNHPPX%L(RIV+T7`1fwrncw(vf-S0{hV#c30_Wfb zI2u_WMYuaKl^CEn1Y%^OKN03B*LhKQ#n#`NjLv^{2zLpe8|+HB5dfxjAKShY?L3C> z1x;OU4r%gcg^jFZ4iSuVmdIQmS3~FVs&oJSW9luzVoFpnAGZqAFVH&Z`OL&j(|GqJ zj)v@rt09Ke0ELxp;SrfI^-Dqes8Sfqc!2H!WjrPgc2sMz@$t!Q6@=ted?l^bDEt9Oep^ zmBff5__WOjaNbZ}XuiiOEkjlL5%{upC8BQeOz$RqF{2-In3sG5W{*F(^CksbcSonF zk+!xp3mer(Mi34B&%Xkpa)^}y^b!_<#%vwo4&etf;Dfe!Sr6?hZDz2T1@Z88(N z4P)dkEU%TL4&5G7t@;1Rdh>WH+xKgDn~PLJi8Ls4nMD-JP$@De31ui#X&@vQ-4Q~` zlrlxeiiAW&k}0VSkrI-jkfCJeU8np0z3=aR9)Em4pKo>BdtduJk6|5at%His#T>OR zPI(P_6Y@S`pC|6V97nDOz0gVsInOzPD#+W1O)IakO84=e-e^Dz?@KO`1?gNKJI>kI zY=NxuF;EVHlB|^ga^ENKUGb7N#3^b-qcNKpH!NMt=Wp^Rko@?LdDdg`Vu8MTuF@qz@f~QIyO{ z8yl;sv7Xz?7qfCUqv!wdyrOOW?Q=^^zpM^;A>qbrJ7x}4z~TDG(}TjZyh zR8z}^VexYp-gYc=)_2?}Z8j)Z``u$|L)FYZLe7hfYsIqK#h-M>{o2~)5U%=@fdJM9 zF5Xr~a$Db*oa4NZ{e|%qpz8Jv@wE+_6lMp2&&AbvyVe%5okP8>w!cX>PjPzaO6sjW z0ogi+5m3QSd|4zky|{Lb1w4R9|J_ISm;>Z8#*&>Miy?ZQvfDD$@8T|B5SED+020gQ zsNcl&GtHnEiDI<~6Z6>hI|TA1ThNgwD6u}!j>P!kt-BQylgzPMbm$nrGLn_sp+}D# zc?q&J7=Hk0Ozs@!qW*EX^>4NV;-uLvr28|dn3y{}HTA@6X>YiMmL3%~6OiE7;{!~V za#_H-aHxUGtM_=~Hcw)tJ4$vhgLrp`1NmA7NnR3tTg$=%%wwwvhuUIGKmD_V}TPzGHB z&a)VGk^w+jY;8AKNeXarzK+Vvp=2s?&po{(q3)m{E~7BhAIdkXsjI7iL>7?cb|hD3 zyiTKMmI{E$YakMc@)taQymHnIjukvG=KDB7?FCZ{fW~bZTh^$pN5&is*#ra{-r`al zuP=D=gf!Q3_2Z+XqJM^CFg-h7eREU#kz65+b+4gM+vzpA62I!%<(a2#9`J0~^$(bA zaJ|rlTkvC{pTQ+>_yM!auxD_)%$zuq})WH-HaI^V1sfD4>(}y3f+{0*o(<; zY_XKeWwYU`#`EXSNugcDaROFvku86L8-zNXAjiuuN=vC630n)$QUKUDg<_Jv9^bGa zu_ZfPg+C(T)kD)9dcaA%EgMw5iz~+&=;>V+<}XKD;|u3i(EN}R03cvBh&*NqEBYrc zo4oMyh@7wo{iS=F8Xo}h@L^@?(vMlkuH!pS1Z1IYjqu=~o10r}Fo^X>oj4(KlZE1V zcN$EsMYP5%zM9THJa6yT1@?YhpvzJ49rg7&pI`oNaa?%ZHiiDK7Txj8gcT=OLGGYo z28e|NRCQ?#p8lH!J-=857K1+C2bI$e&|w^)gJLOnzze#AOBiFnROlv~ec~<4SQc`s9hsDYENMZNHJB2-m&?vJVrRF=I)TOMT6wNo`D3>$sJVK@Xzi-n1R4 zQ|&wg!@k>A4eUA`fAUMh;-^j(QC2?cy!QRgP3jS>F&$*d8elpWa8?X?m0|C)acaw| zrHI$501F`d{c$^WRU$Ed$UtwDS$j077Dsaw6Jb&QcQrM;fjd?Th|@^*szQ<6Y5h}W z1E8~4B(#R^Pcgu@;|&nwmo%6nf7crHqNd?8yE1M-Sfmi)MkX9JeyxtrZhZ9P7vNfv zes$9ZPO>jm=nBPWGEv9RWCVh1fD|vo#r)RY1u{yq=4KkAwqm!$wQW zut$j22J4qHklHpyziB@0trrWm#);XC@poqcil( zNbEHnd!?YHhk!~vWM*=5BR&-(hB_FCweqNqNf!SDo8;kGkQsP(dCK9fq)hM@wPM{n zL~{|LXf*_|kp73el@+zoB+EQw)UhLCh>Xx$Ar~WsYf3k0y8WLEB$1At|dj z%|i?6`A%~gYLm}TsY4yhIq3EvF78;Em!)x*`H^l{G6g0gKNXAd?lOo2AQ8J+d&?a` z86|)<%2I7>eSLk!i@(-^xt2w_3kXmG0>(~nKuhuQd!$p~)K_C`WnpbK=(c)@q)hIV zXP3${E!6VHeh(e=C;Tz*L=#8CACo3l0(gv{604qGUG@KJ3$ONUu~CAq#J=kH^%zTy zpg663VU8)ka?3%f_Rq8)2fDA(3jnnsmA&yO= zHx?_Xocf4>Acda8r5qggdZ`E3{?oGW;6W}xcRXgMv3Kr>p>`cuW8!Xn``ffYLwRdk zTM++Ckw4pPEl9JNB7vs}tSHf%$(}#jCN2Ti(I=7We&os ztF{}|g~sQzBhDZY8Xom|kf|pHaIL41d={{*EDFFe4RQrEQ6sU{E5fKqv z_H8;3CK4W$WVQ1xq|67~UdReCpFxySCH%mY1qn0KoH@}ZohKwQK`+hH+j~`pTqz~ysugL0s%$ivH zw4HOLP2w66<|!^d@zPkn7yA$v7D|5z zVKe`FWNL2Px^)>5D$clG(a`Gp&g|vNDst3taLZ3BrGk#iWBEI8RW!kEoXO_p%KJE5 z#BJ4h1Lv4RSF6;z>YA1RE8v6KTmiatMd)q~8!4QnFx{&nFW^%jPum}yeBnm}0mMX+ zOrN}TjA&Y;$2(mpYdpR46K*>jMELLR>+xM4cXodCJ3rlp)kEleAvL|=bhB^mL?0`z zTbL+TdmmQ*i`>esWO*zDC5!~7t$*srg&-{mvDG?bc(EO2z2nwIu`J?evrff}2X&Om zrF!IQYvZ7(G^Bx7}EPOPco$m`xT#N7? z1jqy0boC+k!gD^DVGI8l52TfzTqY zpjm205idcOt-Eaw05O3m4VXe>Vq##=+0}fvs1W@QQ$3ixQtt4lItcglA-i=1S3|xd zx)MevrsG%&Dn_m8?d|Y@;iZ_=Jmku0g}-$`DVHfG)7GFdQN9#?VdU+PKZ!5uMW zZfC4q6J~Fz7}`3o@bcht&ju?dAf2bSx>^lE>+J9g`{Jl^*bR-0jjaOBXZLdBvFkD7 zA32l*Ju$24xG}}&5%cr1W{)F7qwe=JL3XwE&dlD9bQSFs_y339Z6v)Sa@*qRUMZWy zuu^|iKtuF5Ql#9A_xcBmqMVC|5NYTI^>qSdQi%8mpfAQuYl|x(mi$oU>PXkHBn^8; zmEMiQ?eoX$Z+3QeJSYk4TQ&`Sx66?H^ud3puzuneQpvsEOR85&+WGX1vZ7)-zwBQ- zrJrEtd5;FAHhlZm4{zwQ0FKQgFyO~PZBKV$U|@O2M;&eLE7z|d@U;f&4Ukw1rka&o zvG9Ef=7i6G+{j$DPiOcagx;tOGQ7J27qR20l6bK-{tZzw6Xo;da|cpT1Y=(FCR#$(ZYjRe>mG***`z!W5o`wZCm-){-(6)TrXJQJB`R zM&#R#xEXfqR+5~gl+;RGolCAAZWv{=a*cgzYs)O2>joZzg{}7E^Cg&=_R9}Dqb66p zJe^mYgC|8DN5Es!e)QaRz#m9~HMWXt_pvZBZ36Rw=t{QmfiMsaP*|F=j(kOk<=Nx~ZxLc{u%Mi#N^D-VEOyYOPQ;9)E>`pV# z*`Pg2+T+J6rtn_LePkmFf4Q#(HbM6dM8QbCiLuQ&FAPI4a8|!J(Ohg}SD6-W{|eML z5DFaFa^&Z>W*jY$0Gw`gTFMPa_QaIyK5_`CfMYwXD)(F2pWHZ>)N0@K{QRohGn=H& zaq9KS{&)V@fVGR>*iRS>Kw zxQ77UT8cZdWK?BVSSz)JgN&W#2m_uqAaJP)Bx)0cVU2Apm{ea8^Mj3@Eosw?6NgS=IO1py1dV)t`ZQa zNpV88tb?uEU~X0<{P^MJz?AhevPjHkbRT)2SF4ZN7&$CCg#UHj`G}S0lE-;$D>J+e ztv;m8vTa@1y6__D1sh#VVQV1kxlGWz!z}A&v!~x?X-3D;Kit6lg_W6Ef?=z31;JxA zGz9f9Vh62^Ncun`x(^CHP7CDkV8Hu^gs_9&r(bx^79C5g^Ce&vG0?Z86wyzkbomJ} zdJx1drSKqrpMaofWc;$)+S){UeAuSd>jHHGPILfwUwTs`AL|HsinRc0GwnO!Nz9D@ zX~9redS^g2q_lnrQE|OU&^7z)m(b41ST8f*P3IB%lU|i%xLewW#{;)hhcd<0m}%f6 zmdLEtKIV~4Ne2b`HGvEVGD3IrXS69@gM$zM&H@bTLe1fq<%l9Ef<6({FZzYQqoW@( zppr87;9s|{DL&!$ZINo%4zdR+7TdOg6g1frU;{;85PI*IvLH|0fhGipTC61I?%h{! z-?F1AWdKImRDTAv2;v!U6XDeN?t!GjT7p~@0!aENCg!Kkb97RUdJ@O%#o`4mvw{xes7W_;)Gy!wgQcOHj?D(jA@SYj*~B0QD<_^}$wr-)E-N0|rLarbv# z&cq(F!-o&QoXC*Ov{(U3(B#aFqq(6mr<0E54a`Es`9DJ$jnwr(f0rwna-ZSfKtq6k z+(LB>A-JbqxO7=AX!}(>{s-$y&-Ji^KNE!i&Kg~KKxpV{=P{XMTx-?#E=w4w_wj!ymDSyfW$fF zO%sBT|5}#$9||trlxr<-MSa`9-9{+s+yVI95Vq343h%Er-6E>1rOr%2dite$&xp8fLIbr*j&iN-y>c>cWMr=1VB zV*AF`{QP`fd7^cOF5h=mpf&Cd@1x=2;Tvdoeu%QushyqYq}m<1Qdw`3ppibP*Q`kR zmMNzbZYIvsAAnoNBbgty;LvoPbB(`o8%hO^)vNzb6YZoIw&G~FL~Ez;C|wW%s9^L_ z9;+Uw%|J>}7Yer@pS+a&4a~`IU?Qv&xKhDDKe|cNTT|nEP)Hq9V{&7EwNuZCI^N05GM5MR5RFS)1U|Zp-<*6uCf@Oqfe-KrP-bY5Bry;GWZ!tEI9E3RM`R z{gF9~)teZ5be%hJ;ElmapQpLGhDD(&cZ`1?J%0RNgLMuj*WhpEH|#aI^=<$A6V}$_ zYhwb^&GpBRyNTC<=Vm7l$tEk9%U&y)-p7 zmAA!c+;gW#(kG8>j2kkXigw}4HZS!)mV77W6L!3m_khKky`YLbhYH^C*;jB+|BPKq zI|CPOpTPY;qJ5$B;6XIkL^pw41rUcaihNrV@)oSQuA!kvf7Oi}ZH|F}t=;2pKP;Ge zM@H3sMC~rAR5b47K8;rRoYA;@a7)So#T9jq%VH<>zj|F;4EN`|9~Xc6nlc1xaNPBR z;!U}Cvk~kA{y-qQ5;>?RU&6-AX`RpLULT?#HYl2uEo%w!F?iXB6jvn8FrOIeGie9o7b;OBj#Q-{;ti zUFenU@2Y~=Ca1|U(ggiPZ${Y+SfmB$fcFpLKPc$Qd4Y8}dI-wk+{<^?Q>58M2{-P7UL;KtU`%|8X)A z@E<#|W1pTJD(K)keX>7+0lz51{mGhnGABrOCY&3-bNc_z#{FG!T?_ z*c3pP-Me@~dm-&P$Qg7SN@9t|&A|~{1Dhc{I)e;Mj;nkq3 zq_AHC!6|FZXBK5GLI3@%Ywry4?!l$wk~pNJ^BN%RvREwz#Hks2aGJ8I!v`LD``x-4`w{B5^(gcpF!AwvY|C`%)STqOSS*m5i5IGldgW-uNN7it9knAfRw8uxQ>8^oM6?q@)Rx=Fryk~ie%beDlxUtYzt8Ua zJ2UCV-5M+jV5-pqB}cD0;>f28+3fV`i^8g^mJfDf#HC#&X7Vsy{}C1%_*L}VOhZ&~;(IW6&!zh{q;+bdG?5&AP6J6ypxR9%k>tJ9}L(I|ss&F%vKL=R%hDh5 z_`t-rI-+O=6yhn?)3+-YYdND;OIQBgH8Nic?L&O=GOK|looO%Bv~K;&pbl2oUqA9@ zin3orMVpnLJ%i03z|X1Ud_1%4UVe0#(S>=#O(lwF$in1FY-HQ6p%VxaoGVva#i0 zf(-BL6*wcJ$f%lc)irDmIyqC$!~zf7uh2ZI58nXeA}2wHBP_A5V!4`z?F|qP=ouJ{ zx6>I^fnSf&aVWSLQJ&|svu@qGMTXL7_cEGX)%WaKT#)&<0E+Bo>v!^?eQVCB7Y9+* z_)~y3KOkHX2v%>ok%MxX-^tn8_^ZgnP^eB0QZX`2U|p}iPght3ur2>Z*bdBGl7)~G zdr{h^o6HEf*62kDAG9vHCD1-UPdr)Hn(6Cv;BCpb^@7UonLJfbwBTM-=lnv(2~!4# z*BWw0FakW8hQM#%SrflJcCdDAY<-XbV?kHUO~IHHhd_I6CoicdsR zjDrHLLcqQ5Oj{_}h|eNa0$ib05cq(#dVANUr{$wUI(HIrWfaeTyIMX9;p1^!=l-S) zPDm^|L2$+o^dEjpYM)e9R3rkcB$R3lPCsBE zY-(y+oKueg&3&4U28D@sRX{*3o1vj0EZ_9IZvXQS1JU^X`W1?@ny^xs-`btYo}`2t zpua=PaGO2Utif2RZOotq=TJyY9E}SS6MZ;8aByVoHs0LPAaVQSUd|6dWW@Mon@Z0E zTmc%Oft$qsMD<>O_qd*`MO#hH{s(txBg51J9|6aK6?2E)fF_vO(H6}Ef92K<{*Gzu zh+?FM0QhA*tEp{f_a9q8tcW+B=DI!yfcY}mOcEL`HvcMsUCxS$rM9rNp$%S&Ohi5Z z^xvzx-xHpZA&PcW4?-@37UOa6nV*vzaW=w4JnNWaGZ~KhGZ-|7f9CNMfA0Ia%6FoV zw#oWC`=V0$tL9l@pGOIF?}h{7G^oqF|MBs4q;alau{r7DXLLx?7k`=OSg#cQ=qO=j zxpvZH>qf(c*yK|Z!}O>5nLKCtPA%-%sP8pbuzUX&wf+-{No*qnMrtqTIJEjk<*km3 zCywiFyue{)E4)Zd6_80Jgiz3{7N*`&79FMb2T`m%hO6=5mqJd<%i|Pxs%{)BB3F(z z4mJ~Tu#$-}hQ!AUq_(V-{itz25<`RjFA-~Ly74;$@&3pd*X8_q&W)e$5*90<<>MGZ z;!g}8h@QvEJ#K63H#_U~XyR^k^fi?JnNC;lX94%M!lXs11w{rsI^GLe)^*4*@9$CS zEQ6pA^_dZ4PxvrJNm?#9G@LtjpA77949R$tC{PF%XdFiaL$3OhU>#0MV z!h4q*91z-eHBXUK$Zn^H4k?jB(Ii9FunbdoBXsnWXH#^%xMH9kNN1lO92%1Lo^>bF z_b!lJC;>9ZB0@UM^TF2kYp|=TgjACSc$;xs@e&##@BJD2yax5{VMS;{&w&Oib~y_) z-PV#z3U0$+ADva9C<NQWIaRQZcFI+Gy}@@$46e|W_LutH!4}* zwjB%#&;EujGsd}XKy$lsoz8@ykg~?`&8(#Z9QX1bP}KE2m+f!f!jI;kD6`m=0<&)- zu@aRZKvxoz@Qm;!G0xBaK9v8ITEJy>jL?aRi;X3Ut&9?Hz!c-Rdv!3hYkhWhGrr3E zAEz^g?n+$e%!blle+TCuQ7dB(Qw5sH_Fw0tXgLq;+d`A9@`6cTcZ+RVNht(p`X{Ze@(a6l_V{cVr;8UgOg4keHQS{})R8G?EefS@- zltbwbD~}1ip+Y&5eQpWlG)CwOG3jPAXKi3Ck7k%JdHpZs$xIxL5fep=>l<5vGL%{zU#E780gT6v zm+9Y@Sgsro42qxdNUg57tZ z&P0cOwy&NaPI$x&?Mf4)&y_3mgpmhg@++W9`ljih1N*V7INhlzr5gSo7utj)vnVNr z-S0gGHSLuYY$ZfQucTxYs*&2{HZbT4zED0et6nz-C zM0AY}Nq)7d7tsotcrxI0`>Y&YmWi1Y;n$Y;J+j150oFiyixA=3xzd`4{5K8F#rP#Io>3?tlt6h~h8JhD(Gf0>`$0`oim(uXp0YN{{vYX>dr z=?P(avlUFSyL_9EkM(}Aefg%UtX5?#wXW+8U6sSXS4?16^}Baf|M7)#l1~jHCJ=XS zViS(#D=#qy7+eIdj4DSsw{X~}fY=Gu5cfk1cr;@3NGRCY$6r!cn4Y-~L}`6S!9~2P zaW0vQOG=1U2tLTEFE^(m(VaNtx2xhDu^|Pk7R+^3!ejGm%p!6n6$0slK>o$~ zbm8`xdhw!H+Y5P2MW_G|+F-25J=CLweNg3u>>s*fo#IMNnyx@s@_tkb&OdOUJk+N| zft5%Kx`wmxup$(^J|PQaIcY$&DTeHtxYXBhx7aK|{g-P@(qv0X*suNEMW?y604QOD zX!Q20w+|9M7Hf3rou=LG-7}#6sCj$8sP_QXTM%8fc9piWLdMUX=DT;()hDQC>qo(E zTYw-+?r>PqqQ+5`NyBT@?*@)Jv@>fbf21W4h8GFdV17yDvd7RhXS2{^A(>6~gf{9K zRG$rJbu3qCf(smi-lN~VZy0&Sc>A+v6Ag{4o${}HQ9KgB7xy2HtZ|WrzJA!o7O@Cp zWE!!K1F(V$1QBF2X3P}4%1DQ#g;(iBh}5oF3t)Wc+#VGFu$~&I?#tKfTRUp!hsPV7M#;m~_ z;k^G#VQ#JCZ}QgxT+*=7A9!F84yce1k4X#i84&(AgF09aw+SL+ zcX1(-cUVH*ymgDXn{E^mVn*QPklTwxp$CmL>i-{Tm%$si;_AmBx{IZ1)o4NOYWtuDd|K6yW1SBc2T?zj=qiYayffliLqt(g{$cK1j?Uq5l z$b{sT4>CrWH^KW+d{&~w>EKlcnnS)ELnARYTK8NVdQf`*76m zGA~4-Sc~$=We}gAL_(qv1tq+^;`>_>g+2%-=`ZHF1h3bs&!~|ePmD8TVX79rRg(<6B}LUiK`WXKkDjgJ9>-}c}&57 z3#ol~3z$6fK^t?FtoJ4+ZXtE0SmQ`F54<4XwA{CE><4$SJY;1$?dZ1tkdf%pvY>di zxW8(x6KeTd|0aWmV{WW2RuV2Jm^O0H&vTVz8gcUEZb&b;w$!kR1<*m-|$>c?Dpj|u^cvq9t zudu9Z*oWzpqlA)m??XuV9H}Ai{BB^jo z=GeuSl^kmiBJq9O{YZHs2A0rm#j^r+%0glTkhzk(Sa3B(18T=hdSV(_&)&}9~c0<>q4!VD5{xFF9kRU9z zID8cLX-(;$a^Y4ED(!CeBI3A8@3WkZxqK34+RCPgQPuI$~r z6>#XRLTm>QH4ve)8z>vPDyDyFI#wr7vY@#q)hu!NLL+HR&HpN{RX|xuJm3hs5gcxp zxoKC_=`{HCV6r5ops?4El^c2-8cq=d^=)pH!0U*DL!m}XOcfi_FXk(%L z{U^t_0Pf$-; z(z`I5INTO71=0)5BR9fC)WjhUHUgyA{o#&cJW@C4z9{kssIf^BF4q*I&met-0d z9}^T7?uJ!qe_Q?oi=S-vNJ?0q*?6ivwBfX(i1QV(hLFtEI^az5i~4B+c{rhA%>G%G zMR#tC8}HjMq4d2>w707C(-QQ95HOItcfau4p3d*uR>NC2mM+sxHOXa?`l*nZ^nifq z5vXj|pdzIF&_exi-T=M}<{Lf#JPJq3jyhg8_4Y*Chq|HeF>B37%nT*HK{HboAJ_6w z-zn9qZQpv{YfW=ny%H|lph}yIrk6h&6i0G&Kpt830!1|DrYiKSw8JzE z)gheh3?APhyDO(Xi0^0GWt0wU0ZP0EZN@lj0zt^{Oy6WE*v838kzW)k1R@fk)B}OU{Ius14}q6Wk$$fmIyJOxP~Zlishp~ z7DVjJh&3W+720=Yq9Y;_vE`Duub{Gz{0J`~HS9mVi7DlUI11=ShWqM2wV+xO2-lBu zFI^e&EX8$B#u?RiBqkVyIst5>!S$-javKPgv4#j%C#%rIrJPBuK&8(W&*?2s7p?@L zIdWb?OG6_fFtrZG3na4xI`YSFx`zy(ayt2^tOBtkpZ!t z@nD+DJ)u_*U~WpJG(a#0nu5bnj;z7{2~=_->z;c}J*iEtLpmTZG~)L?mz~g=LEA=7 zJQ)@sz`Vp*9oFB(>Gvrx{=kFu(Ixf z4jh8vC6E~t`*-qPfrS%e1cJBS_xr1COs{#!}#taV9G?!8hhdm;1KV~JkkEH5oN;_h;^ zP#W2h8^j&{a#)>km|VAN>3i$#dYf08s;b35*c!IqHVZlf9$EYX>`Ze;_d9nqz2*hEGPFjoG@{Uoh`iu%zWwcq8WayN9 zTJ`1ZPMo-c3iaN}V_NqALngq{IkA`HEf(65i8u-?IM-qSyXLq4uxV^c>)8;?kJ z(yl%5>P@+mmsjtl;LLV@D*5vBR|lgx`<|?_Nn2+uwQ+Z744e0XH(I)9rTvRccN^Tw zI6GAw-DhPXc<{$$O4IYnpJSd|dbfxl6IPj7OUNsy4rWTy1-)r~y<5XJ#FjmWQ%{r} z9YE?(tt8=1rkmy@HMnA5tUqeRjjbm(%yqF-uRTn ztsA3Uu26!_;!K&6rJSE&@lEX9Lxki#TTpy0L9L~6?#Vamyapm4p1K-3caw3_jsXlG zSf!tVu|Dh<&Fs(H8YjU9kt7`Jj9=8qX{LEMRrDwN84glRFy{^X?vE72>z&oC4Y zd20V5iK#wLHmg#;R_Hi`4<-;iQpDsVEQ)@b-gtmPe1^8a0O(g?1fx}B+8FcOV`=n{ z`~w!e-c%AJimKGYfF32(m@v^hkM3Y2*Ipxi-v8A-AG&iP^u zX@Uyv)|*aL-@oYiROtTB@wuM~a<2;Fy}*)c5wYR?rRl$gj>(73m&97I$9@($Q~%}s za;vHtLNW>n)-f_72ASh+H$TrHDS4x&A$bJ}5=d)a{a_H#IH% zBK~S&Q=e2`_u8&5D8TWFIWW#AVBZD8?!tFX+}q%q zfYLb;sTY$_UxX@*0U%VkLdK)m7Fk_qv@_-!1&9RJTqipJXxJXs;mhG%$x%`RpEP)T zRH1++H8%3|<0j`X?d_ug$4|fvAn8!0uy_woL@L6&A40hmi2tVf4%|3C+U=E1Oy(nd(i%RhQfYMFi7K&|txEwGGY4vtHMqNaWL@;=A z46)~EiP0rMj z`hbY-*(UeV8W4BI^_*}RsEP>n^Y`cd_Z%<(;^iya*Te2e%^U3eapS{*%QPo`x^)ZL z#a+6&H(Fy!2(JitSw1<(*V*Qs6W(9>b`8&zxLyk3a0lc?q4fjB=NkqrK%=>pm+ODh zd$dVvGqb7c%4bD~vF>Ak;X|7o(9aK5`^hRNcL%o+YeZSQ5 zemT0w)LAZNZc_Eo5!V@%fQ+T}Tr^OyuOiF6?);-FNIaCcv;#Sez(ewgcBs zrngZT(t+!`0)~)2*RNks%qQnJ-OI|*PGD7ClIHcBF)P_5Fzdl01Xe3oArYBQE(@vk7OS3*9X`Sc{EQel1cMR@a%9boM+byN5) zs&#CV!*yua%3q(D+cTNVYn~*Tjk7+<+AR57hV`x3rmQkX)l&E1K>2F0QuGZB=s~e27!@EK;(CrA2ko(* z!!ab+I)oq`yVo#Nn*NAVqh$nZZ6K6AVoPQVWKIR&KM)>`3bT~JRHPn*92N`_W}n$` z5=?{!vG5R`E^7Q$_j`fI6BWu5g9F@nLHO||VSKACoIag~nLYj`PCN>wEvw!NSwTHq z+K^fYg|rqJ@R(T0XC7H?3|A9Wq8}&w_Wt}&0L2|DZ{NU3~4 z9|QfNHfyQ<1>ZwXhi+vqI><~vLzminA`L}D(#6+9-DO>VWp6j15dLtidxg(#K05L7 zUoWws%nliZlo7=4XHkKBE#2wy69$#f?6cb$6lagERWZ3>=>4$2e_|}K_|8>&A!etV z(Vuq;|O6=CIL}0c$aiX*4FgaJ% z{iHr$swEIc90jgw2)y)Xr}!#DH>aZ{w}K7}3P+z03V$Jlc?HJL>(Jvy1Yt+U+6bFn zkR4A{efWgXf>j;60oBUd1;;l;9P?{9kz!pSvr2mA=XS5l&dPTbXA;A#btc;iU$s}R zeQLMR@mMHVWX+-TjV{6iOIgot=z4#>YTve^2X6ky_K#Ankz6-kM3zVw2l1^-$+%e) z(ML~saZSocGAsnc_8&arF5CvQlcU%PiBvE-pG~ZXx-cXmoO4u4iLU%8BZ#*Z z?0h(-;v8_=$z}z@PtX6@0o8KD{>c2AAq*q1hqMbd)tL}(Zf>$t!C@|L<@KkWezVju z@C^xS0E?IbmT>9QoqO*COsVc2n{8h^-mB2{VYt?~j zcRAE%a(uQ4*9zimi!{}cC$YznC4 z%-}4^J$TSpg^e~$ZM2#zdvf_<|ERIm(6zEGN#D*cHI(ilzF9{j_I(e(X6#IR$VdDB zLaxqx{N6^s05j%TbJ2ulj~X?~URe&J`$iQQ3()N6g}C7kU>BVbT~~qWOyoAZ9bUk# z4wXSLZZ=`;6QwHiF?ZZd}QYFkgs;n9ux+S`lJ)L_~UrX#sc#{q4^S)^kSc zn56bfh3zxSG872^c0zmI$1l6C21d7ZTc)kK*RtWfr7E-50>u(;z1?cAeRJ#I@7oQo zb9GD}yJH#uI{8gxZvR<&+hH@k4`-;BKP2`SEF|IcGuSoMwK}`Sq^&Lx|Vob zReIs$@en?2%v>sYj>x0L8cFg(d$hFS)M7hqEeK{6uwIG_6g*nhB(H^hX4iBu-y?f@xOFRemHVh>Z zONm3?BiH|33goweMLic8iUHOs<3>F)<^sozAe$h5@H#sJxj+Ezf*>s2_(4?sss`~| z>Z|3hojXU!{`N9^5+oR#9NfoId%k&CE$!`kVqG}@7 zY^V}*xNY;Rq37NTR$9ySa{Z{TzZsH(nq_{@Wf+uE$_xde|6*zVaXH|EI(>SgdD9GY zCG3I_Ba8Li)qAN-wB)dpx&kgiB7(t{rdWB$)c}Gw@7uO`ic}ZLdp(UlbPPnTMD$m1`X(Sz= zcPLVz@sN^`kWha|sVZ@mKw(R8R#I)5o3E3hWM#nzr^CFMc;tbDM7lTdX0h4&(OElV zRR-tKe~6p{&LCcng*R@z8(0AG!4zi55SoN-+ONmiB@gjO|Q}+-MNm1 z`8DTz>+}^j36HiCsDkklmrvJvb^0LoIb>AZXPflc4rChW-Q-B3aY{%AxV0{a!iIv%3 zgBE&c!+@}W*a6b6|L48}(`>P$U*^771qo=qQDupAor)>@uz=s^Q@Nq~26wZ4_JXx$ zeSF#BG+&0_J`CsSVvI^>WUn6G+q0seP3^%;wfAXinuq_*7 zv>+udJxEP8pc5dYSzx{uD6*ij%gZu0HxGucr5nlQab6ymlprYvB5ha2NF>PY=c>9j zUmoyV6*4S=NpZRC@8Ws_iS1pY`|5N)c+S-SqBH&E6|wQi_R0;fzBsB578o zLN+m61VR|06e1R>o0;7?wIh~_jg^9kh@8oro`99fQN`@v4+Lp!4tjuWN%#pS3e{1m zkb~i}G-Xs`E$9dqw6aC)Q!JewV}qvjI^oSG7e7T1CJw4SN<^vBmq2B?ku{o7N38() zw5U=%+H6*Zu4W2_gj9OZTNU+!Ov;xmH^aOs4P#L@QodcdfPvpPm*KCwz)UI03Dpqr zMfr+Ghge9%na8qk_#_EL_z5CHH`cpXb+ObJ`1vYqz0;q{1NwC^e&^Jq9^8;UFpoPk zh8IX06BJt2DzmIwXN_{;<8_(z=t`XZ86qi%e|Jp093U#ctz#aI5`Q!7$pU z1crOp=?rz{w1%@_0U+kwa0%Mq6wciSKWt=TUh?gXtgNV5WRpPwpPxmHD*T9#_Erqj`}8&M zPi)jH<+Dnf+Jb>BMi;H9(1LN|`;C&3&`9qBC6kbz*w7FPWL!oKIHl>jzL@!?OdKH+ zjWq6G$K@f@UGVzIO4$1i3kkvK98aU0_sx=qN5zTdQs&$GrFf=3=8BWOS-^H)}Wpe`{F8R_4 zO$wmbm6p=WGur`z`{RA}%Z1t3$W9YX=jt4Xp z(so}Np+;PYpE#7dVl6AcN&{lqoV8FRoM45ftf+Epf#X_{b|I2y9VcH8XQcmEo7{7U17hb>4wqC`{^yic~((|$X z`gzxgl5 zO2fq`3w)dBe1vmO2y?_&Fs8SxJ++JR)TD}4Dpgfu+L%B;phEvmxBtwB6Bt~dlIJ<~ zcayLt@l9^{01Ci|r_M*?rZ?fUk{x>hGdQGTPGjNrRg|Nf1T|+YPGTJkp;PSKwabr9 zOM^EMYoRgEaQRlTG$;8c9h^*7;zI7h6~Qz>;}3JUvbd&3&n?K~=Bc@1GJ;zV;@Dn{ zTcIDk7k#-9wmu+`lT(M6ATCn0*$x|N{q z1B9A7)(Phc@N&rFC5Xlzy<8qe7Wv^cKnE$0F(VnyzJLGT;LIsi%5CsA;oexG_Ab)c zHc>40ERg?YqWQx?{WtZ;$i5O>1|M`j7>0sJTJH}RWAbC82RiR7lr~?@;sF9+Fc^s7 zo<55Mf1}*L4&x&`)Fb%5OBYA|bVF72s{+Zr4yRYRL35mDuvDZI|H@KNonap9IGsf( zKRvN|jL+7v5Av`a9Hm8Fph-B1C$Ps1rgi^~})*RKQANjn@sz^bqbg4`K(TzJS z{;isA8=$DUKsi(oqCWtGYOS%l9gRrw5zXiToj!8>kJL$@Dj=Yvv3GAWsLoE+v&*4P z<|Vu=xFZGd`vvr~le7@KpUXqgZ(q&3_Zj{VA{n;oz*K{A=UW~1z=s+GLyz8W)vqzQ z?XP}B(_^1x-Ny|7=OMBO1qY90QD*>xgU857JQ7eE31F4|)YKiz3pOWDUIU{p8TS}7 zS#fyC(HR<^)!l*yh7?Gp3-ii&qrQN@64TT7rQHD(Kn53tCkgBd-#1&t(+e;R1s@D= z3FsRtn5#=|Xoy9x(3O&zD0nwa6x6Xw&9d_Hnuyjbu>ypY0R*%LkItktnd~pazizTn zg~u3xkQR5<;al7n|8~#Zy;Ko;TP(z#V zKg_Uw`M)HS%OVoA)9WLt%EF?8S*lVxm-aP*;X(}Kh_`Z5OO(X1Al!NJb;__;#-1am zPK};x2ZjC#3>k4j0k!_B7wJE%Fr2ge_mzF8 zk1bq$n9gFgZDg)%X`c^!0!{K4>(Le-4>@Lx`9fx@`MegZOl@Mnf;uwq>sJsqAxptt@oP0DZAzK+r`-z(5d}5}_5NwjHVkd&DTTY#RaDqRPTz z9&Gs`*zab6NbS*)F7+?qslsh`H|kHo>|x>I41pT-=&8x-J#H~0AJ9Tzh=gXD0c#<0 zlEsZN7$PS4V4xC$Q9LL|gm<=iGXrKhi{)P4RhTh=e{Y4yfPVN@JJrsQ`Im;8np%v* zDf6$uJUc<6AV?E&e}szx`0HdZ3()JEH8$ClBv30oWSy35GOp6c+FlHK8K5RrI_WVv zvWZ0YTdT(TI)__x7;tz#cy#o9ip*oY8b7Nw$itlbV91D3(c}8R8HAjbMg657m^JaL z)cnUW@}A(qbd`jIe;_sk%GhD{3myvZ0}BbZs1ZH2u2qTt+4SAk{mWieaE*+x{Jg;E zWk#3(na+g!wJwPxZ8xK6ffU_Dk}p)wZ#S!1__t;(d)2;T@`9}1E;Zx{t!p|l<5jJ9 zL7J|n!ZwcrsBy?+$1G<~y;pW>i$%-dz_<#jc|?|93!!Ubjt*E9h^%N;U{QRsDjhP*ozz-jPP9M7dKf<{Z@kxQ)A+PNtsGumv)zK?6>IxR4W5kMTuC}M|8+&JV zar_{@!HZKY>FOm-8I&Ol(E8%TegVPscn7F5>7dHs#%a#{JB|8)5Qa-HMC=g@zc)2( zDe!3Hfk6?^mhzP4PxIqN+?FB2{vSV{(VE#zZkLySk6sw~`_;;BX_FJ(q(4pN<(SaU zr@D(+nt&$jIpjjM@*SP^)P}Nl!(m;{-opSSbUA(F&wo#_4(Q+JRQpiX_MYf@jQ>X` zN3BDi9tWn&WFyo0$6@0+0lk~s+<0Hf6wnvXhHLTM9ub<(f#fHQ;DX`dQ@`hC&bwtwoOx#WC~Q{0 zM7q;R{VO8|&H>9d&jl9Ko&RRJu(0n1%f15@xAt2@MwSJfQsS#8r_Ohlo9y!2ZgA*K^#=Vn->IihS$6Wi;gdVO;^xA-W0w^_ zk#%4tvcyee{3-63s3FPUn1R4*3HA2F%FnC0xQN&goVKL(w>Uni4uMxZxWvYWn9Pv) zlDsjj#zrPb9dZgP>>L4g6OKQ%S?%SKbm;_b(T)1XVqLURb zD>oa=10^rw$~rZ(Ennv!4fe28qqWz+?MakkseZ>iChJ?gY~$vo?lDX5t3)g)Y}22& z^jZ{`)?k8NXIf|AEJRGb%5%`ECnIw+>l(d4mwPaI=10ZN=x7!~<7~O; z;-Y3^^6}^!utPzs`co-`&ehcHiHAsuwT(e%KjqV5S1VjV2^3Q6#n1hrt$Q#BD}=d) z4U*F{IZ2K)KEU@(o;>>$5)$`$AvD)GTy@>f@2W@nE|t~l&Px?A*G-Bs-p7(Lxulsd1<=gK}S9LJ4^k=3N=aYIhne#u>j^FtD zdTdSQjmP!}ZuZlnW`>;%N*xZ*cpBb3ExzW06wiK}!kam|ee~RML=-4+W;u_b;Gr@H zphu2qi(n(5bNId=CQQkIn6l#(_B@ky;%LdKUzSAsrQ2-and{NZ8*BX1AL06SjH)Ls zQ_Qw>CC!`SfHl(x2!=n16-TofA0WQ`N|9o+MnzlOhVK!zD%LTJ^a3JV6XR?5(*E`J z!?)t7<$SXG{9cPvBOZ^NwYR@YyIGoPn>1(-nk3d@Du3kcr$z6Ev3*HHv9errH2Lrn z&U{FVUcb>cHoV>0dAOaMOI)1NMpacj@~ot!gfJ?wahL=Q4Pw}tm0sQ*!r~`vIs+`9 z))Z+v4r#@%Z(W|wqOJTjv?FG^UH(Wriq4d3WJLt zm(fz`o4F+!`Iaj6L5Ca1cp67|JrB!1UuWjX-u_18XU%tN4>k(LB$m)l1fF~rVjlf} zWP**M?Va>ATF-4P?k0jKD*hk`ATcJoAGuXZnYTD=E8B)AMhq?;W~#i(doVfwihKFa zpjwrGT_Re!j_i%6R+pbnit=o$91y`jUcY%YsNt9EV1@HeEY#G~W~oYOYfV-1WtfQP z0dLC%3FYp3mV;(F+R@R`U^4}^T8r%@gld-a77-yV=s_$nzhTD;4eGf&{`4(dntjMG z^>zHEqT?XgKLJ~iCx9}_-|;OP>{zvCjTV@z!Jw#pDcE7DI3}8Tl)I(#YH|E|>9|!n zPsb#w%J7l)9enYTT7F7&?w^N;Q&2!`;-IJfBzjbJ7 z4b2odQc|%&v?HNVS#O{)cNMj1Ysg#$u3eU|YTu6^F1UkA=!cr2)!x(Jf8KHD%RF0s zKFb}RGrNC(Sa0_LvrsSpOzY8idrBT=Foy5q;pRR8{GuKOrNhCQ1jaya)9S91Osd7B zsvYUU`{-%jn`6O=rb&jtC=A0EEC|WY985q8qQp+BXHKocG53{-X6g6ZE1{4s!nmU8 zN1LZc_3N$y?tg!-cF8E(;NYz4>xB60(zCnd@vpiU_H1|ByeHR1#r}eb#Ol*qW#r^G zanLPoKu3;_jSK8>c}$gM%jm3Y5={DXW0t$iZ`*T1<^1n!LeW~%r0%KeSyuOBt=s}# zU(*^BZ#Dy$(iqjguGqNYiomFp)yKBksZ_6`(fE(>?4!{xRbtN-^S$S_dl^D_oR(KM zmdg9qSm(4oP-5~Q(tT0T7MjlIETf>kTFbU~x-^6*hOI#--QtJVTdF-zmt7Q7UY;J6WzMmO%el&C(r1Wyb)`Mk z-qk3#nAWOWqiLQZ&edcw7(Sv;hkm?5^Y_L}E+rY*=AO3REut=fjXccy}-+ z2G72`S0*O^&LBu|vyjAE@}WLypLF|Wlk~Zu3Z}qm4btK`8?xF zFsg+l@Qb{q6l#R5My@Z`zpB^Gykq@ALc56&Wu;JR9DGa1-CcC!0WW zgQ0)5YEFNg()yh}rmKXEJRap+c}7i(4H~ z)|Q*N;t>~AY|YG&H(_Kq*c$M#=ADpQwY9gLrh;VJxAA#^h4p|(a>$Zk6dIkdxl@k^ zsrrQB+-8G!_FuEgw$y_=<0whA*Pm~$& zF>jpJZ}XbE<^R`1wHvl2?1Sd^AB;_hEF3Q=FMT%KXP!aZZz!deRQxEV!9dk)+tb*J zQr;S*v;X??_NeLEDs_-Ll3Xv-_U*;w7k5>i?Aj!J$5+KFCe^!Z;y)iHDYoUqr`It&Abbvu=7p9yT)e1);o20U zbB}pv_yHbqeS4>;Dnc!6LDGFz70>l~&M%|Uf`##h+9}`4L#9)*Q`v5@Zdz{=b`1^q zF*4lsJ#C_z`jBHYOZRBP&3V3*xWXun>DT~7@c;Vq=6~iU&rv3ScU3^s$$(3qJHqSz zl$O$HMyb4Mxao0^Z;#WNIqS`lk=l!|9$`@h`OXrS@@3ZeFHwaVeN4;lUT%JMW??KsZ z8m;LVkHeub2!R7JiZw=#OLP%07%n}>GG&zIgWvaG@0UhLjU+-63iD%6=I)rHce!p4hY1ldFGWYD_J)v9^)>gbLE#jm&!aj|`Zxc^w6|^G* zovyar217tsq^9of4hC9f_{BBgDaGQUJulujHWpQe=f0`O$dT5gR6;k;vdQXGn&rRV z3HhJ$nqSa=nD0BWD8((+Zb-5h0*LpB)VIvZSG7wER(?Dl zH;%@T*P{Nek7bWR`}3n;uf^B!9jdB48nF0FyZYclqKHWn^JyX9cXYIuhc7M_=Y&b` zwNOFbCmrq!HUFDU@mkb|1og)EuOjnj&M(BoRhT%E12xR2yDw+exxX@0tNj1-D90zy zt5m=L`?y(uXAKnww_SJtt;ozt*Edhjh_4vmQyET&`-sF}hQ-WX@>rh}Ij|Bh_V2Gt zj~%Dp8{XMWowO7`X@6-y^*d;e-an~2RTifuw%|n1fFEd&s1p^=VDXzh<>mqxm~+41 z)yrhtC)#2)uV23=A3H28OlD#o|E~ivw7HyzuI*=&rv45TV&p_z68;r;ayJAbUj6@k z=9atO3aT~Xb%p2Sm?-02HRpaO%<_#~Y=fT`>Zmm*UN^~W=x!p3Wa}cYuA-aUqsdY6 zbQT<@$44$YJ+(Ff7oHpe@Q8f-3Uq&5JWl64m?<*0(PDxhl@*P)>7uX%jo%sS)be!& z6a9BqlZ5=QFK?-F!EH{Pxv1PtyGFFPr@3oA_jo^`j_+x8*t1<~Jh)-{R7L(Bl0aw- ztWnL&C>Bb``R$A2EBpPN(aya8*qZH%*&=ypFf-zR&~N&wZ0*v9_}6tmlj=sV z2a0zLh?GO7XFtG21?5Ataiqov+wL9wj4&s8Zr@A!;BFBmc$=;l`k=V9rq@Hp8Q`FN zAf^~mBd$;q8R{&aJM16-LCAKc=UxHk6jeeT?80B1i2 z;xzJPt<_p2+aeI8!{90taHIjh(6@AQicvsG6qz3w%A+|8fzB^kk93+fVi z+Lc0^B2jp3RcqBztzR@@6)tqy5Q(Sev5~`6;Dc57*rj&Nzt}#ZQ~O<@j-&Ga@A}K# z#3CFj=udG^S1Lw@#rHOG8*v*~H$x(D5?bto1^thLF#5Imf(;K|!xu$cyndWr4Y4}R zP&7a|aDv>FIN!1y61Ey?whPFSr$19W!f7ux_w|l!7@{=S5E> zEwqfuw#Pf3lT`HHEQiQQ;L0dsh@_6))jS6*i1ElqoKC zm|25``;D=Z60(y+QYq+Y<$B85)IMOyvBKjoy&fl_R%lSJ(eLV&gpp zDE|n(*XAG4RLm%2ZgZZS`KKt^KKb)<27)IdRz=PDp$N~U3Qr=D&aPM+eKDYA?EcAJF+&8 z!3T|n!$rWGgjeYioFyyl3g>rr&dk|awmrLjnS`Bxf0g$a{fckOFguhU6~>en#FQG! zG|wGge@6*V<#>c@W84Fd_y-(u41Rt}^xc9)FjQ)$-GMb^204a-du&}@Y{vORF*Wif zX#q^>_x$a8b&%|6U$5lns8>oqcieY=0z}MMsIMU`wCui52RI>rbC;1~ATLYS(G4wJ zmG>F_FyS3Ui8eknqlI|V)7^ccYyt<>O_#?3Yo7qj1?BCXoI-BilnZsJudfGba_+A2 zep{+NliL|WmGEtk!@LIj0OyjSQ1LKwEKT$f)TS`>6AnL_4D~tqqkEQ3=sq>y1}Q>J zX0(G@Xbe7*i;Q%Im*BqCbv zPmbJI>-cQD>V7CWTYytSS^~`Yv_&#}mU15M*%!v7Xn1(nsnlH~50$q$(1ip9JO-so zAI|owP!&Mr&Olfu4FXs+!c;_6Ycy~&WQ{b>0plr`;iAKw7+uy} zTmYLW30KGR!{f_a&`>nu#6U)%8I^hnSTZ9;Sou!IiVH6skjX1yqbmtzon>9zZR{9l zNA^Ry8PTl&02hr}1eLRQFG{(%DoS_1VxSjONBZQXBk?kRNK*X2zPy*b&AC7M&HKIF zv8RqER~DN08zo-K0<5{Kxc{y0aGZ z>J~G{eC{(|CaXM{=jL!h8(A&LLIPuFtuI0NF+80^rH~W z9eqB^Q|z59u1Xskahoz}X=!*KNpeWJsS65fcX=G#>Rm#kBQ15N9`%k@z_yr!g(Loh zq21zga_;~Ab>`lAmBCU2)e`Z#zl1DwuAzo&FuB!Z*g4>c6V%jR6rY?HFE}P|H*)WZ zLExj+_a3Zz60ouSCPohp7|1f9@(P{c-!0Xm3v@^1`yapi<$!*j;5_S2aJ#4kfI7oB z_LgHSHWw(GZ=cT3?^ihr9nbvy$zyR&z@p!SA)N8{ojZ3V{i(@XxmJI$?Q|slHK2U4 z=i^>y=NaoV0E6)uSzDI@@3aqLq%kbvilu*Pk5d&2pDxuZi@-RR6wPGqFHe>w{BN;C z(H{T#orkA!_|a@YTzP%nZJWB;uDFT0c*YXN{l<5yP-pRf`6?K)GPJU>+T#z=_a0rS zorP(d!VrqWQ@9au*y(^@b2_!T7Y6^DMk&NLt=Lb6t+U$@K`!P}h1kHrl-S^huRB|@ zJAeJ!HFG$w<*f|836ha6o&k{8?Bl5X|!%b4+S$;!7eR1UR}PNYvPZydyKkD zZmoG~zu&I20W^a<{;0bLe3qLY68V;4d@o_~nbPDO=l-d-n%~v>nfI?LdADcRCLNAf z_bb7)4+<%PL23(WvA!s}!VJAEYTHBO(>5=A`}oer!1sNHB~PF!Sp(0@P8hUp5@w?@ zT>UktA+%Fo%6;;=M&)KFDFrL9Uq|($2COgeqT$*An;C9wyMu<80~b3Yl;2VBYY*{i zB>N-;Ep`e_Y3wVFZx#6Wv3E^8W7HQr9Yk>`Du5WxdoRJ>%NcGqq1B}1Ipmz`uKO#hGVi}-c>C_ zf*QVYg1n?cZGZeg4i(;fJ3VUgV{Xif-$ndZ-44#o)Zkg5gA6NI)`BLP%E@~d6tKq6 zb+ud8oDp9&&T9JpM+8Xru{)66wkd>96mUs61?K1Hf3`JyvGxA!pd4wRy$|MMj9(SL zPY&goI@o>w{R#2$gNPv#&@qQ*$Z-M}(*D8tNC$esG1R9cYBur1fw>7)TLt+n)pM!A z%rnj31{|0KHyWo$TPit?|1R#I_EpAzh{Nlehq<;^V}OtvXu6^d{bSWYW1STbI} z?s^z5)(xgDF&6vIQzrs1ef_1u7$&INwWWBq5~^{A=U8tk9|$HXVKx`CYlfD_x=2L7O(Hiz-m zn*juqp7y9_AD>`hiIp^(xLRx^RlCxAN!tCm>ATJ!P#XfF1_PKKDguXoeUlzuo|6T* z_b3QjtW_iXziErBTUhiSr)Br_8BYknM%wzta@ynW=->jH%T%w{v4tly`9OMu<^1$!KgUVn{$~0-s5s zQ&LcHbQIvo|9-uE0zm7I|KERYB#J8TX=1Q;;Gv%bJ96#13;<cqC7ZAUhmcvC|yS+UR^Ia{lTvJo%Fjh?wO$=VnzTW;7{7I@SJ#{;;_wffwq zZK$#q1GG*HSff&@cjOM`o|>$cwmV$7t7Pq_lxa_iVXDi+###tL;c=>7fhsyWVdoo5 zf{u!BF#me(>Q(7dpZ4Z)Qe%E0>C?%+qTS!t1 z9z<|thv9gbuf2ulJ$1TL@8!X{hOKY9PJY<*rL(T9MC8CF;ghGH=hoipH*Eg4yYzL> z(C2e!WM8sFN;2str`G{3D`MZ^KK(UIbvuo_1-$1Ul409^t=vdu8bj!{X>noZuuW%C z>t|6hyUtYbVlBW&An+VZy>=hGeTP0oUj!t~rZbT5QeKW@QDXrXSj4Nee+$Po0`C zU1h4Hqj~?@4NY3e?(LNbJ1YdKs7)?|@nKIvOjlA$N}n7Dtk;<4NYQ9-l^-KcS^YXKeLcM`PU))KP*3=`k8i{5^kPLnikX{d z9A)2Ye&1)7HP=S)OFmLd zG&VX&Mb+w$CF)RBv)}K3)i_xQA--+-TuYeZt*`53RKf zohSNERbe+1!w+@zXc|o(ec|UvUDSAJvxd-EI@KJ7-8%`#fydq5MiHa*v~pcM@fTPs zms|7?39w6yn|e}nUuN?C65`@5HOtw4T58-{<}{cP=Du1pd|iCD{+OA4U>;{@yyvHz zPLr?XIV9MgINS>h4t%sbsA6aM&hV3g6+7#@I;ZU?0wR1=_&q+^^n$_^qB)??89r_ECep zIocB1>GJr51S?=Qn%am-@#p^?|E4$5&_BAL?G5pJyFO7(7DA|=sniw>IFsC$+!?x}( zy=eh=OH}Kx8xHx+bZRQN4cYYX+}YV6NBNd~IRCCcX)ZQWBvFl1O0PJ5GsotT&`0Sb z%bkl$bv7fg(&UdHRkv7pGWK+OF^_w%)NEdzY53^FZQEv_tW#ab67uInS^HPUhl_5y zGal&`rE%LwJ8{9C&$AUs6e{cv@{lUp8QwGWmDl-v*n8tq1N_?>w*9lu-QU%8=u%#z zhp6I_zSz1$3*!zGd83QS-Q(CpVd9aHkZ2zM<*Jgap7hafApqSikJ=M(LoEtAaY>m4 zyF4cRpeEt<5%SEwR?xJ}=U4u#6MI7b7Sfz(D&VO?c;G zUm*_q5NLgrkmNNhesDoY0szMtEdK7y<8YDoNo&WCLjr(@Ld$Eis=OH_dVVy!abS%tzpXoIAEO;M`?64lk3CWbh3WQ>M zGjU0ShW0!fL@6oJv#L}}T5pT6>PI?v5LF+wQtLbS6k z)5eicL-^`->40I!FqY>^Mj(uMI+ShpH6Vq9hJkPIa@vKc_Hlas*!I!xP&>HYzCO%6 zF$Bdxs72hba$==Xx9{G~Z(DPRR{jA0j$L&>|DdBU)>GYfh^q<67RQPHa_Vzi{9>Gh z1h9H5T3fZrql;Lr0hK9@#M4Kid<&fSE~wTaF!V#ytpCD88|V;tAoW=HcErwfA*+v0 zC5*O_waG(olYPj$=)72j6C|^I`;n$!^NIsdXJKc5@WnMNi^^ghvlyIEI(ZV^K}=OY z?TD8Qo=LS7%he;l;1cL1e2Vk^;&C%m6Ne}A@;nt192X7j9Rn(AO;Qf^N|smLXj;P- z@$m6gt=CT9+IZ3qyf`H+@6Y6)Y*17*6qX*dTv0! zQ}^arYPglk>6eP^N7don>B_Y~3%tGpy{hF#;arC{W_0bj2A&D`heuv6iV=ayHL2H!nwj_H}AB6QKy`(}n36|sV& zsSs3ATdQJM^!6eBw|SV!|_D}z@R#?#PQt$k&5#2wWw-xAKIxMk3CQ0<+vZM|RcwS$!_FaX4&cb}yf z=nbjCc#l0=g!hg2Gv?NbL%(i(>!}3?9Jke*51h_;@iVzr<##d(xa;|?bU6|8z2kp& z9|$ixnMRi}CAD;9#*OHqM_RR)De{pDI zJRvJd(o5hXo$8;lsK4$xerZa5*xsqJ_wsJbGszE5 zE}hnN-paIMEYWpwydjw52>eicqJ<8x*^>9?)121;Rb`wN(x4 zi2pkbrX4xdjVFWPq>$tT>S>R$Ifg(`8DiP8B^?`G()K`5lL2trLtGtZ;P@9(&7WZX zokAF5LCjAEcYz&S+U@?(hRe*QGc^|*YFf6xMe2P|Z| z%rnHtCsg#@4>K(lZ{?%HHk8G;H~6SYJ{_NAk~$st^ig`9W+bOMzq1@$Y%Cq^f?R=s z=_S0gzdx%@OXg7!KxaI>Amnvf(9{4f_Mu(xPbn!i0g0rZLQgKz`A=ygT@BMnF>zcvVh&Jkwg)6=LkiYKuW zP9RZU)wpt-ehA%IpX? zEA0+2d(+q*FRQ7+5I2C&H$ca7<8z zSVZ;~mu|YNQFQh@_U=_lP>v$aw-d2x6L*ls+JGvO0rD#|B;C=%LD;LJqeCBa5b|OX z5fQxViH|YKlKS?No{S4H8?c$IuLwEJIE2NIXi}=7_<&M{8m7U3hkN_`xwNz>Ems#8 ztYj&gRtBqJ>Z*>^0@7fwMHA@~v4sU?f@Ub0IxYN~)uk@&6BcG(zkUbL#LZh+Nb4CH z5m>WkO$YL5GDM5W8vvh&S4c=m+2K4FjO6XuJ>h`_Z*jSW5VD522>yeCRv0y-Et{B$xqf&{Dx*`J+4M%7+p>5H_K5R3NZt6v=2&5FD|XLE-hKih{{pn;5W<9yhbm4xlv^7&XUy9nw*!DG zX4-tLm4clU;l6211A=F2STNo`-HE`yr2Km~R=^TmOC;=1a(TjacLt!S3lP?4Cj) zSXS=&c^Mz(TA-4mP}4>Dc;*YaDNC$$;GS~~0;j26OFObI{(XSsK+j%|6_Wh(#T&TZ z85qwAO6HwZdKBaowdhCnxOiT;P|)|NC2^a^#}vcsn)c3)SwmaO52GQ0n5`fgG2`qs z0XlF(sTy8o=G#08jcCX)0Dswm$3q^dMBce`XFz>zA`=7hL+u4>NRD;b6L6SXTpS}O z6VX2fWfaERo{!jA`qdF2v6N25kh_IYKoC$IGy5X{3KLZnR^%LDujv%7e70K?CP9R7 zaCm+)h@iJ9w|P-FHVl}J7fBB}e#CABj}=cro8w(To#k(OJAE_hmn?By_~n{1Ld}kwrs)@I;_fuztc3&z zo8;#1;@Q1h7NA2dd3G%7b`lN+?kA+59|M*$X)LBlhwQgu?<-y_4CFPj_W9gu?HMIZ zk&-anlz{E_8!Kpnnd33Q!3og-9sUOCxgcc~B53%+Iz%+b9+5E;V(W{jR}qmthbOx4 z$!*DMeI)MGQ@)nGC6H<{>?=%FUH0(ay=X{LoWfj%_(R0rr4A({$)teER$wqkx=)l# zBDn4d**wj|^FX%4o*I=d5jc~11ez3XpKo(bwmZ}$fkmO&aULLn*y7QY<(wWua{Y^d zlV{YY-Me4XK~Jcv?hM1KRq7b-zL^;5z)*JTdl~027=A^@+UJx^OiTvAQJ3)eL1jKU z86JZhMyR1~AT_3Dd)bm0-PE;%Fl+4Xvo)HEp~(+jqcl>rV!`#nUgH}$J?0^~bdMin z_^lF3aUzH7mzI`lhYBmIqRxmGG@ZuOJxMh_dtL%bYutYVM&yl9#hst5SDq<4k8u~e zxcGT$ZpI3$FwXp&wuqR2(0}KfvyPROw9x}N(+$|1A9b+>?gRgUbO3|x6F);=+_*1v zme^B=*{qx{arjSf@Buk;3bFLeQ?7r9VDDT3y=SL!MMNcTXkby-vNlEr5^N2~#eV+u zzh^B+E)(I2G{X`DZ2Z`>E=9rH3!Z~muteW_d zx^a+cJAtLkM_jUb=dt76g4%Fs469?P=TqVH`ijq^FP3=5W+>Y>4CoX$#+aP4lD!&9 z^!VYmn1PUPQA0hF0{6roUNA3=o3&AP5{A=0R62LpxfhA`ydGOHH zm1Wx35^fN7I#KY$uU+rjM=0ZB0W%fE8y#30JM@dVj+>AJhnS^#GOQS}%@Z9A8CPgv ze~`d+ZkYN`nAo{vs&F7pJLm1^S*-TdA{d3K26%>3z>i>OgXlH;sKH|A> z{XIoa3#Ru^a1}LR!!0Vo^!r<{9|N_#5#w}E;vpw_$vXYHPHH?%%i^Q$P{ST^=mt?|LR*|QYSf96pJHH&JJZ8EuR|Td)v2htZY%A;lUe5CSQZA zJtl$kFUl*1P0oMGuq@w`Bl4p;T!O_}{I2uOG(9w*q>rl%+mo@s(?uG|xw`&XUkTX@ zLQ-plZZ;$h6)>MFFsLsrJ!gwx7jo+?9LDnzdYI6xC(ql+6=;8O|yeq6IJp)Y|1}3JahvE+7lMar^*U8veelbUl z79MQf1Kb`1SxtcJ%(zcrrbvOLu=wIIt$UQb5Eh*}E*0V3;UL`GiIlYCT>-dIp28SvUskqD&Hj0z0`i zsK#ri+%Ora!wEIJZla2K4b_?qF!}W|uzDU3c&0D;cn)-d9)LrHihl0=J`4c}pB{?w z$h)?qQpLu?gsB012;Aq1FQ#FZmc?#ho(a( z+vGNm*yFM-?k5$gFu~kPKMWA^;G@>ge;0XVzUd?K&-+X0S8wI+=-q_kupSLuHisR^ zNugyKDA2LDYbM_J=@SXcyl7=`*h!m*aGlL>u5{{DBm9rYcv4VF0!c+QB!PPn%P);c zfT_S^+rMubh7i<;wp_|8XLAIKa}GNp1S$>;(d5CStVLH#P%6|{;$>asYgVqTm=+}> zK>+HK!8wEJA8x%Gxuj&+9g9)QzrL((a0zf&3x-`u8;NiIT}dK1K#M6);?mbdEdB8u zJlNhxiR0QJgqo3yMgl)x?+M1L=17V#bA3Mii(DqqU$b15e*cPZ%1lg5Sa`{KvAEz) zFgJkus&GlQ*8K1lPI*`*w?eD<98$}$vmizHN0U9Yx8|Ki1!xYQ5NTpm!}qYhS9{NB zhl~%!tO7zJHo8Pe2?GpCSYjQm{cXhnO{mFG=F-yKfdj++Awe)Ez#d3NxQ&kI*)WMP z_v4;h%%goe{!weLD@i7P6a^4kn-LzIC~&S*(iv%)ex!ugd-g5w3vfR?zhBa3QgHr}HgRL5^CR6M;>Q6u zMHD$=RhD+7OLgArbd!Yos;P0s|CBlkJp4jRmX@cu@_8_HRai4PcaXQ8}9zQPA7YJ%NwwH7MDK z_s#~AhrSq5JHO+NOH1ZiGBqM0aHO63SVB>G#t5;CE(U1MwGf)7NHGpcp{9>^C7v~N z|2m%7AMybU>yhVlD<$~|)6Ho7Mk}0X1!d*MvKFMOT<&7vu)c^>_@g0 zx#pn%AmMBfsY=`+M~^D7PgafhVc&0?iV}S&`sS8w?N9q?bDuz}L(6G}-Z?N1U=E(R zPWCah`Jm1^e=GuJ9GvrBZKd{VYq58=wcqo;uq;Fs&oQNB|5~Ii^kwe9CER}N*_+Gk zK35*x@Ue)GDNxw7@YIK>@k)C z+En%*(4i;=LVkRPT=XBav!z{KhG|p4yI%r{lbI4iH{jyx3Zp$#=<$aFW^>^a=Yaw% zGbiUY2m>48k)%<}`eyi0lzAq7eeaPuql(_ulpX zv_1M1h~ zRvXZPd7BaUzHiDxqo9;Mt&4pDS4cL5RBrouG#f;{9R*%6bd`)=(i+nBbuUdcN5!_npV89~ ztnG&h`_;C|pZH4|+ z?VKkq%{^GM@5WnuV4W5KfShreaLFauK@sm2_!Nt!rlqk|BR`+#-uL&myb8}*3yYPY z-Q$iF7ZBlGphCo`1Rn7K5V0VKb#+zTW+llT~;JMy0Kms8XagFjU)&YGDm z+qW-gzg@)r`zxx~Gtlqu5ElBg+DJr1#KcH!ZHW9TQ?Ihdq`_r;jEW|GCM<^wf|rYh zbxtePX@7Uf*eUZ#L6zBCKk?ir?@rOS7-zq{3&J^Sh0@z;Cr+OH3$67PKzXkbxJD$1 zKRlM&khg9^fKNq=s_3;RW*2ax7MOms&5oQA@XTaJ7SRV12T02dTxdz+nW`c+@IX(n z4AJn@z`(6FhkhJUPealUZ9US5R0qBMu%RP;i#ljXaW<}QlfE%f$WnI?vcQu#ISosN zOT>^VpA{5DBX`FPflx0T5PpkFT-AoYqT4B&VuQu45Wb~!77gWVI9ahA;x=Txy)qma zHBoR|S_Zcnlr}sEo_r11w0`}1oc3)ZB2UX(koEtN4hK=tfkkrJ!Gi}+r|F17O^9V9 z#^^luBdF6DtZvVCoGhoJg55vj5g>Nhgtq=^^O8f`!Y-=d9Q>RHP{PBZtf=@JY1pa3 z?*J59N(s*WZ7Lh}LSrgo4+ zw*dy-J@y5aRt7i4OWfiYX0E}2h6qAjqG5tcWSJT|4Wl3e{{ex#wEL;^W&ABFx*MRU zdgiNcM-9J=D3*7~hN}dYs42wWUe6Ue^ueJ(&mWPS)N5U7@WJwzq82vaWa8kp?|A=y z6>&AUr;5?AV-lWZl-APHqB=hoDcIW5(v9XHk=v)+1=eWzwSSZmcTcE)bN_Ofo3<%+ z@=2#ZVrwf1mNwBCLb8(@Qsn%<`F;#wJoA>!ZJ4iLCH9LzT!_XM?J*HI6WtjYvqn)? zMrLJoZcdK$E|e$C)3Hq0DY|YG?Jo_WW@ zafi6w$#vYyhaXP-mu1VAeVd$YP$Bk$|9q);?hOtXk}$ge`Dn2T&!!c>IC*viu^Ab* z%lzP&V+;Di0hNu@C5!WGurL%eOx(o)JT)AVdx=Yy1vELNKSMX436QSk*m)Ru zb5N3(etSN!BRo*+k7=@EN^}-a%1>MA-?jv>hcxK22|k1Cf(@J7@agr;KcEcv7&lv{>oY78r+^EQG19ig5)rUW4CV$z1q?&tix}b&g&~M{zeHWP7B>bc zR5XethT#<)-tfrUejp!M+m&tA=ZL(&LK!0i!v(l|6Ym_zO+hE*En0KY@j2nJqw2Wc z_jUupl^*;732di^+h%yOpogbA_z-pfP~xWl)~Vqg+faFO;6t{6j+piI*wWISCRJ~C zSc#bz>};&G{mVf{ZByy+I(m9_;ko@HV!EL>qsFcqmCu@C%9H=gV1Hd#iP#4&OyWj>YItp`VvwAL|ZL(cJP}6erQRi!cy5nl((W zAOJO7nw9>H*8#CG9u9?Yq2X7rU4%V@2&mXQ3m2W2xMm+R&q^cL$bOms^Y7~$qJA+W z%j4%{lD|al!_Ni@mgmnW#44d%{pTyO$e4Ry>C2Zi#Rk4 z;D8y8-lO>$=g>z@KF9g-cifW_Q&L;v!iu@xCpi*V64_(L!~zvVr`3*sz@EVfl_VUv z82Uk=TeXQ2TZJasa%>+sro@tHWGbVhgfevWt1}w!sen#ulk+Bt9E|@=%*=)gSF6AZ z{mgDdA(`ZGDR(gx&!UPUV5JTt1r(m zI?t(h-QH@WWuN*XZqMY$PsSzx$*& zycbrjUhR9QzrUY6n2@q1jFqLlRN^S4y@~P|GV}4qZQEn&?0`$^Bo!iVL!(lkFW1Qi zEwg!Ja$`h3qSI;g*Vp&B7?yZR0cyBOJh3hGVRdxf7@|l}Vmp7^-E(f~Fy31!x-{l$ zJ6JM;MAiNEE4BeV4k7}en0W)77m}|&@7V+xO!M;d*;40GQLMX^!H!oVUI%FG%0SvC z(C2s?SYVIwLs!O@|0m)JLNJY+qo$&wR)y<95N3sr?U=L5MgF%;l8S5DX*0JkbG2Pt zC+k-Bu=cQRago%0d!)NYa?86^pFpo`%LI=x z#xvi>$B*F(e!^DN1uq2!2Ji=nurYCd$E=inq#p$g`%2Sg-bfzXK|0$Zg~ZH?9n&9R zQZni3r=?(a}Sv*bi6#b@_?!hdUti zN4yF1Y&(3g$Y^B(b6wbS5L|vDb1&W(NgTu(_2R|L(7wdLWaoyhjL=gVgtQzv?_OSq z0Q=nw55J88>&~4!yAiEVC@X6{>q6fh02kzYofyx2!y;TPO5-bEDCpWiNt+dulk$|W$0vP1p=!^v?U3*QHB6x&!Hz7G5HELVrr*FQ?N%EJJdjybbuZokksS(+*K$P6 zRai!EX>C2a{oaadJg()q5imh85#EUDKHjz;cG0))-MbbuIaSzbi94yH3H=6Jz9;i26c^kEIt;k3qR(2}()G5UZal1M%zA86c&5(e~69 z-_W~xlhGjT#7-zN3z4}~>34kePZ(v$q%+QYed_Msdgcp8rY_?>D-mFHuJ~&hTU+13 zAtnL)8DuPh>t92G^ck3k0(IDBa$qe^zzw+Inip|}sc0~;PzVrw9`n0s5R@Fw+*Ad% zM%dGbC^$994<>vykp5Rv-x6gLz28#H;mv&m=`4@t4DO4gPfnknh%p zqJdR$$Kq)VFEcNuRjX(PMFTBg-m{%?Ule-VI2`>+F!x<+>qazfS_ifu`bz}2Qb_HC zTb{#1;R@ba44!r3siwfJhupUuJCbncG{%w@@&5wK>xV|pJT4#37m7Qaa8Av!qO=N> z1JnyX>H9%wg#qN}Q!ZAhxB%ku@(MXZ!|;N$Gh0W*6Sy831G$oUl@OAonZ^!wwsA=4Uh5toMz^%lmEhW@pR3q^rZP0%Np7sXqeXgou7aRcnkmS)K%Uw7K>1#xj zGOVPqH2v;2`T74aG{NYo1d2@5#+WrFx9;9$D>A^M3<6Z;itEDeZf@rQxL=vrZ_}n8 zb2X%4Faa!cEU_&miuY(AQIi>C?nF#P^d^9=-yp(<_d3ZK;oJG|xRK|8fw>L*Q?~r) z503HAn#Ype4$D}4?&*nhJh*F@3?&yC>}C3WLh+wc9SZmlgo48vX8Uq3wp{Yq^C;m( zgPw}%<*GM*`@(j<)Sfw8)7FyZT$Pt-{mGltZZTs2e2b!ogah1WIKq4D29ai(NPMowV|6aG;)E z^j5yAnJJckT**r?d)z+YVYtt=hA@|3ymaET1#fPOS?#jYo}sHw9?;2M%HGoWvM55A zj=s^I-_}yri`Ad2-J5C*-7dK^3#8t?04<2g0NeoBGwh&4j|mh3IS{?pYVZjNtj2)! z&5cVTe}VgOVRAs_;XzkQ)iDjJlsF82o1T6Pytg5}9>f%qz8nufcw&2Dh=PFdS=`kD z%#H?LenQ5&J(?gQ3Hr+bI~WtcQJUtg+}tuLEew9VRlINI(c-EFEgDJGJcZ zAGLUjI!k33NR2=0;@in2$5>PC&(;E6woF^IdbKH_EEVx7oZr$v_tEYPn=+6JTQw5d ztsA>I-1ri{gtvVVpaHUcjGI6jkr)SFKo$nCe8D;RpZ=}C5b2bARqi2&zEvpq zgg~VLE*1@#TS!>=7?LNEpvSO;`ikTTJqYjI+*~7Wtce5}ji5wFwXzuuiuIe7<>l8F z*>3%2B#TkOX-tz3x=kjQpFtrCGPozP52vG}OVrNU4b9tcpWiS(lyqhygIUWq*u@Jx0(mwBHBiU0H}iz1@Go45sP)G9vjj*aV&9YSNMb9 z!HSHbR+x7NAC1B8iQ0_wB@OU7J`M)H(Z;7ENjzAQfof-f82Tiv~ zhbP^->{Xm8*yF6{=ksGGhJEAPSP9B!V=?_%3(IW>1o^mM7GK-Yey7lP`0m(evv&RC ze|5>(zBodQXOfQa4dts?Hnd-@^%dQ`b#BSCHTutV%A3>x$=Fek*{_NiC`rZkKChJ84}sr9 z?Io@ssaSOwVMh)F_;CdUd0DsZ^Dq@W;Lvv`ksV`n(VgpVC$b~wN&^(mLQkICbo0gy zpSCE3#SDy4S1g>g#p4E$?sTsN!j%khh(`|IZj6SprNDvf1$GEjibKutu3iJpVcGKj zB0T!uM@mv`1SRN(Jmq0{*AoA;((izCjG-Z7*D1DdpEO*$?zuue|H?4JjV~calsgsZ zF@efQ{C2+0%pj5q0FV6qp%aZ(MaVs@N!60{Lk=}>0kyNQxD!;lFp+>nAKh} z#!O!2$3D(~V(8z0NTNp3`zVw}!llBrk{Rt@d-ZFVFVmT=iMTV`<*{2NS=Ddlg7jWVqlb0kH`c9WSHCEI zmDl!1!*JAk?VJhw3!grndRXMXl55o9ZSncL>Xfz4ET_OBHvVIuo*YW9T{dAidc^B; z>TzWQt*i?#bG`+ewV)cedN?*J~#T_F1d)+Kn$u_UZAF|lfJ?c1j&%`u+>9E-@K z1G*W|K|pi)b*4DO23FXZQmErWb>xhX1cZuK^Su;W2y$wdJ+ zP55Rvp3jy+Ecf_zh(`nG+E|(DttW^_l9zGK8a9^XQ6S#P$d++9sm~KRDmQa--bI@p zgDQ-D5H_0%cfq)0Fc_z40xNZAfC}Zg<01Q zn3iM2B&b69{KuyHO*P)79MsDyosi?#z;tGB8geo#>eO!EJuhA&n=3v=^4theRdqwT zUZ@NuBg6A6va_ozD*Aog#XW{E)PIN)m5nd9|D8GU=gNc+A5NnghS??e!+jubAkXs^ zE6Z=c$LwwweBb>dhSaw(ZskrrYh>gNs!}vAsKPKRsmzld>*EB_b)qH&9!Jbb{_l%- zf?_`WP8Q2wRc((A{MszjY_vbp?{iCG3p6pa_FU{w-(#i88gl>Sc)i;qWXg1qOn+DYv>Wcj~95HH4(Ky}g` zzfy2#$uK;T{Y~U0Wz*Ln-^rwnL9ibfhiIK5xJt+8_3gjBUF|ms5HY?CrQ8MB1D0l? zmJ5DH)FfG6aQ{MMaLeCc@M2ZA3A!0#82jowFpA%po2%=qlCHwSLgJaJvyw3{H&=sw zgZ?^_qFlOtqocQh(Lw_pUONYsdlE@vhKs5i8(9eLzy*$gbwHCZeL_{K=K2C-8KmO1 zAe_HR|DPKOW1fD{py1Md3s2^a8z?dbjvb?pkqH8Z?5i+WhoX{qVWA{(F+$TAgO^np zCbxNWP=$#?bDmW*0l(pQxe5E+beO}ztSJ`sAGm?-CzUEj>D*~_G;q)OFDbe9cXxYZ z9H`x8^WRuW2&3#zTW{qOFR73caZdX~D} z3-U>3^?4nc=)p5;f|mM1-tTG9yY9G9sz$geX!WS;_7;LUxKuOJ=qd*&{+pLZl?C zK_m(piQntp={(Q#{rTgZ^PJ~|&wangb-mWLt*9s;Z5%I7X7zTEiw}cJHfI4UpGJk* zX1;*Xa^`dT6{kecnsXEC$rd9cT0g}B#1sVDWTznb|d4ldwiyjgbZJ0|M~MLnc+sH zy^c*dO327`?Rdo_j$L3U36PIMO!mBH{Urg_OVQDOD8Vy+Z#|1^InQJK#G5z5^Cqq! z$-pEL8itsZpLlU{b6Y_JL7JS##tSQFq-ABrosRUzM~wn>p~%pyg4b8(VNp&3P&<1j zAk7TWh~yO@vk+0E|(d3!=b6u%o}+&3s@7YF`s>GUxXV4O%PT|L^PlbF0vZ znH8~+`$oPVNHwO!;Fdh(6^~R*Q6BwIidS$7g_Y0`0}PaNp+1Lq4nL>ENks}lC@E&o zkYUCDex;d#G~V3y$SG6BA@lMJdC{XhLq%ZE|RJGGUH zdE45`ikdhmDrzN&t^7wX31oEN`uQ48F0P@|FIy8K-AYu6du~^i`{uq4e$iNepElIl zLbktAxJM(7970uQSGCzO0F+@SqYxP-9GEBLhYM8W9Nw3tw3w%TP5)qE*dxvoy%e$R zJKe`t5`1C}(x#2JjD@NY$u5+KUPSIv}Pu{LgO8_cO*K5*aw z`F4a}!d*&Odq}dhIv|c-48pJqEU+#tC@C%&0}_Bf*AivYGzKn={rI#m&;?^5`!Ib4 z%M{=DU}mN0m7ky;ltp5}A0#?w-@QvI_lUDaU%eWH+5$r`&AwDBQNJfSpysq&cg|=V z>=OUC;`noOcs|D|Ov*s?${KcFP{Ht^959rd|7qtfD~_oFBrpJXEn|`@!eB_?x|t8%ejZ={Ne;uckD|-AwU`zl=2rt zLUwCwFDLNel`8=dRsf=`ZfIacA(^I=KuhpUfT~I7e^axk-aZh5=2ODB0~Bm(YU$ko!yiY!NFH>02Fzogm=ppHrL3(p|mO`FozmT6l> zM#vU)NXNuswy%_o%oAXWvgU5kh>(G$S}vduB8lkStP~g%CfJvjWTzj88X)mCHy2kw zFsH;{TV!O^@NZfQ9W2ldeZYq!j{pumbmm!@D1wHFoG>_Z(UKY#1K%hh)5^0b3`+yu zO7tHXtAGImZ|mxo0`)~&q8f+^9T+AGs7m-p0zoT$bl#DelthLbq3jVvYfE#~&W;Hq zLfzfns{kZ^Dq#)zxPJuX_Y&aWI75{6^jPr@pg^HRY2B7#$b|E(eek6|_*PRGJf3`| z-aZ7*-oq3LJ!TTn$3$L@l*{mE?#7ff^D=ioASRrEi6L4dzY#Vj6dI}5D#&kwndx|J z8-#>*Z@dDL*CGJ&>Yo~fyt=jZ$)ALG3?$Q!{YtX7Z94AC!6i6d#y&nFQ zT(`;;B>C-%j_RhkcfOPVH#wPq*RFNsbL3*^l*!wzfDOoq7(kjLMp+j@2E-1YJY_xq zs{){BHGV7(GOiuo&e9)!^H=VKPPQ->=r~K@R3#`Tz3%(pOa0zKs(ZVDHEs3Szd92zsKN_&${_?dY*E z#r+CN2VXTkrLKJX(E6d$NoF_cq+$u~n(`i9(Tyg21-%Vl5X1 zIj@)^MVo`rA0QVr50QnIHR8~uMFV~(s{tq{nkZ2j*y|z*XobTKfXV6&m#NB?wLv0w z3W$f_c<@d*;1dG*n)HxcZ0tMry=7K0#SrzdS~ggo-EenS^N&5yIxXx1G*hN+uP$z6 zvSmTLx8;2QgLPgzhDg*zJIn)Cp}T!*58y2LH`m%~5)vQ(HTZ-iBijxvHaI|9wMG`C zu@_4;kZV%u@$&lSa<{miB667aFo|W0+M&EX6a+x z>Yq0=AHo>OnBGNtXvHL366hREAD&=_++C7J8Ct(;4-{Naz;ZDi`GvHP-k~9r!A=x< zOIAibC@j=Kfg1CZjGzY#Ziy!(N6qiVfxzA*yKP(0wQCdysrCRiKW=T+v$5Y#NCTrR zV?V-vdpCB!c)^T6SBFlifLHI}IFh2q#wTPF;{0JET0AvB;D zv?7s5;faJb!pGr{QFa8WA+Q);4Wk{_y(OA>ni!>To*17-VXXFp<^ojT5FW4aAAk7Z z0YS#dcY;`m{Ftxp&CM*hF9}UUu!6SCLkEwo%pkugPR9UrB~NPE&sVfyEIjF?L2Yg! zf*Zb35n4Y=DC+G4D5K!AZevG56!SBvl{d;0edx!gMM&U`O% zLB;*6Yw{;e*VkbhwI+@Q+2P@3VjDECT)Gq+9@DklFK(&()mT~=EB)iooadSCB=+nJ zmM@CsNz#+7I1sU~O~FP3`;-LEUV!^4>odp|Cr~S(HX)B~s{$-S-jUpn9U)Xsc9_ly z^yvV%t6sfYjn~)Osfe2KI$~R14_#Y=VmZ+cSIV_gozDX=4VelLsjcp@Yk)udBBS+z zg9kf~ZvPal)2wSlaCe`=ySmQBJXl|<*n1Q2F>i}}m8*iPBZLp0DERI97n7*0`_VDI zdP?!)rXYBG?;8?A86*w0xY1Z%DCE{5jMj=!L}BQ7l;r?cO~%s%53Esf)`l_|tT0_U z?Wrd`&IIc}_8WN};oRF-NJ(YvibqWtjPx-ONks5q4Ah*+lv_J5LoHhmN%MW2L6&@y zo*1Wff_iZy5KIlBYylP{Lm2|vYVbA!u_BbBC=NAn5alLbb0BPuA*jP;7JB<;e0&sC zK7Ek085cPUpjQaMc~R5VRra(CXMymX;&d+LhJwdl;Rs`0&TF23Y85EI3#hy-hZ~Md zn^kzP#gSQurc{c8nSKtR5Y(^mxsi9!jI}^)6==Z$@E9SroM;h(z#dzo!#MRSHKO$f z{R*Bcz}H|^=wdy|Kq3PJHVl102}*w&Zrhal0e}buQSB!*WgQ+o;F2KNV90oG@+?rm z5U5G}mRw%*<9JHtH{`-4ZvsBz#K?2#Q6y~uIPDtz*T*36J{y6S7O4b8)cUwSADjpd zFZ8!zcoTi4qZI)t3&>}~oYI3f_W!f)QRKO)LuB?>SZ9e4B-AJdrACmql9~`DPNw&0 zJB6j$hhgN971g|ZXF5`D5r+9wIN_GWFGw6jkB=;3hClkC|7_Zc1A5+vgv!TXf8}5h z+#)=|cm3vd%U>TC67~qaxNVkcV`#rl>aNG3xlS*6!A&D-gZCGXnGfhrr};@{bPBK7 z%~C_N)cD)#i{teC^5)eK`Bl+PHsmiDJgvrRO#pEhzC7-I<^{ zAA9rKDZYcjoztRUj^&MOGe@*M=`MKVk-Q5TW{^ZFW68*HJ)L_5@nz!;Stb-IHMqQW zb#(YM?mW0TDw~dz;ScvR)PYfMC{^T_#Ywz4ZEvsM@sw(8Y*XHpvd^h+V=a;A$rg(E?rDdCLFHpRrmu~PWHw=Myi6{jy z9$sJG0a%L&y>#UWHZr&r%(=~P^&nJNZmvVf8BHI^Sx5npl_eJFg3y5o5>@<$QvO^B z3sMpeW*q2@137bo&3L8zCpLOwKXBWPBq_ML}XC?10H;e z-WPE@5_K5qu?$xnKQE3fT5>1hao`r3XRWM&-=BsI@+4RkaKG4JlrkBj`Jb;=$@S2V zro4*d=5YEw-{YImPop2=x7d!39Mke?z=4~qI>oeo7855xCJzOWc(|dBU zWOBNDY-~{0+-aJnzKbs15mi4&*esVz*Jl`~^!vYWD4*UGJ#3g3d8eS0A=0oQ>taTZ z{r3<%Q|jqQX)}*ifmR0{db`Foz27DC{j58pGxIx7T3TaIML&14#nx?G{PQmKe4B+; zK9n$&D4*ot5g9h>5so7o*97V?L}*#i^0ofNZJeJ2!8@5jkBU3uwRjjt_8vWPVxx#y z($1xG5NTaB0W+4Ga3Ej5a_9LbN+w~$ZiQJ4FiIU=Bl8V)%j_Aye=5`lC^bs@fWgB5 z=oy`dF?&|HQ_+#oU_oq}E($3x-vyRG6jyDv*)uiw(Z7$*wY;E9A68#f1qm=bPO` zYvJaVA&fT;KwDS7bc4`?O264~pQP!jD+Iq)^!TwDuHq+uYOVJ0$jG|8y8~o+ult}9 z@}Bv0%~mPZ6Oepkyb>RFDGQGUj$!a$LaFNidEJ776#m(BAI?y6Spw);haw4%m1XcZ zEJsEkL?@5Y5P=y1bqJas6!KzH`4z0>o|lApggg{r22c>F5+P7upC8W6B(#@MfgvJ) z3HlV$gI>Pu4^ra;aB~7@HGC?U`S&y<^@o~)yi`i;;%tTclRewnjz5U}<;dXqXejGu zQ2x_r8ML>u3@VQ)3anqY^<_?dw8kN}CZ_@?qx7o@egb7Y!!^(I6ls({S-$!OOxN=ofqEy>u1(fUUs}3(9j*oS?CnxgEjpX3;hs42>a4GpO_k2yUDLV| z$j0fOighRuapeh1D?(Poqv*{EVThRY2_Vs^D|&I(mz*l-LcjnQo`#IxK1dM}sbAza zdWYJ>8)b@%mE=A|Lhir@6Vh(5ix?^(>i)0?D;zd6Gck(_v$IMlD{64{8Qib~1S7&b z{tL=@LZU*`H&_~Li9x>$HE@*4tht;0beR7K-i@7o6uh(im=1}mUsU=Lw3C6`Q?)j* zx_f$7*VZnvv7u~8pA7Oc?-x-IBgu%7F3#TGzHelN8T0Ijd>7h0)?0-rIlN(~NyALn zgkh-jaPucr|6a$#(_G|a^`^5^5c(qk5B^jknOyqcuju=5e~_@Q}`n2I$ou7-w;yv@sC+$r#7gaD#>$&ZZ6+}q?be<}|iT&EZ z(}yE_Z)LoWZOgDf#sBzYP{cwhkosZAS-(2j$_BNIp(q%}S*<<&&R+V`F2}l-pWaekRy}yGwk% zZv!i{t6<|(&8{drOVxYNMb!laQ}!Q-9DB)Seb~t8YK7@PghHZo4!{MXd|tYe*X+0$ zjwfpFdvI?Fu%|?nA1FOi9+|d{X8ST8)I!0Gve2B9Zg8 z2tSz~;hzhiO`ysng(ni`1jk_om4bsALZq-E;-@9bH%hJ>_&cF*fQa}P7w>>q(-Bm} z>F%<%B>V8!_p=xYYhhvGjqoLR*bI6FE_`bW`3);zGoH?7bd!T5B zRhOAudZ;~*;zi?IW3;jrh*vphwZY;}>T6G>#g-Tklm!0cw{O|pa)baIJzZ||B>rLv zv|<`~3>2G-JI+ALi*c3yR_M;Fi4k#d7&v^uAk<9J^)%?l?!*5?D9h$aG^rxXFJtT~ zKSp47sL*qqu(s~QA0c*;@4#i5a@G^e05_$#gs|z?(sM6~KBwCdT4Q`D;uh2D^;YZ7 z8J4`cZjz`vc|wlIMc1*brR%^*=YEm4>Z65Id3}9SDdRU3ijJLsvLbf4d#}&(+|bF; zculT{i17N_U2fWAe=%`b=R|M3BMq!QXjj5=VgXE`rxireIsCZTI`EBex4%C{%j~M> ziLUXYiDaynY+J~E)Hu4s3*5%L7equ88b5vairn2t&SZcIOyqMTa_K&x{n*c59v;U4 z7MOg~Dunrd?(+g}VD=zs$isL^LT64V?btz<%qv&)6YOy2so}7ag3w9uads|AJUA;n zj(UxqTDk`wh8!LKtu(k=`tW2lpiv9kdFD14MzqodP&GJ+5|ObUNg|OrI5|pA06oJ3 zgyvLGOl&!z524PNPoFXXW37QfXbD{r$W12v2k7KkNg)8u;RfSP^719k?|`esnG-GaKTH# z=!*Q5q^CDsXdPR4x=>{@#Q<`fx z8tAP$z%G(-K(=s!${c)A$euOQt9zxdB3pF3f!qn}(-Ij!lb6O>#BmaC@j z4eQ$nJ7ewUZ}W&|Y!ZoskjIA@cDBhib$?y$Ip+T0z)^LPA*GJy7Q2~ z1E~6fc1gt6hh$&KucGR7KD*t-jZ$ISEcZv9hZ`X}XAVh0Y49rKjU!;k7w(p-H`DKT zh3hSMT><=1-@E7&wo}X9-E@!hu*p<6UWs+DT#!GfJ*}gSxGrymIQUxum1L}EYu7g< zP+1iy2?sR32Ml}!;MatIHSj3^I2A|TxM2xN6JtGO+%oS?R*|leJYCMGa~4oXk^ioG zKvw2$CMH}Hq9X7Eha@B4&@3#h{V)&sqmQ^L?{Zp(iOrLwrh)g=-;R`efx*Y%IW!)dMKr|sby&zM9Vo?9?&soI5#hO_xnZ!UQi+6; zIIbYtZf+`CdbxF~pmun8-kBji&b3_gUf-3bByX<0IaradH%QlU^^$N=-n%YMv#NXP z2~z&uzgU?^GMFOW&YlT{az@Kw-1hR={#OX6ar>qQ*;&OqVHeWOm?1msgX=(JT++nn z-)JUlY^L_i{w zuMI&sd67VxGod2^u9Pg)_Dm)v-h(BZqBU`tD?QFb#8FFBxhP}fB+`{Ub&g@9Ey+bf zq^f}ux_cwJH3%e*ty$f(LJlxVJw&%oquslp#9`xdadQifpduoUt~;``?&rB&AjM#( z*L*F2JOZFJOIFes^LL1~+#);+IM2VM=T7`TB4;u>+#L$@gx=#JYKdcZ2L^p~*PJEP zIjCv=4I36?ia6sy`3MoP)RXjU$1Fe}j7lpVs7eToMYFa#^{Wwx8NeQ$LAUVV7r_-i z@t!93z#Z3JTkLz~8h_iXN9R5Hcnx((P;q(@%ku|KZy(T_$amDIJW&9o;2c*KdO1%v z?}FMi7Q#kqn^MmMK4eHQ%p9N|zkgK+8|T1rhHob7 z^a2j%0#A<-9CVEJU=GDI9!WztSA}h{ij~zL*p7-7v`PfDgsnXU+X8@)+1L#IkzK)# zvlBL_ahXD7si~zUB69+)38LGG!h~+=a!SWt^Y%7R+!E_Ct3~IdCz3>~Wr0I$=;*LO zL=}MRO2rDy)G7S_MDT}OO=RZ=-9aBG5E!`TS-81Hi$23uL2Lz(T}I*tsOstA!^bd3+G%-=^tc?-&M$-5l);7WJc zAob*W$^4*s0sHH2rSK~ug=2wU95RnGLl`%{cE58Q6lCKZb-GJ4at{-|Tg1ekP#l>8 z#3@k#Ip=pIpCTR}IEIA}`gk|*g_a{;bXBs%{FD$VM zfF^g43kRNYex^HD5^dcN5unftw<+xMf)#ICJW8bU~?mp1Ua>XX?g9n4P zH_jh@v7ohoKYM|qkotF*U7d1WBAYhR1Id4aTQKG)nIcVEBk}`qOZ4uvR|>{7?O=*H zLgB9J`{02l6Htn(u`y>VC_j`Yk3BjE4O^^oQHqoH%K2#@dPvgq1O{(HFW(CYvB>?q z;Q8r3dejrkn)D|smhoem@gD%GJBA=0!g65sV`6cXpi2)H^@YO9ZfF8> zDH-kA0vzQ;&V&l|eqmufB9(CQ=Igm~{$J^DEJ7#`{0AT)FoD5Y97nJ%4V6Z?-AMFG zf>22$2)q+3-LlsQ&HbSi%*6r zWmG-2pPr-S(PJ;cr9qOropZ(_##EXVqmBzdT!GVk8RTS%!$fKdq{(n5$QkD`F-k## z1D7GGFppVTC2jFlZokpFF;@q|&LD@Je&9(NA~$I$l!UJC0@c{&8u)uj9A;UN5?y_Q&Lvli*w8DkXw`m|;LZtWv{vTr zeuX?tpe`NSTOEoKX_hu=WMl*$xJ_p}&g^Rc`~;Y85-UeR5v+`*+yBq&y4WBJ(Z(G7 z6~LQ`G!l~y!cmoeDHYdKKFpbgX1CKdB0S&4Jp1~X3G^gXb{o6%NT)0j!CFn`&+w=K z8%*mHC!)`T)ZOp7naG(ml60srT#MS&#SnRrpV7XA0%rfW3rI-bn;`E$mA z0PCvQjozu3LfbQsY@a*lyfX6r&Z*Cx&-0JZIVrNyd3z1zJ#6hu>a=&7efC17Bk}SF z{$QS^&1de~uP@~?{vf+1KHefy?C_bq@r45+>JZCkg--{BZ7cVA<+&I6G|L{IeEC{? ztDp^~5VJ#0j+2D$4e>hcJ8+;5;wCJvrD$_+f6I0t(v*SW#W(pf_(_y> z5aPl6I{2E(zS;CM_StdUh*);)rlA>^+F*;$ckeQfbTl;`=(F;}Jys7+ur0%sXr;XL ze$FG-p&IihMminzf4X}^nFF;I1GpfAEaO$UB#>xaV?>e!&*8!`$U{unn6R=H+cZTXP17Fk}P*a)oeCKs2fb zFFfKF7}l>}56M9vAW*^wL4**RrTeo2bQsh#Wbkl3pjXGQZ=|4OTGF%IzUa8}FC-H$Hy@i6Ju%F3zo?|6<@1U*;cC5R>HCwiO=l1`HUJg$HLTBStq zJVK;fb9rLW}=N^S66#=Ov~`Mj*iwW^cmyyEjxk<-HZp48Q)0$ysbw_Fw2 zqxE`CtNFlGaNnle`u8554V@Y;`Fz9k+pqbqQT=-X0~6kNcJ7Z`#NXSy(469Addki= zeY4@S=I(@5YmRh>Ot)P)Sf5iiM_+SLqJFHiC!r$HcENJsw9%5xBN~<;Q)Hh$eJ0{a zor#p=xMrc`tMOJ|vpAziX0(xf|P#;RtudRux;hnI~(i7)mm4EBv|pj~+?<%q@j^qAd?+aRLx1t#`wy()G5Io6FPF(EfBHuYSPyY2L461Uhmw>+Umjf|Atn~SKkonNQ#1u|;nt$stO&hnr~fP^ zA%QSLuJ!)_ez=E3*nxzE1F(xc83L)Cb;# zS95*toRZY)=ed5VI&=Ycg)iOa+#3zgD$X%cv%D6*7be_9UNkp8*!W2H_o}P%b%9OH z)J&n)Ll(xeEoN(wprxgiC}${ZKwPY-0WTqq_44ckXeu97Gdt|Nf}(7*SrUE|EloXX zKyjP%=fOg`&-_Ta-0DqWDu{JN3~Jzk*lVMCn^=_`BXIs%LNcXAY5pab3`#=O1W%n3 zUbvHj9$BxRvE*$la8e;&4#q&Dnv%OF#^)>`+ZY6+HT&P-q=>$CD=WX8oF=k0*O=q11xCFX9+*855yw1Ty9z3( z@qw`I>uPCoqT;)<*2AJO?kzEr2YJDB*E1%qR^U~l-TP82Dinbr<^hWCs-*bPmIUYs z&m39|>%+KrH#A1+YZ1wm8spO6+Pw+dli>JxJ`8O0gNpVsxK-N-l)R$10{&i;|NO1O zzJRiAuP*Z#Z(A2oVTt>-8Tt8c%l|e2f{A(%$;|@tiz>0Y6b@FTF||?6z&3C5)@P?1 zr_Rqr2KJQG-rL)gFf(z7bE@(!gZ$(s)*jK({;}3X2WClwZ4y&GCp{!DDDqL<Fqop6Qnw8I8|JKN7>S{j5&D#7Ww?_VVT%hf}PqfA8OxYdq^x;%}~GV7Tpl{43|GCEAM(}vz4yED|+*O!)$ zLhTLHeG9l!yef;nolp;gtMq%4hdoP7&wAWj>+9;Y?88OVDW_Zz2TzJ|mcgc}^sO5~xA>CpM2fh`U3B3+aclVDoUBC(Z%g`S_Z$E3=YPDBO%m2!i)e;Cz z?Ja?F9-oSfwZ3xh4pP0@(agrkO<{$Cki9xxKG%ijgRCFzJ39~ePvcVEV)=w(0GO?n zjYGo^%&^wFL$zLq|9iRMpC(3TfUs>r7vx%hH}?`iawy`frV9UaScDD|^?SqQ@njQ1 zeq#-Ltcba&C0^kf-MDjj+wM%y8E)s$TFWkXZ+gE?Q|k~-1ISw=0GC&(iqBM8f`+C%eq^;I(bk)>`0M3@{x4Wuk5Un0v;!RtVf8)8LNgP_|<-D`<;3U^F3a)U^yf*Dc( z`?;)d<<8zhUrV*+;b#fLG=yb{|B6VqkR)K8BmUCk9AH0EKmfl5LR5#&_dXDBA|)nM z#Y&o9zRZ2<yP*t#)n_prX6b8@TPpcVil*r77gp??O-^5- zb#ouz^MhH5$#dmnXciH^2axUoNnh^=#+SjZ^S^LP?TMkFmNCxrD;3BZ<8U9)AaPg-u1v| zHaSVqAQp%Y5VQttL-(COX%XxISD$g=nRTg@b{s8+S)zYFhP*62hc<}0!hlLM<8UX+ zyOeG6N-%r2@!)@7mH%79{@ox3Y|>EmYNOF=UJxds(Yk;y;J%plQ;*d%>g! z2SH4ZfRYc*90&^t#ZVMtG!r(Z9%Yq$U|ID{oT@iUq@7bdCm=t)vTlU)8OIaas^=fK z8|PDW{*mRKQz^R>P}CyrMWF|-(ih5sZ4{@hr6H6-WG%x7IzT!2z1DUttm`ofKklSBJ?c8-q(y+yg<8HHH3X_g?v8C z@irK|%>w(M8KOuhN?#BoS4;Omc>wiy5d54~@F9Ma2NSQ;FqMS`%h)k}BRz3*r3mFZ z+Px0e3Z0@Re6s)?UjjfPNVxFMHz#4dBh@s)Ux9Dq?HZY^_W5V4CAJ=gHjhLJJ;_5o zbrcM?bjMInW#t3QMKlDtb`^u*1pu4Q(D^_NzZKK_aFPb$ChTaAQ^&e*+_=HOz<{(A zDz|ON!rb^ufFoIB<`1}bx^KZ9P6+#b7+a^+(2-xX1*(9VNIb6<0GngvC)2()uOV1%=nnZ+(TkyAQU;tMU@hKyBa6%)B{p z9pB)BiU1C)@fVogNY08D2r6M{}-9=8DlWc;@hO z?I6uEYGl#hT>J4Vi39^`F^3S%4b|v8w}1^sz)?ShVMCE>G-uDA{c%K9UCqD*H3xgh z;kB!89l1~cOHk#zhMMq!o{Ee4S>Zcf&K8_)?tZ4ae_8wU?)zf2H=<~1Hk_;orlIAu z{gN&o6`jf}-?>di@47GmttduIy`X-0WDZTqm!z=cJY!Wk85gFZMR-bBraaW z@E=2Ll%u%yTdWWymzpaCmxK;{K7=w<{fw5`CD8fEi(Y1o;n=OVA}ag#F=5-Q;4|Qa)1CHLIg1v;;))dw z5e9!986oQVkYOAWQK-G1mmLHKnG$JZXP1P=3d zrAmW>mI9Xu#F5d5!(IAh%r#@NIs~#h!dx8pc_rr-8t~crP9lF+*uQ_7eT}Vh6c;xU zZ-Q8-E+7o23@GYLujkN)UG;p}hrExwcsJ6c7%L?TyS-Webr5ApwR4LYDr^E7iapL+ zkIj2~V0PcSb?cx&A!8wzbUXgV46y}1CZ(h-5f>LH{ZeA?@|)87(KZ*=20QcDm29&Q zzSU(`cK)XC;DFRLHDxWP-N2c!S9TNU(AqSG)XudwUosV{54~t?)ZXk0_=?2ekoAM9 zc^-97ETwSL645I0t#x*GO3Pa3m=t7G7n6)m%tXD5o5s1reR?dRi}{k0o{|1%09Pam z3}wre(mDXh$L#HYe{q3tg9x4;Qph8gvw%|ru@;U%b1$k11`cno!OeUh(ZD1%02ex} zxiF?ME?E77+=@6?5QZo^dCe)b0re0>)>`R?mobNFH96m>2R`H0CFylAg!_WL;g~HT zXCQEHLg&swU%)u>TNkV8&Ba8PS_(aR92_Pj_=6-{ZJxwOB#<6Lg7}EQ4;)x9s*$_+ z*h}Wua>Mb9Q@9tdDWc1Uiy#0sNXqfQuUBN`tgEXNP!xnx_MsehZYRly7+jM0@wl&! z@DmWMQpi_J=`fPT`AqCo6zMLrOQ8+ASZhgS=><7uJ9q9RkP=Y5K(4J20GSNEn8mNS z3i5Ll8YJ)V+b){Bpo8%#B^;Yj*AY!haZ~Zo(2yn29+cZg(<^=gpH?G{VI)Qz^C6q7 z3ZtXgI+K7BkTkfqDNdq;q{xwLFD)(#y%{)sy#y``gf!Kl!b!RF{2bDXK+-p3^!!er zS%Y*h(M0g$>b58L|E)m&`P+slXiSMqW+sy3>}@mXKaN>j3yt%lpM!nys@aTY!SdzF z7NYNQYo{EckWu{KFKXyv<`!)m5cG(n@LWSONSy=dsu+8!#0J}e|LgBnla1) zWJ0jN|FY*4h625*2K%-JO`AAl1r1$I=2cReu1a3s$`vMtKGl7@wsHxd6CCpWu+c>zeMdauBiUR`|34&EWv(2=^+XMDU5m|j;A*7=~Tp$~|d&yQLiJ5BO+{TPzQ*_L~ z5)!2k5G!zEK!Dlykgc$m;c}3IeOP5ce#eeu5J7P&Qr<<4N=)&Xvbl_y4B;VcaQ*h~ zALl51M%sSk7}~>#Bd8G(pg8V?$O6;5cOpK9`B}5Cn%X{Jcdf3(-ymi4Smfo{uF zF7dBJNe7uJN#nt_&yOewi84PvSWU`p-jp(B&jTA9^O;+!+7|V^D|!4Pu|(zVzDyJw z{Qz~f(kDN^;4YT%zlQc^DK4yf)L3j8SD;3MMjt319Rx@Ig@xP0!^4xCULv20hz5Xn z&VfBIav6wJ`87N^D4a4=kA7)iDnY%A;AeIBj{G++kgo*bY#p32i zzqLdSw=wCl1Ft4RS|lwQeNlwUz-uwxwEdWPVXTe4g_g9 z7}c<4^3YnMWtQsM!Rn{%i{eqMv43EIqIYwf@~+1v$@qS19~K~Sy*hqr6@npz9TwU6 zI`9;|2%#cKDV&APZEa%rjds5bUdqf^nQ#ietY%ajP{Z+&;4U0DKV(m>VOUJ!8wo9r zF_#dDCL*avt2D1~09(cno)Q@Ij-di7@}7~Vfc^itP1n)V;+K@P9+C0nj7B{M*5py) zdE6~dn2e0lyC0G{JfbSpvnZUR9f&*|W+HzqifY`Q5KW10fh$E9b)({dO@{bENKpq#YwtV;@j$=$a(f5%BG{bWc+kBcJ`fGp;PCMC7#G6$ zcI5Iwl5-I>#|In)7b7BK-Cdf=MS%(d-a>I~u%-A#<9;Ii?g^q*0!dMi1|H9*8l;O* zMP))}W*A}w?}9(WVp2m!q3)xsi7Bngi3y7IWhk3yfh7>28g0mTV4XY1^YimbEecA6 z)KKc4N>94Fct9*)-{Gji@-MCz_lw@kaSmVI ztT&Q8!KS_3G?2Pa<<1>i8UJZvtT-oiMQX{N3=>e6(cm;ZY@@T@`IW zx7X}o_K!Q)^5EJz@E4C!4TRb&iHc@=M{p+3V7@WYI;VWgO;2A2UJ^Q0RZ~-LEM>fC z4b*2OQgm*{1yU1XdnNn_ME{w)Y=M)>NIrnhj6&;A?{o#Krr+yMq( zEyubH9Kw7 z^NV1bUZhFvhDw$#1A0?>5>@tb<`(Qf^ArT}#T`=!Hmh8iFEz8n7=|Ep&(F)JQ1Jn| z66i3=GhXiCFly=0ERhQnfF&qv=iI2s$RLc@Q(0?iX~}rn_zwu*69kCsN8Nfg5hL7c zBt>6gPsmktqkv5XAf~|KAgsTqd|(2)HgaD=X0FUnvE0SD6pZ!b(%!#6Ru2Nj}{hJ7jb3B#jRCyE_<1*jRgq%zA_Ms@Q4U3bWxWNM+{G33f&$P z6E6HK2y>I$a`gc=byxU=K}X9Fr~)tYZj>A-#I@c*t;CF7`R63W@b> z(VPSH4<~-3JVzwaJ;D?;N{6C}uekCO{RWb0F>&sve?QvSS?)J{@GXLvUOzcnU65W&DHoIwd z(YLPBunQm6j7^NI)6e)Ao6b|?B~J?X4sOY!&*>^&G}jS6vv2R{WvOv$ALS@5Li@OK zZs{)jw~_~XT<0aj-|ys(+wu0Y=L%J^H6I+?4&S02nQsO+s)h|oc+|Pn7Q5fRyx5*u zob$`)a?P3P@-WW(_8T8KyC}+NU+r&x@7U!rBe`P2g4V^yY9}?dRA8z}K>Ftj^OTLd z5ALI9-+#LIOEZhOh>Wiezq0clM#_8PdQfmk9_vjZD(32KKMTQa9}G=c&pQrXJ^A&B zkx1)e7pZH=IaS=EuFl zEN5z{J`nn%IghejKX;omz#`WnfYb8ngWacx?6k|uR%M!L9BnTTc=LPo?aG--osML| z^BL_+m|tWxtSMQHGI%XIlvS8!`Av8x23#W0N}?!iU#EWNfsCreQ_RyNB~5Y1yLa!b zkiIMZ(jw1t3Ai5LKL_l91{4Px1dT1X@NxqjYXq>R79+db)~Sl4{JHP+fjw+h&%erm zJ(v%AAU&epFdKaaCni{ySm{V13`r1<{uWd($UaL`AV%#~y6Ja;UNAG?S+Pk^2mptx z#!uRCs&%w1%+^*uv(~1a-Wn~#loOCp|*yBCV^%VWxwZrXr%EQ2kDJVn^eyoh}7PH zWf8y7F80;uB*@PGSXro)_3Mq?T4lXXg*lJki+`%$R#AWGOrccY=weS(#OA_%?aut~ z^i>ZxOqna~u79r|E#5SfpPO}_!6Mi#F8yiXbmdpR*8>+_9KY1=QmZJ7x=UZ5kev|7 zNz+j?T{wBYzhF(Svl66g{pl zk-WRO5UvAl-Jv2Q8!PytQ1|Ud@%~=7tqz4haUFwdzcd z6Q8h&XlRPf{bHx*$>_{v zbH{zt_hmVi9>Rxy`*TTCG3%RZ{og%)vmm3AvrFr;lvQ078npLP8*tyLf+M<6eWrCv zPXR?M>V$@ZpTK%J;mcO}6@?@PVCL%PP|XLC(OLOZ8n}On1RS$RWAt+Ko7>xK(J$*_ zLWrw|ZYe4SlKD3jsVfZi7UBm8UGQEv?K&1TGdcU9e=SM+-wz(km6EG3y!q=(AIfsz z+mWHjMKn*FqI2`4HrIFEEWH#Hm-vm75gC4Uf4FVc4B!G*z@k|g77s-VKE%%>5q8em zI5O4IM2`WrD4qhqE01INlerQkmKfb@{B1J6)Ul72On;0qN%4F1Xd7BkI!uUl-J-Es z3eMAuD4Px6OC>u4?E-sx6wvQC;gratOWYe`NYXc?QJ7tj_y7IsjHessm`(EC^Geq1 zEQ`Js8|rg#J+|yI64LfM`(}xiCYfsv*BcKc1n+ej|NJjliM~w&O(GH3AI)>2##n&m z4bL&QG)QxU3dF+b8$afJFNO>P;qDU)x7g~Ctpu8jpiyoytS3Ql0e9k9udS`!woWJt zlVSMbC_&oGP^60OYxvG_ax5h}8aK9UQmKr8koiQ`gR1WrrMY9$7$e#jU!A+(gbh?K zR8Di#@syF@88x2*TC6}oJn0IdY6N4(-PHn#JP7(sg#(Jn+#$YmGXAXC4w+Vh7@eHJ z0}VKX3bS+tR%q9@fQ}Bw*#RMua|d4RMqCc} zbgrV$vLfJE`?ML>E(>Pd#SGNoMTB983U{3?5k?PoDK0L(br&jPDY*T^kqj-gskLGo z9u~>+MhQYhXIM?#wI!A4NcRF@y?{-js-bbucq+AZx2h@~p^&|Oe28ZbotVa_-1V0k z7Slp{n+R44jNrb!(Sv_sL?Kmx5W0}iy4I76f}IlCM$k6E8jcvY3s`Txq9QMHbmQw_ zmH_-50Yx-Y1=f%*6jDm2tYZ6j+YsWmmnT#I-ippg_M$Eo_`i3Htr<`_G@IN z4g%K@SDZeHUy5X2#Z4{fAzBWUgQQay+S;+n$ro;Ocwfe))Vb`o8;Hm9EiW(ciX+$) z0Ec}%nYu|!$)wLi@1fvbzipe*&@{3zj-Ebk_OS#E!;5jAE3w$)c(1Tb2jMB#K>IP& z1<5Xn2he!{V%_Z8g^i0^Ksdh% zJt8VQ1;?QGtj<7fUjLmzyfTh@riw`42w}v?ndX>N8!T4 zCnbp@TwJH^Nbt~-i=YHs|#h(qv!z2+u#GU$95kCSqsxXofR{*Jr9a;a3aO6-kZ8lghA#q@6 znXNiV)_w?&E_?Za;Q4eW-yBye1#gV;w{q+oMtqv$j^`rSfB2X+z=2RkGR1yN$<18} zB;VcL{Vwo7BrN&s4eim;sDb(`flEqCO4#&KmfjB{Nzwh{3Jem>YNo={mP0RaT4OQ% zk3{TWUQIC86vr^e3`#nEr685^xN$)D%O~Wu0$N-N6F~B<}0NwL6L5b`joD+*Zn)#L>Xkib^k*!x-R24{F;1Te! zV{6u?=_dV<6^q~LA&s4qobPRM`BM)!(uxTq*00Ul=E~$t5mr(V@e3-Lm{Lej58&SwMQ)fU7*qGE&d{pwxY*j*dLCJdIBZTTf zL=CQgOI$h_LUUDR5|A~a_VAHJHunWz(Zg?45Az|?jsw62k<2LksT%y-*mE3G*dYe# zdP_jQ>>=k6#=t?G1Q;u&jh<%Lu3b2|Y{+M>g|A+MTU&wG8*uaH zyL(EeF&_6?qF{JS8*^z!alF@tfS;VypsB9Tt8`rWf=3oopH7~@n=tr+xlw$mSe#{l z0vaH(!wKo>A)t)ell8MvO_SmQ@^zc&*VZRblI#`f?E>PVz?BKZG7TUyEMH>%dOBR7 zmpU&UUWJ7tc3)uYSi-X$sJ&x_ur9&z6HWe>lT;HA1a^uqdps}}GX#Q7t&zUVuvfti z@X1C+^hN#WlFPs(;77B_sUJ%LRSTq_43o;41T;$)bgs$59tKl1%Bv|Er@P{M9}x5LAi6ZP{nN*a=b z2BplN{xV!p>o8#>+AbcOo@@+kx1eKfCNe?ax7SQP+(@i%y(zM-ekh$Hb? z?o3Zb1pblZjrK$BIO#N#0uczd$+yPPbRMh^!^1{c7t49%Sddw=nC3YA@wgpG?jlTo zzPN~Szq^v!Vbc6#)V2|pAk3`(=E|3LZ+4g=$28IH#RUebt4IoG$;uc z1cCzyGxHm#^Xd>aBJ%-Gj$@PXX>dj^#-pqyX{jhr2b6kM>GXgC;-BwAIq`>3<>6s0 zQ;idenHUIq0RA8e(jcTo)A_F4^ci(r1Y{BY;QcR#g{h+QMf3L^XAM3ACZSO@Vl;?29^Q|ty1G3tq6Qb>Qf2+MOJ>U!op;?S+0Sxygy$yYrR`pe5rq%%Qw*^eC!W;kdTBF!3kA+wLDpo9xw9RlQc}x z85}m$2~hU&`E98U_l}y-TMVQklasJl(-cBGNhgJ_DX6fpu+a`?^FUBJvDTOd4TW4; zGhR|$2Nbbuu@MaS-l?jpQW+qf5b7Uci;6NW>8B#Npdev;f+CHDg=OqZ5i~qRmw^lP z_{n|W94ME;W&t#<-b3a5FHpk+(UEilCT$H1QVc8?n?RNmprn!h2ZKo%W}98MLcTZS1)le{X-y;rK`D zCP|q|0ZXn>wc%9k_?W~l!=as40n(ZWD2tEU+ft3vjvnUam@hW(Ej#CW^Fx2qP4{ud zV$I3-BCpl8_K2KOqJ*8ygjw#I9+52D>lJoCI9j@+oh5Xva)rLrhgv$ZsIGwIaJGmp9~ zSs$s?w9`sL)*M-21na~?YC?h|sa45RM`kDFMAi*4ei+S$GqC-}A$|STWN-lNU+p&n zv^K)wfa4_*-W&9$dceMYY<>3`u!0OBo-d+lKub;9tUq7ZIujUKsE3Pb{Yuv3-$wg` zB>cI5`|+hTARZv%z(s(3#RttZxdG$3o0=_5>zRPpSr&FWMrEw8M+3Bn}SqrLu4iTWGud` za+sMHh{H^D&72a-hdB{$1lr>sxODTT>0lYoZ?HEkIN&9M3^KMJe|pKGLSP)fb!dvf zIE)Ef5NfjR_(qggi4Kf7rvl1MJdS-FTV-7OeS2JoSe!gZK&pVAA0DTJFqK<9}k&r4c@dx)N)aW)D`8>z%z%l%nO%NzzVP)bb0B?-E3Fr-JC@1)>zX@L7c~|zM~kjm-`{?O$LHMs)Xt?`CB|Q67zF)vKJT<(O3-0I z2+{Q$i*G#06DN*#9*SK7L5;2&gdtg?wr5X2x@|pDa5kswZvsjW5Q_)SLOAKANV_v~ z<8=9MtuW{(tk9REJ>EQ4x0>kvkQ;W~RyZ>atLEtRSRb&HLw@7PzmqyzMH4G4z`T5U zjK??hgId~f6A}AR3p|%#oG40u8xs0?3DDnLH$~Q!7yUtH8mASup0|dkqKB*{ePShZ+@h-LHlF#Ud)3s0LGsBH`~o{x zodCiAx@~r$GwFP7`Ms8lp3a9-#nzX5)pWFT(=@+r=e~WUJUZ@nV8%#3L$HYB}+`vX5R{lCrNgnYTE3D7JH!-Swfb=Q^pdNEj=Pjc|r&w z%VYgr?`FQ=IlptxALsA$I{h(YX3BUzpZEK|ulu^M`?>?ZKe%4@=9h)rlFQt_cGtAO z+ish+>9lOhI@h4ze|y25^m1E$^My|vKF?!HrrQR;PZRn5eTK<}VFJ7aseSAoW@<|R zLgbso^A{thn_%by4i^qlnI(f@6D*;Bk$3-ow=!}LZ!Qsl1Gn>G0c43Ym~wDjphSv3 zNMSLS04mK3*h^C~2!RaNTnW%y3l3DwppOKR@$)ysunr0a1S7FjyHOS3tD~}GU<(xn z*KV?*5*29qGuJw=Wu;|hL}o(vHzrv_Wsj*v$Uh{|suE4Z2KYH>2nV1;`DLdNq*8?c zG8u+R;63!;rIeD3W03KPLQr081t)}e)LjsI+~utHcH$F8+zW7HxVwn8JaA(8Gm0Wg z(k^Is`Z!NXncP7Ev=*}aPWI&;$8U}Dsh)9lRYwE0WzQtSwWj2Q5zgWO(>)=@T$6QG;9&`8af9q|Hp z(tY*)uY9V#^xiX$>z=409v@wOo<&`b_b_m~rWUWnQfN~6T0g3&CZrT}!)LzE<9iAB ze-#MG^jIy$asEP@%APLzWr`k_Gw(!AZGBmEEYJ4zhGp!sY#A9#Yb(FZvQ_wvluTvT zh8ez<=Obl9^;J0M{xV*F@=C@NftrU_F~7KYKMKqdV!B2L?)81W{R3OEUfh`f*8B$# zZ4NHoBC*rjEakJj>i1kF42vE5Sg>wSQB=Uvo2&P3?5J{DdWCs(KxHXQ!a+;L!(h4N z4Y5w7LTrZpe$<#(7mnkBu|qiWBuBG1<~{9M;8NR^_N&}reqz1=ql ztWD_8Aob|ihzrYt^e|3DJWa(@=g_st#7aBpa_(}XgNGQ)N^dSgm&VDk-yv9whGX1u zFSsr8;qAS0D}X}gV8e>~ONWmEgA(r=tixD^A*4;GF+zK^$eK)fppBK7MrrNeUy2Jd zEQlAVKm;9vn11BOSo@~EXBwkbe2jXIqIG{?)@J^Bh-odcqzH{w4NPo=-_kk;anrCM zur1V__e$9Kamx`q4@GOca(c#0!-Xpme~fJDAVC+H08`?I>Pk0tbagjpJb8ZO23J)y zwet_~##)ZAmU!D~v?2(SArSCkSFy>oXea9SGE_#QY2fO}ZdOrQn;Cf(C`FqKy?8+$ zUQJ7LS{oAhGwOY*`Q43nF#XmRrJBsk3tF*9v-J+V!5)4?h*RXkiy&u{S&uGBnb{IG7W9S( z*$U6WGs6L1Tab<^zg2_zbnR2SOiUo=!EHQYflV~D^LR02!yQ>#&=`wcUIO9ekRYAxGyqo( zyx9&Wj$MXD1($$8h@5Q`^?EcP*m@7-#y!Jq47hTKz);Z=Ofg*O!zKy^f!E160-7LG zFj8F}P|EHE#|W{S=FEcMcJEe=0#ee%cE2|i?~!w|>O`iEsxFiZysm_F0MtgXdZOk!7+CUM>dg+S)# zB2MD1AL=*3*;G?2P5m*gbNl5(PGRa{csFe2AvPmZ7X2H^(ftiz?~ye=o`!|R-4e0v z1_hpxf3>{L1Bh}QDpKxpDAogj@@X&Nl?-N{8y~s{jXMHWgeh%Kyv#?|AoR8zOeJMCx+Qj4#e>v;-%bXGHrO$xQ#}( zrM);m2cuEMg&E&+v4B97mEJ=mXs?Om0c4A}(%Bi9vjDNU4P8pi%IKJ=qNE4QL-uTG zzqa{nk~ALm9L{Bh^eqYlb(kW43G$l^SmgQQli-;VbW?n6{m*!zhJ-}(&O1i@xzV|b zpts_i6MBf zn_Xam1bqRFMWp^``>3X;HEdC`QUbQ3Q3KFXE26hX^R}y-e8N9*8+6kgm`B_^VR#vC zS!>0_G}@1PdMXfOeoW3%o-t1`<==TJnFo^xBucXON6H-N@dZ9X-?ehAiA}6!NU$Rl zE9jH%!Be=0(Z~8FKM!xuU8=zN|65p1YSw9UuQ4GLSD(&hQ(AktFIvo<`{nRf!4e~r zg&Nn5wyD>et=RMUl<9MIodd`6Q=L)|n+6;zSYaBGmYs0(H@n|H+&Am#U%Jv^rMmW? zm7Xo8XBTf;A;LK)f8kn&szPtNY}chQcfEDW=?!n#B5_^Ru!qXB4IA1n@cS&F{q-yO zG-98&QA%1`Fg|0_)U$!2$#%H3ta`PCMp;(Ae!c9uEy!#169b9440@0X{SXPdkF~fN zTRvlMKl9~P9=kJ&hk4S$fptZ|Y2Q)B-p5((lWnuU8YebMNCY^f7s^`p!B0+4few>V z4-jw?Tcoj9UBz_xU(sOd zW?C@OlfoadL9m}e&Cb~2SN2R2W7~gQ-R}IA8SD$WqWjg|R&tB%Jk>4{*4MKF)P(spef9ag#Oj59jF8$`06lDuMt&QTC^ zcxVX9=k|p35S59qLNkEc6x+>bM_^TL{lI%Tsx1%?CnDrINe(-~JNGZZOE8IZO@3xtz_+FlzV07$`7PvdF zacg$I+VT+%N5Xbv$GvibbVo-=DGX@&@Qswe!4mZ1Lm<1+vF#BcU(11R1X8=Yx->mJ z*yT)EG%bgV^P)*5jN-+~^SM*lC*TbGJULIFUgI`@c*V;1WxtCDE8Wc|2OhoU>vg6L zW?qgM$dI{T2)@wiu-!SGX3ySKa%E1$rGSS=_A7&Jr4>#O|DDI|Snr_%Im12Gv=1bpjZRV_hov5!@*_K(eA;s)&nj*=tEg^u0yWws`vcnbKU9 z-c9yNrTgVt>c6?*zy<)9l`q;5y&UAhtl{NI4%&;)3t=7dpMIS`F+SC$Dhwr>A7dhg zak7?;8BO_)a04qaarUu~T``=ij52^bKYza_KlL_3dIM;TcblX~`aa5GGg1*Ey#1NB z5Z@mO*s9gPq?-A|IKA z`9{G*jpN-M+OCO3|J|ch_Aa2ShnO+&a#%kPX78^bD9Imr1(waRpk;Xts+MM{eG+=LFvhxp|mqnw_JC#R%H zZ!`x=y^Ea)KGLQ0|T0q+@lKI(eCYjPmr<48>@X+ZHV(e zlT}R`qm|OHUlS)`{ySTx{R0A`9;2^1$^YC7x}w1*hxAf6#$?N?=>jI;zdEmJ_{>Y7 zFpjW6E*@&vVn`3S7ESljK~?mUXGFGcqGhhjp2F?4LImKC&TwsZX9bbzB#mBhvwi?$ zfSJ9Tg416$RsB)B?JyFSKWzaDVjBcEb>|uYZ;4?sV$$$%0^C|ZN4Qig%lZ5Jb2DeA z+h&#Fe-N9)UYfL*y1H~bjyMc|_Mb%^pstLfGcx<|@4wgBC>!WO=K=wdI%dqpou2pQ zpyz3qRb}q_{*W`G^pgDz*%<1>KrQ{>7nD2Je$&_I$;q1>v!3SQ(3GOSZO4Zjx6&wj5x>6Dpqk0qT6O381Db-P&4e-s zfIQ~5W5dQA^i0s2iG0t1=`&Pc2(>|I1j-o!ofvBj=siG>6%TL~++3$VG@)sMI3u6x zru_W{2V}@EHF{yY=RDeIs|n6Mq2YGXkNb%)YoKVpc2&r8W2&^63t~~Z0KI_At;O{S zW`Q4-`b2W(S0NmPS@h4oLzgwLCpo2^q}AJ$x$n-j=l##%BU5cz?T8U@fbox``z|LoOkZUuw0FYv!jZ#Z=cUkoUW1j}^561r zDcOG1Mr4S5j1_-R4|Q&YeGw+?N)cbUsqsIB+grT`f+T$h1H@yd+0~1v*w5WG+NUs{ z+nL6>lc(d@fzpH*`Kro+1$!TQ!M z??TQCpIoB{ksA5d(_eeZmFl2X>+&nPpKkUUYZ3NQ25%?N{u1`iS3i^1f^?#ZQnIcA zKsI#radPs>K_wElOwLqLqQZqm-!Dt9Z-JhGSFZW=-hcsxI&$d-{}i6t<~uvtrit`U zj%vj;ND2D=iWvs7$`<7Gunfo(auVZ`c+I`H+gDFaOb}zK2O3VU09o5X(ZcED0C|3C zdF}pUaapi18AMLcX}`1uTn9sb;%h<}#iS-bw&k?TQ1yT_<5g}&Jk?6Wx>M!UlqQs7 z$raO%gDxC2+S~VOseb{+^SXG!2EZHHBYfX^x5UhHZT%;ayf6>Nxa1uG9j9t5Ed^r=&gGlv-%q zW85}zSPAe5YiNq@sQ7p`O(K#H4%h2VvVs8=n5Gp;tKn6KE|W$7515~QXD8j z0V)iFR5x!n)~nx-?#&W7aQHB@&N)OL&&0V_omX8;OAFT4>qrv4G7r#mav_GEwX~ld`C}yL<5E0^#g&Zy?Nf^1tF?+2o=DmLoI=Us6Ax z-TBSm%LM3Z;3kYicCW@Ha&D?7ji%CJh6Rie%2Hpji`csp+i{(w!gtEa<<>&{)e_o2 zTRl5fO~TQNl`92D`;+2)73}-6;-%k3Tt;hC9E%*gOdBl?&j!SLYPx|cMX@Mdry2vT3m+QXy5pyG|N7A%=j|+PYJ%1! z^yh9TS)v}J$kl7=pB$K-8IZ@Mw?Qj})sy38az!^}!rA*g(;?+G+XGuU4&RA)aXBLk z|2b>;Dm$LcE~3ZZV?5fHwW-8Mhrb)axs}{04NpxqoR9mW z;XBt^K^x;-tvptOXFt3CF&)$JX^fePJe-xfGv>xfTXOM8K)yp^aV3`)@f=hc!`ok< zDmu~lCJ{}(G6Y&FCIcA*-zV$|HPfAGQxOW$_#u+aIx;>XoT;WFSM#Y(eO?yEWROIO zhb>GpWPTSZdu|y!`DIlpNRVt5^1f^cpwPp=5J!o9QVjFU%!7+gIIjXIJ5FYs!NLk)- zzc-H+jTNGIaTYzTZI;u(^(39T0}1mm7jts91J;~6;}kg>U_P}D_@dEH8BJFbxN-l) zN7z@X@vEeHmM}tsmYFv-SSsJ07^X7#7|VtrFD(%J(;u9YFcf8jaZcrC zVytWpC~SXZYdI7}4L0de4`?7HPYtWiy1;i~2kNjEJAI(WX5Y!aC+>soc|YoOSamv* zj#A&*FgOUoX%tHh;oBZx5rM?>Zr4WXe-81_`@f4bSb6kAj?e|!dVF({b$Lr@cFH8b z0uZ1i3C4}kKnuuwFu*(z^`$178e~H?@C3aC{{vxt6}C;C3cO)_i$`z_w^k_)zZrj@ z?t3$%2nj-dq~3r9Ocn$*L<)E{HL%^1vAz@Cc^$VXvZDurAQ}_EQS#pcg=?RkD_#0c5;U`_E z5EzO1)8IsJdO3ME_*m&-qgtcU(=t(tZcc%Min85ZE=V8F%wx9d49a)f3N!%7p--69 zvPBSBOK6PuN6bk>wj4)*4DE`yu&=64t;LPyk!v|?KzvDn%8BN$7T^ZUEe#4L`=1k- zj70~#3r3j6T9a%12IOe8M$P~Dw#j?n#R*chl_^ql#d~(ndFnv{xRWO&1R#iJRXxSt zH8gW0vQ?m=N}ThIiwjwsY>yx%Fv7e#E+x23DV~5>5JDD2MVOMwY5X9WW#v)wKMiKln2SR-nli|WMpbenNAJeW(1NF zLTf~3CkpF7v+35eO3&h6=^@63T4YjZJ zaD~*`+`r+)KUYH@`|_0JK|Xx+T+;MPj=_FQQs(&Lv-kwWmOGTG8MK;+MYSI_;8qxL z+5}(2!fvPN)5VL#`$P$WTMnvX_1{IjN0w&{uKxirAQ?IMp$O*^aDvhWeYDoOLiDyw zeizf29)yJ*iG5WfwRz4gtD!Fysh+l(%RBzA#v|YNrq52KLmQlul0d-qbg)fs^BJ8V zApKIy?QS52N)(MgO@BJVCoZvdtIDZsGBldE(SO12`)VZuLq;{TT#iPZI_bDJ^WE2n~SI;wH3i+P+b~(5nZb zP?xntsBnA&8u-MR68GC!WyKDQN&N&E!MMZY+!}B*b;9G6A2{ezC`s2Kv7hQafTB(m z$@!mmM!q_DcA`6}9LZKhu3bmeRa!Fxf-6DMX4>wQRi@N}*Jr zns|3dmGae|1bLr;#E4m%4>s5PKcDSy-ifb?g}H4-gkx_+13Ix9H4 zYdI`a{_#8de0SA-c)HQ5Yd-zwulxHUTJTfs&l7QU%eex{Yw5}(CR|_~=(TKsp*sq$ zC#O2)7=G5lJH_5o?{+x;qzeAxvf>-3vHjN?8w$00yO&Pr<>JuG19=)xMJod?vk0i9 zCXy)aVVhK}r#$zw`T{{GKsbhgKOvN~xmw8}rRw=unNhY+?mxdXac zK`}R2yjZdX1VLzQFWx1Xubsq~o_x@N0f2L=ZtTn_&~mBzzLJ(k3CFAGPisH;=UQGRD=> zt5d*f$$yxVqLar!#Z5>*Oe)zB{v638bSCp2d_$=cLKu+BSX0PjJ$Z>J@!X!p zg%;8lPOT)zsWz9<+1Mu$zEwhtS~0gmDD?svBzCUB^5x$Uf^v>ssIGuVOet!W$=b<6 zaP_2?N6}0;QpC#vo;G}DNA=qmUUKryU3uoCXV~tYt2oXxe+zTo%ggbKbIU7Zo|Lh5&7Hs|9hDK8x9xWE6&+v&YL}LBM**+ QkoT&kuBVo^$KvAu15DJZxBvhE diff --git a/docs/images/taxprofiler_tube.svg b/docs/images/taxprofiler_tube.svg index 87c66c8..c4d2403 100644 --- a/docs/images/taxprofiler_tube.svg +++ b/docs/images/taxprofiler_tube.svg @@ -36,15 +36,15 @@ fit-margin-left="0" fit-margin-right="0" fit-margin-bottom="0" - inkscape:zoom="0.71542514" - inkscape:cx="364.11916" - inkscape:cy="440.29764" + inkscape:zoom="1.0117639" + inkscape:cx="596.48301" + inkscape:cy="463.05268" inkscape:window-width="1920" - inkscape:window-height="1163" + inkscape:window-height="1016" inkscape:window-x="0" inkscape:window-y="0" inkscape:window-maximized="1" - inkscape:current-layer="g3070" + inkscape:current-layer="g27886" inkscape:showpageshadow="2" inkscape:deskcolor="#d1d1d1">FastQCFastQCfalcoFastQCfalcoFastQCFastQCfalcoFastQCFastQCfalco Date: Tue, 22 Nov 2022 10:13:10 +0100 Subject: [PATCH 457/789] chore: let all tests run to completion --- .github/workflows/ci.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 862e072..a2a1662 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -18,6 +18,7 @@ jobs: if: "${{ github.event_name != 'push' || (github.event_name == 'push' && github.repository == 'nf-core/taxprofiler') }}" runs-on: ubuntu-latest strategy: + fail-fast: false matrix: NXF_VER: - "21.10.3" From 0f298dca4351cd4e57953ed025084c60db2e80f4 Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Tue, 22 Nov 2022 12:13:08 +0100 Subject: [PATCH 458/789] group krakenuniq reads by pairs or single end --- subworkflows/local/profiling.nf | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/subworkflows/local/profiling.nf b/subworkflows/local/profiling.nf index 2cdf1d1..8c09af6 100644 --- a/subworkflows/local/profiling.nf +++ b/subworkflows/local/profiling.nf @@ -269,6 +269,16 @@ workflow PROFILING { if ( params.run_krakenuniq ) { ch_input_for_krakenuniq = ch_input_for_profiling.krakenuniq + .map { + meta, reads, db_meta, db -> + def meta_new = [:] + meta_new['tool'] = meta['tool'] + meta_new['single_end'] = meta['single_end'] + + [meta_new, reads, db_meta, db] + } + .groupTuple(by: [0,2,3]) + .dump(tag: "krakenuniq_premultimap") .multiMap { it -> reads: [ it[0] + it[2], it[1] ] From db334c51852d2b9a8b333df7f018405633500195 Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Tue, 22 Nov 2022 12:17:08 +0100 Subject: [PATCH 459/789] Fix missing info --- subworkflows/local/profiling.nf | 1 - 1 file changed, 1 deletion(-) diff --git a/subworkflows/local/profiling.nf b/subworkflows/local/profiling.nf index 8c09af6..51a38e3 100644 --- a/subworkflows/local/profiling.nf +++ b/subworkflows/local/profiling.nf @@ -272,7 +272,6 @@ workflow PROFILING { .map { meta, reads, db_meta, db -> def meta_new = [:] - meta_new['tool'] = meta['tool'] meta_new['single_end'] = meta['single_end'] [meta_new, reads, db_meta, db] From b8937748d311d863aafeed02939388c3a2853c05 Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Tue, 22 Nov 2022 12:18:52 +0100 Subject: [PATCH 460/789] Fix meta.id isssue --- subworkflows/local/profiling.nf | 1 + 1 file changed, 1 insertion(+) diff --git a/subworkflows/local/profiling.nf b/subworkflows/local/profiling.nf index 51a38e3..80e0850 100644 --- a/subworkflows/local/profiling.nf +++ b/subworkflows/local/profiling.nf @@ -272,6 +272,7 @@ workflow PROFILING { .map { meta, reads, db_meta, db -> def meta_new = [:] + meta['id'] = db['db_name'] meta_new['single_end'] = meta['single_end'] [meta_new, reads, db_meta, db] From 52fc00802bbde66722232b44076d5fdda7342d92 Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Tue, 22 Nov 2022 12:19:56 +0100 Subject: [PATCH 461/789] Correct meta name for db meta --- subworkflows/local/profiling.nf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/subworkflows/local/profiling.nf b/subworkflows/local/profiling.nf index 80e0850..4fc490d 100644 --- a/subworkflows/local/profiling.nf +++ b/subworkflows/local/profiling.nf @@ -272,7 +272,7 @@ workflow PROFILING { .map { meta, reads, db_meta, db -> def meta_new = [:] - meta['id'] = db['db_name'] + meta['id'] = db_meta['db_name'] meta_new['single_end'] = meta['single_end'] [meta_new, reads, db_meta, db] From 5caebcc6ab38d2c6d557da77317eaba9965a5f6d Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Tue, 22 Nov 2022 12:21:59 +0100 Subject: [PATCH 462/789] Append to correct db --- subworkflows/local/profiling.nf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/subworkflows/local/profiling.nf b/subworkflows/local/profiling.nf index 4fc490d..e43a915 100644 --- a/subworkflows/local/profiling.nf +++ b/subworkflows/local/profiling.nf @@ -272,7 +272,7 @@ workflow PROFILING { .map { meta, reads, db_meta, db -> def meta_new = [:] - meta['id'] = db_meta['db_name'] + meta_new['id'] = db_meta['db_name'] meta_new['single_end'] = meta['single_end'] [meta_new, reads, db_meta, db] From 557f2a4d966ffd93137780f002a66c714d412865 Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Tue, 22 Nov 2022 12:26:46 +0100 Subject: [PATCH 463/789] Extra dump --- subworkflows/local/profiling.nf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/subworkflows/local/profiling.nf b/subworkflows/local/profiling.nf index e43a915..f904cc1 100644 --- a/subworkflows/local/profiling.nf +++ b/subworkflows/local/profiling.nf @@ -285,7 +285,7 @@ workflow PROFILING { db: it[3] } // Hardcode to _always_ produce the report file (which is our basic otput, and goes into) - KRAKENUNIQ_PRELOADEDKRAKENUNIQ ( ch_input_for_krakenuniq.reads, ch_input_for_krakenuniq.db, params.krakenuniq_ram_chunk_size, params.krakenuniq_save_reads, true, params.krakenuniq_save_readclassifications ) + KRAKENUNIQ_PRELOADEDKRAKENUNIQ ( ch_input_for_krakenuniq.reads.dump(tag: "krakenuniq_input"), ch_input_for_krakenuniq.db, params.krakenuniq_ram_chunk_size, params.krakenuniq_save_reads, true, params.krakenuniq_save_readclassifications ) ch_multiqc_files = ch_multiqc_files.mix( KRAKENUNIQ_PRELOADEDKRAKENUNIQ.out.report ) ch_versions = ch_versions.mix( KRAKENUNIQ_PRELOADEDKRAKENUNIQ.out.versions.first() ) ch_raw_classifications = ch_raw_classifications.mix( KRAKENUNIQ_PRELOADEDKRAKENUNIQ.out.classified_assignment ) From 3102e4005257fe7ff17c24b319774d0805431897 Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Tue, 22 Nov 2022 12:46:26 +0100 Subject: [PATCH 464/789] dump teh db --- subworkflows/local/profiling.nf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/subworkflows/local/profiling.nf b/subworkflows/local/profiling.nf index f904cc1..a46a773 100644 --- a/subworkflows/local/profiling.nf +++ b/subworkflows/local/profiling.nf @@ -285,7 +285,7 @@ workflow PROFILING { db: it[3] } // Hardcode to _always_ produce the report file (which is our basic otput, and goes into) - KRAKENUNIQ_PRELOADEDKRAKENUNIQ ( ch_input_for_krakenuniq.reads.dump(tag: "krakenuniq_input"), ch_input_for_krakenuniq.db, params.krakenuniq_ram_chunk_size, params.krakenuniq_save_reads, true, params.krakenuniq_save_readclassifications ) + KRAKENUNIQ_PRELOADEDKRAKENUNIQ ( ch_input_for_krakenuniq.reads.dump(tag: "krakenuniq_input"), ch_input_for_krakenuniq.db.dump(tag: "krakenuniq_db"), params.krakenuniq_ram_chunk_size, params.krakenuniq_save_reads, true, params.krakenuniq_save_readclassifications ) ch_multiqc_files = ch_multiqc_files.mix( KRAKENUNIQ_PRELOADEDKRAKENUNIQ.out.report ) ch_versions = ch_versions.mix( KRAKENUNIQ_PRELOADEDKRAKENUNIQ.out.versions.first() ) ch_raw_classifications = ch_raw_classifications.mix( KRAKENUNIQ_PRELOADEDKRAKENUNIQ.out.classified_assignment ) From 21759807f76bed0e34730c5b5cb90eed119ff9c2 Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Tue, 22 Nov 2022 12:48:54 +0100 Subject: [PATCH 465/789] Does flatten work? --- subworkflows/local/profiling.nf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/subworkflows/local/profiling.nf b/subworkflows/local/profiling.nf index a46a773..291d476 100644 --- a/subworkflows/local/profiling.nf +++ b/subworkflows/local/profiling.nf @@ -281,7 +281,7 @@ workflow PROFILING { .dump(tag: "krakenuniq_premultimap") .multiMap { it -> - reads: [ it[0] + it[2], it[1] ] + reads: [ it[0] + it[2], it[1].flatten() ] db: it[3] } // Hardcode to _always_ produce the report file (which is our basic otput, and goes into) From ebfc84e235b6e1a79cdcfb6787652773393ed58a Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Tue, 22 Nov 2022 13:26:54 +0100 Subject: [PATCH 466/789] Does the grouping work if we have meta? --- modules/nf-core/krakenuniq/preloadedkrakenuniq/main.nf | 1 - subworkflows/local/profiling.nf | 1 - 2 files changed, 2 deletions(-) diff --git a/modules/nf-core/krakenuniq/preloadedkrakenuniq/main.nf b/modules/nf-core/krakenuniq/preloadedkrakenuniq/main.nf index a355c13..85d35bd 100644 --- a/modules/nf-core/krakenuniq/preloadedkrakenuniq/main.nf +++ b/modules/nf-core/krakenuniq/preloadedkrakenuniq/main.nf @@ -1,5 +1,4 @@ process KRAKENUNIQ_PRELOADEDKRAKENUNIQ { - tag "$meta.id" label 'process_high' conda (params.enable_conda ? "bioconda::krakenuniq=1.0.0" : null) diff --git a/subworkflows/local/profiling.nf b/subworkflows/local/profiling.nf index 291d476..6e45648 100644 --- a/subworkflows/local/profiling.nf +++ b/subworkflows/local/profiling.nf @@ -272,7 +272,6 @@ workflow PROFILING { .map { meta, reads, db_meta, db -> def meta_new = [:] - meta_new['id'] = db_meta['db_name'] meta_new['single_end'] = meta['single_end'] [meta_new, reads, db_meta, db] From e8de006ed65bfddc80d56e977880e40c3f70600c Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Tue, 22 Nov 2022 13:27:49 +0100 Subject: [PATCH 467/789] With a join --- modules/nf-core/krakenuniq/preloadedkrakenuniq/main.nf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/nf-core/krakenuniq/preloadedkrakenuniq/main.nf b/modules/nf-core/krakenuniq/preloadedkrakenuniq/main.nf index 85d35bd..b0885c0 100644 --- a/modules/nf-core/krakenuniq/preloadedkrakenuniq/main.nf +++ b/modules/nf-core/krakenuniq/preloadedkrakenuniq/main.nf @@ -87,7 +87,7 @@ process KRAKENUNIQ_PRELOADEDKRAKENUNIQ { --preload $ram_chunk_size \\ --threads $task.cpus" - for fastq in ${fastqs.join(' ')}; do \\ + for fastq in "${fastqs.join('\" \"')}"; do \\ PREFIX=\$(echo \$fastq) echo "krakenuniq \\ --db $db \\ From cacd7d3128f1833cd19ec5627078e0d3570d219c Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Tue, 22 Nov 2022 13:33:13 +0100 Subject: [PATCH 468/789] Not just in stub --- modules/nf-core/krakenuniq/preloadedkrakenuniq/main.nf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/nf-core/krakenuniq/preloadedkrakenuniq/main.nf b/modules/nf-core/krakenuniq/preloadedkrakenuniq/main.nf index b0885c0..362d3a9 100644 --- a/modules/nf-core/krakenuniq/preloadedkrakenuniq/main.nf +++ b/modules/nf-core/krakenuniq/preloadedkrakenuniq/main.nf @@ -45,7 +45,7 @@ process KRAKENUNIQ_PRELOADEDKRAKENUNIQ { --preload $ram_chunk_size \\ --threads $task.cpus - for fastq in ${fastqs.join(' ')}; do \\ + for fastq in "${fastqs.join('\" \"')}"; do \\ PREFIX=\$(echo \$fastq) krakenuniq \\ --db $db \\ From 06659af777ae59960f161222b4a01d85be64f24c Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Tue, 22 Nov 2022 13:36:40 +0100 Subject: [PATCH 469/789] Remove flatten --- subworkflows/local/profiling.nf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/subworkflows/local/profiling.nf b/subworkflows/local/profiling.nf index 6e45648..18b40b4 100644 --- a/subworkflows/local/profiling.nf +++ b/subworkflows/local/profiling.nf @@ -280,7 +280,7 @@ workflow PROFILING { .dump(tag: "krakenuniq_premultimap") .multiMap { it -> - reads: [ it[0] + it[2], it[1].flatten() ] + reads: [ it[0] + it[2], it[1] ] db: it[3] } // Hardcode to _always_ produce the report file (which is our basic otput, and goes into) From a383c9ae4099d0b4bfed75d77e830faabe26e04a Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Tue, 22 Nov 2022 13:39:21 +0100 Subject: [PATCH 470/789] Remove the join --- modules/nf-core/krakenuniq/preloadedkrakenuniq/main.nf | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/modules/nf-core/krakenuniq/preloadedkrakenuniq/main.nf b/modules/nf-core/krakenuniq/preloadedkrakenuniq/main.nf index 362d3a9..dc9b5a4 100644 --- a/modules/nf-core/krakenuniq/preloadedkrakenuniq/main.nf +++ b/modules/nf-core/krakenuniq/preloadedkrakenuniq/main.nf @@ -45,7 +45,8 @@ process KRAKENUNIQ_PRELOADEDKRAKENUNIQ { --preload $ram_chunk_size \\ --threads $task.cpus - for fastq in "${fastqs.join('\" \"')}"; do \\ +# for fastq in "${fastqs.join('\" \"')}"; do \\ + for fastq in ${fastqs}; do \\ PREFIX=\$(echo \$fastq) krakenuniq \\ --db $db \\ From 30af26a8b361f3d0e79e24fda84c28d9cd265df9 Mon Sep 17 00:00:00 2001 From: sofstam Date: Tue, 22 Nov 2022 16:50:50 +0100 Subject: [PATCH 471/789] Include the mapped reads in samtools stats --- subworkflows/local/longread_hostremoval.nf | 4 ++-- subworkflows/local/shortread_hostremoval.nf | 6 +++--- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/subworkflows/local/longread_hostremoval.nf b/subworkflows/local/longread_hostremoval.nf index 5f3f746..b6a9419 100644 --- a/subworkflows/local/longread_hostremoval.nf +++ b/subworkflows/local/longread_hostremoval.nf @@ -44,8 +44,8 @@ workflow LONGREAD_HOSTREMOVAL { SAMTOOLS_INDEX ( SAMTOOLS_VIEW.out.bam ) ch_versions = ch_versions.mix( SAMTOOLS_INDEX.out.versions.first() ) - bam_bai = SAMTOOLS_VIEW.out.bam - .join(SAMTOOLS_INDEX.out.bai, remainder: true) + bam_bai = MINIMAP2_ALIGN.out.bam + .join(SAMTOOLS_INDEX.out.bai,by:[0], remainder: true) SAMTOOLS_STATS ( bam_bai, reference ) ch_versions = ch_versions.mix(SAMTOOLS_STATS.out.versions.first()) diff --git a/subworkflows/local/shortread_hostremoval.nf b/subworkflows/local/shortread_hostremoval.nf index 426442b..e0254c6 100644 --- a/subworkflows/local/shortread_hostremoval.nf +++ b/subworkflows/local/shortread_hostremoval.nf @@ -25,7 +25,7 @@ workflow SHORTREAD_HOSTREMOVAL { ch_bowtie2_index = index.first() } - BOWTIE2_ALIGN ( reads, ch_bowtie2_index, true, false ) + BOWTIE2_ALIGN ( reads, ch_bowtie2_index, true, true) ch_versions = ch_versions.mix( BOWTIE2_ALIGN.out.versions.first() ) ch_multiqc_files = ch_multiqc_files.mix( BOWTIE2_ALIGN.out.log ) @@ -41,8 +41,8 @@ workflow SHORTREAD_HOSTREMOVAL { SAMTOOLS_INDEX ( SAMTOOLS_VIEW.out.bam ) ch_versions = ch_versions.mix( SAMTOOLS_INDEX.out.versions.first() ) - bam_bai = SAMTOOLS_VIEW.out.bam - .join(SAMTOOLS_INDEX.out.bai, remainder: true) + bam_bai = BOWTIE2_ALIGN.out.bam + .join(SAMTOOLS_INDEX.out.bai, by:[0], remainder: true) SAMTOOLS_STATS ( bam_bai, reference ) ch_versions = ch_versions.mix(SAMTOOLS_STATS.out.versions.first()) From 481f90589cb0941a6d3fad49cd1c0bea288a4676 Mon Sep 17 00:00:00 2001 From: sofstam Date: Wed, 23 Nov 2022 09:08:22 +0100 Subject: [PATCH 472/789] Apply review suggestions --- subworkflows/local/longread_hostremoval.nf | 2 +- subworkflows/local/shortread_hostremoval.nf | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/subworkflows/local/longread_hostremoval.nf b/subworkflows/local/longread_hostremoval.nf index b6a9419..3f9fdef 100644 --- a/subworkflows/local/longread_hostremoval.nf +++ b/subworkflows/local/longread_hostremoval.nf @@ -45,7 +45,7 @@ workflow LONGREAD_HOSTREMOVAL { ch_versions = ch_versions.mix( SAMTOOLS_INDEX.out.versions.first() ) bam_bai = MINIMAP2_ALIGN.out.bam - .join(SAMTOOLS_INDEX.out.bai,by:[0], remainder: true) + .join(SAMTOOLS_INDEX.out.bai, remainder: true) SAMTOOLS_STATS ( bam_bai, reference ) ch_versions = ch_versions.mix(SAMTOOLS_STATS.out.versions.first()) diff --git a/subworkflows/local/shortread_hostremoval.nf b/subworkflows/local/shortread_hostremoval.nf index e0254c6..04c8556 100644 --- a/subworkflows/local/shortread_hostremoval.nf +++ b/subworkflows/local/shortread_hostremoval.nf @@ -42,7 +42,7 @@ workflow SHORTREAD_HOSTREMOVAL { ch_versions = ch_versions.mix( SAMTOOLS_INDEX.out.versions.first() ) bam_bai = BOWTIE2_ALIGN.out.bam - .join(SAMTOOLS_INDEX.out.bai, by:[0], remainder: true) + .join(SAMTOOLS_INDEX.out.bai, remainder: true) SAMTOOLS_STATS ( bam_bai, reference ) ch_versions = ch_versions.mix(SAMTOOLS_STATS.out.versions.first()) From 9feb6c2db6f4d6e16d4a75ceb0e4f901fd5e5f20 Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Thu, 24 Nov 2022 14:44:04 +0100 Subject: [PATCH 473/789] Update MALT --- conf/modules.config | 2 +- modules.json | 2 +- modules/nf-core/malt/run/main.nf | 8 +++----- subworkflows/local/profiling.nf | 2 +- 4 files changed, 6 insertions(+), 8 deletions(-) diff --git a/conf/modules.config b/conf/modules.config index f9d51d8..ea569b6 100644 --- a/conf/modules.config +++ b/conf/modules.config @@ -281,7 +281,7 @@ process { } withName: MALT_RUN { - ext.args = { "${meta.db_params}" } + ext.args = { "${meta.db_params} -m ${params.malt_mode}" } // one run with multiple samples, so fix ID to just db name to ensure clean log name ext.prefix = { "${meta.db_name}" } publishDir = [ diff --git a/modules.json b/modules.json index 62f6539..fabd8db 100644 --- a/modules.json +++ b/modules.json @@ -107,7 +107,7 @@ }, "malt/run": { "branch": "master", - "git_sha": "5e34754d42cd2d5d248ca8673c0a53cdf5624905" + "git_sha": "6d9712f03ec2de8264a50ee4541a617e1e063b51" }, "megan/rma2info": { "branch": "master", diff --git a/modules/nf-core/malt/run/main.nf b/modules/nf-core/malt/run/main.nf index 2b91d90..2e75b4c 100644 --- a/modules/nf-core/malt/run/main.nf +++ b/modules/nf-core/malt/run/main.nf @@ -2,14 +2,13 @@ process MALT_RUN { tag "$meta.id" label 'process_high' - conda (params.enable_conda ? "bioconda::malt=0.41" : null) + conda (params.enable_conda ? "bioconda::malt=0.61" : null) container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/malt:0.41--1' : - 'quay.io/biocontainers/malt:0.41--1' }" + 'https://depot.galaxyproject.org/singularity/malt:0.61--hdfd78af_0' : + 'quay.io/biocontainers/malt:0.61--hdfd78af_0' }" input: tuple val(meta), path(fastqs) - val mode path index output: @@ -38,7 +37,6 @@ process MALT_RUN { -o . \\ $args \\ --inFile ${fastqs.join(' ')} \\ - -m $mode \\ --index $index/ |&tee ${prefix}-malt-run.log cat <<-END_VERSIONS > versions.yml diff --git a/subworkflows/local/profiling.nf b/subworkflows/local/profiling.nf index b86c165..6cac3e1 100644 --- a/subworkflows/local/profiling.nf +++ b/subworkflows/local/profiling.nf @@ -95,7 +95,7 @@ workflow PROFILING { db: it[2] } - MALT_RUN ( ch_input_for_malt.reads, params.malt_mode, ch_input_for_malt.db ) + MALT_RUN ( ch_input_for_malt.reads, ch_input_for_malt.db ) ch_maltrun_for_megan = MALT_RUN.out.rma6 .transpose() From 131b39aa8b3ecfae3d18f781f7440929243ab3a6 Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Thu, 24 Nov 2022 15:49:06 +0100 Subject: [PATCH 474/789] Fix linting --- modules/nf-core/malt/run/meta.yml | 4 ---- 1 file changed, 4 deletions(-) diff --git a/modules/nf-core/malt/run/meta.yml b/modules/nf-core/malt/run/meta.yml index 66f2d7a..8fa1958 100644 --- a/modules/nf-core/malt/run/meta.yml +++ b/modules/nf-core/malt/run/meta.yml @@ -28,10 +28,6 @@ input: type: file description: Input FASTQ files pattern: "*.{fastq.gz,fq.gz}" - - mode: - type: string - description: Program mode - pattern: "Unknown|BlastN|BlastP|BlastX|Classifier" - index: type: directory description: Index/database directory from malt-build From a20b3e3c58a54274f908afdb231739f51eb3da4e Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Thu, 24 Nov 2022 15:51:12 +0100 Subject: [PATCH 475/789] Try to reduce MALT memory --- conf/test.config | 1 + conf/test_nopreprocessing.config | 1 + conf/test_nothing.config | 1 + conf/test_pep.config | 1 + lib/WorkflowMain.groovy | 15 ++++++++------- 5 files changed, 12 insertions(+), 7 deletions(-) diff --git a/conf/test.config b/conf/test.config index 777d9bf..03b8307 100644 --- a/conf/test.config +++ b/conf/test.config @@ -51,6 +51,7 @@ params { process { withName: MALT_RUN { maxForks = 1 + ext.args = "-m ${params.malt_mode} -J-Xmx8G" } withName: MEGAN_RMA2INFO_TSV { maxForks = 1 diff --git a/conf/test_nopreprocessing.config b/conf/test_nopreprocessing.config index 357f76f..c87cf6c 100644 --- a/conf/test_nopreprocessing.config +++ b/conf/test_nopreprocessing.config @@ -45,5 +45,6 @@ params { process { withName: MALT_RUN { maxForks = 1 + ext.args = "-m ${params.malt_mode} -J-Xmx8G" } } diff --git a/conf/test_nothing.config b/conf/test_nothing.config index df09613..0a969a6 100644 --- a/conf/test_nothing.config +++ b/conf/test_nothing.config @@ -44,5 +44,6 @@ params { process { withName: MALT_RUN { maxForks = 1 + ext.args = "-m ${params.malt_mode} -J-Xmx8G" } } diff --git a/conf/test_pep.config b/conf/test_pep.config index 762ebb3..3cd6dd0 100644 --- a/conf/test_pep.config +++ b/conf/test_pep.config @@ -37,6 +37,7 @@ params { process { withName: MALT_RUN { maxForks = 1 + ext.args = "-m ${params.malt_mode} -J-Xmx8G" } withName: MEGAN_RMA2INFO { maxForks = 1 diff --git a/lib/WorkflowMain.groovy b/lib/WorkflowMain.groovy index 7883d70..02d4347 100755 --- a/lib/WorkflowMain.groovy +++ b/lib/WorkflowMain.groovy @@ -12,9 +12,9 @@ class WorkflowMain { // TODO nf-core: Add Zenodo DOI for pipeline after first release //"* The pipeline\n" + //" https://doi.org/10.5281/zenodo.XXXXXXX\n\n" + - "* The nf-core framework\n" + - " https://doi.org/10.1038/s41587-020-0439-x\n\n" + - "* Software dependencies\n" + + '* The nf-core framework\n' + + ' https://doi.org/10.1038/s41587-020-0439-x\n\n' + + '* Software dependencies\n' + " https://github.com/${workflow.manifest.name}/blob/master/CITATIONS.md" } @@ -53,15 +53,15 @@ class WorkflowMain { System.exit(0) } + // Print parameter summary log to screen + + log.info paramsSummaryLog(workflow, params, log) + // Validate workflow parameters via the JSON schema if (params.validate_params) { NfcoreSchema.validateParameters(workflow, params, log) } - // Print parameter summary log to screen - - log.info paramsSummaryLog(workflow, params, log) - // Check that a -profile or Nextflow config has been provided to run the pipeline NfcoreTemplate.checkConfigProvided(workflow, log) @@ -90,4 +90,5 @@ class WorkflowMain { } return null } + } From 17b1e3df1c230f1767deb7cb7f3e1bdf5db09556 Mon Sep 17 00:00:00 2001 From: "James A. Fellows Yates" Date: Thu, 24 Nov 2022 16:53:39 +0100 Subject: [PATCH 476/789] Update test.config --- conf/test.config | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/conf/test.config b/conf/test.config index 03b8307..b3ad7bd 100644 --- a/conf/test.config +++ b/conf/test.config @@ -51,7 +51,7 @@ params { process { withName: MALT_RUN { maxForks = 1 - ext.args = "-m ${params.malt_mode} -J-Xmx8G" + ext.args = "-m ${params.malt_mode} -J-Xmx12G" } withName: MEGAN_RMA2INFO_TSV { maxForks = 1 From f114cc41220c9e48bc3a2f6f6c2e72e5ecade8a8 Mon Sep 17 00:00:00 2001 From: "James A. Fellows Yates" Date: Thu, 24 Nov 2022 16:55:19 +0100 Subject: [PATCH 477/789] Apply suggestions from code review --- conf/test.config | 2 +- conf/test_nopreprocessing.config | 2 +- conf/test_nothing.config | 2 +- conf/test_pep.config | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/conf/test.config b/conf/test.config index b3ad7bd..e79bef4 100644 --- a/conf/test.config +++ b/conf/test.config @@ -51,7 +51,7 @@ params { process { withName: MALT_RUN { maxForks = 1 - ext.args = "-m ${params.malt_mode} -J-Xmx12G" + ext.args = { "-m ${params.malt_mode} -J-Xmx12G" } } withName: MEGAN_RMA2INFO_TSV { maxForks = 1 diff --git a/conf/test_nopreprocessing.config b/conf/test_nopreprocessing.config index c87cf6c..eae6144 100644 --- a/conf/test_nopreprocessing.config +++ b/conf/test_nopreprocessing.config @@ -45,6 +45,6 @@ params { process { withName: MALT_RUN { maxForks = 1 - ext.args = "-m ${params.malt_mode} -J-Xmx8G" + ext.args = { "-m ${params.malt_mode} -J-Xmx12G" } } } diff --git a/conf/test_nothing.config b/conf/test_nothing.config index 0a969a6..ca75380 100644 --- a/conf/test_nothing.config +++ b/conf/test_nothing.config @@ -44,6 +44,6 @@ params { process { withName: MALT_RUN { maxForks = 1 - ext.args = "-m ${params.malt_mode} -J-Xmx8G" + ext.args = { "-m ${params.malt_mode} -J-Xmx12G" } } } diff --git a/conf/test_pep.config b/conf/test_pep.config index 3cd6dd0..6ce788d 100644 --- a/conf/test_pep.config +++ b/conf/test_pep.config @@ -37,7 +37,7 @@ params { process { withName: MALT_RUN { maxForks = 1 - ext.args = "-m ${params.malt_mode} -J-Xmx8G" + ext.args = { "-m ${params.malt_mode} -J-Xmx12G" } } withName: MEGAN_RMA2INFO { maxForks = 1 From f13185d98bcea2d45ccd220d189c6035e347f101 Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Tue, 29 Nov 2022 10:13:46 +0100 Subject: [PATCH 478/789] Fix schema location ofr fastqc/falco option --- nextflow_schema.json | 72 +++++++++++++++++++++++++++++++++----------- 1 file changed, 55 insertions(+), 17 deletions(-) diff --git a/nextflow_schema.json b/nextflow_schema.json index a66b0f1..fd0a031 100644 --- a/nextflow_schema.json +++ b/nextflow_schema.json @@ -10,7 +10,11 @@ "type": "object", "fa_icon": "fas fa-terminal", "description": "Define where the pipeline should find input data and save output data.", - "required": ["input", "databases", "outdir"], + "required": [ + "input", + "databases", + "outdir" + ], "properties": { "input": { "type": "string", @@ -56,6 +60,17 @@ "description": "Common options across both long and short read preprocessing QC steps", "default": "", "properties": { + "preprocessing_qc_tool": { + "type": "string", + "default": "fastqc", + "enum": [ + "fastqc", + "falco" + ], + "help_text": "Falco is designed as a drop-in replacement for FastQC but written in C++ for faster computation. We particularly recommend using falco when using long reads (due to reduced memory constraints), however is also applicable for short reads.", + "description": "Specify the tool used for quality control of raw sequencing reads", + "fa_icon": "fas fa-tools" + }, "save_preprocessed_reads": { "type": "boolean", "fa_icon": "fas fa-save", @@ -80,7 +95,10 @@ "shortread_qc_tool": { "type": "string", "default": "fastp", - "enum": ["fastp", "adapterremoval"], + "enum": [ + "fastp", + "adapterremoval" + ], "fa_icon": "fas fa-tools", "description": "Specify which tool to use for short-read QC" }, @@ -139,7 +157,11 @@ "shortread_complexityfilter_tool": { "type": "string", "default": "bbduk", - "enum": ["bbduk", "prinseqplusplus", "fastp"], + "enum": [ + "bbduk", + "prinseqplusplus", + "fastp" + ], "fa_icon": "fas fa-hammer", "description": "Specify which tool to use for complexity filtering" }, @@ -173,7 +195,10 @@ "shortread_complexityfilter_prinseqplusplus_mode": { "type": "string", "default": "entropy", - "enum": ["entropy", "dust"], + "enum": [ + "entropy", + "dust" + ], "fa_icon": "fas fa-check-square", "description": "Specify the complexity filter mode for PRINSEQ++" }, @@ -347,7 +372,15 @@ "diamond_output_format": { "type": "string", "default": "tsv", - "enum": ["blast", "xml", "txt", "daa", "sam", "tsv", "paf"], + "enum": [ + "blast", + "xml", + "txt", + "daa", + "sam", + "tsv", + "paf" + ], "fa_icon": "fas fa-file", "description": "Specify output format from DIAMOND profiling.", "help_text": "DIAMOND can produce output in a number of different formats, you can specify here which to produce.\n\nNote that DIAMOND can only produce one format at a time, and depending on which you pick, some downstream steps may not be executed. For example, selecting `daa` or `sam` will mean you will not get a tabular taxonomic profile as with the other tools.\n\nWill be overriden by `--diamond_save_reads.`\n\n> Modifies tool parameter(s):\n> - diamond blastx: `--outfmt`" @@ -366,7 +399,14 @@ "kaiju_taxon_rank": { "type": "string", "default": "species", - "enum": ["phylum", "class", "order", "family", "genus", "species"], + "enum": [ + "phylum", + "class", + "order", + "family", + "genus", + "species" + ], "fa_icon": "fas fa-tag", "description": "Specify taxonomic rank to be displayed in Kaiju taxon table", "help_text": "Specify the taxonomic level(s) to be displayed in the resulting Kaiju taxon table, as generated by the kaiju2table helper tool.\n\nThis can be either a single level (e.g. `species`), or a comma separated list to display the full taxonomic path (e.g. `superkingdom,phylum,class,order,family,genus,species.`).\n\n> Modifies tool parameter(s):\n> - kaiju2table: `-l`" @@ -572,7 +612,14 @@ "description": "Method used to save pipeline results to output directory.", "help_text": "The Nextflow `publishDir` option specifies which intermediate files should be saved to the output directory. This option tells the pipeline what method should be used to move these files. See [Nextflow docs](https://www.nextflow.io/docs/latest/process.html#publishdir) for details.", "fa_icon": "fas fa-copy", - "enum": ["symlink", "rellink", "link", "copy", "copyNoFollow", "move"], + "enum": [ + "symlink", + "rellink", + "link", + "copy", + "copyNoFollow", + "move" + ], "hidden": true }, "email_on_fail": { @@ -724,14 +771,5 @@ { "$ref": "#/definitions/reference_genome_options" } - ], - "properties": { - "preprocessing_qc_tool": { - "type": "string", - "default": "fastqc", - "enum": ["fastqc", "falco"], - "help_text": "Falco is designed as a drop-in replacement for FastQC but written in C++ for faster computation. We particularly recommend using falco when using long reads (due to reduced memory constraints), however is also applicable for short reads.", - "description": "Specify the tool used for quality control of raw sequencing reads" - } - } + ] } From ddcf38de22011a59446e5343c7bbcae430a03529 Mon Sep 17 00:00:00 2001 From: "Moritz E. Beber" Date: Tue, 29 Nov 2022 10:14:20 +0100 Subject: [PATCH 479/789] refactor: make mappings explicit --- subworkflows/local/profiling.nf | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/subworkflows/local/profiling.nf b/subworkflows/local/profiling.nf index 18b40b4..4ca2c4c 100644 --- a/subworkflows/local/profiling.nf +++ b/subworkflows/local/profiling.nf @@ -271,17 +271,14 @@ workflow PROFILING { ch_input_for_krakenuniq = ch_input_for_profiling.krakenuniq .map { meta, reads, db_meta, db -> - def meta_new = [:] - meta_new['single_end'] = meta['single_end'] - - [meta_new, reads, db_meta, db] + [[single_end: meta.single_end], reads, db_meta, db] } .groupTuple(by: [0,2,3]) .dump(tag: "krakenuniq_premultimap") .multiMap { - it -> - reads: [ it[0] + it[2], it[1] ] - db: it[3] + single_meta, reads, db_meta, db -> + reads: [ single_meta + db_meta, reads.flatten() ] + db: db } // Hardcode to _always_ produce the report file (which is our basic otput, and goes into) KRAKENUNIQ_PRELOADEDKRAKENUNIQ ( ch_input_for_krakenuniq.reads.dump(tag: "krakenuniq_input"), ch_input_for_krakenuniq.db.dump(tag: "krakenuniq_db"), params.krakenuniq_ram_chunk_size, params.krakenuniq_save_reads, true, params.krakenuniq_save_readclassifications ) From d6c0ebb4c6256375bfc152fa968c738d188958a0 Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Tue, 29 Nov 2022 10:14:33 +0100 Subject: [PATCH 480/789] Prettier --- nextflow_schema.json | 55 +++++++------------------------------------- 1 file changed, 8 insertions(+), 47 deletions(-) diff --git a/nextflow_schema.json b/nextflow_schema.json index fd0a031..ea47d39 100644 --- a/nextflow_schema.json +++ b/nextflow_schema.json @@ -10,11 +10,7 @@ "type": "object", "fa_icon": "fas fa-terminal", "description": "Define where the pipeline should find input data and save output data.", - "required": [ - "input", - "databases", - "outdir" - ], + "required": ["input", "databases", "outdir"], "properties": { "input": { "type": "string", @@ -63,10 +59,7 @@ "preprocessing_qc_tool": { "type": "string", "default": "fastqc", - "enum": [ - "fastqc", - "falco" - ], + "enum": ["fastqc", "falco"], "help_text": "Falco is designed as a drop-in replacement for FastQC but written in C++ for faster computation. We particularly recommend using falco when using long reads (due to reduced memory constraints), however is also applicable for short reads.", "description": "Specify the tool used for quality control of raw sequencing reads", "fa_icon": "fas fa-tools" @@ -95,10 +88,7 @@ "shortread_qc_tool": { "type": "string", "default": "fastp", - "enum": [ - "fastp", - "adapterremoval" - ], + "enum": ["fastp", "adapterremoval"], "fa_icon": "fas fa-tools", "description": "Specify which tool to use for short-read QC" }, @@ -157,11 +147,7 @@ "shortread_complexityfilter_tool": { "type": "string", "default": "bbduk", - "enum": [ - "bbduk", - "prinseqplusplus", - "fastp" - ], + "enum": ["bbduk", "prinseqplusplus", "fastp"], "fa_icon": "fas fa-hammer", "description": "Specify which tool to use for complexity filtering" }, @@ -195,10 +181,7 @@ "shortread_complexityfilter_prinseqplusplus_mode": { "type": "string", "default": "entropy", - "enum": [ - "entropy", - "dust" - ], + "enum": ["entropy", "dust"], "fa_icon": "fas fa-check-square", "description": "Specify the complexity filter mode for PRINSEQ++" }, @@ -372,15 +355,7 @@ "diamond_output_format": { "type": "string", "default": "tsv", - "enum": [ - "blast", - "xml", - "txt", - "daa", - "sam", - "tsv", - "paf" - ], + "enum": ["blast", "xml", "txt", "daa", "sam", "tsv", "paf"], "fa_icon": "fas fa-file", "description": "Specify output format from DIAMOND profiling.", "help_text": "DIAMOND can produce output in a number of different formats, you can specify here which to produce.\n\nNote that DIAMOND can only produce one format at a time, and depending on which you pick, some downstream steps may not be executed. For example, selecting `daa` or `sam` will mean you will not get a tabular taxonomic profile as with the other tools.\n\nWill be overriden by `--diamond_save_reads.`\n\n> Modifies tool parameter(s):\n> - diamond blastx: `--outfmt`" @@ -399,14 +374,7 @@ "kaiju_taxon_rank": { "type": "string", "default": "species", - "enum": [ - "phylum", - "class", - "order", - "family", - "genus", - "species" - ], + "enum": ["phylum", "class", "order", "family", "genus", "species"], "fa_icon": "fas fa-tag", "description": "Specify taxonomic rank to be displayed in Kaiju taxon table", "help_text": "Specify the taxonomic level(s) to be displayed in the resulting Kaiju taxon table, as generated by the kaiju2table helper tool.\n\nThis can be either a single level (e.g. `species`), or a comma separated list to display the full taxonomic path (e.g. `superkingdom,phylum,class,order,family,genus,species.`).\n\n> Modifies tool parameter(s):\n> - kaiju2table: `-l`" @@ -612,14 +580,7 @@ "description": "Method used to save pipeline results to output directory.", "help_text": "The Nextflow `publishDir` option specifies which intermediate files should be saved to the output directory. This option tells the pipeline what method should be used to move these files. See [Nextflow docs](https://www.nextflow.io/docs/latest/process.html#publishdir) for details.", "fa_icon": "fas fa-copy", - "enum": [ - "symlink", - "rellink", - "link", - "copy", - "copyNoFollow", - "move" - ], + "enum": ["symlink", "rellink", "link", "copy", "copyNoFollow", "move"], "hidden": true }, "email_on_fail": { From af8ce2cbfd98ec04e7fd9e74ea0bb2fe58fcede3 Mon Sep 17 00:00:00 2001 From: "Moritz E. Beber" Date: Tue, 29 Nov 2022 10:27:35 +0100 Subject: [PATCH 481/789] chore: update krakenuniq --- modules.json | 2 +- .../krakenuniq/preloadedkrakenuniq/main.nf | 258 ++++++++++++------ .../krakenuniq/preloadedkrakenuniq/meta.yml | 7 +- 3 files changed, 187 insertions(+), 80 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 - - $compress_reads_command - - cat <<-END_VERSIONS > versions.yml - "${task.process}": - krakenuniq: \$(echo \$(krakenuniq --version 2>&1) | sed 's/^.*KrakenUniq version //; s/ .*\$//') - END_VERSIONS - """ + $args + + strip_suffix() { + local result=\$1 + # Strip any file extensions. + echo "\${result%%.*}" + } + + 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 \\ + $args + + strip_suffix() { + local result=\$1 + # Strip any file extensions. + echo "\${result%%.*}" + } + + printf "%s\\n" ${fastqs} | while read FASTQ; do \\ + echo "\${FASTQ}" + PREFIX="\$(strip_suffix "\${FASTQ}")" + echo "\${PREFIX}" + + 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 \\ - $report \\ - $output_option \\ - $unclassified_option \\ - $classified_option \\ - $output_option \\ - $paired \\ - $args2 \\ - \$fastq" - - touch "\$PREFIX".classified.fastq.gz - touch "\$PREFIX".krakenuniq.classified.txt - touch "\$PREFIX".krakenuniq.report.txt - touch "\$PREFIX".unclassified.fastq.gz - done - - $compress_reads_command - - cat <<-END_VERSIONS > versions.yml - "${task.process}": - krakenuniq: \$(echo \$(krakenuniq --version 2>&1) | sed 's/^.*KrakenUniq version //; s/ .*\$//') - END_VERSIONS - """ + $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" From 49af33f68ea7ab216db898adc24fe2489a8c2f03 Mon Sep 17 00:00:00 2001 From: sofstam Date: Tue, 29 Nov 2022 11:07:29 +0100 Subject: [PATCH 482/789] Include NCBI_id, read counts and mgc arguments in motus --- conf/modules.config | 1 + conf/test_motus.config | 3 +++ nextflow.config | 3 +++ 3 files changed, 7 insertions(+) diff --git a/conf/modules.config b/conf/modules.config index f9d51d8..5c35525 100644 --- a/conf/modules.config +++ b/conf/modules.config @@ -446,6 +446,7 @@ process { } withName: MOTUS_PROFILE { + ext.args = { [ params.save_ncbi_id ? "-p" : "", params.save_read_counts ? "-c" : "", params.save_mgc_counts ? "-M ${task.ext.prefix}.mgc" : "" ].join(',').replaceAll(','," ") } ext.prefix = params.perform_runmerging ? { "${meta.id}-${meta.db_name}" } : { "${meta.id}-${meta.run_accession}-${meta.db_name}" } publishDir = [ path: { "${params.outdir}/motus/${meta.db_name}/" }, diff --git a/conf/test_motus.config b/conf/test_motus.config index d167b94..70681dd 100644 --- a/conf/test_motus.config +++ b/conf/test_motus.config @@ -39,5 +39,8 @@ params { run_centrifuge = false run_diamond = false run_motus = true + save_mgc_counts = true + save_ncbi_id = true + save_read_counts = true run_profile_standardisation = true } diff --git a/nextflow.config b/nextflow.config index c59d433..91875b2 100644 --- a/nextflow.config +++ b/nextflow.config @@ -140,6 +140,9 @@ params { // mOTUs run_motus = false + save_mgc_counts = false + save_ncbi_id = false + save_read_counts = false // krona run_krona = false From 0235ef42ca0bf062648bd1b1f7bc18827c545a65 Mon Sep 17 00:00:00 2001 From: sofstam Date: Tue, 29 Nov 2022 11:15:40 +0100 Subject: [PATCH 483/789] Update nextflow_schema.json --- nextflow_schema.json | 69 ++++++++++++++++++++++++++++++++++++++------ 1 file changed, 60 insertions(+), 9 deletions(-) diff --git a/nextflow_schema.json b/nextflow_schema.json index a66b0f1..5df56d8 100644 --- a/nextflow_schema.json +++ b/nextflow_schema.json @@ -10,7 +10,11 @@ "type": "object", "fa_icon": "fas fa-terminal", "description": "Define where the pipeline should find input data and save output data.", - "required": ["input", "databases", "outdir"], + "required": [ + "input", + "databases", + "outdir" + ], "properties": { "input": { "type": "string", @@ -80,7 +84,10 @@ "shortread_qc_tool": { "type": "string", "default": "fastp", - "enum": ["fastp", "adapterremoval"], + "enum": [ + "fastp", + "adapterremoval" + ], "fa_icon": "fas fa-tools", "description": "Specify which tool to use for short-read QC" }, @@ -139,7 +146,11 @@ "shortread_complexityfilter_tool": { "type": "string", "default": "bbduk", - "enum": ["bbduk", "prinseqplusplus", "fastp"], + "enum": [ + "bbduk", + "prinseqplusplus", + "fastp" + ], "fa_icon": "fas fa-hammer", "description": "Specify which tool to use for complexity filtering" }, @@ -173,7 +184,10 @@ "shortread_complexityfilter_prinseqplusplus_mode": { "type": "string", "default": "entropy", - "enum": ["entropy", "dust"], + "enum": [ + "entropy", + "dust" + ], "fa_icon": "fas fa-check-square", "description": "Specify the complexity filter mode for PRINSEQ++" }, @@ -347,7 +361,15 @@ "diamond_output_format": { "type": "string", "default": "tsv", - "enum": ["blast", "xml", "txt", "daa", "sam", "tsv", "paf"], + "enum": [ + "blast", + "xml", + "txt", + "daa", + "sam", + "tsv", + "paf" + ], "fa_icon": "fas fa-file", "description": "Specify output format from DIAMOND profiling.", "help_text": "DIAMOND can produce output in a number of different formats, you can specify here which to produce.\n\nNote that DIAMOND can only produce one format at a time, and depending on which you pick, some downstream steps may not be executed. For example, selecting `daa` or `sam` will mean you will not get a tabular taxonomic profile as with the other tools.\n\nWill be overriden by `--diamond_save_reads.`\n\n> Modifies tool parameter(s):\n> - diamond blastx: `--outfmt`" @@ -366,7 +388,14 @@ "kaiju_taxon_rank": { "type": "string", "default": "species", - "enum": ["phylum", "class", "order", "family", "genus", "species"], + "enum": [ + "phylum", + "class", + "order", + "family", + "genus", + "species" + ], "fa_icon": "fas fa-tag", "description": "Specify taxonomic rank to be displayed in Kaiju taxon table", "help_text": "Specify the taxonomic level(s) to be displayed in the resulting Kaiju taxon table, as generated by the kaiju2table helper tool.\n\nThis can be either a single level (e.g. `species`), or a comma separated list to display the full taxonomic path (e.g. `superkingdom,phylum,class,order,family,genus,species.`).\n\n> Modifies tool parameter(s):\n> - kaiju2table: `-l`" @@ -572,7 +601,14 @@ "description": "Method used to save pipeline results to output directory.", "help_text": "The Nextflow `publishDir` option specifies which intermediate files should be saved to the output directory. This option tells the pipeline what method should be used to move these files. See [Nextflow docs](https://www.nextflow.io/docs/latest/process.html#publishdir) for details.", "fa_icon": "fas fa-copy", - "enum": ["symlink", "rellink", "link", "copy", "copyNoFollow", "move"], + "enum": [ + "symlink", + "rellink", + "link", + "copy", + "copyNoFollow", + "move" + ], "hidden": true }, "email_on_fail": { @@ -729,9 +765,24 @@ "preprocessing_qc_tool": { "type": "string", "default": "fastqc", - "enum": ["fastqc", "falco"], + "enum": [ + "fastqc", + "falco" + ], "help_text": "Falco is designed as a drop-in replacement for FastQC but written in C++ for faster computation. We particularly recommend using falco when using long reads (due to reduced memory constraints), however is also applicable for short reads.", "description": "Specify the tool used for quality control of raw sequencing reads" + }, + "save_mgc_counts": { + "type": "string", + "description": "Save the mgc reads count in mOTUs." + }, + "save_ncbi_id": { + "type": "string", + "description": "Print NCBI id in mOTUs." + }, + "save_read_counts": { + "type": "string", + "description": "Print result as counts instead of relative abundances in mOTUs." } } -} +} \ No newline at end of file From 5254b8d679b64b903984c2d6e21fea9580efacca Mon Sep 17 00:00:00 2001 From: sofstam Date: Tue, 29 Nov 2022 11:25:52 +0100 Subject: [PATCH 484/789] Prettier --- nextflow_schema.json | 1510 +++++++++++++++++++++--------------------- 1 file changed, 739 insertions(+), 771 deletions(-) diff --git a/nextflow_schema.json b/nextflow_schema.json index 5df56d8..58cab0c 100644 --- a/nextflow_schema.json +++ b/nextflow_schema.json @@ -1,788 +1,756 @@ { - "$schema": "http://json-schema.org/draft-07/schema", - "$id": "https://raw.githubusercontent.com/nf-core/taxprofiler/master/nextflow_schema.json", - "title": "nf-core/taxprofiler pipeline parameters", - "description": "Taxonomic profiling of shotgun metagenomic data", - "type": "object", - "definitions": { - "input_output_options": { - "title": "Input/output options", - "type": "object", - "fa_icon": "fas fa-terminal", - "description": "Define where the pipeline should find input data and save output data.", - "required": [ - "input", - "databases", - "outdir" - ], - "properties": { - "input": { - "type": "string", - "format": "file-path", - "mimetype": "text/csv", - "pattern": "^\\S+\\.(csv|yaml|yml)$", - "schema": "assets/schema_input.json", - "description": "Path to comma-separated file containing information about the samples and libraries/runs.", - "help_text": "You will need to create a design file with information about the samples and libraries/runs you want to running in your pipeline run. Use this parameter to specify its location. It has to be a comma-separated file with 6 columns, and a header row. See [usage docs](https://nf-co.re/taxprofiler/usage#samplesheet-input).", - "fa_icon": "fas fa-file-csv" - }, - "databases": { - "type": "string", - "mimetype": "text/csv", - "format": "file-path", - "fa_icon": "fas fa-database", - "description": "Path to comma-separated file containing information about databases and profiling parameters for each taxonomic profiler", - "help_text": "You will need to create a design file with information about the samples in your experiment before running the pipeline. Use this parameter to specify its location. It has to be a comma-separated file with 4 columns, and a header row. See [usage docs](https://nf-co.re/taxprofiler/dev/usage#full-database-sheet).\n\nProfilers will only be executed if a corresponding database are supplied. \n\nWe recommend storing this database sheet somewhere centrally and accessible by others members of your lab/institutions, as this file will likely be regularly reused." - }, - "outdir": { - "type": "string", - "format": "directory-path", - "description": "The output directory where the results will be saved. You have to use absolute paths to storage on Cloud infrastructure.", - "fa_icon": "fas fa-folder-open" - }, - "email": { - "type": "string", - "description": "Email address for completion summary.", - "fa_icon": "fas fa-envelope", - "help_text": "Set this parameter to your e-mail address to get a summary e-mail with details of the run sent to you when the workflow exits. If set in your user config file (`~/.nextflow/config`) then you don't need to specify this on the command line for every run.", - "pattern": "^([a-zA-Z0-9_\\-\\.]+)@([a-zA-Z0-9_\\-\\.]+)\\.([a-zA-Z]{2,5})$" - }, - "multiqc_title": { - "type": "string", - "description": "MultiQC report title. Printed as page header, used for filename if not otherwise specified.", - "fa_icon": "fas fa-file-signature" - } - } - }, - "preprocessing_general_qc_options": { - "title": "Preprocessing general QC options", - "type": "object", - "description": "Common options across both long and short read preprocessing QC steps", - "default": "", - "properties": { - "save_preprocessed_reads": { - "type": "boolean", - "fa_icon": "fas fa-save", - "description": "Save reads from adapter clipping/pair-merging, length filtering for both short and long reads", - "help_text": "This saves the FASTQ output from the following tools:\n\n- fastp\n- AdapterRemoval\n- Porechop\n- Filtlong\n\nThese reads will be a mixture of: adapter clipped, quality trimmed, pair-merged, and length filtered, depending on the parameters you set." - } - }, - "fa_icon": "fas fa-users-cog" - }, - "preprocessing_short_read_qc_options": { - "title": "Preprocessing short-read QC options", - "type": "object", - "description": "Options for adapter clipping, quality trimming, pair-merging, and complexity filtering", - "default": "", - "properties": { - "perform_shortread_qc": { - "type": "boolean", - "fa_icon": "fas fa-toggle-on", - "description": "Turns on short read quality control steps (adapter clipping, complexity filtering etc.)", - "help_text": "Turns on short read quality control steps (adapter clipping, complexity filtering etc.)\n\nThis subworkflow can perform:\n\n- Adapter removal\n- Read quality trimming\n- Read pair merging\n- Length filtering\n- Complexity filtering\n\nEither with fastp or AdapterRemoval.\n\nRemoving adapters (if present) is recommend to reduce false-postive hits that may occur from 'dirty' or 'contaminated' reference genomes in a profiling database that contain accidentially incorporated adapter sequences. Note that some, but not all, tools support paired-end alignment (utilising information about the insert covered by the pairs). However read pair merging in some cases can be recommend to increase read length (such as in aDNA). Length filtering, and/or complexity can speed up alignment by reducing the number of short unspecific reads that need to be aligned." - }, - "shortread_qc_tool": { - "type": "string", - "default": "fastp", - "enum": [ - "fastp", - "adapterremoval" - ], - "fa_icon": "fas fa-tools", - "description": "Specify which tool to use for short-read QC" - }, - "shortread_qc_skipadaptertrim": { - "type": "boolean", - "fa_icon": "fas fa-forward", - "description": "Skip adapter trimming", - "help_text": "Skip the removal of sequencing adapters. \n\nThis often can be useful to speed up run-time of the pipeline when analysing data downloaded from public databases such as the ENA or SRA, as adapters should already be removed (however we recommend to check FastQC results to ensure this is the case)." - }, - "shortread_qc_adapter1": { - "type": "string", - "default": "None", - "fa_icon": "fas fa-grip-lines", - "description": "Specify adapter 1 nucleotide sequence", - "help_text": "Specify a custom forward or R1 adapter sequence to be removed from reads. \n\nIf not set, the selected short-read QC tool's defaults will be used.\n\n> Modifies tool parameter(s):\n> - fastp: `--adapter_sequence`. fastp default: `AGATCGGAAGAGCACACGTCTGAACTCCAGTCA`\n> - AdapterRemoval: `--adapter1`. AdapteRemoval2 default: `AGATCGGAAGAGCACACGTCTGAACTCCAGTCACNNNNNNATCTCGTATGCCGTCTTCTGCTTG`" - }, - "shortread_qc_adapter2": { - "type": "string", - "default": "None", - "fa_icon": "fas fa-grip-lines", - "description": "Specify adapter 2 nucleotide sequence", - "help_text": "Specify a custom reverse or R2 adapter sequence to be removed from reads. \n\nIf not set, the selected short-read QC tool's defaults will be used.\n\n> Modifies tool parameter(s):\n> - fastp: `--adapter_sequence`. fastp default: `AGATCGGAAGAGCGTCGTGTAGGGAAAGAGTGT`\n> - AdapterRemoval: `--adapter1`. AdapteRemoval2 default: `AGATCGGAAGAGCGTCGTGTAGGGAAAGAGTGTAGATCTCGGTGGTCGCCGTATCATT`" - }, - "shortread_qc_adapterlist": { - "type": "string", - "default": "None", - "description": "Specify a list of all possible adapters to trim. Overrides --shortread_qc_adapter1/2. Formats: .txt (AdapterRemoval) or .fasta. (fastp).", - "help_text": "Allows to supply a file with a list of adapter (combinations) to remove from all files. \n\nOverrides the --shortread_qc_adapter1/--shortread_qc_adapter2 parameters . \n\nFor AdapterRemoval this consists of a two column table with a `.txt` extension: first column represents forward strand, second column for reverse strand. You must supply all possible combinations, one per line, and this list is applied to all files. See AdapterRemoval documentation for more information.\n\nFor fastp this consists of a standard FASTA format with a `.fasta`/`.fa`/`.fna`/`.fas` extension. The adapter sequence in this file should be at least 6bp long, otherwise it will be skipped. fastp trims the adapters present in the FASTA file one by one.\n\n> Modifies AdapterRemoval parameter: --adapter-list\n> Modifies fastp parameter: --adapter_fasta" - }, - "shortread_qc_mergepairs": { - "type": "boolean", - "fa_icon": "fas fa-toggle-on", - "description": "Turn on merging of read pairs for paired-end data", - "default": true, - "help_text": "Turn on the merging of read-pairs of paired-end short read sequencing data for AdapterRemoval (this is performed automatically with fastp).\n\n> Modifies tool parameter(s):\n> - AdapterRemoval: `--collapse`\n" - }, - "shortread_qc_excludeunmerged": { - "type": "boolean", - "fa_icon": "far fa-times-circle", - "description": "Discard unmerged reads from paired-end merging", - "help_text": "Turns off the inclusion of unmerged reads in resulting processing FASTQ file of paired-end sequencing data when using `fastp`.\n\nThis can be useful in cases where you prefer to have very short reads (e.g. aDNA), thus excluding longer-reads or possibly faulty reads where one of the pair was discarded.\n\n> Modifies tool parameter(s):\n> - removed from reads `--include_unmerged`\n" - }, - "shortread_qc_minlength": { - "type": "integer", - "default": 15, - "fa_icon": "fas fa-ruler-horizontal", - "description": "Specify the minimum length of reads to be retained", - "help_text": "Specifying a mimum read length filtering can speed up profiling by reducing the number of short unspecific reads that need to be match/aligned to the database.\n\n> Modifies tool parameter(s):\n> - removed from reads `--length_required`\n> - AdapterRemoval: `--minlength`" - }, - "perform_shortread_complexityfilter": { - "type": "boolean", - "fa_icon": "fas fa-toggle-on", - "description": "Turns on nucleotide sequence complexity filtering", - "help_text": "Turns on sequencing complexity filtering. Complexity filtering can be useful to increase run-time by removing unspecific read sequences that do not provide any informative taxon ID." - }, - "shortread_complexityfilter_tool": { - "type": "string", - "default": "bbduk", - "enum": [ - "bbduk", - "prinseqplusplus", - "fastp" - ], - "fa_icon": "fas fa-hammer", - "description": "Specify which tool to use for complexity filtering" - }, - "shortread_complexityfilter_entropy": { - "type": "number", - "default": 0.3, - "fa_icon": "fas fa-random", - "description": "Specify the minimum sequence entropy level for complexity filtering", - "help_text": "Specify the minimum 'entropy' value for complexity filtering for BBDuk or PRINSEQ++.\n\nNote that this value will only be used for PRINSEQ++ if `--shortread_complexityfilter_prinseqplusplus_mode` is set to `entropy`.\n\nEntropy here corresponds to the amount of sequence variation exists within the read. Higher values correspond to more variety, and thus will likely reslut in more specific matching to a taxon's reference genome. The trade off here is fewer reads (or abundance information) available for having a confident identification.\n\n\n> Modifies tool parameter(s):\n> - BBDuk: `entropy=`\n> - PRINSEQ++: `-lc_entropy`\n\n" - }, - "shortread_complexityfilter_bbduk_windowsize": { - "type": "integer", - "default": 50, - "fa_icon": "far fa-window-maximize", - "description": "Specify the window size for BBDuk complexity filtering", - "help_text": "Specify the window size to calculate the level entropy within for BBDuk.\n\n> Modifies tool parameter(s):\n> - BBDuk: `entropywindow=`" - }, - "shortread_complexityfilter_bbduk_mask": { - "type": "boolean", - "fa_icon": "fas fa-mask", - "description": "Turn on masking rather than discarding of low complexity reads for BBduk", - "help_text": "Turn on masking of low-complexity reads (i.e., replacement with `N`) rather than removal.\n\n> Modifies tool parameter(s)\n> - BBDuk: `entropymask=`" - }, - "shortread_complexityfilter_fastp_threshold": { - "type": "integer", - "default": 30, - "fa_icon": "fas fa-sort-numeric-down", - "description": "Specify the minimum complexity filter threshold of fastp", - "help_text": "Specify the minimum sequence complexity value for fastp. This value corresponds to the percentage of bases that is different from it's adjacent bases.\n\n> Modifies tool parameter(s):\n> - removed from reads `--complexity_threshold`" - }, - "shortread_complexityfilter_prinseqplusplus_mode": { - "type": "string", - "default": "entropy", - "enum": [ - "entropy", - "dust" - ], - "fa_icon": "fas fa-check-square", - "description": "Specify the complexity filter mode for PRINSEQ++" - }, - "shortread_complexityfilter_prinseqplusplus_dustscore": { - "type": "number", - "default": 0.5, - "fa_icon": "fas fa-head-side-mask", - "description": "Specify the minimum dust score for PRINTSEQ++ complexity filtering", - "help_text": "Specify the minimum dust score below which low-complexity reads will be removed. A DUST score is based on how often different tri-nucleotides occur along a read.\n\n> Modifies tool parameter(s):\n> - PRINSEQ++: `--lc_dust`" - }, - "save_complexityfiltered_reads": { - "type": "boolean", - "fa_icon": "fas fa-save", - "description": "Save complexity filtered short-reads", - "help_text": "Specify whether to save the final complexity filtered reads in your results directory (`--outdir`)." - } - }, - "fa_icon": "fas fa-compress-alt" - }, - "preprocessing_long_read_qc_options": { - "title": "Preprocessing long-read QC options", - "type": "object", - "description": "Options for adapter clipping, quality trimming, and length filtering", - "default": "", - "properties": { - "perform_longread_qc": { - "type": "boolean", - "fa_icon": "fas fa-toggle-on", - "description": "Turns on long read quality control steps (adapter clipping, length filtering etc.)", - "help_text": "Turns on long read quality control steps (adapter clipping, length and/or quality filtering.)\n\nRemoving adapters (if present) is recommend to reduce false-postive hits that may occur from 'dirty' or 'contaminated' reference genomes in a profiling database that contain accidentially incorporated adapter sequences.\n\nLength filtering, and quality filtering can speed up alignment by reducing the number of unspecific reads that need to be aligned." - }, - "longread_qc_skipadaptertrim": { - "type": "boolean", - "description": "Skip long-read trimming", - "fa_icon": "fas fa-forward", - "help_text": "Skip removal of adapters by Porechop. This can be useful in some cases to speed up run time - particularly when you are running data downloading from public databases such as the ENA/SRA that should already have adapters removed. We recommend that you check your FastQC results this is indeed the case." - }, - "longread_qc_skipqualityfilter": { - "type": "boolean", - "description": "Skip long-read length and quality filtering", - "fa_icon": "fas fa-forward", - "help_text": "Skip removal of quality filtering with Filtlong. This will skip length, percent reads, and target bases filtering (see other `--longread_qc_qualityfilter_*` parameters)." - }, - "longread_qc_qualityfilter_minlength": { - "type": "integer", - "default": 1000, - "description": "Specify the minimum length of reads to be retained", - "fa_icon": "fas fa-ruler-horizontal", - "help_text": "Specify the minimum of length of reads to be kept for downstream analysis.\n\n> Modifies tool parameter(s):\n> - Filtlong: `--min_length`" - }, - "longread_qc_qualityfilter_keeppercent": { - "type": "integer", - "default": 90, - "description": "Specify the percent of high-quality bases to be retained", - "fa_icon": "fas fa-percentage", - "help_text": "Throw out the remaining percentage of reads outside the value. This is measured by bp, not by read count. So this option throws out the worst e.g. 10% of read bases if the parameter is set to `90`. _Modified from [Filtlong documentation](https://github.com/rrwick/Filtlong)_\n\n> Modifies tool parameter(s):\n> - Filtlong: `--keep_percent`" - }, - "longread_qc_qualityfilter_targetbases": { - "type": "integer", - "default": 500000000, - "description": "Specify the number of high-quality bases in the library to be retained", - "fa_icon": "fas fa-bullseye", - "help_text": "Removes the worst reads until only the specified value of bases remain, useful for very large read sets. If the input read set is less than the specified value, this setting will have no effect. _Modified from [Filtlong documentation](https://github.com/rrwick/Filtlong)_\n\n> Modifies tool parameter(s):\n> - Filtlong: `--keep_percent`" - } - }, - "fa_icon": "fas fa-expand-alt" - }, - "preprocessing_host_removal_options": { - "title": "Preprocessing host removal options", - "type": "object", - "description": "Options for pre-profiling host read removal", - "default": "", - "properties": { - "perform_shortread_hostremoval": { - "type": "boolean", - "fa_icon": "fas fa-toggle-on", - "description": "Turn on short-read host removal", - "help_text": "Turns on the ability to remove short-reads from the that derived from a known organism, using Bowtie2 and samtools\n\nThis subworkflow is useful to remove reads that may come from a host, or a known contamination like the human reference genome. Human DNA contamination of (microbial) reference genomes is well known, so removal of these prior profiling both reduces the risks of false positives, and in _some cases_ a faster runtime (as less reads need to be profiled).\n\nAlternatively, you can include the reference genome within your profiling databases and can turn off this subworkflow, with the trade off of a larger taxonomic profiling database." - }, - "perform_longread_hostremoval": { - "type": "boolean", - "fa_icon": "fas fa-toggle-on", - "description": "Turn on long-read host removal", - "help_text": "Turns on the ability to remove long-reads from the that derived from a known organism, using minimap2 and samtools\n\nThis subworkflow is useful to remove reads that may come from a host, or a known contamination like the human reference genome. Human DNA contamination of (microbial) reference genomes is well known, so removal of these prior profiling both reduces the risks of false positives, and in _some cases_ a faster runtime (as less reads need to be profiled).\n\nAlternatively, you can include the reference genome within your profiling databases and can turn off this subworkflow, with the trade off of a larger taxonomic profiling database." - }, - "hostremoval_reference": { - "type": "string", - "default": "None", - "fa_icon": "fas fa-file-alt", - "description": "Specify path to single reference FASTA of host(s) genome(s)", - "help_text": "Specify a path to the FASTA file (optionally gzipped) of the reference genome of the organism to be removed.\n\nIf you have two or more host organisms or contaminants you wish to remove, you can concatenate the FASTAs of the different taxa into a single one to provide to the pipeline." - }, - "shortread_hostremoval_index": { - "type": "string", - "default": "None", - "fa_icon": "fas fa-address-book", - "description": "Specify path to the directory containing pre-made BowTie2 indexes of the host removal reference", - "help_text": "Specify the path to a _directory_ containing pre-made Bowtie2 reference index files (i.e. the directory containing `.bt1`, `.bt2` files etc.). These should sit in the same directory alongside the the reference file specified in `--hostremoval_reference`.\n\nSpecifying premade indices can speed up runtime of the host-removal step, however if not supplied the pipeline will generate the indices for you." - }, - "longread_hostremoval_index": { - "type": "string", - "default": "None", - "fa_icon": "fas fa-address-book", - "description": "Specify path to a pre-made Minimap2 index file (.mmi) of the host removal reference", - "help_text": "Specify path to a pre-made Minimap2 index file (.mmi) of the host removal reference file given to `--hostremoval_reference`.\n\nSpecifying a premade index file can speed up runtime of the host-removal step, however if not supplied the pipeline will generate the indices for you." - }, - "save_hostremoval_index": { - "type": "boolean", - "fa_icon": "fas fa-save", - "description": "Save mapping index of input reference when not already supplied by user", - "help_text": "Save the output files of the in-built indexing of the host genome.\n\nThis is recommend to be turned on if you plan to use the same reference genome multiple times, as supplying the directory or file to `--shortread_hostremoval_index` or `--longread_hostremoval_index` respectively can speed up runtime of future runs. Once generated, we recommend you place this file _outside_ of your run results directory in a central 'cache' directory you and others using your machine can access and supply to the pipeline." - }, - "save_hostremoval_mapped": { - "type": "boolean", - "fa_icon": "fas fa-save", - "description": "Save mapped reads in BAM format from host removal", - "help_text": "Save the reads mapped to the reference genome in BAM format as output by the respective hostremoval alignment tool.\n\nThis can be useful if you wish to perform other analyses on the host organism (such as host-microbe interaction), however, you should consider whether the default mapping parameters of Bowtie2 (short-read) or minimap2 (long-read) are optimised to your context. " - }, - "save_hostremoval_unmapped": { - "type": "boolean", - "fa_icon": "fas fa-save", - "description": "Save unmapped reads in FASTQ format from host removal", - "help_text": "Save the unreads mapped to the reference genome in FASTQ format (as exported from `samtools view`).\n\nThis can be useful if you wish to perform other analyses on the off-target reads from the host mapping, such as manual profiling or _de novo_ assembly." - } - }, - "fa_icon": "fas fa-user-times" - }, - "preprocessing_run_merging_options": { - "title": "Preprocessing run merging options", - "type": "object", - "description": "Options for per-sample run-merging", - "default": "", - "properties": { - "perform_runmerging": { - "type": "boolean", - "fa_icon": "fas fa-toggle-on", - "description": "Turn on run merging", - "help_text": "Turns on the concatenation of sequencing runs or libraries with the same sample name.\n\nThis can be useful to ensure you get a single profile per sample, rather than one profile per run or library. Note that in some cases comparing profiles of independent _libraries_ may be useful, so this parameter may not always be suitable. " - }, - "save_runmerged_reads": { - "type": "boolean", - "fa_icon": "fas fa-save", - "description": "Save run-concatenated input FASTQ files for each sample", - "help_text": "Save the run- and library-concatenated reads of a given sample in FASTQ format." - } - }, - "fa_icon": "fas fa-clipboard-check" - }, - "profiling_options": { - "title": "Profiling options", - "type": "object", - "description": "", - "default": "", - "properties": { - "run_centrifuge": { - "type": "boolean", - "fa_icon": "fas fa-toggle-on", - "description": "Turn on profiling with Centrifuge. Requires database to be present CSV file passed to --databases" - }, - "centrifuge_save_reads": { - "type": "boolean", - "fa_icon": "fas fa-save", - "description": "Turn on saving of Centrifuge-aligned reads", - "help_text": "Save mapped (SAM, FASTQ) and unmapped (FASTQ) reads from alignment step of centrifuge in your output results directory.\n\n> Modifies tool parameter(s):\n> - centrifuge: `--un-gz`, `--al-gz`, `--un-conc-gz`, `--al-conc-gz`, `--out-fmt`" - }, - "run_diamond": { - "type": "boolean", - "fa_icon": "fas fa-toggle-on", - "description": "Turn on profiling with DIAMOND. Requires database to be present CSV file passed to --databases" - }, - "diamond_output_format": { - "type": "string", - "default": "tsv", - "enum": [ - "blast", - "xml", - "txt", - "daa", - "sam", - "tsv", - "paf" - ], - "fa_icon": "fas fa-file", - "description": "Specify output format from DIAMOND profiling.", - "help_text": "DIAMOND can produce output in a number of different formats, you can specify here which to produce.\n\nNote that DIAMOND can only produce one format at a time, and depending on which you pick, some downstream steps may not be executed. For example, selecting `daa` or `sam` will mean you will not get a tabular taxonomic profile as with the other tools.\n\nWill be overriden by `--diamond_save_reads.`\n\n> Modifies tool parameter(s):\n> - diamond blastx: `--outfmt`" - }, - "diamond_save_reads": { - "type": "boolean", - "fa_icon": "fas fa-save", - "description": "Turn on saving of DIAMOND-aligned reads. Will override --diamond_output_format and no taxon tables will be generated", - "help_text": "Save aligned reads in SAM format from alignment step of DIAMOND in your output results directory.\n\nNote this explicitly overrides `--diamond_output_format` to produce the SAM file, and no taxon table will be generated.\n\n> Modifies tool parameter(s):\n> - DIAMOND: `--outfmt`" - }, - "run_kaiju": { - "type": "boolean", - "fa_icon": "fas fa-toggle-on", - "description": "Turn on profiling with Kaiju. Requires database to be present CSV file passed to --databases" - }, - "kaiju_taxon_rank": { - "type": "string", - "default": "species", - "enum": [ - "phylum", - "class", - "order", - "family", - "genus", - "species" - ], - "fa_icon": "fas fa-tag", - "description": "Specify taxonomic rank to be displayed in Kaiju taxon table", - "help_text": "Specify the taxonomic level(s) to be displayed in the resulting Kaiju taxon table, as generated by the kaiju2table helper tool.\n\nThis can be either a single level (e.g. `species`), or a comma separated list to display the full taxonomic path (e.g. `superkingdom,phylum,class,order,family,genus,species.`).\n\n> Modifies tool parameter(s):\n> - kaiju2table: `-l`" - }, - "run_kraken2": { - "type": "boolean", - "fa_icon": "fas fa-toggle-on", - "description": "Turn on profiling with Kraken2. Requires database to be present CSV file passed to --databases" - }, - "kraken2_save_reads": { - "type": "boolean", - "fa_icon": "fas fa-save", - "description": "Turn on saving of Kraken2-aligned reads", - "help_text": "Save reads that do and do not have a taxonomic classification in your output results directory in FASTQ format.\n\n> Modifies tool parameter(s):\n> - kraken2: `--classified-out` and `--unclassified-out`" - }, - "kraken2_save_readclassification": { - "type": "boolean", - "fa_icon": "fas fa-save", - "description": "Turn on saving of Kraken2 per-read taxonomic assignment file", - "help_text": "Save a text file that contains a list of each read that had a taxonomic assignment, with information on specific taxonomic taxonomic assignment that that read recieved.\n\n> Modifies tool parameter(s):\n> - kraken2: `--output`" - }, - "kraken2_save_minimizers": { - "type": "boolean", - "description": "Turn on saving minimizer information in the kraken2 report thus increasing to an eight column layout.", - "fa_icon": "fas fa-save", - "help_text": "Turn on saving minimizer information in the kraken2 report thus increasing to an eight column layout.\n\nAdds `--report-minimizer-data` to the kraken2 command." - }, - "run_bracken": { - "type": "boolean", - "description": "Post-process kraken2 reports with Bracken.", - "fa_icon": "fas fa-toggle-on" - }, - "run_malt": { - "type": "boolean", - "fa_icon": "fas fa-toggle-on", - "description": "Turn on profiling with MALT. Requires database to be present CSV file passed to --databases" - }, - "malt_mode": { - "type": "string", - "default": "BlastN", - "fa_icon": "fas fa-check-square", - "description": "Specify which MALT alignment mode to use", - "help_text": "Specify which version of MALT alignment to use.\n\nBlastN is generally recommended (nucleotide-nucleotide alignment), but particularly for very short reads (such as aDNA), whereas BlastX mode is similar to DIAMOND and will translate the nucleotide to amino acid sequences. Note each type of alignment mode requires different parameters during database construction. Refer to the MALT manual for more information.\n\n> Modifies tool parameter(s):\n> - malt-run: `-mode` " - }, - "malt_save_reads": { - "type": "boolean", - "fa_icon": "fas fa-save", - "description": "Turn on saving of MALT-aligned reads", - "help_text": "Turns on saving of MALT aligned reads in SAM format.\n\nNote that the SAM format produce by MALT is not completely valid, and may not work with downstream tools.\n\n> Modifies tool parameter(s):\n> - malt-run: `--alignments`, `-za`" - }, - "malt_generate_megansummary": { - "type": "boolean", - "fa_icon": "fas fa-save", - "description": "Turn on generation of MEGAN summary file from MALT results", - "help_text": "Turns on saving of MALT output in an additional MEGAN summary file (`.megan`) that can be loaded into the MEGAN metagenomic exploration tool.\n\nNote: this file is generated not directly from MALT but rather then MEGAN utility script `rma2info`.\n\n> Modifies tool parameter(s):\n> - rma2info: `-es`" - }, - "run_metaphlan3": { - "type": "boolean", - "description": "Turn on profiling with MetaPhlAn3. Requires database to be present CSV file passed to --databases", - "fa_icon": "fas fa-toggle-on" - }, - "run_motus": { - "type": "boolean", - "fa_icon": "fas fa-toggle-on", - "description": "Turn on profiling with mOTUs. Requires database to be present CSV file passed to --databases" - } - }, - "fa_icon": "fas fa-align-center" - }, - "postprocessing_and_visualisation_options": { - "title": "Postprocessing and visualisation options", - "type": "object", - "description": "", - "default": "", - "properties": { - "run_profile_standardisation": { - "type": "boolean", - "fa_icon": "fas fa-toggle-on", - "description": "Turn on standardisation of taxon tables across profilers", - "help_text": "Turns on standardisation of output OTU tables across all tools; each into a TSV format following the following scheme:\n\n|TAXON | SAMPLE_A | SAMPLE_B |\n|-------------|----------------|-----------------|\n| taxon_a | 32 | 123 |\n| taxon_b | 1 | 5 |\n\nThis currently only is generated for mOTUs." - }, - "generate_biom_output": { - "type": "boolean", - "fa_icon": "fas fa-toggle-on", - "description": "Turn on generation of BIOM output (currently only applies to mOTUs)", - "help_text": "Turn on the saving of the taxonomic output in BIOM format (`.biom`) in the results directory of your pipeline run, instead of the default TSV format.\n\nNote this file is from the output of the `motus merge` command.\n\n> Modifies tool parameter(s):\n> - `-B -o`" - }, - "run_krona": { - "type": "boolean", - "fa_icon": "fas fa-toggle-on", - "description": "Turn on generation of Krona plots for supported profilers", - "help_text": "Turn on the generation of Krona interactive pie-chart HTMLs for a selection of profilers.\n\nThe tools currently supported are:\n\n- centrifuge\n- kraken2\n- kaiju\n- MALT" - }, - "krona_taxonomy_directory": { - "type": "string", - "default": "None", - "fa_icon": "fas fa-folder-open", - "description": "Specify path to krona taxonomy directories (required for MALT krona plots)", - "help_text": "Specify a path to a Krona taxonomy database directory (i.e. a directory containing a krona generated `.tab` file).\n\nThis is only required for generating Krona plots of MALT output.\n\nNote this taxonomy database must be downloaded and generated with the `updateTaxonomy.sh` script from the krona-tools package." - } - }, - "fa_icon": "fas fa-chart-line" - }, - "institutional_config_options": { - "title": "Institutional config options", - "type": "object", - "fa_icon": "fas fa-university", - "description": "Parameters used to describe centralised config profiles. These should not be edited.", - "help_text": "The centralised nf-core configuration profiles use a handful of pipeline parameters to describe themselves. This information is then printed to the Nextflow log when you run a pipeline. You should not need to change these values when you run a pipeline.", - "properties": { - "custom_config_version": { - "type": "string", - "description": "Git commit id for Institutional configs.", - "default": "master", - "hidden": true, - "fa_icon": "fas fa-users-cog" - }, - "custom_config_base": { - "type": "string", - "description": "Base directory for Institutional configs.", - "default": "https://raw.githubusercontent.com/nf-core/configs/master", - "hidden": true, - "help_text": "If you're running offline, Nextflow will not be able to fetch the institutional config files from the internet. If you don't need them, then this is not a problem. If you do need them, you should download the files from the repo and tell Nextflow where to find them with this parameter.", - "fa_icon": "fas fa-users-cog" - }, - "config_profile_name": { - "type": "string", - "description": "Institutional config name.", - "hidden": true, - "fa_icon": "fas fa-users-cog" - }, - "config_profile_description": { - "type": "string", - "description": "Institutional config description.", - "hidden": true, - "fa_icon": "fas fa-users-cog" - }, - "config_profile_contact": { - "type": "string", - "description": "Institutional config contact information.", - "hidden": true, - "fa_icon": "fas fa-users-cog" - }, - "config_profile_url": { - "type": "string", - "description": "Institutional config URL link.", - "hidden": true, - "fa_icon": "fas fa-users-cog" - } - } - }, - "max_job_request_options": { - "title": "Max job request options", - "type": "object", - "fa_icon": "fab fa-acquisitions-incorporated", - "description": "Set the top limit for requested resources for any single job.", - "help_text": "If you are running on a smaller system, a pipeline step requesting more resources than are available may cause the Nextflow to stop the run with an error. These options allow you to cap the maximum resources requested by any single job so that the pipeline will run on your system.\n\nNote that you can not _increase_ the resources requested by any job using these options. For that you will need your own configuration file. See [the nf-core website](https://nf-co.re/usage/configuration) for details.", - "properties": { - "max_cpus": { - "type": "integer", - "description": "Maximum number of CPUs that can be requested for any single job.", - "default": 16, - "fa_icon": "fas fa-microchip", - "hidden": true, - "help_text": "Use to set an upper-limit for the CPU requirement for each process. Should be an integer e.g. `--max_cpus 1`" - }, - "max_memory": { - "type": "string", - "description": "Maximum amount of memory that can be requested for any single job.", - "default": "128.GB", - "fa_icon": "fas fa-memory", - "pattern": "^\\d+(\\.\\d+)?\\.?\\s*(K|M|G|T)?B$", - "hidden": true, - "help_text": "Use to set an upper-limit for the memory requirement for each process. Should be a string in the format integer-unit e.g. `--max_memory '8.GB'`" - }, - "max_time": { - "type": "string", - "description": "Maximum amount of time that can be requested for any single job.", - "default": "240.h", - "fa_icon": "far fa-clock", - "pattern": "^(\\d+\\.?\\s*(s|m|h|day)\\s*)+$", - "hidden": true, - "help_text": "Use to set an upper-limit for the time requirement for each process. Should be a string in the format integer-unit e.g. `--max_time '2.h'`" - } - } - }, - "generic_options": { - "title": "Generic options", - "type": "object", - "fa_icon": "fas fa-file-import", - "description": "Less common options for the pipeline, typically set in a config file.", - "help_text": "These options are common to all nf-core pipelines and allow you to customise some of the core preferences for how the pipeline runs.\n\nTypically these options would be set in a Nextflow config file loaded for all pipeline runs, such as `~/.nextflow/config`.", - "properties": { - "help": { - "type": "boolean", - "description": "Display help text.", - "fa_icon": "fas fa-question-circle", - "hidden": true - }, - "publish_dir_mode": { - "type": "string", - "default": "copy", - "description": "Method used to save pipeline results to output directory.", - "help_text": "The Nextflow `publishDir` option specifies which intermediate files should be saved to the output directory. This option tells the pipeline what method should be used to move these files. See [Nextflow docs](https://www.nextflow.io/docs/latest/process.html#publishdir) for details.", - "fa_icon": "fas fa-copy", - "enum": [ - "symlink", - "rellink", - "link", - "copy", - "copyNoFollow", - "move" - ], - "hidden": true - }, - "email_on_fail": { - "type": "string", - "description": "Email address for completion summary, only when pipeline fails.", - "fa_icon": "fas fa-exclamation-triangle", - "pattern": "^([a-zA-Z0-9_\\-\\.]+)@([a-zA-Z0-9_\\-\\.]+)\\.([a-zA-Z]{2,5})$", - "help_text": "An email address to send a summary email to when the pipeline is completed - ONLY sent if the pipeline does not exit successfully.", - "hidden": true - }, - "plaintext_email": { - "type": "boolean", - "description": "Send plain-text email instead of HTML.", - "fa_icon": "fas fa-remove-format", - "hidden": true - }, - "max_multiqc_email_size": { - "type": "string", - "description": "File size limit when attaching MultiQC reports to summary emails.", - "pattern": "^\\d+(\\.\\d+)?\\.?\\s*(K|M|G|T)?B$", - "default": "25.MB", - "fa_icon": "fas fa-file-upload", - "hidden": true - }, - "monochrome_logs": { - "type": "boolean", - "description": "Do not use coloured log outputs.", - "fa_icon": "fas fa-palette", - "hidden": true - }, - "hook_url": { - "type": "string", - "description": "Incoming hook URL for messaging service", - "fa_icon": "fas fa-people-group", - "help_text": "Incoming hook URL for messaging service. Currently, only MS Teams is supported.", - "hidden": true - }, - "multiqc_config": { - "type": "string", - "description": "Custom config file to supply to MultiQC.", - "fa_icon": "fas fa-cog", - "hidden": true - }, - "multiqc_logo": { - "type": "string", - "description": "Custom logo file to supply to MultiQC. File name must also be set in the MultiQC config file", - "fa_icon": "fas fa-image", - "hidden": true - }, - "multiqc_methods_description": { - "type": "string", - "description": "Custom MultiQC yaml file containing HTML including a methods description.", - "fa_icon": "fas fa-cog" - }, - "tracedir": { - "type": "string", - "description": "Directory to keep pipeline Nextflow logs and reports.", - "default": "${params.outdir}/pipeline_info", - "fa_icon": "fas fa-cogs", - "hidden": true - }, - "validate_params": { - "type": "boolean", - "description": "Boolean whether to validate parameters against the schema at runtime", - "default": true, - "fa_icon": "fas fa-check-square", - "hidden": true - }, - "show_hidden_params": { - "type": "boolean", - "fa_icon": "far fa-eye-slash", - "description": "Show all params when using `--help`", - "hidden": true, - "help_text": "By default, parameters set as _hidden_ in the schema are not shown on the command line when a user runs with `--help`. Specifying this option will tell the pipeline to show all parameters." - }, - "enable_conda": { - "type": "boolean", - "description": "Run this workflow with Conda. You can also use '-profile conda' instead of providing this parameter.", - "hidden": true, - "fa_icon": "fas fa-bacon" - } - } - }, - "reference_genome_options": { - "title": "Reference genome options", - "type": "object", - "fa_icon": "fas fa-dna", - "description": "Reference genome related files and options required for the workflow.", - "properties": { - "genome": { - "type": "string", - "description": "Name of iGenomes reference.", - "fa_icon": "fas fa-book", - "help_text": "If using a reference genome configured in the pipeline using iGenomes, use this parameter to give the ID for the reference. This is then used to build the full paths for all required reference genome files e.g. `--genome GRCh38`. \n\nSee the [nf-core website docs](https://nf-co.re/usage/reference_genomes) for more details.", - "hidden": true - }, - "igenomes_base": { - "type": "string", - "format": "directory-path", - "description": "Directory / URL base for iGenomes references.", - "default": "s3://ngi-igenomes/igenomes", - "fa_icon": "fas fa-cloud-download-alt", - "hidden": true - }, - "igenomes_ignore": { - "type": "boolean", - "description": "Do not load the iGenomes reference config.", - "fa_icon": "fas fa-ban", - "hidden": true, - "help_text": "Do not load `igenomes.config` when running the pipeline. You may choose this option if you observe clashes between custom parameters and those supplied in `igenomes.config`." - } - } + "$schema": "http://json-schema.org/draft-07/schema", + "$id": "https://raw.githubusercontent.com/nf-core/taxprofiler/master/nextflow_schema.json", + "title": "nf-core/taxprofiler pipeline parameters", + "description": "Taxonomic profiling of shotgun metagenomic data", + "type": "object", + "definitions": { + "input_output_options": { + "title": "Input/output options", + "type": "object", + "fa_icon": "fas fa-terminal", + "description": "Define where the pipeline should find input data and save output data.", + "required": ["input", "databases", "outdir"], + "properties": { + "input": { + "type": "string", + "format": "file-path", + "mimetype": "text/csv", + "pattern": "^\\S+\\.(csv|yaml|yml)$", + "schema": "assets/schema_input.json", + "description": "Path to comma-separated file containing information about the samples and libraries/runs.", + "help_text": "You will need to create a design file with information about the samples and libraries/runs you want to running in your pipeline run. Use this parameter to specify its location. It has to be a comma-separated file with 6 columns, and a header row. See [usage docs](https://nf-co.re/taxprofiler/usage#samplesheet-input).", + "fa_icon": "fas fa-file-csv" + }, + "databases": { + "type": "string", + "mimetype": "text/csv", + "format": "file-path", + "fa_icon": "fas fa-database", + "description": "Path to comma-separated file containing information about databases and profiling parameters for each taxonomic profiler", + "help_text": "You will need to create a design file with information about the samples in your experiment before running the pipeline. Use this parameter to specify its location. It has to be a comma-separated file with 4 columns, and a header row. See [usage docs](https://nf-co.re/taxprofiler/dev/usage#full-database-sheet).\n\nProfilers will only be executed if a corresponding database are supplied. \n\nWe recommend storing this database sheet somewhere centrally and accessible by others members of your lab/institutions, as this file will likely be regularly reused." + }, + "outdir": { + "type": "string", + "format": "directory-path", + "description": "The output directory where the results will be saved. You have to use absolute paths to storage on Cloud infrastructure.", + "fa_icon": "fas fa-folder-open" + }, + "email": { + "type": "string", + "description": "Email address for completion summary.", + "fa_icon": "fas fa-envelope", + "help_text": "Set this parameter to your e-mail address to get a summary e-mail with details of the run sent to you when the workflow exits. If set in your user config file (`~/.nextflow/config`) then you don't need to specify this on the command line for every run.", + "pattern": "^([a-zA-Z0-9_\\-\\.]+)@([a-zA-Z0-9_\\-\\.]+)\\.([a-zA-Z]{2,5})$" + }, + "multiqc_title": { + "type": "string", + "description": "MultiQC report title. Printed as page header, used for filename if not otherwise specified.", + "fa_icon": "fas fa-file-signature" + } + } + }, + "preprocessing_general_qc_options": { + "title": "Preprocessing general QC options", + "type": "object", + "description": "Common options across both long and short read preprocessing QC steps", + "default": "", + "properties": { + "save_preprocessed_reads": { + "type": "boolean", + "fa_icon": "fas fa-save", + "description": "Save reads from adapter clipping/pair-merging, length filtering for both short and long reads", + "help_text": "This saves the FASTQ output from the following tools:\n\n- fastp\n- AdapterRemoval\n- Porechop\n- Filtlong\n\nThese reads will be a mixture of: adapter clipped, quality trimmed, pair-merged, and length filtered, depending on the parameters you set." + } + }, + "fa_icon": "fas fa-users-cog" + }, + "preprocessing_short_read_qc_options": { + "title": "Preprocessing short-read QC options", + "type": "object", + "description": "Options for adapter clipping, quality trimming, pair-merging, and complexity filtering", + "default": "", + "properties": { + "perform_shortread_qc": { + "type": "boolean", + "fa_icon": "fas fa-toggle-on", + "description": "Turns on short read quality control steps (adapter clipping, complexity filtering etc.)", + "help_text": "Turns on short read quality control steps (adapter clipping, complexity filtering etc.)\n\nThis subworkflow can perform:\n\n- Adapter removal\n- Read quality trimming\n- Read pair merging\n- Length filtering\n- Complexity filtering\n\nEither with fastp or AdapterRemoval.\n\nRemoving adapters (if present) is recommend to reduce false-postive hits that may occur from 'dirty' or 'contaminated' reference genomes in a profiling database that contain accidentially incorporated adapter sequences. Note that some, but not all, tools support paired-end alignment (utilising information about the insert covered by the pairs). However read pair merging in some cases can be recommend to increase read length (such as in aDNA). Length filtering, and/or complexity can speed up alignment by reducing the number of short unspecific reads that need to be aligned." + }, + "shortread_qc_tool": { + "type": "string", + "default": "fastp", + "enum": ["fastp", "adapterremoval"], + "fa_icon": "fas fa-tools", + "description": "Specify which tool to use for short-read QC" + }, + "shortread_qc_skipadaptertrim": { + "type": "boolean", + "fa_icon": "fas fa-forward", + "description": "Skip adapter trimming", + "help_text": "Skip the removal of sequencing adapters. \n\nThis often can be useful to speed up run-time of the pipeline when analysing data downloaded from public databases such as the ENA or SRA, as adapters should already be removed (however we recommend to check FastQC results to ensure this is the case)." + }, + "shortread_qc_adapter1": { + "type": "string", + "default": "None", + "fa_icon": "fas fa-grip-lines", + "description": "Specify adapter 1 nucleotide sequence", + "help_text": "Specify a custom forward or R1 adapter sequence to be removed from reads. \n\nIf not set, the selected short-read QC tool's defaults will be used.\n\n> Modifies tool parameter(s):\n> - fastp: `--adapter_sequence`. fastp default: `AGATCGGAAGAGCACACGTCTGAACTCCAGTCA`\n> - AdapterRemoval: `--adapter1`. AdapteRemoval2 default: `AGATCGGAAGAGCACACGTCTGAACTCCAGTCACNNNNNNATCTCGTATGCCGTCTTCTGCTTG`" + }, + "shortread_qc_adapter2": { + "type": "string", + "default": "None", + "fa_icon": "fas fa-grip-lines", + "description": "Specify adapter 2 nucleotide sequence", + "help_text": "Specify a custom reverse or R2 adapter sequence to be removed from reads. \n\nIf not set, the selected short-read QC tool's defaults will be used.\n\n> Modifies tool parameter(s):\n> - fastp: `--adapter_sequence`. fastp default: `AGATCGGAAGAGCGTCGTGTAGGGAAAGAGTGT`\n> - AdapterRemoval: `--adapter1`. AdapteRemoval2 default: `AGATCGGAAGAGCGTCGTGTAGGGAAAGAGTGTAGATCTCGGTGGTCGCCGTATCATT`" + }, + "shortread_qc_adapterlist": { + "type": "string", + "default": "None", + "description": "Specify a list of all possible adapters to trim. Overrides --shortread_qc_adapter1/2. Formats: .txt (AdapterRemoval) or .fasta. (fastp).", + "help_text": "Allows to supply a file with a list of adapter (combinations) to remove from all files. \n\nOverrides the --shortread_qc_adapter1/--shortread_qc_adapter2 parameters . \n\nFor AdapterRemoval this consists of a two column table with a `.txt` extension: first column represents forward strand, second column for reverse strand. You must supply all possible combinations, one per line, and this list is applied to all files. See AdapterRemoval documentation for more information.\n\nFor fastp this consists of a standard FASTA format with a `.fasta`/`.fa`/`.fna`/`.fas` extension. The adapter sequence in this file should be at least 6bp long, otherwise it will be skipped. fastp trims the adapters present in the FASTA file one by one.\n\n> Modifies AdapterRemoval parameter: --adapter-list\n> Modifies fastp parameter: --adapter_fasta" + }, + "shortread_qc_mergepairs": { + "type": "boolean", + "fa_icon": "fas fa-toggle-on", + "description": "Turn on merging of read pairs for paired-end data", + "default": true, + "help_text": "Turn on the merging of read-pairs of paired-end short read sequencing data for AdapterRemoval (this is performed automatically with fastp).\n\n> Modifies tool parameter(s):\n> - AdapterRemoval: `--collapse`\n" + }, + "shortread_qc_excludeunmerged": { + "type": "boolean", + "fa_icon": "far fa-times-circle", + "description": "Discard unmerged reads from paired-end merging", + "help_text": "Turns off the inclusion of unmerged reads in resulting processing FASTQ file of paired-end sequencing data when using `fastp`.\n\nThis can be useful in cases where you prefer to have very short reads (e.g. aDNA), thus excluding longer-reads or possibly faulty reads where one of the pair was discarded.\n\n> Modifies tool parameter(s):\n> - removed from reads `--include_unmerged`\n" + }, + "shortread_qc_minlength": { + "type": "integer", + "default": 15, + "fa_icon": "fas fa-ruler-horizontal", + "description": "Specify the minimum length of reads to be retained", + "help_text": "Specifying a mimum read length filtering can speed up profiling by reducing the number of short unspecific reads that need to be match/aligned to the database.\n\n> Modifies tool parameter(s):\n> - removed from reads `--length_required`\n> - AdapterRemoval: `--minlength`" + }, + "perform_shortread_complexityfilter": { + "type": "boolean", + "fa_icon": "fas fa-toggle-on", + "description": "Turns on nucleotide sequence complexity filtering", + "help_text": "Turns on sequencing complexity filtering. Complexity filtering can be useful to increase run-time by removing unspecific read sequences that do not provide any informative taxon ID." + }, + "shortread_complexityfilter_tool": { + "type": "string", + "default": "bbduk", + "enum": ["bbduk", "prinseqplusplus", "fastp"], + "fa_icon": "fas fa-hammer", + "description": "Specify which tool to use for complexity filtering" + }, + "shortread_complexityfilter_entropy": { + "type": "number", + "default": 0.3, + "fa_icon": "fas fa-random", + "description": "Specify the minimum sequence entropy level for complexity filtering", + "help_text": "Specify the minimum 'entropy' value for complexity filtering for BBDuk or PRINSEQ++.\n\nNote that this value will only be used for PRINSEQ++ if `--shortread_complexityfilter_prinseqplusplus_mode` is set to `entropy`.\n\nEntropy here corresponds to the amount of sequence variation exists within the read. Higher values correspond to more variety, and thus will likely reslut in more specific matching to a taxon's reference genome. The trade off here is fewer reads (or abundance information) available for having a confident identification.\n\n\n> Modifies tool parameter(s):\n> - BBDuk: `entropy=`\n> - PRINSEQ++: `-lc_entropy`\n\n" + }, + "shortread_complexityfilter_bbduk_windowsize": { + "type": "integer", + "default": 50, + "fa_icon": "far fa-window-maximize", + "description": "Specify the window size for BBDuk complexity filtering", + "help_text": "Specify the window size to calculate the level entropy within for BBDuk.\n\n> Modifies tool parameter(s):\n> - BBDuk: `entropywindow=`" + }, + "shortread_complexityfilter_bbduk_mask": { + "type": "boolean", + "fa_icon": "fas fa-mask", + "description": "Turn on masking rather than discarding of low complexity reads for BBduk", + "help_text": "Turn on masking of low-complexity reads (i.e., replacement with `N`) rather than removal.\n\n> Modifies tool parameter(s)\n> - BBDuk: `entropymask=`" + }, + "shortread_complexityfilter_fastp_threshold": { + "type": "integer", + "default": 30, + "fa_icon": "fas fa-sort-numeric-down", + "description": "Specify the minimum complexity filter threshold of fastp", + "help_text": "Specify the minimum sequence complexity value for fastp. This value corresponds to the percentage of bases that is different from it's adjacent bases.\n\n> Modifies tool parameter(s):\n> - removed from reads `--complexity_threshold`" + }, + "shortread_complexityfilter_prinseqplusplus_mode": { + "type": "string", + "default": "entropy", + "enum": ["entropy", "dust"], + "fa_icon": "fas fa-check-square", + "description": "Specify the complexity filter mode for PRINSEQ++" + }, + "shortread_complexityfilter_prinseqplusplus_dustscore": { + "type": "number", + "default": 0.5, + "fa_icon": "fas fa-head-side-mask", + "description": "Specify the minimum dust score for PRINTSEQ++ complexity filtering", + "help_text": "Specify the minimum dust score below which low-complexity reads will be removed. A DUST score is based on how often different tri-nucleotides occur along a read.\n\n> Modifies tool parameter(s):\n> - PRINSEQ++: `--lc_dust`" + }, + "save_complexityfiltered_reads": { + "type": "boolean", + "fa_icon": "fas fa-save", + "description": "Save complexity filtered short-reads", + "help_text": "Specify whether to save the final complexity filtered reads in your results directory (`--outdir`)." + } + }, + "fa_icon": "fas fa-compress-alt" + }, + "preprocessing_long_read_qc_options": { + "title": "Preprocessing long-read QC options", + "type": "object", + "description": "Options for adapter clipping, quality trimming, and length filtering", + "default": "", + "properties": { + "perform_longread_qc": { + "type": "boolean", + "fa_icon": "fas fa-toggle-on", + "description": "Turns on long read quality control steps (adapter clipping, length filtering etc.)", + "help_text": "Turns on long read quality control steps (adapter clipping, length and/or quality filtering.)\n\nRemoving adapters (if present) is recommend to reduce false-postive hits that may occur from 'dirty' or 'contaminated' reference genomes in a profiling database that contain accidentially incorporated adapter sequences.\n\nLength filtering, and quality filtering can speed up alignment by reducing the number of unspecific reads that need to be aligned." + }, + "longread_qc_skipadaptertrim": { + "type": "boolean", + "description": "Skip long-read trimming", + "fa_icon": "fas fa-forward", + "help_text": "Skip removal of adapters by Porechop. This can be useful in some cases to speed up run time - particularly when you are running data downloading from public databases such as the ENA/SRA that should already have adapters removed. We recommend that you check your FastQC results this is indeed the case." + }, + "longread_qc_skipqualityfilter": { + "type": "boolean", + "description": "Skip long-read length and quality filtering", + "fa_icon": "fas fa-forward", + "help_text": "Skip removal of quality filtering with Filtlong. This will skip length, percent reads, and target bases filtering (see other `--longread_qc_qualityfilter_*` parameters)." + }, + "longread_qc_qualityfilter_minlength": { + "type": "integer", + "default": 1000, + "description": "Specify the minimum length of reads to be retained", + "fa_icon": "fas fa-ruler-horizontal", + "help_text": "Specify the minimum of length of reads to be kept for downstream analysis.\n\n> Modifies tool parameter(s):\n> - Filtlong: `--min_length`" + }, + "longread_qc_qualityfilter_keeppercent": { + "type": "integer", + "default": 90, + "description": "Specify the percent of high-quality bases to be retained", + "fa_icon": "fas fa-percentage", + "help_text": "Throw out the remaining percentage of reads outside the value. This is measured by bp, not by read count. So this option throws out the worst e.g. 10% of read bases if the parameter is set to `90`. _Modified from [Filtlong documentation](https://github.com/rrwick/Filtlong)_\n\n> Modifies tool parameter(s):\n> - Filtlong: `--keep_percent`" + }, + "longread_qc_qualityfilter_targetbases": { + "type": "integer", + "default": 500000000, + "description": "Specify the number of high-quality bases in the library to be retained", + "fa_icon": "fas fa-bullseye", + "help_text": "Removes the worst reads until only the specified value of bases remain, useful for very large read sets. If the input read set is less than the specified value, this setting will have no effect. _Modified from [Filtlong documentation](https://github.com/rrwick/Filtlong)_\n\n> Modifies tool parameter(s):\n> - Filtlong: `--keep_percent`" + } + }, + "fa_icon": "fas fa-expand-alt" + }, + "preprocessing_host_removal_options": { + "title": "Preprocessing host removal options", + "type": "object", + "description": "Options for pre-profiling host read removal", + "default": "", + "properties": { + "perform_shortread_hostremoval": { + "type": "boolean", + "fa_icon": "fas fa-toggle-on", + "description": "Turn on short-read host removal", + "help_text": "Turns on the ability to remove short-reads from the that derived from a known organism, using Bowtie2 and samtools\n\nThis subworkflow is useful to remove reads that may come from a host, or a known contamination like the human reference genome. Human DNA contamination of (microbial) reference genomes is well known, so removal of these prior profiling both reduces the risks of false positives, and in _some cases_ a faster runtime (as less reads need to be profiled).\n\nAlternatively, you can include the reference genome within your profiling databases and can turn off this subworkflow, with the trade off of a larger taxonomic profiling database." + }, + "perform_longread_hostremoval": { + "type": "boolean", + "fa_icon": "fas fa-toggle-on", + "description": "Turn on long-read host removal", + "help_text": "Turns on the ability to remove long-reads from the that derived from a known organism, using minimap2 and samtools\n\nThis subworkflow is useful to remove reads that may come from a host, or a known contamination like the human reference genome. Human DNA contamination of (microbial) reference genomes is well known, so removal of these prior profiling both reduces the risks of false positives, and in _some cases_ a faster runtime (as less reads need to be profiled).\n\nAlternatively, you can include the reference genome within your profiling databases and can turn off this subworkflow, with the trade off of a larger taxonomic profiling database." + }, + "hostremoval_reference": { + "type": "string", + "default": "None", + "fa_icon": "fas fa-file-alt", + "description": "Specify path to single reference FASTA of host(s) genome(s)", + "help_text": "Specify a path to the FASTA file (optionally gzipped) of the reference genome of the organism to be removed.\n\nIf you have two or more host organisms or contaminants you wish to remove, you can concatenate the FASTAs of the different taxa into a single one to provide to the pipeline." + }, + "shortread_hostremoval_index": { + "type": "string", + "default": "None", + "fa_icon": "fas fa-address-book", + "description": "Specify path to the directory containing pre-made BowTie2 indexes of the host removal reference", + "help_text": "Specify the path to a _directory_ containing pre-made Bowtie2 reference index files (i.e. the directory containing `.bt1`, `.bt2` files etc.). These should sit in the same directory alongside the the reference file specified in `--hostremoval_reference`.\n\nSpecifying premade indices can speed up runtime of the host-removal step, however if not supplied the pipeline will generate the indices for you." + }, + "longread_hostremoval_index": { + "type": "string", + "default": "None", + "fa_icon": "fas fa-address-book", + "description": "Specify path to a pre-made Minimap2 index file (.mmi) of the host removal reference", + "help_text": "Specify path to a pre-made Minimap2 index file (.mmi) of the host removal reference file given to `--hostremoval_reference`.\n\nSpecifying a premade index file can speed up runtime of the host-removal step, however if not supplied the pipeline will generate the indices for you." + }, + "save_hostremoval_index": { + "type": "boolean", + "fa_icon": "fas fa-save", + "description": "Save mapping index of input reference when not already supplied by user", + "help_text": "Save the output files of the in-built indexing of the host genome.\n\nThis is recommend to be turned on if you plan to use the same reference genome multiple times, as supplying the directory or file to `--shortread_hostremoval_index` or `--longread_hostremoval_index` respectively can speed up runtime of future runs. Once generated, we recommend you place this file _outside_ of your run results directory in a central 'cache' directory you and others using your machine can access and supply to the pipeline." + }, + "save_hostremoval_mapped": { + "type": "boolean", + "fa_icon": "fas fa-save", + "description": "Save mapped reads in BAM format from host removal", + "help_text": "Save the reads mapped to the reference genome in BAM format as output by the respective hostremoval alignment tool.\n\nThis can be useful if you wish to perform other analyses on the host organism (such as host-microbe interaction), however, you should consider whether the default mapping parameters of Bowtie2 (short-read) or minimap2 (long-read) are optimised to your context. " + }, + "save_hostremoval_unmapped": { + "type": "boolean", + "fa_icon": "fas fa-save", + "description": "Save unmapped reads in FASTQ format from host removal", + "help_text": "Save the unreads mapped to the reference genome in FASTQ format (as exported from `samtools view`).\n\nThis can be useful if you wish to perform other analyses on the off-target reads from the host mapping, such as manual profiling or _de novo_ assembly." + } + }, + "fa_icon": "fas fa-user-times" + }, + "preprocessing_run_merging_options": { + "title": "Preprocessing run merging options", + "type": "object", + "description": "Options for per-sample run-merging", + "default": "", + "properties": { + "perform_runmerging": { + "type": "boolean", + "fa_icon": "fas fa-toggle-on", + "description": "Turn on run merging", + "help_text": "Turns on the concatenation of sequencing runs or libraries with the same sample name.\n\nThis can be useful to ensure you get a single profile per sample, rather than one profile per run or library. Note that in some cases comparing profiles of independent _libraries_ may be useful, so this parameter may not always be suitable. " + }, + "save_runmerged_reads": { + "type": "boolean", + "fa_icon": "fas fa-save", + "description": "Save run-concatenated input FASTQ files for each sample", + "help_text": "Save the run- and library-concatenated reads of a given sample in FASTQ format." + } + }, + "fa_icon": "fas fa-clipboard-check" + }, + "profiling_options": { + "title": "Profiling options", + "type": "object", + "description": "", + "default": "", + "properties": { + "run_centrifuge": { + "type": "boolean", + "fa_icon": "fas fa-toggle-on", + "description": "Turn on profiling with Centrifuge. Requires database to be present CSV file passed to --databases" + }, + "centrifuge_save_reads": { + "type": "boolean", + "fa_icon": "fas fa-save", + "description": "Turn on saving of Centrifuge-aligned reads", + "help_text": "Save mapped (SAM, FASTQ) and unmapped (FASTQ) reads from alignment step of centrifuge in your output results directory.\n\n> Modifies tool parameter(s):\n> - centrifuge: `--un-gz`, `--al-gz`, `--un-conc-gz`, `--al-conc-gz`, `--out-fmt`" + }, + "run_diamond": { + "type": "boolean", + "fa_icon": "fas fa-toggle-on", + "description": "Turn on profiling with DIAMOND. Requires database to be present CSV file passed to --databases" + }, + "diamond_output_format": { + "type": "string", + "default": "tsv", + "enum": ["blast", "xml", "txt", "daa", "sam", "tsv", "paf"], + "fa_icon": "fas fa-file", + "description": "Specify output format from DIAMOND profiling.", + "help_text": "DIAMOND can produce output in a number of different formats, you can specify here which to produce.\n\nNote that DIAMOND can only produce one format at a time, and depending on which you pick, some downstream steps may not be executed. For example, selecting `daa` or `sam` will mean you will not get a tabular taxonomic profile as with the other tools.\n\nWill be overriden by `--diamond_save_reads.`\n\n> Modifies tool parameter(s):\n> - diamond blastx: `--outfmt`" + }, + "diamond_save_reads": { + "type": "boolean", + "fa_icon": "fas fa-save", + "description": "Turn on saving of DIAMOND-aligned reads. Will override --diamond_output_format and no taxon tables will be generated", + "help_text": "Save aligned reads in SAM format from alignment step of DIAMOND in your output results directory.\n\nNote this explicitly overrides `--diamond_output_format` to produce the SAM file, and no taxon table will be generated.\n\n> Modifies tool parameter(s):\n> - DIAMOND: `--outfmt`" + }, + "run_kaiju": { + "type": "boolean", + "fa_icon": "fas fa-toggle-on", + "description": "Turn on profiling with Kaiju. Requires database to be present CSV file passed to --databases" + }, + "kaiju_taxon_rank": { + "type": "string", + "default": "species", + "enum": ["phylum", "class", "order", "family", "genus", "species"], + "fa_icon": "fas fa-tag", + "description": "Specify taxonomic rank to be displayed in Kaiju taxon table", + "help_text": "Specify the taxonomic level(s) to be displayed in the resulting Kaiju taxon table, as generated by the kaiju2table helper tool.\n\nThis can be either a single level (e.g. `species`), or a comma separated list to display the full taxonomic path (e.g. `superkingdom,phylum,class,order,family,genus,species.`).\n\n> Modifies tool parameter(s):\n> - kaiju2table: `-l`" + }, + "run_kraken2": { + "type": "boolean", + "fa_icon": "fas fa-toggle-on", + "description": "Turn on profiling with Kraken2. Requires database to be present CSV file passed to --databases" + }, + "kraken2_save_reads": { + "type": "boolean", + "fa_icon": "fas fa-save", + "description": "Turn on saving of Kraken2-aligned reads", + "help_text": "Save reads that do and do not have a taxonomic classification in your output results directory in FASTQ format.\n\n> Modifies tool parameter(s):\n> - kraken2: `--classified-out` and `--unclassified-out`" + }, + "kraken2_save_readclassification": { + "type": "boolean", + "fa_icon": "fas fa-save", + "description": "Turn on saving of Kraken2 per-read taxonomic assignment file", + "help_text": "Save a text file that contains a list of each read that had a taxonomic assignment, with information on specific taxonomic taxonomic assignment that that read recieved.\n\n> Modifies tool parameter(s):\n> - kraken2: `--output`" + }, + "kraken2_save_minimizers": { + "type": "boolean", + "description": "Turn on saving minimizer information in the kraken2 report thus increasing to an eight column layout.", + "fa_icon": "fas fa-save", + "help_text": "Turn on saving minimizer information in the kraken2 report thus increasing to an eight column layout.\n\nAdds `--report-minimizer-data` to the kraken2 command." + }, + "run_bracken": { + "type": "boolean", + "description": "Post-process kraken2 reports with Bracken.", + "fa_icon": "fas fa-toggle-on" + }, + "run_malt": { + "type": "boolean", + "fa_icon": "fas fa-toggle-on", + "description": "Turn on profiling with MALT. Requires database to be present CSV file passed to --databases" + }, + "malt_mode": { + "type": "string", + "default": "BlastN", + "fa_icon": "fas fa-check-square", + "description": "Specify which MALT alignment mode to use", + "help_text": "Specify which version of MALT alignment to use.\n\nBlastN is generally recommended (nucleotide-nucleotide alignment), but particularly for very short reads (such as aDNA), whereas BlastX mode is similar to DIAMOND and will translate the nucleotide to amino acid sequences. Note each type of alignment mode requires different parameters during database construction. Refer to the MALT manual for more information.\n\n> Modifies tool parameter(s):\n> - malt-run: `-mode` " + }, + "malt_save_reads": { + "type": "boolean", + "fa_icon": "fas fa-save", + "description": "Turn on saving of MALT-aligned reads", + "help_text": "Turns on saving of MALT aligned reads in SAM format.\n\nNote that the SAM format produce by MALT is not completely valid, and may not work with downstream tools.\n\n> Modifies tool parameter(s):\n> - malt-run: `--alignments`, `-za`" + }, + "malt_generate_megansummary": { + "type": "boolean", + "fa_icon": "fas fa-save", + "description": "Turn on generation of MEGAN summary file from MALT results", + "help_text": "Turns on saving of MALT output in an additional MEGAN summary file (`.megan`) that can be loaded into the MEGAN metagenomic exploration tool.\n\nNote: this file is generated not directly from MALT but rather then MEGAN utility script `rma2info`.\n\n> Modifies tool parameter(s):\n> - rma2info: `-es`" + }, + "run_metaphlan3": { + "type": "boolean", + "description": "Turn on profiling with MetaPhlAn3. Requires database to be present CSV file passed to --databases", + "fa_icon": "fas fa-toggle-on" + }, + "run_motus": { + "type": "boolean", + "fa_icon": "fas fa-toggle-on", + "description": "Turn on profiling with mOTUs. Requires database to be present CSV file passed to --databases" + } + }, + "fa_icon": "fas fa-align-center" + }, + "postprocessing_and_visualisation_options": { + "title": "Postprocessing and visualisation options", + "type": "object", + "description": "", + "default": "", + "properties": { + "run_profile_standardisation": { + "type": "boolean", + "fa_icon": "fas fa-toggle-on", + "description": "Turn on standardisation of taxon tables across profilers", + "help_text": "Turns on standardisation of output OTU tables across all tools; each into a TSV format following the following scheme:\n\n|TAXON | SAMPLE_A | SAMPLE_B |\n|-------------|----------------|-----------------|\n| taxon_a | 32 | 123 |\n| taxon_b | 1 | 5 |\n\nThis currently only is generated for mOTUs." + }, + "generate_biom_output": { + "type": "boolean", + "fa_icon": "fas fa-toggle-on", + "description": "Turn on generation of BIOM output (currently only applies to mOTUs)", + "help_text": "Turn on the saving of the taxonomic output in BIOM format (`.biom`) in the results directory of your pipeline run, instead of the default TSV format.\n\nNote this file is from the output of the `motus merge` command.\n\n> Modifies tool parameter(s):\n> - `-B -o`" + }, + "run_krona": { + "type": "boolean", + "fa_icon": "fas fa-toggle-on", + "description": "Turn on generation of Krona plots for supported profilers", + "help_text": "Turn on the generation of Krona interactive pie-chart HTMLs for a selection of profilers.\n\nThe tools currently supported are:\n\n- centrifuge\n- kraken2\n- kaiju\n- MALT" + }, + "krona_taxonomy_directory": { + "type": "string", + "default": "None", + "fa_icon": "fas fa-folder-open", + "description": "Specify path to krona taxonomy directories (required for MALT krona plots)", + "help_text": "Specify a path to a Krona taxonomy database directory (i.e. a directory containing a krona generated `.tab` file).\n\nThis is only required for generating Krona plots of MALT output.\n\nNote this taxonomy database must be downloaded and generated with the `updateTaxonomy.sh` script from the krona-tools package." + } + }, + "fa_icon": "fas fa-chart-line" + }, + "institutional_config_options": { + "title": "Institutional config options", + "type": "object", + "fa_icon": "fas fa-university", + "description": "Parameters used to describe centralised config profiles. These should not be edited.", + "help_text": "The centralised nf-core configuration profiles use a handful of pipeline parameters to describe themselves. This information is then printed to the Nextflow log when you run a pipeline. You should not need to change these values when you run a pipeline.", + "properties": { + "custom_config_version": { + "type": "string", + "description": "Git commit id for Institutional configs.", + "default": "master", + "hidden": true, + "fa_icon": "fas fa-users-cog" + }, + "custom_config_base": { + "type": "string", + "description": "Base directory for Institutional configs.", + "default": "https://raw.githubusercontent.com/nf-core/configs/master", + "hidden": true, + "help_text": "If you're running offline, Nextflow will not be able to fetch the institutional config files from the internet. If you don't need them, then this is not a problem. If you do need them, you should download the files from the repo and tell Nextflow where to find them with this parameter.", + "fa_icon": "fas fa-users-cog" + }, + "config_profile_name": { + "type": "string", + "description": "Institutional config name.", + "hidden": true, + "fa_icon": "fas fa-users-cog" + }, + "config_profile_description": { + "type": "string", + "description": "Institutional config description.", + "hidden": true, + "fa_icon": "fas fa-users-cog" + }, + "config_profile_contact": { + "type": "string", + "description": "Institutional config contact information.", + "hidden": true, + "fa_icon": "fas fa-users-cog" + }, + "config_profile_url": { + "type": "string", + "description": "Institutional config URL link.", + "hidden": true, + "fa_icon": "fas fa-users-cog" } + } }, - "allOf": [ - { - "$ref": "#/definitions/input_output_options" + "max_job_request_options": { + "title": "Max job request options", + "type": "object", + "fa_icon": "fab fa-acquisitions-incorporated", + "description": "Set the top limit for requested resources for any single job.", + "help_text": "If you are running on a smaller system, a pipeline step requesting more resources than are available may cause the Nextflow to stop the run with an error. These options allow you to cap the maximum resources requested by any single job so that the pipeline will run on your system.\n\nNote that you can not _increase_ the resources requested by any job using these options. For that you will need your own configuration file. See [the nf-core website](https://nf-co.re/usage/configuration) for details.", + "properties": { + "max_cpus": { + "type": "integer", + "description": "Maximum number of CPUs that can be requested for any single job.", + "default": 16, + "fa_icon": "fas fa-microchip", + "hidden": true, + "help_text": "Use to set an upper-limit for the CPU requirement for each process. Should be an integer e.g. `--max_cpus 1`" }, - { - "$ref": "#/definitions/preprocessing_general_qc_options" + "max_memory": { + "type": "string", + "description": "Maximum amount of memory that can be requested for any single job.", + "default": "128.GB", + "fa_icon": "fas fa-memory", + "pattern": "^\\d+(\\.\\d+)?\\.?\\s*(K|M|G|T)?B$", + "hidden": true, + "help_text": "Use to set an upper-limit for the memory requirement for each process. Should be a string in the format integer-unit e.g. `--max_memory '8.GB'`" }, - { - "$ref": "#/definitions/preprocessing_short_read_qc_options" + "max_time": { + "type": "string", + "description": "Maximum amount of time that can be requested for any single job.", + "default": "240.h", + "fa_icon": "far fa-clock", + "pattern": "^(\\d+\\.?\\s*(s|m|h|day)\\s*)+$", + "hidden": true, + "help_text": "Use to set an upper-limit for the time requirement for each process. Should be a string in the format integer-unit e.g. `--max_time '2.h'`" + } + } + }, + "generic_options": { + "title": "Generic options", + "type": "object", + "fa_icon": "fas fa-file-import", + "description": "Less common options for the pipeline, typically set in a config file.", + "help_text": "These options are common to all nf-core pipelines and allow you to customise some of the core preferences for how the pipeline runs.\n\nTypically these options would be set in a Nextflow config file loaded for all pipeline runs, such as `~/.nextflow/config`.", + "properties": { + "help": { + "type": "boolean", + "description": "Display help text.", + "fa_icon": "fas fa-question-circle", + "hidden": true + }, + "publish_dir_mode": { + "type": "string", + "default": "copy", + "description": "Method used to save pipeline results to output directory.", + "help_text": "The Nextflow `publishDir` option specifies which intermediate files should be saved to the output directory. This option tells the pipeline what method should be used to move these files. See [Nextflow docs](https://www.nextflow.io/docs/latest/process.html#publishdir) for details.", + "fa_icon": "fas fa-copy", + "enum": [ + "symlink", + "rellink", + "link", + "copy", + "copyNoFollow", + "move" + ], + "hidden": true + }, + "email_on_fail": { + "type": "string", + "description": "Email address for completion summary, only when pipeline fails.", + "fa_icon": "fas fa-exclamation-triangle", + "pattern": "^([a-zA-Z0-9_\\-\\.]+)@([a-zA-Z0-9_\\-\\.]+)\\.([a-zA-Z]{2,5})$", + "help_text": "An email address to send a summary email to when the pipeline is completed - ONLY sent if the pipeline does not exit successfully.", + "hidden": true }, - { - "$ref": "#/definitions/preprocessing_long_read_qc_options" + "plaintext_email": { + "type": "boolean", + "description": "Send plain-text email instead of HTML.", + "fa_icon": "fas fa-remove-format", + "hidden": true }, - { - "$ref": "#/definitions/preprocessing_host_removal_options" + "max_multiqc_email_size": { + "type": "string", + "description": "File size limit when attaching MultiQC reports to summary emails.", + "pattern": "^\\d+(\\.\\d+)?\\.?\\s*(K|M|G|T)?B$", + "default": "25.MB", + "fa_icon": "fas fa-file-upload", + "hidden": true }, - { - "$ref": "#/definitions/preprocessing_run_merging_options" + "monochrome_logs": { + "type": "boolean", + "description": "Do not use coloured log outputs.", + "fa_icon": "fas fa-palette", + "hidden": true }, - { - "$ref": "#/definitions/profiling_options" + "hook_url": { + "type": "string", + "description": "Incoming hook URL for messaging service", + "fa_icon": "fas fa-people-group", + "help_text": "Incoming hook URL for messaging service. Currently, only MS Teams is supported.", + "hidden": true }, - { - "$ref": "#/definitions/postprocessing_and_visualisation_options" + "multiqc_config": { + "type": "string", + "description": "Custom config file to supply to MultiQC.", + "fa_icon": "fas fa-cog", + "hidden": true }, - { - "$ref": "#/definitions/institutional_config_options" + "multiqc_logo": { + "type": "string", + "description": "Custom logo file to supply to MultiQC. File name must also be set in the MultiQC config file", + "fa_icon": "fas fa-image", + "hidden": true }, - { - "$ref": "#/definitions/max_job_request_options" + "multiqc_methods_description": { + "type": "string", + "description": "Custom MultiQC yaml file containing HTML including a methods description.", + "fa_icon": "fas fa-cog" }, - { - "$ref": "#/definitions/generic_options" + "tracedir": { + "type": "string", + "description": "Directory to keep pipeline Nextflow logs and reports.", + "default": "${params.outdir}/pipeline_info", + "fa_icon": "fas fa-cogs", + "hidden": true }, - { - "$ref": "#/definitions/reference_genome_options" + "validate_params": { + "type": "boolean", + "description": "Boolean whether to validate parameters against the schema at runtime", + "default": true, + "fa_icon": "fas fa-check-square", + "hidden": true + }, + "show_hidden_params": { + "type": "boolean", + "fa_icon": "far fa-eye-slash", + "description": "Show all params when using `--help`", + "hidden": true, + "help_text": "By default, parameters set as _hidden_ in the schema are not shown on the command line when a user runs with `--help`. Specifying this option will tell the pipeline to show all parameters." + }, + "enable_conda": { + "type": "boolean", + "description": "Run this workflow with Conda. You can also use '-profile conda' instead of providing this parameter.", + "hidden": true, + "fa_icon": "fas fa-bacon" } - ], - "properties": { - "preprocessing_qc_tool": { - "type": "string", - "default": "fastqc", - "enum": [ - "fastqc", - "falco" - ], - "help_text": "Falco is designed as a drop-in replacement for FastQC but written in C++ for faster computation. We particularly recommend using falco when using long reads (due to reduced memory constraints), however is also applicable for short reads.", - "description": "Specify the tool used for quality control of raw sequencing reads" - }, - "save_mgc_counts": { - "type": "string", - "description": "Save the mgc reads count in mOTUs." - }, - "save_ncbi_id": { - "type": "string", - "description": "Print NCBI id in mOTUs." - }, - "save_read_counts": { - "type": "string", - "description": "Print result as counts instead of relative abundances in mOTUs." + } + }, + "reference_genome_options": { + "title": "Reference genome options", + "type": "object", + "fa_icon": "fas fa-dna", + "description": "Reference genome related files and options required for the workflow.", + "properties": { + "genome": { + "type": "string", + "description": "Name of iGenomes reference.", + "fa_icon": "fas fa-book", + "help_text": "If using a reference genome configured in the pipeline using iGenomes, use this parameter to give the ID for the reference. This is then used to build the full paths for all required reference genome files e.g. `--genome GRCh38`. \n\nSee the [nf-core website docs](https://nf-co.re/usage/reference_genomes) for more details.", + "hidden": true + }, + "igenomes_base": { + "type": "string", + "format": "directory-path", + "description": "Directory / URL base for iGenomes references.", + "default": "s3://ngi-igenomes/igenomes", + "fa_icon": "fas fa-cloud-download-alt", + "hidden": true + }, + "igenomes_ignore": { + "type": "boolean", + "description": "Do not load the iGenomes reference config.", + "fa_icon": "fas fa-ban", + "hidden": true, + "help_text": "Do not load `igenomes.config` when running the pipeline. You may choose this option if you observe clashes between custom parameters and those supplied in `igenomes.config`." } + } + } + }, + "allOf": [ + { + "$ref": "#/definitions/input_output_options" + }, + { + "$ref": "#/definitions/preprocessing_general_qc_options" + }, + { + "$ref": "#/definitions/preprocessing_short_read_qc_options" + }, + { + "$ref": "#/definitions/preprocessing_long_read_qc_options" + }, + { + "$ref": "#/definitions/preprocessing_host_removal_options" + }, + { + "$ref": "#/definitions/preprocessing_run_merging_options" + }, + { + "$ref": "#/definitions/profiling_options" + }, + { + "$ref": "#/definitions/postprocessing_and_visualisation_options" + }, + { + "$ref": "#/definitions/institutional_config_options" + }, + { + "$ref": "#/definitions/max_job_request_options" + }, + { + "$ref": "#/definitions/generic_options" + }, + { + "$ref": "#/definitions/reference_genome_options" + } + ], + "properties": { + "preprocessing_qc_tool": { + "type": "string", + "default": "fastqc", + "enum": ["fastqc", "falco"], + "help_text": "Falco is designed as a drop-in replacement for FastQC but written in C++ for faster computation. We particularly recommend using falco when using long reads (due to reduced memory constraints), however is also applicable for short reads.", + "description": "Specify the tool used for quality control of raw sequencing reads" + }, + "save_mgc_counts": { + "type": "boolean", + "description": "Save the mgc reads count in mOTUs." + }, + "save_ncbi_id": { + "type": "boolean", + "description": "Print NCBI id in mOTUs." + }, + "save_read_counts": { + "type": "boolean", + "description": "Print result as counts instead of relative abundances in mOTUs." } -} \ No newline at end of file + } +} From 644a29c699fd4c9e9b1b500570342b795cfcbe4a Mon Sep 17 00:00:00 2001 From: sofstam Date: Tue, 29 Nov 2022 11:34:57 +0100 Subject: [PATCH 485/789] Prettier --- nextflow_schema.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/nextflow_schema.json b/nextflow_schema.json index 58cab0c..cbe70b0 100644 --- a/nextflow_schema.json +++ b/nextflow_schema.json @@ -742,15 +742,15 @@ }, "save_mgc_counts": { "type": "boolean", - "description": "Save the mgc reads count in mOTUs." + "description": "Save the mgc reads count for mOTUs." }, "save_ncbi_id": { "type": "boolean", - "description": "Print NCBI id in mOTUs." + "description": "Print NCBI taxonomic id for mOTUs." }, "save_read_counts": { "type": "boolean", - "description": "Print result as counts instead of relative abundances in mOTUs." + "description": "Print mOTUs result as counts instead of relative abundances.." } } } From fb6be69d7eefd55ec52f53daf6059ee59ffa2c4f Mon Sep 17 00:00:00 2001 From: Sofia Stamouli Date: Tue, 29 Nov 2022 11:37:20 +0100 Subject: [PATCH 486/789] Prettier should work now --- nextflow_schema.json | 1469 +++++++++++++++++++++--------------------- 1 file changed, 731 insertions(+), 738 deletions(-) diff --git a/nextflow_schema.json b/nextflow_schema.json index cbe70b0..e0b7fa6 100644 --- a/nextflow_schema.json +++ b/nextflow_schema.json @@ -1,756 +1,749 @@ { - "$schema": "http://json-schema.org/draft-07/schema", - "$id": "https://raw.githubusercontent.com/nf-core/taxprofiler/master/nextflow_schema.json", - "title": "nf-core/taxprofiler pipeline parameters", - "description": "Taxonomic profiling of shotgun metagenomic data", - "type": "object", - "definitions": { - "input_output_options": { - "title": "Input/output options", - "type": "object", - "fa_icon": "fas fa-terminal", - "description": "Define where the pipeline should find input data and save output data.", - "required": ["input", "databases", "outdir"], - "properties": { - "input": { - "type": "string", - "format": "file-path", - "mimetype": "text/csv", - "pattern": "^\\S+\\.(csv|yaml|yml)$", - "schema": "assets/schema_input.json", - "description": "Path to comma-separated file containing information about the samples and libraries/runs.", - "help_text": "You will need to create a design file with information about the samples and libraries/runs you want to running in your pipeline run. Use this parameter to specify its location. It has to be a comma-separated file with 6 columns, and a header row. See [usage docs](https://nf-co.re/taxprofiler/usage#samplesheet-input).", - "fa_icon": "fas fa-file-csv" - }, - "databases": { - "type": "string", - "mimetype": "text/csv", - "format": "file-path", - "fa_icon": "fas fa-database", - "description": "Path to comma-separated file containing information about databases and profiling parameters for each taxonomic profiler", - "help_text": "You will need to create a design file with information about the samples in your experiment before running the pipeline. Use this parameter to specify its location. It has to be a comma-separated file with 4 columns, and a header row. See [usage docs](https://nf-co.re/taxprofiler/dev/usage#full-database-sheet).\n\nProfilers will only be executed if a corresponding database are supplied. \n\nWe recommend storing this database sheet somewhere centrally and accessible by others members of your lab/institutions, as this file will likely be regularly reused." - }, - "outdir": { - "type": "string", - "format": "directory-path", - "description": "The output directory where the results will be saved. You have to use absolute paths to storage on Cloud infrastructure.", - "fa_icon": "fas fa-folder-open" - }, - "email": { - "type": "string", - "description": "Email address for completion summary.", - "fa_icon": "fas fa-envelope", - "help_text": "Set this parameter to your e-mail address to get a summary e-mail with details of the run sent to you when the workflow exits. If set in your user config file (`~/.nextflow/config`) then you don't need to specify this on the command line for every run.", - "pattern": "^([a-zA-Z0-9_\\-\\.]+)@([a-zA-Z0-9_\\-\\.]+)\\.([a-zA-Z]{2,5})$" - }, - "multiqc_title": { - "type": "string", - "description": "MultiQC report title. Printed as page header, used for filename if not otherwise specified.", - "fa_icon": "fas fa-file-signature" - } - } - }, - "preprocessing_general_qc_options": { - "title": "Preprocessing general QC options", - "type": "object", - "description": "Common options across both long and short read preprocessing QC steps", - "default": "", - "properties": { - "save_preprocessed_reads": { - "type": "boolean", - "fa_icon": "fas fa-save", - "description": "Save reads from adapter clipping/pair-merging, length filtering for both short and long reads", - "help_text": "This saves the FASTQ output from the following tools:\n\n- fastp\n- AdapterRemoval\n- Porechop\n- Filtlong\n\nThese reads will be a mixture of: adapter clipped, quality trimmed, pair-merged, and length filtered, depending on the parameters you set." - } - }, - "fa_icon": "fas fa-users-cog" - }, - "preprocessing_short_read_qc_options": { - "title": "Preprocessing short-read QC options", - "type": "object", - "description": "Options for adapter clipping, quality trimming, pair-merging, and complexity filtering", - "default": "", - "properties": { - "perform_shortread_qc": { - "type": "boolean", - "fa_icon": "fas fa-toggle-on", - "description": "Turns on short read quality control steps (adapter clipping, complexity filtering etc.)", - "help_text": "Turns on short read quality control steps (adapter clipping, complexity filtering etc.)\n\nThis subworkflow can perform:\n\n- Adapter removal\n- Read quality trimming\n- Read pair merging\n- Length filtering\n- Complexity filtering\n\nEither with fastp or AdapterRemoval.\n\nRemoving adapters (if present) is recommend to reduce false-postive hits that may occur from 'dirty' or 'contaminated' reference genomes in a profiling database that contain accidentially incorporated adapter sequences. Note that some, but not all, tools support paired-end alignment (utilising information about the insert covered by the pairs). However read pair merging in some cases can be recommend to increase read length (such as in aDNA). Length filtering, and/or complexity can speed up alignment by reducing the number of short unspecific reads that need to be aligned." - }, - "shortread_qc_tool": { - "type": "string", - "default": "fastp", - "enum": ["fastp", "adapterremoval"], - "fa_icon": "fas fa-tools", - "description": "Specify which tool to use for short-read QC" - }, - "shortread_qc_skipadaptertrim": { - "type": "boolean", - "fa_icon": "fas fa-forward", - "description": "Skip adapter trimming", - "help_text": "Skip the removal of sequencing adapters. \n\nThis often can be useful to speed up run-time of the pipeline when analysing data downloaded from public databases such as the ENA or SRA, as adapters should already be removed (however we recommend to check FastQC results to ensure this is the case)." - }, - "shortread_qc_adapter1": { - "type": "string", - "default": "None", - "fa_icon": "fas fa-grip-lines", - "description": "Specify adapter 1 nucleotide sequence", - "help_text": "Specify a custom forward or R1 adapter sequence to be removed from reads. \n\nIf not set, the selected short-read QC tool's defaults will be used.\n\n> Modifies tool parameter(s):\n> - fastp: `--adapter_sequence`. fastp default: `AGATCGGAAGAGCACACGTCTGAACTCCAGTCA`\n> - AdapterRemoval: `--adapter1`. AdapteRemoval2 default: `AGATCGGAAGAGCACACGTCTGAACTCCAGTCACNNNNNNATCTCGTATGCCGTCTTCTGCTTG`" - }, - "shortread_qc_adapter2": { - "type": "string", - "default": "None", - "fa_icon": "fas fa-grip-lines", - "description": "Specify adapter 2 nucleotide sequence", - "help_text": "Specify a custom reverse or R2 adapter sequence to be removed from reads. \n\nIf not set, the selected short-read QC tool's defaults will be used.\n\n> Modifies tool parameter(s):\n> - fastp: `--adapter_sequence`. fastp default: `AGATCGGAAGAGCGTCGTGTAGGGAAAGAGTGT`\n> - AdapterRemoval: `--adapter1`. AdapteRemoval2 default: `AGATCGGAAGAGCGTCGTGTAGGGAAAGAGTGTAGATCTCGGTGGTCGCCGTATCATT`" - }, - "shortread_qc_adapterlist": { - "type": "string", - "default": "None", - "description": "Specify a list of all possible adapters to trim. Overrides --shortread_qc_adapter1/2. Formats: .txt (AdapterRemoval) or .fasta. (fastp).", - "help_text": "Allows to supply a file with a list of adapter (combinations) to remove from all files. \n\nOverrides the --shortread_qc_adapter1/--shortread_qc_adapter2 parameters . \n\nFor AdapterRemoval this consists of a two column table with a `.txt` extension: first column represents forward strand, second column for reverse strand. You must supply all possible combinations, one per line, and this list is applied to all files. See AdapterRemoval documentation for more information.\n\nFor fastp this consists of a standard FASTA format with a `.fasta`/`.fa`/`.fna`/`.fas` extension. The adapter sequence in this file should be at least 6bp long, otherwise it will be skipped. fastp trims the adapters present in the FASTA file one by one.\n\n> Modifies AdapterRemoval parameter: --adapter-list\n> Modifies fastp parameter: --adapter_fasta" - }, - "shortread_qc_mergepairs": { - "type": "boolean", - "fa_icon": "fas fa-toggle-on", - "description": "Turn on merging of read pairs for paired-end data", - "default": true, - "help_text": "Turn on the merging of read-pairs of paired-end short read sequencing data for AdapterRemoval (this is performed automatically with fastp).\n\n> Modifies tool parameter(s):\n> - AdapterRemoval: `--collapse`\n" - }, - "shortread_qc_excludeunmerged": { - "type": "boolean", - "fa_icon": "far fa-times-circle", - "description": "Discard unmerged reads from paired-end merging", - "help_text": "Turns off the inclusion of unmerged reads in resulting processing FASTQ file of paired-end sequencing data when using `fastp`.\n\nThis can be useful in cases where you prefer to have very short reads (e.g. aDNA), thus excluding longer-reads or possibly faulty reads where one of the pair was discarded.\n\n> Modifies tool parameter(s):\n> - removed from reads `--include_unmerged`\n" - }, - "shortread_qc_minlength": { - "type": "integer", - "default": 15, - "fa_icon": "fas fa-ruler-horizontal", - "description": "Specify the minimum length of reads to be retained", - "help_text": "Specifying a mimum read length filtering can speed up profiling by reducing the number of short unspecific reads that need to be match/aligned to the database.\n\n> Modifies tool parameter(s):\n> - removed from reads `--length_required`\n> - AdapterRemoval: `--minlength`" - }, - "perform_shortread_complexityfilter": { - "type": "boolean", - "fa_icon": "fas fa-toggle-on", - "description": "Turns on nucleotide sequence complexity filtering", - "help_text": "Turns on sequencing complexity filtering. Complexity filtering can be useful to increase run-time by removing unspecific read sequences that do not provide any informative taxon ID." - }, - "shortread_complexityfilter_tool": { - "type": "string", - "default": "bbduk", - "enum": ["bbduk", "prinseqplusplus", "fastp"], - "fa_icon": "fas fa-hammer", - "description": "Specify which tool to use for complexity filtering" - }, - "shortread_complexityfilter_entropy": { - "type": "number", - "default": 0.3, - "fa_icon": "fas fa-random", - "description": "Specify the minimum sequence entropy level for complexity filtering", - "help_text": "Specify the minimum 'entropy' value for complexity filtering for BBDuk or PRINSEQ++.\n\nNote that this value will only be used for PRINSEQ++ if `--shortread_complexityfilter_prinseqplusplus_mode` is set to `entropy`.\n\nEntropy here corresponds to the amount of sequence variation exists within the read. Higher values correspond to more variety, and thus will likely reslut in more specific matching to a taxon's reference genome. The trade off here is fewer reads (or abundance information) available for having a confident identification.\n\n\n> Modifies tool parameter(s):\n> - BBDuk: `entropy=`\n> - PRINSEQ++: `-lc_entropy`\n\n" - }, - "shortread_complexityfilter_bbduk_windowsize": { - "type": "integer", - "default": 50, - "fa_icon": "far fa-window-maximize", - "description": "Specify the window size for BBDuk complexity filtering", - "help_text": "Specify the window size to calculate the level entropy within for BBDuk.\n\n> Modifies tool parameter(s):\n> - BBDuk: `entropywindow=`" - }, - "shortread_complexityfilter_bbduk_mask": { - "type": "boolean", - "fa_icon": "fas fa-mask", - "description": "Turn on masking rather than discarding of low complexity reads for BBduk", - "help_text": "Turn on masking of low-complexity reads (i.e., replacement with `N`) rather than removal.\n\n> Modifies tool parameter(s)\n> - BBDuk: `entropymask=`" - }, - "shortread_complexityfilter_fastp_threshold": { - "type": "integer", - "default": 30, - "fa_icon": "fas fa-sort-numeric-down", - "description": "Specify the minimum complexity filter threshold of fastp", - "help_text": "Specify the minimum sequence complexity value for fastp. This value corresponds to the percentage of bases that is different from it's adjacent bases.\n\n> Modifies tool parameter(s):\n> - removed from reads `--complexity_threshold`" - }, - "shortread_complexityfilter_prinseqplusplus_mode": { - "type": "string", - "default": "entropy", - "enum": ["entropy", "dust"], - "fa_icon": "fas fa-check-square", - "description": "Specify the complexity filter mode for PRINSEQ++" - }, - "shortread_complexityfilter_prinseqplusplus_dustscore": { - "type": "number", - "default": 0.5, - "fa_icon": "fas fa-head-side-mask", - "description": "Specify the minimum dust score for PRINTSEQ++ complexity filtering", - "help_text": "Specify the minimum dust score below which low-complexity reads will be removed. A DUST score is based on how often different tri-nucleotides occur along a read.\n\n> Modifies tool parameter(s):\n> - PRINSEQ++: `--lc_dust`" - }, - "save_complexityfiltered_reads": { - "type": "boolean", - "fa_icon": "fas fa-save", - "description": "Save complexity filtered short-reads", - "help_text": "Specify whether to save the final complexity filtered reads in your results directory (`--outdir`)." - } - }, - "fa_icon": "fas fa-compress-alt" - }, - "preprocessing_long_read_qc_options": { - "title": "Preprocessing long-read QC options", - "type": "object", - "description": "Options for adapter clipping, quality trimming, and length filtering", - "default": "", - "properties": { - "perform_longread_qc": { - "type": "boolean", - "fa_icon": "fas fa-toggle-on", - "description": "Turns on long read quality control steps (adapter clipping, length filtering etc.)", - "help_text": "Turns on long read quality control steps (adapter clipping, length and/or quality filtering.)\n\nRemoving adapters (if present) is recommend to reduce false-postive hits that may occur from 'dirty' or 'contaminated' reference genomes in a profiling database that contain accidentially incorporated adapter sequences.\n\nLength filtering, and quality filtering can speed up alignment by reducing the number of unspecific reads that need to be aligned." - }, - "longread_qc_skipadaptertrim": { - "type": "boolean", - "description": "Skip long-read trimming", - "fa_icon": "fas fa-forward", - "help_text": "Skip removal of adapters by Porechop. This can be useful in some cases to speed up run time - particularly when you are running data downloading from public databases such as the ENA/SRA that should already have adapters removed. We recommend that you check your FastQC results this is indeed the case." - }, - "longread_qc_skipqualityfilter": { - "type": "boolean", - "description": "Skip long-read length and quality filtering", - "fa_icon": "fas fa-forward", - "help_text": "Skip removal of quality filtering with Filtlong. This will skip length, percent reads, and target bases filtering (see other `--longread_qc_qualityfilter_*` parameters)." - }, - "longread_qc_qualityfilter_minlength": { - "type": "integer", - "default": 1000, - "description": "Specify the minimum length of reads to be retained", - "fa_icon": "fas fa-ruler-horizontal", - "help_text": "Specify the minimum of length of reads to be kept for downstream analysis.\n\n> Modifies tool parameter(s):\n> - Filtlong: `--min_length`" - }, - "longread_qc_qualityfilter_keeppercent": { - "type": "integer", - "default": 90, - "description": "Specify the percent of high-quality bases to be retained", - "fa_icon": "fas fa-percentage", - "help_text": "Throw out the remaining percentage of reads outside the value. This is measured by bp, not by read count. So this option throws out the worst e.g. 10% of read bases if the parameter is set to `90`. _Modified from [Filtlong documentation](https://github.com/rrwick/Filtlong)_\n\n> Modifies tool parameter(s):\n> - Filtlong: `--keep_percent`" - }, - "longread_qc_qualityfilter_targetbases": { - "type": "integer", - "default": 500000000, - "description": "Specify the number of high-quality bases in the library to be retained", - "fa_icon": "fas fa-bullseye", - "help_text": "Removes the worst reads until only the specified value of bases remain, useful for very large read sets. If the input read set is less than the specified value, this setting will have no effect. _Modified from [Filtlong documentation](https://github.com/rrwick/Filtlong)_\n\n> Modifies tool parameter(s):\n> - Filtlong: `--keep_percent`" - } - }, - "fa_icon": "fas fa-expand-alt" - }, - "preprocessing_host_removal_options": { - "title": "Preprocessing host removal options", - "type": "object", - "description": "Options for pre-profiling host read removal", - "default": "", - "properties": { - "perform_shortread_hostremoval": { - "type": "boolean", - "fa_icon": "fas fa-toggle-on", - "description": "Turn on short-read host removal", - "help_text": "Turns on the ability to remove short-reads from the that derived from a known organism, using Bowtie2 and samtools\n\nThis subworkflow is useful to remove reads that may come from a host, or a known contamination like the human reference genome. Human DNA contamination of (microbial) reference genomes is well known, so removal of these prior profiling both reduces the risks of false positives, and in _some cases_ a faster runtime (as less reads need to be profiled).\n\nAlternatively, you can include the reference genome within your profiling databases and can turn off this subworkflow, with the trade off of a larger taxonomic profiling database." - }, - "perform_longread_hostremoval": { - "type": "boolean", - "fa_icon": "fas fa-toggle-on", - "description": "Turn on long-read host removal", - "help_text": "Turns on the ability to remove long-reads from the that derived from a known organism, using minimap2 and samtools\n\nThis subworkflow is useful to remove reads that may come from a host, or a known contamination like the human reference genome. Human DNA contamination of (microbial) reference genomes is well known, so removal of these prior profiling both reduces the risks of false positives, and in _some cases_ a faster runtime (as less reads need to be profiled).\n\nAlternatively, you can include the reference genome within your profiling databases and can turn off this subworkflow, with the trade off of a larger taxonomic profiling database." - }, - "hostremoval_reference": { - "type": "string", - "default": "None", - "fa_icon": "fas fa-file-alt", - "description": "Specify path to single reference FASTA of host(s) genome(s)", - "help_text": "Specify a path to the FASTA file (optionally gzipped) of the reference genome of the organism to be removed.\n\nIf you have two or more host organisms or contaminants you wish to remove, you can concatenate the FASTAs of the different taxa into a single one to provide to the pipeline." - }, - "shortread_hostremoval_index": { - "type": "string", - "default": "None", - "fa_icon": "fas fa-address-book", - "description": "Specify path to the directory containing pre-made BowTie2 indexes of the host removal reference", - "help_text": "Specify the path to a _directory_ containing pre-made Bowtie2 reference index files (i.e. the directory containing `.bt1`, `.bt2` files etc.). These should sit in the same directory alongside the the reference file specified in `--hostremoval_reference`.\n\nSpecifying premade indices can speed up runtime of the host-removal step, however if not supplied the pipeline will generate the indices for you." - }, - "longread_hostremoval_index": { - "type": "string", - "default": "None", - "fa_icon": "fas fa-address-book", - "description": "Specify path to a pre-made Minimap2 index file (.mmi) of the host removal reference", - "help_text": "Specify path to a pre-made Minimap2 index file (.mmi) of the host removal reference file given to `--hostremoval_reference`.\n\nSpecifying a premade index file can speed up runtime of the host-removal step, however if not supplied the pipeline will generate the indices for you." - }, - "save_hostremoval_index": { - "type": "boolean", - "fa_icon": "fas fa-save", - "description": "Save mapping index of input reference when not already supplied by user", - "help_text": "Save the output files of the in-built indexing of the host genome.\n\nThis is recommend to be turned on if you plan to use the same reference genome multiple times, as supplying the directory or file to `--shortread_hostremoval_index` or `--longread_hostremoval_index` respectively can speed up runtime of future runs. Once generated, we recommend you place this file _outside_ of your run results directory in a central 'cache' directory you and others using your machine can access and supply to the pipeline." - }, - "save_hostremoval_mapped": { - "type": "boolean", - "fa_icon": "fas fa-save", - "description": "Save mapped reads in BAM format from host removal", - "help_text": "Save the reads mapped to the reference genome in BAM format as output by the respective hostremoval alignment tool.\n\nThis can be useful if you wish to perform other analyses on the host organism (such as host-microbe interaction), however, you should consider whether the default mapping parameters of Bowtie2 (short-read) or minimap2 (long-read) are optimised to your context. " - }, - "save_hostremoval_unmapped": { - "type": "boolean", - "fa_icon": "fas fa-save", - "description": "Save unmapped reads in FASTQ format from host removal", - "help_text": "Save the unreads mapped to the reference genome in FASTQ format (as exported from `samtools view`).\n\nThis can be useful if you wish to perform other analyses on the off-target reads from the host mapping, such as manual profiling or _de novo_ assembly." - } - }, - "fa_icon": "fas fa-user-times" - }, - "preprocessing_run_merging_options": { - "title": "Preprocessing run merging options", - "type": "object", - "description": "Options for per-sample run-merging", - "default": "", - "properties": { - "perform_runmerging": { - "type": "boolean", - "fa_icon": "fas fa-toggle-on", - "description": "Turn on run merging", - "help_text": "Turns on the concatenation of sequencing runs or libraries with the same sample name.\n\nThis can be useful to ensure you get a single profile per sample, rather than one profile per run or library. Note that in some cases comparing profiles of independent _libraries_ may be useful, so this parameter may not always be suitable. " - }, - "save_runmerged_reads": { - "type": "boolean", - "fa_icon": "fas fa-save", - "description": "Save run-concatenated input FASTQ files for each sample", - "help_text": "Save the run- and library-concatenated reads of a given sample in FASTQ format." - } - }, - "fa_icon": "fas fa-clipboard-check" - }, - "profiling_options": { - "title": "Profiling options", - "type": "object", - "description": "", - "default": "", - "properties": { - "run_centrifuge": { - "type": "boolean", - "fa_icon": "fas fa-toggle-on", - "description": "Turn on profiling with Centrifuge. Requires database to be present CSV file passed to --databases" - }, - "centrifuge_save_reads": { - "type": "boolean", - "fa_icon": "fas fa-save", - "description": "Turn on saving of Centrifuge-aligned reads", - "help_text": "Save mapped (SAM, FASTQ) and unmapped (FASTQ) reads from alignment step of centrifuge in your output results directory.\n\n> Modifies tool parameter(s):\n> - centrifuge: `--un-gz`, `--al-gz`, `--un-conc-gz`, `--al-conc-gz`, `--out-fmt`" - }, - "run_diamond": { - "type": "boolean", - "fa_icon": "fas fa-toggle-on", - "description": "Turn on profiling with DIAMOND. Requires database to be present CSV file passed to --databases" - }, - "diamond_output_format": { - "type": "string", - "default": "tsv", - "enum": ["blast", "xml", "txt", "daa", "sam", "tsv", "paf"], - "fa_icon": "fas fa-file", - "description": "Specify output format from DIAMOND profiling.", - "help_text": "DIAMOND can produce output in a number of different formats, you can specify here which to produce.\n\nNote that DIAMOND can only produce one format at a time, and depending on which you pick, some downstream steps may not be executed. For example, selecting `daa` or `sam` will mean you will not get a tabular taxonomic profile as with the other tools.\n\nWill be overriden by `--diamond_save_reads.`\n\n> Modifies tool parameter(s):\n> - diamond blastx: `--outfmt`" - }, - "diamond_save_reads": { - "type": "boolean", - "fa_icon": "fas fa-save", - "description": "Turn on saving of DIAMOND-aligned reads. Will override --diamond_output_format and no taxon tables will be generated", - "help_text": "Save aligned reads in SAM format from alignment step of DIAMOND in your output results directory.\n\nNote this explicitly overrides `--diamond_output_format` to produce the SAM file, and no taxon table will be generated.\n\n> Modifies tool parameter(s):\n> - DIAMOND: `--outfmt`" - }, - "run_kaiju": { - "type": "boolean", - "fa_icon": "fas fa-toggle-on", - "description": "Turn on profiling with Kaiju. Requires database to be present CSV file passed to --databases" - }, - "kaiju_taxon_rank": { - "type": "string", - "default": "species", - "enum": ["phylum", "class", "order", "family", "genus", "species"], - "fa_icon": "fas fa-tag", - "description": "Specify taxonomic rank to be displayed in Kaiju taxon table", - "help_text": "Specify the taxonomic level(s) to be displayed in the resulting Kaiju taxon table, as generated by the kaiju2table helper tool.\n\nThis can be either a single level (e.g. `species`), or a comma separated list to display the full taxonomic path (e.g. `superkingdom,phylum,class,order,family,genus,species.`).\n\n> Modifies tool parameter(s):\n> - kaiju2table: `-l`" - }, - "run_kraken2": { - "type": "boolean", - "fa_icon": "fas fa-toggle-on", - "description": "Turn on profiling with Kraken2. Requires database to be present CSV file passed to --databases" - }, - "kraken2_save_reads": { - "type": "boolean", - "fa_icon": "fas fa-save", - "description": "Turn on saving of Kraken2-aligned reads", - "help_text": "Save reads that do and do not have a taxonomic classification in your output results directory in FASTQ format.\n\n> Modifies tool parameter(s):\n> - kraken2: `--classified-out` and `--unclassified-out`" - }, - "kraken2_save_readclassification": { - "type": "boolean", - "fa_icon": "fas fa-save", - "description": "Turn on saving of Kraken2 per-read taxonomic assignment file", - "help_text": "Save a text file that contains a list of each read that had a taxonomic assignment, with information on specific taxonomic taxonomic assignment that that read recieved.\n\n> Modifies tool parameter(s):\n> - kraken2: `--output`" - }, - "kraken2_save_minimizers": { - "type": "boolean", - "description": "Turn on saving minimizer information in the kraken2 report thus increasing to an eight column layout.", - "fa_icon": "fas fa-save", - "help_text": "Turn on saving minimizer information in the kraken2 report thus increasing to an eight column layout.\n\nAdds `--report-minimizer-data` to the kraken2 command." - }, - "run_bracken": { - "type": "boolean", - "description": "Post-process kraken2 reports with Bracken.", - "fa_icon": "fas fa-toggle-on" - }, - "run_malt": { - "type": "boolean", - "fa_icon": "fas fa-toggle-on", - "description": "Turn on profiling with MALT. Requires database to be present CSV file passed to --databases" - }, - "malt_mode": { - "type": "string", - "default": "BlastN", - "fa_icon": "fas fa-check-square", - "description": "Specify which MALT alignment mode to use", - "help_text": "Specify which version of MALT alignment to use.\n\nBlastN is generally recommended (nucleotide-nucleotide alignment), but particularly for very short reads (such as aDNA), whereas BlastX mode is similar to DIAMOND and will translate the nucleotide to amino acid sequences. Note each type of alignment mode requires different parameters during database construction. Refer to the MALT manual for more information.\n\n> Modifies tool parameter(s):\n> - malt-run: `-mode` " - }, - "malt_save_reads": { - "type": "boolean", - "fa_icon": "fas fa-save", - "description": "Turn on saving of MALT-aligned reads", - "help_text": "Turns on saving of MALT aligned reads in SAM format.\n\nNote that the SAM format produce by MALT is not completely valid, and may not work with downstream tools.\n\n> Modifies tool parameter(s):\n> - malt-run: `--alignments`, `-za`" - }, - "malt_generate_megansummary": { - "type": "boolean", - "fa_icon": "fas fa-save", - "description": "Turn on generation of MEGAN summary file from MALT results", - "help_text": "Turns on saving of MALT output in an additional MEGAN summary file (`.megan`) that can be loaded into the MEGAN metagenomic exploration tool.\n\nNote: this file is generated not directly from MALT but rather then MEGAN utility script `rma2info`.\n\n> Modifies tool parameter(s):\n> - rma2info: `-es`" - }, - "run_metaphlan3": { - "type": "boolean", - "description": "Turn on profiling with MetaPhlAn3. Requires database to be present CSV file passed to --databases", - "fa_icon": "fas fa-toggle-on" - }, - "run_motus": { - "type": "boolean", - "fa_icon": "fas fa-toggle-on", - "description": "Turn on profiling with mOTUs. Requires database to be present CSV file passed to --databases" - } - }, - "fa_icon": "fas fa-align-center" - }, - "postprocessing_and_visualisation_options": { - "title": "Postprocessing and visualisation options", - "type": "object", - "description": "", - "default": "", - "properties": { - "run_profile_standardisation": { - "type": "boolean", - "fa_icon": "fas fa-toggle-on", - "description": "Turn on standardisation of taxon tables across profilers", - "help_text": "Turns on standardisation of output OTU tables across all tools; each into a TSV format following the following scheme:\n\n|TAXON | SAMPLE_A | SAMPLE_B |\n|-------------|----------------|-----------------|\n| taxon_a | 32 | 123 |\n| taxon_b | 1 | 5 |\n\nThis currently only is generated for mOTUs." - }, - "generate_biom_output": { - "type": "boolean", - "fa_icon": "fas fa-toggle-on", - "description": "Turn on generation of BIOM output (currently only applies to mOTUs)", - "help_text": "Turn on the saving of the taxonomic output in BIOM format (`.biom`) in the results directory of your pipeline run, instead of the default TSV format.\n\nNote this file is from the output of the `motus merge` command.\n\n> Modifies tool parameter(s):\n> - `-B -o`" - }, - "run_krona": { - "type": "boolean", - "fa_icon": "fas fa-toggle-on", - "description": "Turn on generation of Krona plots for supported profilers", - "help_text": "Turn on the generation of Krona interactive pie-chart HTMLs for a selection of profilers.\n\nThe tools currently supported are:\n\n- centrifuge\n- kraken2\n- kaiju\n- MALT" - }, - "krona_taxonomy_directory": { - "type": "string", - "default": "None", - "fa_icon": "fas fa-folder-open", - "description": "Specify path to krona taxonomy directories (required for MALT krona plots)", - "help_text": "Specify a path to a Krona taxonomy database directory (i.e. a directory containing a krona generated `.tab` file).\n\nThis is only required for generating Krona plots of MALT output.\n\nNote this taxonomy database must be downloaded and generated with the `updateTaxonomy.sh` script from the krona-tools package." - } - }, - "fa_icon": "fas fa-chart-line" - }, - "institutional_config_options": { - "title": "Institutional config options", - "type": "object", - "fa_icon": "fas fa-university", - "description": "Parameters used to describe centralised config profiles. These should not be edited.", - "help_text": "The centralised nf-core configuration profiles use a handful of pipeline parameters to describe themselves. This information is then printed to the Nextflow log when you run a pipeline. You should not need to change these values when you run a pipeline.", - "properties": { - "custom_config_version": { - "type": "string", - "description": "Git commit id for Institutional configs.", - "default": "master", - "hidden": true, - "fa_icon": "fas fa-users-cog" - }, - "custom_config_base": { - "type": "string", - "description": "Base directory for Institutional configs.", - "default": "https://raw.githubusercontent.com/nf-core/configs/master", - "hidden": true, - "help_text": "If you're running offline, Nextflow will not be able to fetch the institutional config files from the internet. If you don't need them, then this is not a problem. If you do need them, you should download the files from the repo and tell Nextflow where to find them with this parameter.", - "fa_icon": "fas fa-users-cog" - }, - "config_profile_name": { - "type": "string", - "description": "Institutional config name.", - "hidden": true, - "fa_icon": "fas fa-users-cog" - }, - "config_profile_description": { - "type": "string", - "description": "Institutional config description.", - "hidden": true, - "fa_icon": "fas fa-users-cog" - }, - "config_profile_contact": { - "type": "string", - "description": "Institutional config contact information.", - "hidden": true, - "fa_icon": "fas fa-users-cog" - }, - "config_profile_url": { - "type": "string", - "description": "Institutional config URL link.", - "hidden": true, - "fa_icon": "fas fa-users-cog" + "$schema": "http://json-schema.org/draft-07/schema", + "$id": "https://raw.githubusercontent.com/nf-core/taxprofiler/master/nextflow_schema.json", + "title": "nf-core/taxprofiler pipeline parameters", + "description": "Taxonomic profiling of shotgun metagenomic data", + "type": "object", + "definitions": { + "input_output_options": { + "title": "Input/output options", + "type": "object", + "fa_icon": "fas fa-terminal", + "description": "Define where the pipeline should find input data and save output data.", + "required": ["input", "databases", "outdir"], + "properties": { + "input": { + "type": "string", + "format": "file-path", + "mimetype": "text/csv", + "pattern": "^\\S+\\.(csv|yaml|yml)$", + "schema": "assets/schema_input.json", + "description": "Path to comma-separated file containing information about the samples and libraries/runs.", + "help_text": "You will need to create a design file with information about the samples and libraries/runs you want to running in your pipeline run. Use this parameter to specify its location. It has to be a comma-separated file with 6 columns, and a header row. See [usage docs](https://nf-co.re/taxprofiler/usage#samplesheet-input).", + "fa_icon": "fas fa-file-csv" + }, + "databases": { + "type": "string", + "mimetype": "text/csv", + "format": "file-path", + "fa_icon": "fas fa-database", + "description": "Path to comma-separated file containing information about databases and profiling parameters for each taxonomic profiler", + "help_text": "You will need to create a design file with information about the samples in your experiment before running the pipeline. Use this parameter to specify its location. It has to be a comma-separated file with 4 columns, and a header row. See [usage docs](https://nf-co.re/taxprofiler/dev/usage#full-database-sheet).\n\nProfilers will only be executed if a corresponding database are supplied. \n\nWe recommend storing this database sheet somewhere centrally and accessible by others members of your lab/institutions, as this file will likely be regularly reused." + }, + "outdir": { + "type": "string", + "format": "directory-path", + "description": "The output directory where the results will be saved. You have to use absolute paths to storage on Cloud infrastructure.", + "fa_icon": "fas fa-folder-open" + }, + "email": { + "type": "string", + "description": "Email address for completion summary.", + "fa_icon": "fas fa-envelope", + "help_text": "Set this parameter to your e-mail address to get a summary e-mail with details of the run sent to you when the workflow exits. If set in your user config file (`~/.nextflow/config`) then you don't need to specify this on the command line for every run.", + "pattern": "^([a-zA-Z0-9_\\-\\.]+)@([a-zA-Z0-9_\\-\\.]+)\\.([a-zA-Z]{2,5})$" + }, + "multiqc_title": { + "type": "string", + "description": "MultiQC report title. Printed as page header, used for filename if not otherwise specified.", + "fa_icon": "fas fa-file-signature" + } + } + }, + "preprocessing_general_qc_options": { + "title": "Preprocessing general QC options", + "type": "object", + "description": "Common options across both long and short read preprocessing QC steps", + "default": "", + "properties": { + "save_preprocessed_reads": { + "type": "boolean", + "fa_icon": "fas fa-save", + "description": "Save reads from adapter clipping/pair-merging, length filtering for both short and long reads", + "help_text": "This saves the FASTQ output from the following tools:\n\n- fastp\n- AdapterRemoval\n- Porechop\n- Filtlong\n\nThese reads will be a mixture of: adapter clipped, quality trimmed, pair-merged, and length filtered, depending on the parameters you set." + } + }, + "fa_icon": "fas fa-users-cog" + }, + "preprocessing_short_read_qc_options": { + "title": "Preprocessing short-read QC options", + "type": "object", + "description": "Options for adapter clipping, quality trimming, pair-merging, and complexity filtering", + "default": "", + "properties": { + "perform_shortread_qc": { + "type": "boolean", + "fa_icon": "fas fa-toggle-on", + "description": "Turns on short read quality control steps (adapter clipping, complexity filtering etc.)", + "help_text": "Turns on short read quality control steps (adapter clipping, complexity filtering etc.)\n\nThis subworkflow can perform:\n\n- Adapter removal\n- Read quality trimming\n- Read pair merging\n- Length filtering\n- Complexity filtering\n\nEither with fastp or AdapterRemoval.\n\nRemoving adapters (if present) is recommend to reduce false-postive hits that may occur from 'dirty' or 'contaminated' reference genomes in a profiling database that contain accidentially incorporated adapter sequences. Note that some, but not all, tools support paired-end alignment (utilising information about the insert covered by the pairs). However read pair merging in some cases can be recommend to increase read length (such as in aDNA). Length filtering, and/or complexity can speed up alignment by reducing the number of short unspecific reads that need to be aligned." + }, + "shortread_qc_tool": { + "type": "string", + "default": "fastp", + "enum": ["fastp", "adapterremoval"], + "fa_icon": "fas fa-tools", + "description": "Specify which tool to use for short-read QC" + }, + "shortread_qc_skipadaptertrim": { + "type": "boolean", + "fa_icon": "fas fa-forward", + "description": "Skip adapter trimming", + "help_text": "Skip the removal of sequencing adapters. \n\nThis often can be useful to speed up run-time of the pipeline when analysing data downloaded from public databases such as the ENA or SRA, as adapters should already be removed (however we recommend to check FastQC results to ensure this is the case)." + }, + "shortread_qc_adapter1": { + "type": "string", + "default": "None", + "fa_icon": "fas fa-grip-lines", + "description": "Specify adapter 1 nucleotide sequence", + "help_text": "Specify a custom forward or R1 adapter sequence to be removed from reads. \n\nIf not set, the selected short-read QC tool's defaults will be used.\n\n> Modifies tool parameter(s):\n> - fastp: `--adapter_sequence`. fastp default: `AGATCGGAAGAGCACACGTCTGAACTCCAGTCA`\n> - AdapterRemoval: `--adapter1`. AdapteRemoval2 default: `AGATCGGAAGAGCACACGTCTGAACTCCAGTCACNNNNNNATCTCGTATGCCGTCTTCTGCTTG`" + }, + "shortread_qc_adapter2": { + "type": "string", + "default": "None", + "fa_icon": "fas fa-grip-lines", + "description": "Specify adapter 2 nucleotide sequence", + "help_text": "Specify a custom reverse or R2 adapter sequence to be removed from reads. \n\nIf not set, the selected short-read QC tool's defaults will be used.\n\n> Modifies tool parameter(s):\n> - fastp: `--adapter_sequence`. fastp default: `AGATCGGAAGAGCGTCGTGTAGGGAAAGAGTGT`\n> - AdapterRemoval: `--adapter1`. AdapteRemoval2 default: `AGATCGGAAGAGCGTCGTGTAGGGAAAGAGTGTAGATCTCGGTGGTCGCCGTATCATT`" + }, + "shortread_qc_adapterlist": { + "type": "string", + "default": "None", + "description": "Specify a list of all possible adapters to trim. Overrides --shortread_qc_adapter1/2. Formats: .txt (AdapterRemoval) or .fasta. (fastp).", + "help_text": "Allows to supply a file with a list of adapter (combinations) to remove from all files. \n\nOverrides the --shortread_qc_adapter1/--shortread_qc_adapter2 parameters . \n\nFor AdapterRemoval this consists of a two column table with a `.txt` extension: first column represents forward strand, second column for reverse strand. You must supply all possible combinations, one per line, and this list is applied to all files. See AdapterRemoval documentation for more information.\n\nFor fastp this consists of a standard FASTA format with a `.fasta`/`.fa`/`.fna`/`.fas` extension. The adapter sequence in this file should be at least 6bp long, otherwise it will be skipped. fastp trims the adapters present in the FASTA file one by one.\n\n> Modifies AdapterRemoval parameter: --adapter-list\n> Modifies fastp parameter: --adapter_fasta" + }, + "shortread_qc_mergepairs": { + "type": "boolean", + "fa_icon": "fas fa-toggle-on", + "description": "Turn on merging of read pairs for paired-end data", + "default": true, + "help_text": "Turn on the merging of read-pairs of paired-end short read sequencing data for AdapterRemoval (this is performed automatically with fastp).\n\n> Modifies tool parameter(s):\n> - AdapterRemoval: `--collapse`\n" + }, + "shortread_qc_excludeunmerged": { + "type": "boolean", + "fa_icon": "far fa-times-circle", + "description": "Discard unmerged reads from paired-end merging", + "help_text": "Turns off the inclusion of unmerged reads in resulting processing FASTQ file of paired-end sequencing data when using `fastp`.\n\nThis can be useful in cases where you prefer to have very short reads (e.g. aDNA), thus excluding longer-reads or possibly faulty reads where one of the pair was discarded.\n\n> Modifies tool parameter(s):\n> - removed from reads `--include_unmerged`\n" + }, + "shortread_qc_minlength": { + "type": "integer", + "default": 15, + "fa_icon": "fas fa-ruler-horizontal", + "description": "Specify the minimum length of reads to be retained", + "help_text": "Specifying a mimum read length filtering can speed up profiling by reducing the number of short unspecific reads that need to be match/aligned to the database.\n\n> Modifies tool parameter(s):\n> - removed from reads `--length_required`\n> - AdapterRemoval: `--minlength`" + }, + "perform_shortread_complexityfilter": { + "type": "boolean", + "fa_icon": "fas fa-toggle-on", + "description": "Turns on nucleotide sequence complexity filtering", + "help_text": "Turns on sequencing complexity filtering. Complexity filtering can be useful to increase run-time by removing unspecific read sequences that do not provide any informative taxon ID." + }, + "shortread_complexityfilter_tool": { + "type": "string", + "default": "bbduk", + "enum": ["bbduk", "prinseqplusplus", "fastp"], + "fa_icon": "fas fa-hammer", + "description": "Specify which tool to use for complexity filtering" + }, + "shortread_complexityfilter_entropy": { + "type": "number", + "default": 0.3, + "fa_icon": "fas fa-random", + "description": "Specify the minimum sequence entropy level for complexity filtering", + "help_text": "Specify the minimum 'entropy' value for complexity filtering for BBDuk or PRINSEQ++.\n\nNote that this value will only be used for PRINSEQ++ if `--shortread_complexityfilter_prinseqplusplus_mode` is set to `entropy`.\n\nEntropy here corresponds to the amount of sequence variation exists within the read. Higher values correspond to more variety, and thus will likely reslut in more specific matching to a taxon's reference genome. The trade off here is fewer reads (or abundance information) available for having a confident identification.\n\n\n> Modifies tool parameter(s):\n> - BBDuk: `entropy=`\n> - PRINSEQ++: `-lc_entropy`\n\n" + }, + "shortread_complexityfilter_bbduk_windowsize": { + "type": "integer", + "default": 50, + "fa_icon": "far fa-window-maximize", + "description": "Specify the window size for BBDuk complexity filtering", + "help_text": "Specify the window size to calculate the level entropy within for BBDuk.\n\n> Modifies tool parameter(s):\n> - BBDuk: `entropywindow=`" + }, + "shortread_complexityfilter_bbduk_mask": { + "type": "boolean", + "fa_icon": "fas fa-mask", + "description": "Turn on masking rather than discarding of low complexity reads for BBduk", + "help_text": "Turn on masking of low-complexity reads (i.e., replacement with `N`) rather than removal.\n\n> Modifies tool parameter(s)\n> - BBDuk: `entropymask=`" + }, + "shortread_complexityfilter_fastp_threshold": { + "type": "integer", + "default": 30, + "fa_icon": "fas fa-sort-numeric-down", + "description": "Specify the minimum complexity filter threshold of fastp", + "help_text": "Specify the minimum sequence complexity value for fastp. This value corresponds to the percentage of bases that is different from it's adjacent bases.\n\n> Modifies tool parameter(s):\n> - removed from reads `--complexity_threshold`" + }, + "shortread_complexityfilter_prinseqplusplus_mode": { + "type": "string", + "default": "entropy", + "enum": ["entropy", "dust"], + "fa_icon": "fas fa-check-square", + "description": "Specify the complexity filter mode for PRINSEQ++" + }, + "shortread_complexityfilter_prinseqplusplus_dustscore": { + "type": "number", + "default": 0.5, + "fa_icon": "fas fa-head-side-mask", + "description": "Specify the minimum dust score for PRINTSEQ++ complexity filtering", + "help_text": "Specify the minimum dust score below which low-complexity reads will be removed. A DUST score is based on how often different tri-nucleotides occur along a read.\n\n> Modifies tool parameter(s):\n> - PRINSEQ++: `--lc_dust`" + }, + "save_complexityfiltered_reads": { + "type": "boolean", + "fa_icon": "fas fa-save", + "description": "Save complexity filtered short-reads", + "help_text": "Specify whether to save the final complexity filtered reads in your results directory (`--outdir`)." + } + }, + "fa_icon": "fas fa-compress-alt" + }, + "preprocessing_long_read_qc_options": { + "title": "Preprocessing long-read QC options", + "type": "object", + "description": "Options for adapter clipping, quality trimming, and length filtering", + "default": "", + "properties": { + "perform_longread_qc": { + "type": "boolean", + "fa_icon": "fas fa-toggle-on", + "description": "Turns on long read quality control steps (adapter clipping, length filtering etc.)", + "help_text": "Turns on long read quality control steps (adapter clipping, length and/or quality filtering.)\n\nRemoving adapters (if present) is recommend to reduce false-postive hits that may occur from 'dirty' or 'contaminated' reference genomes in a profiling database that contain accidentially incorporated adapter sequences.\n\nLength filtering, and quality filtering can speed up alignment by reducing the number of unspecific reads that need to be aligned." + }, + "longread_qc_skipadaptertrim": { + "type": "boolean", + "description": "Skip long-read trimming", + "fa_icon": "fas fa-forward", + "help_text": "Skip removal of adapters by Porechop. This can be useful in some cases to speed up run time - particularly when you are running data downloading from public databases such as the ENA/SRA that should already have adapters removed. We recommend that you check your FastQC results this is indeed the case." + }, + "longread_qc_skipqualityfilter": { + "type": "boolean", + "description": "Skip long-read length and quality filtering", + "fa_icon": "fas fa-forward", + "help_text": "Skip removal of quality filtering with Filtlong. This will skip length, percent reads, and target bases filtering (see other `--longread_qc_qualityfilter_*` parameters)." + }, + "longread_qc_qualityfilter_minlength": { + "type": "integer", + "default": 1000, + "description": "Specify the minimum length of reads to be retained", + "fa_icon": "fas fa-ruler-horizontal", + "help_text": "Specify the minimum of length of reads to be kept for downstream analysis.\n\n> Modifies tool parameter(s):\n> - Filtlong: `--min_length`" + }, + "longread_qc_qualityfilter_keeppercent": { + "type": "integer", + "default": 90, + "description": "Specify the percent of high-quality bases to be retained", + "fa_icon": "fas fa-percentage", + "help_text": "Throw out the remaining percentage of reads outside the value. This is measured by bp, not by read count. So this option throws out the worst e.g. 10% of read bases if the parameter is set to `90`. _Modified from [Filtlong documentation](https://github.com/rrwick/Filtlong)_\n\n> Modifies tool parameter(s):\n> - Filtlong: `--keep_percent`" + }, + "longread_qc_qualityfilter_targetbases": { + "type": "integer", + "default": 500000000, + "description": "Specify the number of high-quality bases in the library to be retained", + "fa_icon": "fas fa-bullseye", + "help_text": "Removes the worst reads until only the specified value of bases remain, useful for very large read sets. If the input read set is less than the specified value, this setting will have no effect. _Modified from [Filtlong documentation](https://github.com/rrwick/Filtlong)_\n\n> Modifies tool parameter(s):\n> - Filtlong: `--keep_percent`" + } + }, + "fa_icon": "fas fa-expand-alt" + }, + "preprocessing_host_removal_options": { + "title": "Preprocessing host removal options", + "type": "object", + "description": "Options for pre-profiling host read removal", + "default": "", + "properties": { + "perform_shortread_hostremoval": { + "type": "boolean", + "fa_icon": "fas fa-toggle-on", + "description": "Turn on short-read host removal", + "help_text": "Turns on the ability to remove short-reads from the that derived from a known organism, using Bowtie2 and samtools\n\nThis subworkflow is useful to remove reads that may come from a host, or a known contamination like the human reference genome. Human DNA contamination of (microbial) reference genomes is well known, so removal of these prior profiling both reduces the risks of false positives, and in _some cases_ a faster runtime (as less reads need to be profiled).\n\nAlternatively, you can include the reference genome within your profiling databases and can turn off this subworkflow, with the trade off of a larger taxonomic profiling database." + }, + "perform_longread_hostremoval": { + "type": "boolean", + "fa_icon": "fas fa-toggle-on", + "description": "Turn on long-read host removal", + "help_text": "Turns on the ability to remove long-reads from the that derived from a known organism, using minimap2 and samtools\n\nThis subworkflow is useful to remove reads that may come from a host, or a known contamination like the human reference genome. Human DNA contamination of (microbial) reference genomes is well known, so removal of these prior profiling both reduces the risks of false positives, and in _some cases_ a faster runtime (as less reads need to be profiled).\n\nAlternatively, you can include the reference genome within your profiling databases and can turn off this subworkflow, with the trade off of a larger taxonomic profiling database." + }, + "hostremoval_reference": { + "type": "string", + "default": "None", + "fa_icon": "fas fa-file-alt", + "description": "Specify path to single reference FASTA of host(s) genome(s)", + "help_text": "Specify a path to the FASTA file (optionally gzipped) of the reference genome of the organism to be removed.\n\nIf you have two or more host organisms or contaminants you wish to remove, you can concatenate the FASTAs of the different taxa into a single one to provide to the pipeline." + }, + "shortread_hostremoval_index": { + "type": "string", + "default": "None", + "fa_icon": "fas fa-address-book", + "description": "Specify path to the directory containing pre-made BowTie2 indexes of the host removal reference", + "help_text": "Specify the path to a _directory_ containing pre-made Bowtie2 reference index files (i.e. the directory containing `.bt1`, `.bt2` files etc.). These should sit in the same directory alongside the the reference file specified in `--hostremoval_reference`.\n\nSpecifying premade indices can speed up runtime of the host-removal step, however if not supplied the pipeline will generate the indices for you." + }, + "longread_hostremoval_index": { + "type": "string", + "default": "None", + "fa_icon": "fas fa-address-book", + "description": "Specify path to a pre-made Minimap2 index file (.mmi) of the host removal reference", + "help_text": "Specify path to a pre-made Minimap2 index file (.mmi) of the host removal reference file given to `--hostremoval_reference`.\n\nSpecifying a premade index file can speed up runtime of the host-removal step, however if not supplied the pipeline will generate the indices for you." + }, + "save_hostremoval_index": { + "type": "boolean", + "fa_icon": "fas fa-save", + "description": "Save mapping index of input reference when not already supplied by user", + "help_text": "Save the output files of the in-built indexing of the host genome.\n\nThis is recommend to be turned on if you plan to use the same reference genome multiple times, as supplying the directory or file to `--shortread_hostremoval_index` or `--longread_hostremoval_index` respectively can speed up runtime of future runs. Once generated, we recommend you place this file _outside_ of your run results directory in a central 'cache' directory you and others using your machine can access and supply to the pipeline." + }, + "save_hostremoval_mapped": { + "type": "boolean", + "fa_icon": "fas fa-save", + "description": "Save mapped reads in BAM format from host removal", + "help_text": "Save the reads mapped to the reference genome in BAM format as output by the respective hostremoval alignment tool.\n\nThis can be useful if you wish to perform other analyses on the host organism (such as host-microbe interaction), however, you should consider whether the default mapping parameters of Bowtie2 (short-read) or minimap2 (long-read) are optimised to your context. " + }, + "save_hostremoval_unmapped": { + "type": "boolean", + "fa_icon": "fas fa-save", + "description": "Save unmapped reads in FASTQ format from host removal", + "help_text": "Save the unreads mapped to the reference genome in FASTQ format (as exported from `samtools view`).\n\nThis can be useful if you wish to perform other analyses on the off-target reads from the host mapping, such as manual profiling or _de novo_ assembly." + } + }, + "fa_icon": "fas fa-user-times" + }, + "preprocessing_run_merging_options": { + "title": "Preprocessing run merging options", + "type": "object", + "description": "Options for per-sample run-merging", + "default": "", + "properties": { + "perform_runmerging": { + "type": "boolean", + "fa_icon": "fas fa-toggle-on", + "description": "Turn on run merging", + "help_text": "Turns on the concatenation of sequencing runs or libraries with the same sample name.\n\nThis can be useful to ensure you get a single profile per sample, rather than one profile per run or library. Note that in some cases comparing profiles of independent _libraries_ may be useful, so this parameter may not always be suitable. " + }, + "save_runmerged_reads": { + "type": "boolean", + "fa_icon": "fas fa-save", + "description": "Save run-concatenated input FASTQ files for each sample", + "help_text": "Save the run- and library-concatenated reads of a given sample in FASTQ format." + } + }, + "fa_icon": "fas fa-clipboard-check" + }, + "profiling_options": { + "title": "Profiling options", + "type": "object", + "description": "", + "default": "", + "properties": { + "run_centrifuge": { + "type": "boolean", + "fa_icon": "fas fa-toggle-on", + "description": "Turn on profiling with Centrifuge. Requires database to be present CSV file passed to --databases" + }, + "centrifuge_save_reads": { + "type": "boolean", + "fa_icon": "fas fa-save", + "description": "Turn on saving of Centrifuge-aligned reads", + "help_text": "Save mapped (SAM, FASTQ) and unmapped (FASTQ) reads from alignment step of centrifuge in your output results directory.\n\n> Modifies tool parameter(s):\n> - centrifuge: `--un-gz`, `--al-gz`, `--un-conc-gz`, `--al-conc-gz`, `--out-fmt`" + }, + "run_diamond": { + "type": "boolean", + "fa_icon": "fas fa-toggle-on", + "description": "Turn on profiling with DIAMOND. Requires database to be present CSV file passed to --databases" + }, + "diamond_output_format": { + "type": "string", + "default": "tsv", + "enum": ["blast", "xml", "txt", "daa", "sam", "tsv", "paf"], + "fa_icon": "fas fa-file", + "description": "Specify output format from DIAMOND profiling.", + "help_text": "DIAMOND can produce output in a number of different formats, you can specify here which to produce.\n\nNote that DIAMOND can only produce one format at a time, and depending on which you pick, some downstream steps may not be executed. For example, selecting `daa` or `sam` will mean you will not get a tabular taxonomic profile as with the other tools.\n\nWill be overriden by `--diamond_save_reads.`\n\n> Modifies tool parameter(s):\n> - diamond blastx: `--outfmt`" + }, + "diamond_save_reads": { + "type": "boolean", + "fa_icon": "fas fa-save", + "description": "Turn on saving of DIAMOND-aligned reads. Will override --diamond_output_format and no taxon tables will be generated", + "help_text": "Save aligned reads in SAM format from alignment step of DIAMOND in your output results directory.\n\nNote this explicitly overrides `--diamond_output_format` to produce the SAM file, and no taxon table will be generated.\n\n> Modifies tool parameter(s):\n> - DIAMOND: `--outfmt`" + }, + "run_kaiju": { + "type": "boolean", + "fa_icon": "fas fa-toggle-on", + "description": "Turn on profiling with Kaiju. Requires database to be present CSV file passed to --databases" + }, + "kaiju_taxon_rank": { + "type": "string", + "default": "species", + "enum": ["phylum", "class", "order", "family", "genus", "species"], + "fa_icon": "fas fa-tag", + "description": "Specify taxonomic rank to be displayed in Kaiju taxon table", + "help_text": "Specify the taxonomic level(s) to be displayed in the resulting Kaiju taxon table, as generated by the kaiju2table helper tool.\n\nThis can be either a single level (e.g. `species`), or a comma separated list to display the full taxonomic path (e.g. `superkingdom,phylum,class,order,family,genus,species.`).\n\n> Modifies tool parameter(s):\n> - kaiju2table: `-l`" + }, + "run_kraken2": { + "type": "boolean", + "fa_icon": "fas fa-toggle-on", + "description": "Turn on profiling with Kraken2. Requires database to be present CSV file passed to --databases" + }, + "kraken2_save_reads": { + "type": "boolean", + "fa_icon": "fas fa-save", + "description": "Turn on saving of Kraken2-aligned reads", + "help_text": "Save reads that do and do not have a taxonomic classification in your output results directory in FASTQ format.\n\n> Modifies tool parameter(s):\n> - kraken2: `--classified-out` and `--unclassified-out`" + }, + "kraken2_save_readclassification": { + "type": "boolean", + "fa_icon": "fas fa-save", + "description": "Turn on saving of Kraken2 per-read taxonomic assignment file", + "help_text": "Save a text file that contains a list of each read that had a taxonomic assignment, with information on specific taxonomic taxonomic assignment that that read recieved.\n\n> Modifies tool parameter(s):\n> - kraken2: `--output`" + }, + "kraken2_save_minimizers": { + "type": "boolean", + "description": "Turn on saving minimizer information in the kraken2 report thus increasing to an eight column layout.", + "fa_icon": "fas fa-save", + "help_text": "Turn on saving minimizer information in the kraken2 report thus increasing to an eight column layout.\n\nAdds `--report-minimizer-data` to the kraken2 command." + }, + "run_bracken": { + "type": "boolean", + "description": "Post-process kraken2 reports with Bracken.", + "fa_icon": "fas fa-toggle-on" + }, + "run_malt": { + "type": "boolean", + "fa_icon": "fas fa-toggle-on", + "description": "Turn on profiling with MALT. Requires database to be present CSV file passed to --databases" + }, + "malt_mode": { + "type": "string", + "default": "BlastN", + "fa_icon": "fas fa-check-square", + "description": "Specify which MALT alignment mode to use", + "help_text": "Specify which version of MALT alignment to use.\n\nBlastN is generally recommended (nucleotide-nucleotide alignment), but particularly for very short reads (such as aDNA), whereas BlastX mode is similar to DIAMOND and will translate the nucleotide to amino acid sequences. Note each type of alignment mode requires different parameters during database construction. Refer to the MALT manual for more information.\n\n> Modifies tool parameter(s):\n> - malt-run: `-mode` " + }, + "malt_save_reads": { + "type": "boolean", + "fa_icon": "fas fa-save", + "description": "Turn on saving of MALT-aligned reads", + "help_text": "Turns on saving of MALT aligned reads in SAM format.\n\nNote that the SAM format produce by MALT is not completely valid, and may not work with downstream tools.\n\n> Modifies tool parameter(s):\n> - malt-run: `--alignments`, `-za`" + }, + "malt_generate_megansummary": { + "type": "boolean", + "fa_icon": "fas fa-save", + "description": "Turn on generation of MEGAN summary file from MALT results", + "help_text": "Turns on saving of MALT output in an additional MEGAN summary file (`.megan`) that can be loaded into the MEGAN metagenomic exploration tool.\n\nNote: this file is generated not directly from MALT but rather then MEGAN utility script `rma2info`.\n\n> Modifies tool parameter(s):\n> - rma2info: `-es`" + }, + "run_metaphlan3": { + "type": "boolean", + "description": "Turn on profiling with MetaPhlAn3. Requires database to be present CSV file passed to --databases", + "fa_icon": "fas fa-toggle-on" + }, + "run_motus": { + "type": "boolean", + "fa_icon": "fas fa-toggle-on", + "description": "Turn on profiling with mOTUs. Requires database to be present CSV file passed to --databases" + } + }, + "fa_icon": "fas fa-align-center" + }, + "postprocessing_and_visualisation_options": { + "title": "Postprocessing and visualisation options", + "type": "object", + "description": "", + "default": "", + "properties": { + "run_profile_standardisation": { + "type": "boolean", + "fa_icon": "fas fa-toggle-on", + "description": "Turn on standardisation of taxon tables across profilers", + "help_text": "Turns on standardisation of output OTU tables across all tools; each into a TSV format following the following scheme:\n\n|TAXON | SAMPLE_A | SAMPLE_B |\n|-------------|----------------|-----------------|\n| taxon_a | 32 | 123 |\n| taxon_b | 1 | 5 |\n\nThis currently only is generated for mOTUs." + }, + "generate_biom_output": { + "type": "boolean", + "fa_icon": "fas fa-toggle-on", + "description": "Turn on generation of BIOM output (currently only applies to mOTUs)", + "help_text": "Turn on the saving of the taxonomic output in BIOM format (`.biom`) in the results directory of your pipeline run, instead of the default TSV format.\n\nNote this file is from the output of the `motus merge` command.\n\n> Modifies tool parameter(s):\n> - `-B -o`" + }, + "run_krona": { + "type": "boolean", + "fa_icon": "fas fa-toggle-on", + "description": "Turn on generation of Krona plots for supported profilers", + "help_text": "Turn on the generation of Krona interactive pie-chart HTMLs for a selection of profilers.\n\nThe tools currently supported are:\n\n- centrifuge\n- kraken2\n- kaiju\n- MALT" + }, + "krona_taxonomy_directory": { + "type": "string", + "default": "None", + "fa_icon": "fas fa-folder-open", + "description": "Specify path to krona taxonomy directories (required for MALT krona plots)", + "help_text": "Specify a path to a Krona taxonomy database directory (i.e. a directory containing a krona generated `.tab` file).\n\nThis is only required for generating Krona plots of MALT output.\n\nNote this taxonomy database must be downloaded and generated with the `updateTaxonomy.sh` script from the krona-tools package." + } + }, + "fa_icon": "fas fa-chart-line" + }, + "institutional_config_options": { + "title": "Institutional config options", + "type": "object", + "fa_icon": "fas fa-university", + "description": "Parameters used to describe centralised config profiles. These should not be edited.", + "help_text": "The centralised nf-core configuration profiles use a handful of pipeline parameters to describe themselves. This information is then printed to the Nextflow log when you run a pipeline. You should not need to change these values when you run a pipeline.", + "properties": { + "custom_config_version": { + "type": "string", + "description": "Git commit id for Institutional configs.", + "default": "master", + "hidden": true, + "fa_icon": "fas fa-users-cog" + }, + "custom_config_base": { + "type": "string", + "description": "Base directory for Institutional configs.", + "default": "https://raw.githubusercontent.com/nf-core/configs/master", + "hidden": true, + "help_text": "If you're running offline, Nextflow will not be able to fetch the institutional config files from the internet. If you don't need them, then this is not a problem. If you do need them, you should download the files from the repo and tell Nextflow where to find them with this parameter.", + "fa_icon": "fas fa-users-cog" + }, + "config_profile_name": { + "type": "string", + "description": "Institutional config name.", + "hidden": true, + "fa_icon": "fas fa-users-cog" + }, + "config_profile_description": { + "type": "string", + "description": "Institutional config description.", + "hidden": true, + "fa_icon": "fas fa-users-cog" + }, + "config_profile_contact": { + "type": "string", + "description": "Institutional config contact information.", + "hidden": true, + "fa_icon": "fas fa-users-cog" + }, + "config_profile_url": { + "type": "string", + "description": "Institutional config URL link.", + "hidden": true, + "fa_icon": "fas fa-users-cog" + } + } + }, + "max_job_request_options": { + "title": "Max job request options", + "type": "object", + "fa_icon": "fab fa-acquisitions-incorporated", + "description": "Set the top limit for requested resources for any single job.", + "help_text": "If you are running on a smaller system, a pipeline step requesting more resources than are available may cause the Nextflow to stop the run with an error. These options allow you to cap the maximum resources requested by any single job so that the pipeline will run on your system.\n\nNote that you can not _increase_ the resources requested by any job using these options. For that you will need your own configuration file. See [the nf-core website](https://nf-co.re/usage/configuration) for details.", + "properties": { + "max_cpus": { + "type": "integer", + "description": "Maximum number of CPUs that can be requested for any single job.", + "default": 16, + "fa_icon": "fas fa-microchip", + "hidden": true, + "help_text": "Use to set an upper-limit for the CPU requirement for each process. Should be an integer e.g. `--max_cpus 1`" + }, + "max_memory": { + "type": "string", + "description": "Maximum amount of memory that can be requested for any single job.", + "default": "128.GB", + "fa_icon": "fas fa-memory", + "pattern": "^\\d+(\\.\\d+)?\\.?\\s*(K|M|G|T)?B$", + "hidden": true, + "help_text": "Use to set an upper-limit for the memory requirement for each process. Should be a string in the format integer-unit e.g. `--max_memory '8.GB'`" + }, + "max_time": { + "type": "string", + "description": "Maximum amount of time that can be requested for any single job.", + "default": "240.h", + "fa_icon": "far fa-clock", + "pattern": "^(\\d+\\.?\\s*(s|m|h|day)\\s*)+$", + "hidden": true, + "help_text": "Use to set an upper-limit for the time requirement for each process. Should be a string in the format integer-unit e.g. `--max_time '2.h'`" + } + } + }, + "generic_options": { + "title": "Generic options", + "type": "object", + "fa_icon": "fas fa-file-import", + "description": "Less common options for the pipeline, typically set in a config file.", + "help_text": "These options are common to all nf-core pipelines and allow you to customise some of the core preferences for how the pipeline runs.\n\nTypically these options would be set in a Nextflow config file loaded for all pipeline runs, such as `~/.nextflow/config`.", + "properties": { + "help": { + "type": "boolean", + "description": "Display help text.", + "fa_icon": "fas fa-question-circle", + "hidden": true + }, + "publish_dir_mode": { + "type": "string", + "default": "copy", + "description": "Method used to save pipeline results to output directory.", + "help_text": "The Nextflow `publishDir` option specifies which intermediate files should be saved to the output directory. This option tells the pipeline what method should be used to move these files. See [Nextflow docs](https://www.nextflow.io/docs/latest/process.html#publishdir) for details.", + "fa_icon": "fas fa-copy", + "enum": ["symlink", "rellink", "link", "copy", "copyNoFollow", "move"], + "hidden": true + }, + "email_on_fail": { + "type": "string", + "description": "Email address for completion summary, only when pipeline fails.", + "fa_icon": "fas fa-exclamation-triangle", + "pattern": "^([a-zA-Z0-9_\\-\\.]+)@([a-zA-Z0-9_\\-\\.]+)\\.([a-zA-Z]{2,5})$", + "help_text": "An email address to send a summary email to when the pipeline is completed - ONLY sent if the pipeline does not exit successfully.", + "hidden": true + }, + "plaintext_email": { + "type": "boolean", + "description": "Send plain-text email instead of HTML.", + "fa_icon": "fas fa-remove-format", + "hidden": true + }, + "max_multiqc_email_size": { + "type": "string", + "description": "File size limit when attaching MultiQC reports to summary emails.", + "pattern": "^\\d+(\\.\\d+)?\\.?\\s*(K|M|G|T)?B$", + "default": "25.MB", + "fa_icon": "fas fa-file-upload", + "hidden": true + }, + "monochrome_logs": { + "type": "boolean", + "description": "Do not use coloured log outputs.", + "fa_icon": "fas fa-palette", + "hidden": true + }, + "hook_url": { + "type": "string", + "description": "Incoming hook URL for messaging service", + "fa_icon": "fas fa-people-group", + "help_text": "Incoming hook URL for messaging service. Currently, only MS Teams is supported.", + "hidden": true + }, + "multiqc_config": { + "type": "string", + "description": "Custom config file to supply to MultiQC.", + "fa_icon": "fas fa-cog", + "hidden": true + }, + "multiqc_logo": { + "type": "string", + "description": "Custom logo file to supply to MultiQC. File name must also be set in the MultiQC config file", + "fa_icon": "fas fa-image", + "hidden": true + }, + "multiqc_methods_description": { + "type": "string", + "description": "Custom MultiQC yaml file containing HTML including a methods description.", + "fa_icon": "fas fa-cog" + }, + "tracedir": { + "type": "string", + "description": "Directory to keep pipeline Nextflow logs and reports.", + "default": "${params.outdir}/pipeline_info", + "fa_icon": "fas fa-cogs", + "hidden": true + }, + "validate_params": { + "type": "boolean", + "description": "Boolean whether to validate parameters against the schema at runtime", + "default": true, + "fa_icon": "fas fa-check-square", + "hidden": true + }, + "show_hidden_params": { + "type": "boolean", + "fa_icon": "far fa-eye-slash", + "description": "Show all params when using `--help`", + "hidden": true, + "help_text": "By default, parameters set as _hidden_ in the schema are not shown on the command line when a user runs with `--help`. Specifying this option will tell the pipeline to show all parameters." + }, + "enable_conda": { + "type": "boolean", + "description": "Run this workflow with Conda. You can also use '-profile conda' instead of providing this parameter.", + "hidden": true, + "fa_icon": "fas fa-bacon" + } + } + }, + "reference_genome_options": { + "title": "Reference genome options", + "type": "object", + "fa_icon": "fas fa-dna", + "description": "Reference genome related files and options required for the workflow.", + "properties": { + "genome": { + "type": "string", + "description": "Name of iGenomes reference.", + "fa_icon": "fas fa-book", + "help_text": "If using a reference genome configured in the pipeline using iGenomes, use this parameter to give the ID for the reference. This is then used to build the full paths for all required reference genome files e.g. `--genome GRCh38`. \n\nSee the [nf-core website docs](https://nf-co.re/usage/reference_genomes) for more details.", + "hidden": true + }, + "igenomes_base": { + "type": "string", + "format": "directory-path", + "description": "Directory / URL base for iGenomes references.", + "default": "s3://ngi-igenomes/igenomes", + "fa_icon": "fas fa-cloud-download-alt", + "hidden": true + }, + "igenomes_ignore": { + "type": "boolean", + "description": "Do not load the iGenomes reference config.", + "fa_icon": "fas fa-ban", + "hidden": true, + "help_text": "Do not load `igenomes.config` when running the pipeline. You may choose this option if you observe clashes between custom parameters and those supplied in `igenomes.config`." + } + } } - } }, - "max_job_request_options": { - "title": "Max job request options", - "type": "object", - "fa_icon": "fab fa-acquisitions-incorporated", - "description": "Set the top limit for requested resources for any single job.", - "help_text": "If you are running on a smaller system, a pipeline step requesting more resources than are available may cause the Nextflow to stop the run with an error. These options allow you to cap the maximum resources requested by any single job so that the pipeline will run on your system.\n\nNote that you can not _increase_ the resources requested by any job using these options. For that you will need your own configuration file. See [the nf-core website](https://nf-co.re/usage/configuration) for details.", - "properties": { - "max_cpus": { - "type": "integer", - "description": "Maximum number of CPUs that can be requested for any single job.", - "default": 16, - "fa_icon": "fas fa-microchip", - "hidden": true, - "help_text": "Use to set an upper-limit for the CPU requirement for each process. Should be an integer e.g. `--max_cpus 1`" + "allOf": [ + { + "$ref": "#/definitions/input_output_options" }, - "max_memory": { - "type": "string", - "description": "Maximum amount of memory that can be requested for any single job.", - "default": "128.GB", - "fa_icon": "fas fa-memory", - "pattern": "^\\d+(\\.\\d+)?\\.?\\s*(K|M|G|T)?B$", - "hidden": true, - "help_text": "Use to set an upper-limit for the memory requirement for each process. Should be a string in the format integer-unit e.g. `--max_memory '8.GB'`" + { + "$ref": "#/definitions/preprocessing_general_qc_options" }, - "max_time": { - "type": "string", - "description": "Maximum amount of time that can be requested for any single job.", - "default": "240.h", - "fa_icon": "far fa-clock", - "pattern": "^(\\d+\\.?\\s*(s|m|h|day)\\s*)+$", - "hidden": true, - "help_text": "Use to set an upper-limit for the time requirement for each process. Should be a string in the format integer-unit e.g. `--max_time '2.h'`" - } - } - }, - "generic_options": { - "title": "Generic options", - "type": "object", - "fa_icon": "fas fa-file-import", - "description": "Less common options for the pipeline, typically set in a config file.", - "help_text": "These options are common to all nf-core pipelines and allow you to customise some of the core preferences for how the pipeline runs.\n\nTypically these options would be set in a Nextflow config file loaded for all pipeline runs, such as `~/.nextflow/config`.", - "properties": { - "help": { - "type": "boolean", - "description": "Display help text.", - "fa_icon": "fas fa-question-circle", - "hidden": true - }, - "publish_dir_mode": { - "type": "string", - "default": "copy", - "description": "Method used to save pipeline results to output directory.", - "help_text": "The Nextflow `publishDir` option specifies which intermediate files should be saved to the output directory. This option tells the pipeline what method should be used to move these files. See [Nextflow docs](https://www.nextflow.io/docs/latest/process.html#publishdir) for details.", - "fa_icon": "fas fa-copy", - "enum": [ - "symlink", - "rellink", - "link", - "copy", - "copyNoFollow", - "move" - ], - "hidden": true - }, - "email_on_fail": { - "type": "string", - "description": "Email address for completion summary, only when pipeline fails.", - "fa_icon": "fas fa-exclamation-triangle", - "pattern": "^([a-zA-Z0-9_\\-\\.]+)@([a-zA-Z0-9_\\-\\.]+)\\.([a-zA-Z]{2,5})$", - "help_text": "An email address to send a summary email to when the pipeline is completed - ONLY sent if the pipeline does not exit successfully.", - "hidden": true + { + "$ref": "#/definitions/preprocessing_short_read_qc_options" }, - "plaintext_email": { - "type": "boolean", - "description": "Send plain-text email instead of HTML.", - "fa_icon": "fas fa-remove-format", - "hidden": true + { + "$ref": "#/definitions/preprocessing_long_read_qc_options" }, - "max_multiqc_email_size": { - "type": "string", - "description": "File size limit when attaching MultiQC reports to summary emails.", - "pattern": "^\\d+(\\.\\d+)?\\.?\\s*(K|M|G|T)?B$", - "default": "25.MB", - "fa_icon": "fas fa-file-upload", - "hidden": true + { + "$ref": "#/definitions/preprocessing_host_removal_options" }, - "monochrome_logs": { - "type": "boolean", - "description": "Do not use coloured log outputs.", - "fa_icon": "fas fa-palette", - "hidden": true + { + "$ref": "#/definitions/preprocessing_run_merging_options" }, - "hook_url": { - "type": "string", - "description": "Incoming hook URL for messaging service", - "fa_icon": "fas fa-people-group", - "help_text": "Incoming hook URL for messaging service. Currently, only MS Teams is supported.", - "hidden": true + { + "$ref": "#/definitions/profiling_options" }, - "multiqc_config": { - "type": "string", - "description": "Custom config file to supply to MultiQC.", - "fa_icon": "fas fa-cog", - "hidden": true + { + "$ref": "#/definitions/postprocessing_and_visualisation_options" }, - "multiqc_logo": { - "type": "string", - "description": "Custom logo file to supply to MultiQC. File name must also be set in the MultiQC config file", - "fa_icon": "fas fa-image", - "hidden": true + { + "$ref": "#/definitions/institutional_config_options" }, - "multiqc_methods_description": { - "type": "string", - "description": "Custom MultiQC yaml file containing HTML including a methods description.", - "fa_icon": "fas fa-cog" + { + "$ref": "#/definitions/max_job_request_options" }, - "tracedir": { - "type": "string", - "description": "Directory to keep pipeline Nextflow logs and reports.", - "default": "${params.outdir}/pipeline_info", - "fa_icon": "fas fa-cogs", - "hidden": true + { + "$ref": "#/definitions/generic_options" }, - "validate_params": { - "type": "boolean", - "description": "Boolean whether to validate parameters against the schema at runtime", - "default": true, - "fa_icon": "fas fa-check-square", - "hidden": true - }, - "show_hidden_params": { - "type": "boolean", - "fa_icon": "far fa-eye-slash", - "description": "Show all params when using `--help`", - "hidden": true, - "help_text": "By default, parameters set as _hidden_ in the schema are not shown on the command line when a user runs with `--help`. Specifying this option will tell the pipeline to show all parameters." - }, - "enable_conda": { - "type": "boolean", - "description": "Run this workflow with Conda. You can also use '-profile conda' instead of providing this parameter.", - "hidden": true, - "fa_icon": "fas fa-bacon" + { + "$ref": "#/definitions/reference_genome_options" } - } - }, - "reference_genome_options": { - "title": "Reference genome options", - "type": "object", - "fa_icon": "fas fa-dna", - "description": "Reference genome related files and options required for the workflow.", - "properties": { - "genome": { - "type": "string", - "description": "Name of iGenomes reference.", - "fa_icon": "fas fa-book", - "help_text": "If using a reference genome configured in the pipeline using iGenomes, use this parameter to give the ID for the reference. This is then used to build the full paths for all required reference genome files e.g. `--genome GRCh38`. \n\nSee the [nf-core website docs](https://nf-co.re/usage/reference_genomes) for more details.", - "hidden": true - }, - "igenomes_base": { - "type": "string", - "format": "directory-path", - "description": "Directory / URL base for iGenomes references.", - "default": "s3://ngi-igenomes/igenomes", - "fa_icon": "fas fa-cloud-download-alt", - "hidden": true - }, - "igenomes_ignore": { - "type": "boolean", - "description": "Do not load the iGenomes reference config.", - "fa_icon": "fas fa-ban", - "hidden": true, - "help_text": "Do not load `igenomes.config` when running the pipeline. You may choose this option if you observe clashes between custom parameters and those supplied in `igenomes.config`." + ], + "properties": { + "preprocessing_qc_tool": { + "type": "string", + "default": "fastqc", + "enum": ["fastqc", "falco"], + "help_text": "Falco is designed as a drop-in replacement for FastQC but written in C++ for faster computation. We particularly recommend using falco when using long reads (due to reduced memory constraints), however is also applicable for short reads.", + "description": "Specify the tool used for quality control of raw sequencing reads" + }, + "save_mgc_counts": { + "type": "boolean", + "description": "Save the mgc reads count for mOTUs." + }, + "save_ncbi_id": { + "type": "boolean", + "description": "Print NCBI taxonomic id for mOTUs." + }, + "save_read_counts": { + "type": "boolean", + "description": "Print mOTUs result as counts instead of relative abundances.." } - } - } - }, - "allOf": [ - { - "$ref": "#/definitions/input_output_options" - }, - { - "$ref": "#/definitions/preprocessing_general_qc_options" - }, - { - "$ref": "#/definitions/preprocessing_short_read_qc_options" - }, - { - "$ref": "#/definitions/preprocessing_long_read_qc_options" - }, - { - "$ref": "#/definitions/preprocessing_host_removal_options" - }, - { - "$ref": "#/definitions/preprocessing_run_merging_options" - }, - { - "$ref": "#/definitions/profiling_options" - }, - { - "$ref": "#/definitions/postprocessing_and_visualisation_options" - }, - { - "$ref": "#/definitions/institutional_config_options" - }, - { - "$ref": "#/definitions/max_job_request_options" - }, - { - "$ref": "#/definitions/generic_options" - }, - { - "$ref": "#/definitions/reference_genome_options" - } - ], - "properties": { - "preprocessing_qc_tool": { - "type": "string", - "default": "fastqc", - "enum": ["fastqc", "falco"], - "help_text": "Falco is designed as a drop-in replacement for FastQC but written in C++ for faster computation. We particularly recommend using falco when using long reads (due to reduced memory constraints), however is also applicable for short reads.", - "description": "Specify the tool used for quality control of raw sequencing reads" - }, - "save_mgc_counts": { - "type": "boolean", - "description": "Save the mgc reads count for mOTUs." - }, - "save_ncbi_id": { - "type": "boolean", - "description": "Print NCBI taxonomic id for mOTUs." - }, - "save_read_counts": { - "type": "boolean", - "description": "Print mOTUs result as counts instead of relative abundances.." } - } } From 71b52b9c94a0e009a8ded36dd7ebf2351145adcc Mon Sep 17 00:00:00 2001 From: Sofia Stamouli Date: Tue, 29 Nov 2022 11:58:23 +0100 Subject: [PATCH 487/789] Apply review suggestions --- conf/modules.config | 6 +++++- nextflow_schema.json | 2 +- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/conf/modules.config b/conf/modules.config index 5c35525..8502ebe 100644 --- a/conf/modules.config +++ b/conf/modules.config @@ -446,7 +446,11 @@ process { } withName: MOTUS_PROFILE { - ext.args = { [ params.save_ncbi_id ? "-p" : "", params.save_read_counts ? "-c" : "", params.save_mgc_counts ? "-M ${task.ext.prefix}.mgc" : "" ].join(',').replaceAll(','," ") } + ext.args = { [ + params.save_ncbi_id ? "-p" : "", + params.save_read_counts ? "-c" : "", + params.save_mgc_counts ? "-M ${task.ext.prefix}.mgc" : "" + ].join(',').replaceAll(','," ") } ext.prefix = params.perform_runmerging ? { "${meta.id}-${meta.db_name}" } : { "${meta.id}-${meta.run_accession}-${meta.db_name}" } publishDir = [ path: { "${params.outdir}/motus/${meta.db_name}/" }, diff --git a/nextflow_schema.json b/nextflow_schema.json index e0b7fa6..8e2250b 100644 --- a/nextflow_schema.json +++ b/nextflow_schema.json @@ -743,7 +743,7 @@ }, "save_read_counts": { "type": "boolean", - "description": "Print mOTUs result as counts instead of relative abundances.." + "description": "Print mOTUs result as counts instead of relative abundances." } } } From ba727a81aef811faa91aa1f85a5e2a40b7101b3e Mon Sep 17 00:00:00 2001 From: Sofia Stamouli Date: Tue, 29 Nov 2022 12:45:14 +0100 Subject: [PATCH 488/789] Fix left-padding spaces --- conf/modules.config | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/conf/modules.config b/conf/modules.config index 8502ebe..7327a2b 100644 --- a/conf/modules.config +++ b/conf/modules.config @@ -450,7 +450,7 @@ process { params.save_ncbi_id ? "-p" : "", params.save_read_counts ? "-c" : "", params.save_mgc_counts ? "-M ${task.ext.prefix}.mgc" : "" - ].join(',').replaceAll(','," ") } + ].join(',').replaceAll(','," ") } ext.prefix = params.perform_runmerging ? { "${meta.id}-${meta.db_name}" } : { "${meta.id}-${meta.run_accession}-${meta.db_name}" } publishDir = [ path: { "${params.outdir}/motus/${meta.db_name}/" }, From 770a35d7aca245ef12f9d820b90d639c398bdfb0 Mon Sep 17 00:00:00 2001 From: "James A. Fellows Yates" Date: Tue, 29 Nov 2022 12:49:20 +0100 Subject: [PATCH 489/789] Update conf/modules.config --- conf/modules.config | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/conf/modules.config b/conf/modules.config index 7327a2b..9494e02 100644 --- a/conf/modules.config +++ b/conf/modules.config @@ -446,11 +446,13 @@ process { } withName: MOTUS_PROFILE { - ext.args = { [ - params.save_ncbi_id ? "-p" : "", - params.save_read_counts ? "-c" : "", - params.save_mgc_counts ? "-M ${task.ext.prefix}.mgc" : "" - ].join(',').replaceAll(','," ") } + ext.args = { + [ + params.save_ncbi_id ? "-p" : "", + params.save_read_counts ? "-c" : "", + params.save_mgc_counts ? "-M ${task.ext.prefix}.mgc" : "" + ].join(',').replaceAll(','," ") + } ext.prefix = params.perform_runmerging ? { "${meta.id}-${meta.db_name}" } : { "${meta.id}-${meta.run_accession}-${meta.db_name}" } publishDir = [ path: { "${params.outdir}/motus/${meta.db_name}/" }, From 0088b07220c502da5e568916e1d0e366f9992a26 Mon Sep 17 00:00:00 2001 From: Sofia Stamouli <91951607+sofstam@users.noreply.github.com> Date: Tue, 29 Nov 2022 13:28:04 +0100 Subject: [PATCH 490/789] Fix trailing whitespace --- conf/modules.config | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/conf/modules.config b/conf/modules.config index 9494e02..a2852d5 100644 --- a/conf/modules.config +++ b/conf/modules.config @@ -446,12 +446,12 @@ process { } withName: MOTUS_PROFILE { - ext.args = { + ext.args = { [ - params.save_ncbi_id ? "-p" : "", - params.save_read_counts ? "-c" : "", - params.save_mgc_counts ? "-M ${task.ext.prefix}.mgc" : "" - ].join(',').replaceAll(','," ") + params.save_ncbi_id ? "-p" : "", + params.save_read_counts ? "-c" : "", + params.save_mgc_counts ? "-M ${task.ext.prefix}.mgc" : "" + ].join(',').replaceAll(','," ") } ext.prefix = params.perform_runmerging ? { "${meta.id}-${meta.db_name}" } : { "${meta.id}-${meta.run_accession}-${meta.db_name}" } publishDir = [ From 7e3ece53bd9fd76660b8d1dcc499ea010a382ec1 Mon Sep 17 00:00:00 2001 From: Sofia Stamouli <91951607+sofstam@users.noreply.github.com> Date: Tue, 29 Nov 2022 13:31:00 +0100 Subject: [PATCH 491/789] Update modules.config --- conf/modules.config | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/conf/modules.config b/conf/modules.config index a2852d5..0f54301 100644 --- a/conf/modules.config +++ b/conf/modules.config @@ -447,12 +447,12 @@ process { withName: MOTUS_PROFILE { ext.args = { - [ + [ params.save_ncbi_id ? "-p" : "", params.save_read_counts ? "-c" : "", params.save_mgc_counts ? "-M ${task.ext.prefix}.mgc" : "" ].join(',').replaceAll(','," ") - } + } ext.prefix = params.perform_runmerging ? { "${meta.id}-${meta.db_name}" } : { "${meta.id}-${meta.run_accession}-${meta.db_name}" } publishDir = [ path: { "${params.outdir}/motus/${meta.db_name}/" }, From d7fbe55849f79e4029c746b5457c0ab2d4ba1a98 Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Tue, 29 Nov 2022 14:19:01 +0100 Subject: [PATCH 492/789] Add KU to the test profiles and add id to KU processes --- conf/test.config | 1 + conf/test_motus.config | 1 + conf/test_nopreprocessing.config | 1 + conf/test_noprofiling.config | 1 + conf/test_nothing.config | 1 + subworkflows/local/profiling.nf | 2 +- 6 files changed, 6 insertions(+), 1 deletion(-) diff --git a/conf/test.config b/conf/test.config index 777d9bf..016eb2e 100644 --- a/conf/test.config +++ b/conf/test.config @@ -39,6 +39,7 @@ params { run_metaphlan3 = true run_centrifuge = true run_diamond = true + run_krakenuniq = true run_motus = false run_krona = true krona_taxonomy_directory = 'https://raw.githubusercontent.com/nf-core/test-datasets/modules/data/genomics/sarscov2/metagenome/krona_taxonomy.tab' diff --git a/conf/test_motus.config b/conf/test_motus.config index d167b94..2428a4c 100644 --- a/conf/test_motus.config +++ b/conf/test_motus.config @@ -38,6 +38,7 @@ params { run_metaphlan3 = false run_centrifuge = false run_diamond = false + run_krakenuniq = false run_motus = true run_profile_standardisation = true } diff --git a/conf/test_nopreprocessing.config b/conf/test_nopreprocessing.config index 357f76f..9a51320 100644 --- a/conf/test_nopreprocessing.config +++ b/conf/test_nopreprocessing.config @@ -38,6 +38,7 @@ params { run_metaphlan3 = true run_centrifuge = true run_diamond = true + run_krakenuniq = true run_motus = false run_krona = true } diff --git a/conf/test_noprofiling.config b/conf/test_noprofiling.config index 59ed0da..3ca715b 100644 --- a/conf/test_noprofiling.config +++ b/conf/test_noprofiling.config @@ -39,6 +39,7 @@ params { run_metaphlan3 = false run_centrifuge = false run_diamond = false + run_krakenuniq = false run_motus = false } diff --git a/conf/test_nothing.config b/conf/test_nothing.config index df09613..47976df 100644 --- a/conf/test_nothing.config +++ b/conf/test_nothing.config @@ -38,6 +38,7 @@ params { run_metaphlan3 = false run_centrifuge = false run_diamond = false + run_krakenuniq = false run_motus = false } diff --git a/subworkflows/local/profiling.nf b/subworkflows/local/profiling.nf index 4ca2c4c..aeee2a4 100644 --- a/subworkflows/local/profiling.nf +++ b/subworkflows/local/profiling.nf @@ -271,7 +271,7 @@ workflow PROFILING { ch_input_for_krakenuniq = ch_input_for_profiling.krakenuniq .map { meta, reads, db_meta, db -> - [[single_end: meta.single_end], reads, db_meta, db] + [[id: db_meta.db_name, single_end: meta.single_end], reads, db_meta, db] } .groupTuple(by: [0,2,3]) .dump(tag: "krakenuniq_premultimap") From f389029848e0044568ecc92c8cb004e5ada69653 Mon Sep 17 00:00:00 2001 From: sofstam Date: Tue, 29 Nov 2022 14:38:39 +0100 Subject: [PATCH 493/789] Fix merge conflic --- nextflow_schema.json | 1467 +++++++++++++++++++++--------------------- 1 file changed, 737 insertions(+), 730 deletions(-) diff --git a/nextflow_schema.json b/nextflow_schema.json index 8e2250b..df4b4e7 100644 --- a/nextflow_schema.json +++ b/nextflow_schema.json @@ -1,749 +1,756 @@ { - "$schema": "http://json-schema.org/draft-07/schema", - "$id": "https://raw.githubusercontent.com/nf-core/taxprofiler/master/nextflow_schema.json", - "title": "nf-core/taxprofiler pipeline parameters", - "description": "Taxonomic profiling of shotgun metagenomic data", - "type": "object", - "definitions": { - "input_output_options": { - "title": "Input/output options", - "type": "object", - "fa_icon": "fas fa-terminal", - "description": "Define where the pipeline should find input data and save output data.", - "required": ["input", "databases", "outdir"], - "properties": { - "input": { - "type": "string", - "format": "file-path", - "mimetype": "text/csv", - "pattern": "^\\S+\\.(csv|yaml|yml)$", - "schema": "assets/schema_input.json", - "description": "Path to comma-separated file containing information about the samples and libraries/runs.", - "help_text": "You will need to create a design file with information about the samples and libraries/runs you want to running in your pipeline run. Use this parameter to specify its location. It has to be a comma-separated file with 6 columns, and a header row. See [usage docs](https://nf-co.re/taxprofiler/usage#samplesheet-input).", - "fa_icon": "fas fa-file-csv" - }, - "databases": { - "type": "string", - "mimetype": "text/csv", - "format": "file-path", - "fa_icon": "fas fa-database", - "description": "Path to comma-separated file containing information about databases and profiling parameters for each taxonomic profiler", - "help_text": "You will need to create a design file with information about the samples in your experiment before running the pipeline. Use this parameter to specify its location. It has to be a comma-separated file with 4 columns, and a header row. See [usage docs](https://nf-co.re/taxprofiler/dev/usage#full-database-sheet).\n\nProfilers will only be executed if a corresponding database are supplied. \n\nWe recommend storing this database sheet somewhere centrally and accessible by others members of your lab/institutions, as this file will likely be regularly reused." - }, - "outdir": { - "type": "string", - "format": "directory-path", - "description": "The output directory where the results will be saved. You have to use absolute paths to storage on Cloud infrastructure.", - "fa_icon": "fas fa-folder-open" - }, - "email": { - "type": "string", - "description": "Email address for completion summary.", - "fa_icon": "fas fa-envelope", - "help_text": "Set this parameter to your e-mail address to get a summary e-mail with details of the run sent to you when the workflow exits. If set in your user config file (`~/.nextflow/config`) then you don't need to specify this on the command line for every run.", - "pattern": "^([a-zA-Z0-9_\\-\\.]+)@([a-zA-Z0-9_\\-\\.]+)\\.([a-zA-Z]{2,5})$" - }, - "multiqc_title": { - "type": "string", - "description": "MultiQC report title. Printed as page header, used for filename if not otherwise specified.", - "fa_icon": "fas fa-file-signature" - } - } - }, - "preprocessing_general_qc_options": { - "title": "Preprocessing general QC options", - "type": "object", - "description": "Common options across both long and short read preprocessing QC steps", - "default": "", - "properties": { - "save_preprocessed_reads": { - "type": "boolean", - "fa_icon": "fas fa-save", - "description": "Save reads from adapter clipping/pair-merging, length filtering for both short and long reads", - "help_text": "This saves the FASTQ output from the following tools:\n\n- fastp\n- AdapterRemoval\n- Porechop\n- Filtlong\n\nThese reads will be a mixture of: adapter clipped, quality trimmed, pair-merged, and length filtered, depending on the parameters you set." - } - }, - "fa_icon": "fas fa-users-cog" - }, - "preprocessing_short_read_qc_options": { - "title": "Preprocessing short-read QC options", - "type": "object", - "description": "Options for adapter clipping, quality trimming, pair-merging, and complexity filtering", - "default": "", - "properties": { - "perform_shortread_qc": { - "type": "boolean", - "fa_icon": "fas fa-toggle-on", - "description": "Turns on short read quality control steps (adapter clipping, complexity filtering etc.)", - "help_text": "Turns on short read quality control steps (adapter clipping, complexity filtering etc.)\n\nThis subworkflow can perform:\n\n- Adapter removal\n- Read quality trimming\n- Read pair merging\n- Length filtering\n- Complexity filtering\n\nEither with fastp or AdapterRemoval.\n\nRemoving adapters (if present) is recommend to reduce false-postive hits that may occur from 'dirty' or 'contaminated' reference genomes in a profiling database that contain accidentially incorporated adapter sequences. Note that some, but not all, tools support paired-end alignment (utilising information about the insert covered by the pairs). However read pair merging in some cases can be recommend to increase read length (such as in aDNA). Length filtering, and/or complexity can speed up alignment by reducing the number of short unspecific reads that need to be aligned." - }, - "shortread_qc_tool": { - "type": "string", - "default": "fastp", - "enum": ["fastp", "adapterremoval"], - "fa_icon": "fas fa-tools", - "description": "Specify which tool to use for short-read QC" - }, - "shortread_qc_skipadaptertrim": { - "type": "boolean", - "fa_icon": "fas fa-forward", - "description": "Skip adapter trimming", - "help_text": "Skip the removal of sequencing adapters. \n\nThis often can be useful to speed up run-time of the pipeline when analysing data downloaded from public databases such as the ENA or SRA, as adapters should already be removed (however we recommend to check FastQC results to ensure this is the case)." - }, - "shortread_qc_adapter1": { - "type": "string", - "default": "None", - "fa_icon": "fas fa-grip-lines", - "description": "Specify adapter 1 nucleotide sequence", - "help_text": "Specify a custom forward or R1 adapter sequence to be removed from reads. \n\nIf not set, the selected short-read QC tool's defaults will be used.\n\n> Modifies tool parameter(s):\n> - fastp: `--adapter_sequence`. fastp default: `AGATCGGAAGAGCACACGTCTGAACTCCAGTCA`\n> - AdapterRemoval: `--adapter1`. AdapteRemoval2 default: `AGATCGGAAGAGCACACGTCTGAACTCCAGTCACNNNNNNATCTCGTATGCCGTCTTCTGCTTG`" - }, - "shortread_qc_adapter2": { - "type": "string", - "default": "None", - "fa_icon": "fas fa-grip-lines", - "description": "Specify adapter 2 nucleotide sequence", - "help_text": "Specify a custom reverse or R2 adapter sequence to be removed from reads. \n\nIf not set, the selected short-read QC tool's defaults will be used.\n\n> Modifies tool parameter(s):\n> - fastp: `--adapter_sequence`. fastp default: `AGATCGGAAGAGCGTCGTGTAGGGAAAGAGTGT`\n> - AdapterRemoval: `--adapter1`. AdapteRemoval2 default: `AGATCGGAAGAGCGTCGTGTAGGGAAAGAGTGTAGATCTCGGTGGTCGCCGTATCATT`" - }, - "shortread_qc_adapterlist": { - "type": "string", - "default": "None", - "description": "Specify a list of all possible adapters to trim. Overrides --shortread_qc_adapter1/2. Formats: .txt (AdapterRemoval) or .fasta. (fastp).", - "help_text": "Allows to supply a file with a list of adapter (combinations) to remove from all files. \n\nOverrides the --shortread_qc_adapter1/--shortread_qc_adapter2 parameters . \n\nFor AdapterRemoval this consists of a two column table with a `.txt` extension: first column represents forward strand, second column for reverse strand. You must supply all possible combinations, one per line, and this list is applied to all files. See AdapterRemoval documentation for more information.\n\nFor fastp this consists of a standard FASTA format with a `.fasta`/`.fa`/`.fna`/`.fas` extension. The adapter sequence in this file should be at least 6bp long, otherwise it will be skipped. fastp trims the adapters present in the FASTA file one by one.\n\n> Modifies AdapterRemoval parameter: --adapter-list\n> Modifies fastp parameter: --adapter_fasta" - }, - "shortread_qc_mergepairs": { - "type": "boolean", - "fa_icon": "fas fa-toggle-on", - "description": "Turn on merging of read pairs for paired-end data", - "default": true, - "help_text": "Turn on the merging of read-pairs of paired-end short read sequencing data for AdapterRemoval (this is performed automatically with fastp).\n\n> Modifies tool parameter(s):\n> - AdapterRemoval: `--collapse`\n" - }, - "shortread_qc_excludeunmerged": { - "type": "boolean", - "fa_icon": "far fa-times-circle", - "description": "Discard unmerged reads from paired-end merging", - "help_text": "Turns off the inclusion of unmerged reads in resulting processing FASTQ file of paired-end sequencing data when using `fastp`.\n\nThis can be useful in cases where you prefer to have very short reads (e.g. aDNA), thus excluding longer-reads or possibly faulty reads where one of the pair was discarded.\n\n> Modifies tool parameter(s):\n> - removed from reads `--include_unmerged`\n" - }, - "shortread_qc_minlength": { - "type": "integer", - "default": 15, - "fa_icon": "fas fa-ruler-horizontal", - "description": "Specify the minimum length of reads to be retained", - "help_text": "Specifying a mimum read length filtering can speed up profiling by reducing the number of short unspecific reads that need to be match/aligned to the database.\n\n> Modifies tool parameter(s):\n> - removed from reads `--length_required`\n> - AdapterRemoval: `--minlength`" - }, - "perform_shortread_complexityfilter": { - "type": "boolean", - "fa_icon": "fas fa-toggle-on", - "description": "Turns on nucleotide sequence complexity filtering", - "help_text": "Turns on sequencing complexity filtering. Complexity filtering can be useful to increase run-time by removing unspecific read sequences that do not provide any informative taxon ID." - }, - "shortread_complexityfilter_tool": { - "type": "string", - "default": "bbduk", - "enum": ["bbduk", "prinseqplusplus", "fastp"], - "fa_icon": "fas fa-hammer", - "description": "Specify which tool to use for complexity filtering" - }, - "shortread_complexityfilter_entropy": { - "type": "number", - "default": 0.3, - "fa_icon": "fas fa-random", - "description": "Specify the minimum sequence entropy level for complexity filtering", - "help_text": "Specify the minimum 'entropy' value for complexity filtering for BBDuk or PRINSEQ++.\n\nNote that this value will only be used for PRINSEQ++ if `--shortread_complexityfilter_prinseqplusplus_mode` is set to `entropy`.\n\nEntropy here corresponds to the amount of sequence variation exists within the read. Higher values correspond to more variety, and thus will likely reslut in more specific matching to a taxon's reference genome. The trade off here is fewer reads (or abundance information) available for having a confident identification.\n\n\n> Modifies tool parameter(s):\n> - BBDuk: `entropy=`\n> - PRINSEQ++: `-lc_entropy`\n\n" - }, - "shortread_complexityfilter_bbduk_windowsize": { - "type": "integer", - "default": 50, - "fa_icon": "far fa-window-maximize", - "description": "Specify the window size for BBDuk complexity filtering", - "help_text": "Specify the window size to calculate the level entropy within for BBDuk.\n\n> Modifies tool parameter(s):\n> - BBDuk: `entropywindow=`" - }, - "shortread_complexityfilter_bbduk_mask": { - "type": "boolean", - "fa_icon": "fas fa-mask", - "description": "Turn on masking rather than discarding of low complexity reads for BBduk", - "help_text": "Turn on masking of low-complexity reads (i.e., replacement with `N`) rather than removal.\n\n> Modifies tool parameter(s)\n> - BBDuk: `entropymask=`" - }, - "shortread_complexityfilter_fastp_threshold": { - "type": "integer", - "default": 30, - "fa_icon": "fas fa-sort-numeric-down", - "description": "Specify the minimum complexity filter threshold of fastp", - "help_text": "Specify the minimum sequence complexity value for fastp. This value corresponds to the percentage of bases that is different from it's adjacent bases.\n\n> Modifies tool parameter(s):\n> - removed from reads `--complexity_threshold`" - }, - "shortread_complexityfilter_prinseqplusplus_mode": { - "type": "string", - "default": "entropy", - "enum": ["entropy", "dust"], - "fa_icon": "fas fa-check-square", - "description": "Specify the complexity filter mode for PRINSEQ++" - }, - "shortread_complexityfilter_prinseqplusplus_dustscore": { - "type": "number", - "default": 0.5, - "fa_icon": "fas fa-head-side-mask", - "description": "Specify the minimum dust score for PRINTSEQ++ complexity filtering", - "help_text": "Specify the minimum dust score below which low-complexity reads will be removed. A DUST score is based on how often different tri-nucleotides occur along a read.\n\n> Modifies tool parameter(s):\n> - PRINSEQ++: `--lc_dust`" - }, - "save_complexityfiltered_reads": { - "type": "boolean", - "fa_icon": "fas fa-save", - "description": "Save complexity filtered short-reads", - "help_text": "Specify whether to save the final complexity filtered reads in your results directory (`--outdir`)." - } - }, - "fa_icon": "fas fa-compress-alt" - }, - "preprocessing_long_read_qc_options": { - "title": "Preprocessing long-read QC options", - "type": "object", - "description": "Options for adapter clipping, quality trimming, and length filtering", - "default": "", - "properties": { - "perform_longread_qc": { - "type": "boolean", - "fa_icon": "fas fa-toggle-on", - "description": "Turns on long read quality control steps (adapter clipping, length filtering etc.)", - "help_text": "Turns on long read quality control steps (adapter clipping, length and/or quality filtering.)\n\nRemoving adapters (if present) is recommend to reduce false-postive hits that may occur from 'dirty' or 'contaminated' reference genomes in a profiling database that contain accidentially incorporated adapter sequences.\n\nLength filtering, and quality filtering can speed up alignment by reducing the number of unspecific reads that need to be aligned." - }, - "longread_qc_skipadaptertrim": { - "type": "boolean", - "description": "Skip long-read trimming", - "fa_icon": "fas fa-forward", - "help_text": "Skip removal of adapters by Porechop. This can be useful in some cases to speed up run time - particularly when you are running data downloading from public databases such as the ENA/SRA that should already have adapters removed. We recommend that you check your FastQC results this is indeed the case." - }, - "longread_qc_skipqualityfilter": { - "type": "boolean", - "description": "Skip long-read length and quality filtering", - "fa_icon": "fas fa-forward", - "help_text": "Skip removal of quality filtering with Filtlong. This will skip length, percent reads, and target bases filtering (see other `--longread_qc_qualityfilter_*` parameters)." - }, - "longread_qc_qualityfilter_minlength": { - "type": "integer", - "default": 1000, - "description": "Specify the minimum length of reads to be retained", - "fa_icon": "fas fa-ruler-horizontal", - "help_text": "Specify the minimum of length of reads to be kept for downstream analysis.\n\n> Modifies tool parameter(s):\n> - Filtlong: `--min_length`" - }, - "longread_qc_qualityfilter_keeppercent": { - "type": "integer", - "default": 90, - "description": "Specify the percent of high-quality bases to be retained", - "fa_icon": "fas fa-percentage", - "help_text": "Throw out the remaining percentage of reads outside the value. This is measured by bp, not by read count. So this option throws out the worst e.g. 10% of read bases if the parameter is set to `90`. _Modified from [Filtlong documentation](https://github.com/rrwick/Filtlong)_\n\n> Modifies tool parameter(s):\n> - Filtlong: `--keep_percent`" - }, - "longread_qc_qualityfilter_targetbases": { - "type": "integer", - "default": 500000000, - "description": "Specify the number of high-quality bases in the library to be retained", - "fa_icon": "fas fa-bullseye", - "help_text": "Removes the worst reads until only the specified value of bases remain, useful for very large read sets. If the input read set is less than the specified value, this setting will have no effect. _Modified from [Filtlong documentation](https://github.com/rrwick/Filtlong)_\n\n> Modifies tool parameter(s):\n> - Filtlong: `--keep_percent`" - } - }, - "fa_icon": "fas fa-expand-alt" - }, - "preprocessing_host_removal_options": { - "title": "Preprocessing host removal options", - "type": "object", - "description": "Options for pre-profiling host read removal", - "default": "", - "properties": { - "perform_shortread_hostremoval": { - "type": "boolean", - "fa_icon": "fas fa-toggle-on", - "description": "Turn on short-read host removal", - "help_text": "Turns on the ability to remove short-reads from the that derived from a known organism, using Bowtie2 and samtools\n\nThis subworkflow is useful to remove reads that may come from a host, or a known contamination like the human reference genome. Human DNA contamination of (microbial) reference genomes is well known, so removal of these prior profiling both reduces the risks of false positives, and in _some cases_ a faster runtime (as less reads need to be profiled).\n\nAlternatively, you can include the reference genome within your profiling databases and can turn off this subworkflow, with the trade off of a larger taxonomic profiling database." - }, - "perform_longread_hostremoval": { - "type": "boolean", - "fa_icon": "fas fa-toggle-on", - "description": "Turn on long-read host removal", - "help_text": "Turns on the ability to remove long-reads from the that derived from a known organism, using minimap2 and samtools\n\nThis subworkflow is useful to remove reads that may come from a host, or a known contamination like the human reference genome. Human DNA contamination of (microbial) reference genomes is well known, so removal of these prior profiling both reduces the risks of false positives, and in _some cases_ a faster runtime (as less reads need to be profiled).\n\nAlternatively, you can include the reference genome within your profiling databases and can turn off this subworkflow, with the trade off of a larger taxonomic profiling database." - }, - "hostremoval_reference": { - "type": "string", - "default": "None", - "fa_icon": "fas fa-file-alt", - "description": "Specify path to single reference FASTA of host(s) genome(s)", - "help_text": "Specify a path to the FASTA file (optionally gzipped) of the reference genome of the organism to be removed.\n\nIf you have two or more host organisms or contaminants you wish to remove, you can concatenate the FASTAs of the different taxa into a single one to provide to the pipeline." - }, - "shortread_hostremoval_index": { - "type": "string", - "default": "None", - "fa_icon": "fas fa-address-book", - "description": "Specify path to the directory containing pre-made BowTie2 indexes of the host removal reference", - "help_text": "Specify the path to a _directory_ containing pre-made Bowtie2 reference index files (i.e. the directory containing `.bt1`, `.bt2` files etc.). These should sit in the same directory alongside the the reference file specified in `--hostremoval_reference`.\n\nSpecifying premade indices can speed up runtime of the host-removal step, however if not supplied the pipeline will generate the indices for you." - }, - "longread_hostremoval_index": { - "type": "string", - "default": "None", - "fa_icon": "fas fa-address-book", - "description": "Specify path to a pre-made Minimap2 index file (.mmi) of the host removal reference", - "help_text": "Specify path to a pre-made Minimap2 index file (.mmi) of the host removal reference file given to `--hostremoval_reference`.\n\nSpecifying a premade index file can speed up runtime of the host-removal step, however if not supplied the pipeline will generate the indices for you." - }, - "save_hostremoval_index": { - "type": "boolean", - "fa_icon": "fas fa-save", - "description": "Save mapping index of input reference when not already supplied by user", - "help_text": "Save the output files of the in-built indexing of the host genome.\n\nThis is recommend to be turned on if you plan to use the same reference genome multiple times, as supplying the directory or file to `--shortread_hostremoval_index` or `--longread_hostremoval_index` respectively can speed up runtime of future runs. Once generated, we recommend you place this file _outside_ of your run results directory in a central 'cache' directory you and others using your machine can access and supply to the pipeline." - }, - "save_hostremoval_mapped": { - "type": "boolean", - "fa_icon": "fas fa-save", - "description": "Save mapped reads in BAM format from host removal", - "help_text": "Save the reads mapped to the reference genome in BAM format as output by the respective hostremoval alignment tool.\n\nThis can be useful if you wish to perform other analyses on the host organism (such as host-microbe interaction), however, you should consider whether the default mapping parameters of Bowtie2 (short-read) or minimap2 (long-read) are optimised to your context. " - }, - "save_hostremoval_unmapped": { - "type": "boolean", - "fa_icon": "fas fa-save", - "description": "Save unmapped reads in FASTQ format from host removal", - "help_text": "Save the unreads mapped to the reference genome in FASTQ format (as exported from `samtools view`).\n\nThis can be useful if you wish to perform other analyses on the off-target reads from the host mapping, such as manual profiling or _de novo_ assembly." - } - }, - "fa_icon": "fas fa-user-times" - }, - "preprocessing_run_merging_options": { - "title": "Preprocessing run merging options", - "type": "object", - "description": "Options for per-sample run-merging", - "default": "", - "properties": { - "perform_runmerging": { - "type": "boolean", - "fa_icon": "fas fa-toggle-on", - "description": "Turn on run merging", - "help_text": "Turns on the concatenation of sequencing runs or libraries with the same sample name.\n\nThis can be useful to ensure you get a single profile per sample, rather than one profile per run or library. Note that in some cases comparing profiles of independent _libraries_ may be useful, so this parameter may not always be suitable. " - }, - "save_runmerged_reads": { - "type": "boolean", - "fa_icon": "fas fa-save", - "description": "Save run-concatenated input FASTQ files for each sample", - "help_text": "Save the run- and library-concatenated reads of a given sample in FASTQ format." - } - }, - "fa_icon": "fas fa-clipboard-check" - }, - "profiling_options": { - "title": "Profiling options", - "type": "object", - "description": "", - "default": "", - "properties": { - "run_centrifuge": { - "type": "boolean", - "fa_icon": "fas fa-toggle-on", - "description": "Turn on profiling with Centrifuge. Requires database to be present CSV file passed to --databases" - }, - "centrifuge_save_reads": { - "type": "boolean", - "fa_icon": "fas fa-save", - "description": "Turn on saving of Centrifuge-aligned reads", - "help_text": "Save mapped (SAM, FASTQ) and unmapped (FASTQ) reads from alignment step of centrifuge in your output results directory.\n\n> Modifies tool parameter(s):\n> - centrifuge: `--un-gz`, `--al-gz`, `--un-conc-gz`, `--al-conc-gz`, `--out-fmt`" - }, - "run_diamond": { - "type": "boolean", - "fa_icon": "fas fa-toggle-on", - "description": "Turn on profiling with DIAMOND. Requires database to be present CSV file passed to --databases" - }, - "diamond_output_format": { - "type": "string", - "default": "tsv", - "enum": ["blast", "xml", "txt", "daa", "sam", "tsv", "paf"], - "fa_icon": "fas fa-file", - "description": "Specify output format from DIAMOND profiling.", - "help_text": "DIAMOND can produce output in a number of different formats, you can specify here which to produce.\n\nNote that DIAMOND can only produce one format at a time, and depending on which you pick, some downstream steps may not be executed. For example, selecting `daa` or `sam` will mean you will not get a tabular taxonomic profile as with the other tools.\n\nWill be overriden by `--diamond_save_reads.`\n\n> Modifies tool parameter(s):\n> - diamond blastx: `--outfmt`" - }, - "diamond_save_reads": { - "type": "boolean", - "fa_icon": "fas fa-save", - "description": "Turn on saving of DIAMOND-aligned reads. Will override --diamond_output_format and no taxon tables will be generated", - "help_text": "Save aligned reads in SAM format from alignment step of DIAMOND in your output results directory.\n\nNote this explicitly overrides `--diamond_output_format` to produce the SAM file, and no taxon table will be generated.\n\n> Modifies tool parameter(s):\n> - DIAMOND: `--outfmt`" - }, - "run_kaiju": { - "type": "boolean", - "fa_icon": "fas fa-toggle-on", - "description": "Turn on profiling with Kaiju. Requires database to be present CSV file passed to --databases" - }, - "kaiju_taxon_rank": { - "type": "string", - "default": "species", - "enum": ["phylum", "class", "order", "family", "genus", "species"], - "fa_icon": "fas fa-tag", - "description": "Specify taxonomic rank to be displayed in Kaiju taxon table", - "help_text": "Specify the taxonomic level(s) to be displayed in the resulting Kaiju taxon table, as generated by the kaiju2table helper tool.\n\nThis can be either a single level (e.g. `species`), or a comma separated list to display the full taxonomic path (e.g. `superkingdom,phylum,class,order,family,genus,species.`).\n\n> Modifies tool parameter(s):\n> - kaiju2table: `-l`" - }, - "run_kraken2": { - "type": "boolean", - "fa_icon": "fas fa-toggle-on", - "description": "Turn on profiling with Kraken2. Requires database to be present CSV file passed to --databases" - }, - "kraken2_save_reads": { - "type": "boolean", - "fa_icon": "fas fa-save", - "description": "Turn on saving of Kraken2-aligned reads", - "help_text": "Save reads that do and do not have a taxonomic classification in your output results directory in FASTQ format.\n\n> Modifies tool parameter(s):\n> - kraken2: `--classified-out` and `--unclassified-out`" - }, - "kraken2_save_readclassification": { - "type": "boolean", - "fa_icon": "fas fa-save", - "description": "Turn on saving of Kraken2 per-read taxonomic assignment file", - "help_text": "Save a text file that contains a list of each read that had a taxonomic assignment, with information on specific taxonomic taxonomic assignment that that read recieved.\n\n> Modifies tool parameter(s):\n> - kraken2: `--output`" - }, - "kraken2_save_minimizers": { - "type": "boolean", - "description": "Turn on saving minimizer information in the kraken2 report thus increasing to an eight column layout.", - "fa_icon": "fas fa-save", - "help_text": "Turn on saving minimizer information in the kraken2 report thus increasing to an eight column layout.\n\nAdds `--report-minimizer-data` to the kraken2 command." - }, - "run_bracken": { - "type": "boolean", - "description": "Post-process kraken2 reports with Bracken.", - "fa_icon": "fas fa-toggle-on" - }, - "run_malt": { - "type": "boolean", - "fa_icon": "fas fa-toggle-on", - "description": "Turn on profiling with MALT. Requires database to be present CSV file passed to --databases" - }, - "malt_mode": { - "type": "string", - "default": "BlastN", - "fa_icon": "fas fa-check-square", - "description": "Specify which MALT alignment mode to use", - "help_text": "Specify which version of MALT alignment to use.\n\nBlastN is generally recommended (nucleotide-nucleotide alignment), but particularly for very short reads (such as aDNA), whereas BlastX mode is similar to DIAMOND and will translate the nucleotide to amino acid sequences. Note each type of alignment mode requires different parameters during database construction. Refer to the MALT manual for more information.\n\n> Modifies tool parameter(s):\n> - malt-run: `-mode` " - }, - "malt_save_reads": { - "type": "boolean", - "fa_icon": "fas fa-save", - "description": "Turn on saving of MALT-aligned reads", - "help_text": "Turns on saving of MALT aligned reads in SAM format.\n\nNote that the SAM format produce by MALT is not completely valid, and may not work with downstream tools.\n\n> Modifies tool parameter(s):\n> - malt-run: `--alignments`, `-za`" - }, - "malt_generate_megansummary": { - "type": "boolean", - "fa_icon": "fas fa-save", - "description": "Turn on generation of MEGAN summary file from MALT results", - "help_text": "Turns on saving of MALT output in an additional MEGAN summary file (`.megan`) that can be loaded into the MEGAN metagenomic exploration tool.\n\nNote: this file is generated not directly from MALT but rather then MEGAN utility script `rma2info`.\n\n> Modifies tool parameter(s):\n> - rma2info: `-es`" - }, - "run_metaphlan3": { - "type": "boolean", - "description": "Turn on profiling with MetaPhlAn3. Requires database to be present CSV file passed to --databases", - "fa_icon": "fas fa-toggle-on" - }, - "run_motus": { - "type": "boolean", - "fa_icon": "fas fa-toggle-on", - "description": "Turn on profiling with mOTUs. Requires database to be present CSV file passed to --databases" - } - }, - "fa_icon": "fas fa-align-center" - }, - "postprocessing_and_visualisation_options": { - "title": "Postprocessing and visualisation options", - "type": "object", - "description": "", - "default": "", - "properties": { - "run_profile_standardisation": { - "type": "boolean", - "fa_icon": "fas fa-toggle-on", - "description": "Turn on standardisation of taxon tables across profilers", - "help_text": "Turns on standardisation of output OTU tables across all tools; each into a TSV format following the following scheme:\n\n|TAXON | SAMPLE_A | SAMPLE_B |\n|-------------|----------------|-----------------|\n| taxon_a | 32 | 123 |\n| taxon_b | 1 | 5 |\n\nThis currently only is generated for mOTUs." - }, - "generate_biom_output": { - "type": "boolean", - "fa_icon": "fas fa-toggle-on", - "description": "Turn on generation of BIOM output (currently only applies to mOTUs)", - "help_text": "Turn on the saving of the taxonomic output in BIOM format (`.biom`) in the results directory of your pipeline run, instead of the default TSV format.\n\nNote this file is from the output of the `motus merge` command.\n\n> Modifies tool parameter(s):\n> - `-B -o`" - }, - "run_krona": { - "type": "boolean", - "fa_icon": "fas fa-toggle-on", - "description": "Turn on generation of Krona plots for supported profilers", - "help_text": "Turn on the generation of Krona interactive pie-chart HTMLs for a selection of profilers.\n\nThe tools currently supported are:\n\n- centrifuge\n- kraken2\n- kaiju\n- MALT" - }, - "krona_taxonomy_directory": { - "type": "string", - "default": "None", - "fa_icon": "fas fa-folder-open", - "description": "Specify path to krona taxonomy directories (required for MALT krona plots)", - "help_text": "Specify a path to a Krona taxonomy database directory (i.e. a directory containing a krona generated `.tab` file).\n\nThis is only required for generating Krona plots of MALT output.\n\nNote this taxonomy database must be downloaded and generated with the `updateTaxonomy.sh` script from the krona-tools package." - } - }, - "fa_icon": "fas fa-chart-line" - }, - "institutional_config_options": { - "title": "Institutional config options", - "type": "object", - "fa_icon": "fas fa-university", - "description": "Parameters used to describe centralised config profiles. These should not be edited.", - "help_text": "The centralised nf-core configuration profiles use a handful of pipeline parameters to describe themselves. This information is then printed to the Nextflow log when you run a pipeline. You should not need to change these values when you run a pipeline.", - "properties": { - "custom_config_version": { - "type": "string", - "description": "Git commit id for Institutional configs.", - "default": "master", - "hidden": true, - "fa_icon": "fas fa-users-cog" - }, - "custom_config_base": { - "type": "string", - "description": "Base directory for Institutional configs.", - "default": "https://raw.githubusercontent.com/nf-core/configs/master", - "hidden": true, - "help_text": "If you're running offline, Nextflow will not be able to fetch the institutional config files from the internet. If you don't need them, then this is not a problem. If you do need them, you should download the files from the repo and tell Nextflow where to find them with this parameter.", - "fa_icon": "fas fa-users-cog" - }, - "config_profile_name": { - "type": "string", - "description": "Institutional config name.", - "hidden": true, - "fa_icon": "fas fa-users-cog" - }, - "config_profile_description": { - "type": "string", - "description": "Institutional config description.", - "hidden": true, - "fa_icon": "fas fa-users-cog" - }, - "config_profile_contact": { - "type": "string", - "description": "Institutional config contact information.", - "hidden": true, - "fa_icon": "fas fa-users-cog" - }, - "config_profile_url": { - "type": "string", - "description": "Institutional config URL link.", - "hidden": true, - "fa_icon": "fas fa-users-cog" - } - } - }, - "max_job_request_options": { - "title": "Max job request options", - "type": "object", - "fa_icon": "fab fa-acquisitions-incorporated", - "description": "Set the top limit for requested resources for any single job.", - "help_text": "If you are running on a smaller system, a pipeline step requesting more resources than are available may cause the Nextflow to stop the run with an error. These options allow you to cap the maximum resources requested by any single job so that the pipeline will run on your system.\n\nNote that you can not _increase_ the resources requested by any job using these options. For that you will need your own configuration file. See [the nf-core website](https://nf-co.re/usage/configuration) for details.", - "properties": { - "max_cpus": { - "type": "integer", - "description": "Maximum number of CPUs that can be requested for any single job.", - "default": 16, - "fa_icon": "fas fa-microchip", - "hidden": true, - "help_text": "Use to set an upper-limit for the CPU requirement for each process. Should be an integer e.g. `--max_cpus 1`" - }, - "max_memory": { - "type": "string", - "description": "Maximum amount of memory that can be requested for any single job.", - "default": "128.GB", - "fa_icon": "fas fa-memory", - "pattern": "^\\d+(\\.\\d+)?\\.?\\s*(K|M|G|T)?B$", - "hidden": true, - "help_text": "Use to set an upper-limit for the memory requirement for each process. Should be a string in the format integer-unit e.g. `--max_memory '8.GB'`" - }, - "max_time": { - "type": "string", - "description": "Maximum amount of time that can be requested for any single job.", - "default": "240.h", - "fa_icon": "far fa-clock", - "pattern": "^(\\d+\\.?\\s*(s|m|h|day)\\s*)+$", - "hidden": true, - "help_text": "Use to set an upper-limit for the time requirement for each process. Should be a string in the format integer-unit e.g. `--max_time '2.h'`" - } - } - }, - "generic_options": { - "title": "Generic options", - "type": "object", - "fa_icon": "fas fa-file-import", - "description": "Less common options for the pipeline, typically set in a config file.", - "help_text": "These options are common to all nf-core pipelines and allow you to customise some of the core preferences for how the pipeline runs.\n\nTypically these options would be set in a Nextflow config file loaded for all pipeline runs, such as `~/.nextflow/config`.", - "properties": { - "help": { - "type": "boolean", - "description": "Display help text.", - "fa_icon": "fas fa-question-circle", - "hidden": true - }, - "publish_dir_mode": { - "type": "string", - "default": "copy", - "description": "Method used to save pipeline results to output directory.", - "help_text": "The Nextflow `publishDir` option specifies which intermediate files should be saved to the output directory. This option tells the pipeline what method should be used to move these files. See [Nextflow docs](https://www.nextflow.io/docs/latest/process.html#publishdir) for details.", - "fa_icon": "fas fa-copy", - "enum": ["symlink", "rellink", "link", "copy", "copyNoFollow", "move"], - "hidden": true - }, - "email_on_fail": { - "type": "string", - "description": "Email address for completion summary, only when pipeline fails.", - "fa_icon": "fas fa-exclamation-triangle", - "pattern": "^([a-zA-Z0-9_\\-\\.]+)@([a-zA-Z0-9_\\-\\.]+)\\.([a-zA-Z]{2,5})$", - "help_text": "An email address to send a summary email to when the pipeline is completed - ONLY sent if the pipeline does not exit successfully.", - "hidden": true - }, - "plaintext_email": { - "type": "boolean", - "description": "Send plain-text email instead of HTML.", - "fa_icon": "fas fa-remove-format", - "hidden": true - }, - "max_multiqc_email_size": { - "type": "string", - "description": "File size limit when attaching MultiQC reports to summary emails.", - "pattern": "^\\d+(\\.\\d+)?\\.?\\s*(K|M|G|T)?B$", - "default": "25.MB", - "fa_icon": "fas fa-file-upload", - "hidden": true - }, - "monochrome_logs": { - "type": "boolean", - "description": "Do not use coloured log outputs.", - "fa_icon": "fas fa-palette", - "hidden": true - }, - "hook_url": { - "type": "string", - "description": "Incoming hook URL for messaging service", - "fa_icon": "fas fa-people-group", - "help_text": "Incoming hook URL for messaging service. Currently, only MS Teams is supported.", - "hidden": true - }, - "multiqc_config": { - "type": "string", - "description": "Custom config file to supply to MultiQC.", - "fa_icon": "fas fa-cog", - "hidden": true - }, - "multiqc_logo": { - "type": "string", - "description": "Custom logo file to supply to MultiQC. File name must also be set in the MultiQC config file", - "fa_icon": "fas fa-image", - "hidden": true - }, - "multiqc_methods_description": { - "type": "string", - "description": "Custom MultiQC yaml file containing HTML including a methods description.", - "fa_icon": "fas fa-cog" - }, - "tracedir": { - "type": "string", - "description": "Directory to keep pipeline Nextflow logs and reports.", - "default": "${params.outdir}/pipeline_info", - "fa_icon": "fas fa-cogs", - "hidden": true - }, - "validate_params": { - "type": "boolean", - "description": "Boolean whether to validate parameters against the schema at runtime", - "default": true, - "fa_icon": "fas fa-check-square", - "hidden": true - }, - "show_hidden_params": { - "type": "boolean", - "fa_icon": "far fa-eye-slash", - "description": "Show all params when using `--help`", - "hidden": true, - "help_text": "By default, parameters set as _hidden_ in the schema are not shown on the command line when a user runs with `--help`. Specifying this option will tell the pipeline to show all parameters." - }, - "enable_conda": { - "type": "boolean", - "description": "Run this workflow with Conda. You can also use '-profile conda' instead of providing this parameter.", - "hidden": true, - "fa_icon": "fas fa-bacon" - } - } - }, - "reference_genome_options": { - "title": "Reference genome options", - "type": "object", - "fa_icon": "fas fa-dna", - "description": "Reference genome related files and options required for the workflow.", - "properties": { - "genome": { - "type": "string", - "description": "Name of iGenomes reference.", - "fa_icon": "fas fa-book", - "help_text": "If using a reference genome configured in the pipeline using iGenomes, use this parameter to give the ID for the reference. This is then used to build the full paths for all required reference genome files e.g. `--genome GRCh38`. \n\nSee the [nf-core website docs](https://nf-co.re/usage/reference_genomes) for more details.", - "hidden": true - }, - "igenomes_base": { - "type": "string", - "format": "directory-path", - "description": "Directory / URL base for iGenomes references.", - "default": "s3://ngi-igenomes/igenomes", - "fa_icon": "fas fa-cloud-download-alt", - "hidden": true - }, - "igenomes_ignore": { - "type": "boolean", - "description": "Do not load the iGenomes reference config.", - "fa_icon": "fas fa-ban", - "hidden": true, - "help_text": "Do not load `igenomes.config` when running the pipeline. You may choose this option if you observe clashes between custom parameters and those supplied in `igenomes.config`." - } - } + "$schema": "http://json-schema.org/draft-07/schema", + "$id": "https://raw.githubusercontent.com/nf-core/taxprofiler/master/nextflow_schema.json", + "title": "nf-core/taxprofiler pipeline parameters", + "description": "Taxonomic profiling of shotgun metagenomic data", + "type": "object", + "definitions": { + "input_output_options": { + "title": "Input/output options", + "type": "object", + "fa_icon": "fas fa-terminal", + "description": "Define where the pipeline should find input data and save output data.", + "required": ["input", "databases", "outdir"], + "properties": { + "input": { + "type": "string", + "format": "file-path", + "mimetype": "text/csv", + "pattern": "^\\S+\\.(csv|yaml|yml)$", + "schema": "assets/schema_input.json", + "description": "Path to comma-separated file containing information about the samples and libraries/runs.", + "help_text": "You will need to create a design file with information about the samples and libraries/runs you want to running in your pipeline run. Use this parameter to specify its location. It has to be a comma-separated file with 6 columns, and a header row. See [usage docs](https://nf-co.re/taxprofiler/usage#samplesheet-input).", + "fa_icon": "fas fa-file-csv" + }, + "databases": { + "type": "string", + "mimetype": "text/csv", + "format": "file-path", + "fa_icon": "fas fa-database", + "description": "Path to comma-separated file containing information about databases and profiling parameters for each taxonomic profiler", + "help_text": "You will need to create a design file with information about the samples in your experiment before running the pipeline. Use this parameter to specify its location. It has to be a comma-separated file with 4 columns, and a header row. See [usage docs](https://nf-co.re/taxprofiler/dev/usage#full-database-sheet).\n\nProfilers will only be executed if a corresponding database are supplied. \n\nWe recommend storing this database sheet somewhere centrally and accessible by others members of your lab/institutions, as this file will likely be regularly reused." + }, + "outdir": { + "type": "string", + "format": "directory-path", + "description": "The output directory where the results will be saved. You have to use absolute paths to storage on Cloud infrastructure.", + "fa_icon": "fas fa-folder-open" + }, + "email": { + "type": "string", + "description": "Email address for completion summary.", + "fa_icon": "fas fa-envelope", + "help_text": "Set this parameter to your e-mail address to get a summary e-mail with details of the run sent to you when the workflow exits. If set in your user config file (`~/.nextflow/config`) then you don't need to specify this on the command line for every run.", + "pattern": "^([a-zA-Z0-9_\\-\\.]+)@([a-zA-Z0-9_\\-\\.]+)\\.([a-zA-Z]{2,5})$" + }, + "multiqc_title": { + "type": "string", + "description": "MultiQC report title. Printed as page header, used for filename if not otherwise specified.", + "fa_icon": "fas fa-file-signature" + } + } + }, + "preprocessing_general_qc_options": { + "title": "Preprocessing general QC options", + "type": "object", + "description": "Common options across both long and short read preprocessing QC steps", + "default": "", + "properties": { + "save_preprocessed_reads": { + "type": "boolean", + "fa_icon": "fas fa-save", + "description": "Save reads from adapter clipping/pair-merging, length filtering for both short and long reads", + "help_text": "This saves the FASTQ output from the following tools:\n\n- fastp\n- AdapterRemoval\n- Porechop\n- Filtlong\n\nThese reads will be a mixture of: adapter clipped, quality trimmed, pair-merged, and length filtered, depending on the parameters you set." + } + }, + "fa_icon": "fas fa-users-cog" + }, + "preprocessing_short_read_qc_options": { + "title": "Preprocessing short-read QC options", + "type": "object", + "description": "Options for adapter clipping, quality trimming, pair-merging, and complexity filtering", + "default": "", + "properties": { + "perform_shortread_qc": { + "type": "boolean", + "fa_icon": "fas fa-toggle-on", + "description": "Turns on short read quality control steps (adapter clipping, complexity filtering etc.)", + "help_text": "Turns on short read quality control steps (adapter clipping, complexity filtering etc.)\n\nThis subworkflow can perform:\n\n- Adapter removal\n- Read quality trimming\n- Read pair merging\n- Length filtering\n- Complexity filtering\n\nEither with fastp or AdapterRemoval.\n\nRemoving adapters (if present) is recommend to reduce false-postive hits that may occur from 'dirty' or 'contaminated' reference genomes in a profiling database that contain accidentially incorporated adapter sequences. Note that some, but not all, tools support paired-end alignment (utilising information about the insert covered by the pairs). However read pair merging in some cases can be recommend to increase read length (such as in aDNA). Length filtering, and/or complexity can speed up alignment by reducing the number of short unspecific reads that need to be aligned." + }, + "shortread_qc_tool": { + "type": "string", + "default": "fastp", + "enum": ["fastp", "adapterremoval"], + "fa_icon": "fas fa-tools", + "description": "Specify which tool to use for short-read QC" + }, + "shortread_qc_skipadaptertrim": { + "type": "boolean", + "fa_icon": "fas fa-forward", + "description": "Skip adapter trimming", + "help_text": "Skip the removal of sequencing adapters. \n\nThis often can be useful to speed up run-time of the pipeline when analysing data downloaded from public databases such as the ENA or SRA, as adapters should already be removed (however we recommend to check FastQC results to ensure this is the case)." + }, + "shortread_qc_adapter1": { + "type": "string", + "default": "None", + "fa_icon": "fas fa-grip-lines", + "description": "Specify adapter 1 nucleotide sequence", + "help_text": "Specify a custom forward or R1 adapter sequence to be removed from reads. \n\nIf not set, the selected short-read QC tool's defaults will be used.\n\n> Modifies tool parameter(s):\n> - fastp: `--adapter_sequence`. fastp default: `AGATCGGAAGAGCACACGTCTGAACTCCAGTCA`\n> - AdapterRemoval: `--adapter1`. AdapteRemoval2 default: `AGATCGGAAGAGCACACGTCTGAACTCCAGTCACNNNNNNATCTCGTATGCCGTCTTCTGCTTG`" + }, + "shortread_qc_adapter2": { + "type": "string", + "default": "None", + "fa_icon": "fas fa-grip-lines", + "description": "Specify adapter 2 nucleotide sequence", + "help_text": "Specify a custom reverse or R2 adapter sequence to be removed from reads. \n\nIf not set, the selected short-read QC tool's defaults will be used.\n\n> Modifies tool parameter(s):\n> - fastp: `--adapter_sequence`. fastp default: `AGATCGGAAGAGCGTCGTGTAGGGAAAGAGTGT`\n> - AdapterRemoval: `--adapter1`. AdapteRemoval2 default: `AGATCGGAAGAGCGTCGTGTAGGGAAAGAGTGTAGATCTCGGTGGTCGCCGTATCATT`" + }, + "shortread_qc_adapterlist": { + "type": "string", + "default": "None", + "description": "Specify a list of all possible adapters to trim. Overrides --shortread_qc_adapter1/2. Formats: .txt (AdapterRemoval) or .fasta. (fastp).", + "help_text": "Allows to supply a file with a list of adapter (combinations) to remove from all files. \n\nOverrides the --shortread_qc_adapter1/--shortread_qc_adapter2 parameters . \n\nFor AdapterRemoval this consists of a two column table with a `.txt` extension: first column represents forward strand, second column for reverse strand. You must supply all possible combinations, one per line, and this list is applied to all files. See AdapterRemoval documentation for more information.\n\nFor fastp this consists of a standard FASTA format with a `.fasta`/`.fa`/`.fna`/`.fas` extension. The adapter sequence in this file should be at least 6bp long, otherwise it will be skipped. fastp trims the adapters present in the FASTA file one by one.\n\n> Modifies AdapterRemoval parameter: --adapter-list\n> Modifies fastp parameter: --adapter_fasta" + }, + "shortread_qc_mergepairs": { + "type": "boolean", + "fa_icon": "fas fa-toggle-on", + "description": "Turn on merging of read pairs for paired-end data", + "default": true, + "help_text": "Turn on the merging of read-pairs of paired-end short read sequencing data for AdapterRemoval (this is performed automatically with fastp).\n\n> Modifies tool parameter(s):\n> - AdapterRemoval: `--collapse`\n" + }, + "shortread_qc_excludeunmerged": { + "type": "boolean", + "fa_icon": "far fa-times-circle", + "description": "Discard unmerged reads from paired-end merging", + "help_text": "Turns off the inclusion of unmerged reads in resulting processing FASTQ file of paired-end sequencing data when using `fastp`.\n\nThis can be useful in cases where you prefer to have very short reads (e.g. aDNA), thus excluding longer-reads or possibly faulty reads where one of the pair was discarded.\n\n> Modifies tool parameter(s):\n> - removed from reads `--include_unmerged`\n" + }, + "shortread_qc_minlength": { + "type": "integer", + "default": 15, + "fa_icon": "fas fa-ruler-horizontal", + "description": "Specify the minimum length of reads to be retained", + "help_text": "Specifying a mimum read length filtering can speed up profiling by reducing the number of short unspecific reads that need to be match/aligned to the database.\n\n> Modifies tool parameter(s):\n> - removed from reads `--length_required`\n> - AdapterRemoval: `--minlength`" + }, + "perform_shortread_complexityfilter": { + "type": "boolean", + "fa_icon": "fas fa-toggle-on", + "description": "Turns on nucleotide sequence complexity filtering", + "help_text": "Turns on sequencing complexity filtering. Complexity filtering can be useful to increase run-time by removing unspecific read sequences that do not provide any informative taxon ID." + }, + "shortread_complexityfilter_tool": { + "type": "string", + "default": "bbduk", + "enum": ["bbduk", "prinseqplusplus", "fastp"], + "fa_icon": "fas fa-hammer", + "description": "Specify which tool to use for complexity filtering" + }, + "shortread_complexityfilter_entropy": { + "type": "number", + "default": 0.3, + "fa_icon": "fas fa-random", + "description": "Specify the minimum sequence entropy level for complexity filtering", + "help_text": "Specify the minimum 'entropy' value for complexity filtering for BBDuk or PRINSEQ++.\n\nNote that this value will only be used for PRINSEQ++ if `--shortread_complexityfilter_prinseqplusplus_mode` is set to `entropy`.\n\nEntropy here corresponds to the amount of sequence variation exists within the read. Higher values correspond to more variety, and thus will likely reslut in more specific matching to a taxon's reference genome. The trade off here is fewer reads (or abundance information) available for having a confident identification.\n\n\n> Modifies tool parameter(s):\n> - BBDuk: `entropy=`\n> - PRINSEQ++: `-lc_entropy`\n\n" + }, + "shortread_complexityfilter_bbduk_windowsize": { + "type": "integer", + "default": 50, + "fa_icon": "far fa-window-maximize", + "description": "Specify the window size for BBDuk complexity filtering", + "help_text": "Specify the window size to calculate the level entropy within for BBDuk.\n\n> Modifies tool parameter(s):\n> - BBDuk: `entropywindow=`" + }, + "shortread_complexityfilter_bbduk_mask": { + "type": "boolean", + "fa_icon": "fas fa-mask", + "description": "Turn on masking rather than discarding of low complexity reads for BBduk", + "help_text": "Turn on masking of low-complexity reads (i.e., replacement with `N`) rather than removal.\n\n> Modifies tool parameter(s)\n> - BBDuk: `entropymask=`" + }, + "shortread_complexityfilter_fastp_threshold": { + "type": "integer", + "default": 30, + "fa_icon": "fas fa-sort-numeric-down", + "description": "Specify the minimum complexity filter threshold of fastp", + "help_text": "Specify the minimum sequence complexity value for fastp. This value corresponds to the percentage of bases that is different from it's adjacent bases.\n\n> Modifies tool parameter(s):\n> - removed from reads `--complexity_threshold`" + }, + "shortread_complexityfilter_prinseqplusplus_mode": { + "type": "string", + "default": "entropy", + "enum": ["entropy", "dust"], + "fa_icon": "fas fa-check-square", + "description": "Specify the complexity filter mode for PRINSEQ++" + }, + "shortread_complexityfilter_prinseqplusplus_dustscore": { + "type": "number", + "default": 0.5, + "fa_icon": "fas fa-head-side-mask", + "description": "Specify the minimum dust score for PRINTSEQ++ complexity filtering", + "help_text": "Specify the minimum dust score below which low-complexity reads will be removed. A DUST score is based on how often different tri-nucleotides occur along a read.\n\n> Modifies tool parameter(s):\n> - PRINSEQ++: `--lc_dust`" + }, + "save_complexityfiltered_reads": { + "type": "boolean", + "fa_icon": "fas fa-save", + "description": "Save complexity filtered short-reads", + "help_text": "Specify whether to save the final complexity filtered reads in your results directory (`--outdir`)." } + }, + "fa_icon": "fas fa-compress-alt" }, - "allOf": [ - { - "$ref": "#/definitions/input_output_options" + "preprocessing_long_read_qc_options": { + "title": "Preprocessing long-read QC options", + "type": "object", + "description": "Options for adapter clipping, quality trimming, and length filtering", + "default": "", + "properties": { + "perform_longread_qc": { + "type": "boolean", + "fa_icon": "fas fa-toggle-on", + "description": "Turns on long read quality control steps (adapter clipping, length filtering etc.)", + "help_text": "Turns on long read quality control steps (adapter clipping, length and/or quality filtering.)\n\nRemoving adapters (if present) is recommend to reduce false-postive hits that may occur from 'dirty' or 'contaminated' reference genomes in a profiling database that contain accidentially incorporated adapter sequences.\n\nLength filtering, and quality filtering can speed up alignment by reducing the number of unspecific reads that need to be aligned." + }, + "longread_qc_skipadaptertrim": { + "type": "boolean", + "description": "Skip long-read trimming", + "fa_icon": "fas fa-forward", + "help_text": "Skip removal of adapters by Porechop. This can be useful in some cases to speed up run time - particularly when you are running data downloading from public databases such as the ENA/SRA that should already have adapters removed. We recommend that you check your FastQC results this is indeed the case." + }, + "longread_qc_skipqualityfilter": { + "type": "boolean", + "description": "Skip long-read length and quality filtering", + "fa_icon": "fas fa-forward", + "help_text": "Skip removal of quality filtering with Filtlong. This will skip length, percent reads, and target bases filtering (see other `--longread_qc_qualityfilter_*` parameters)." + }, + "longread_qc_qualityfilter_minlength": { + "type": "integer", + "default": 1000, + "description": "Specify the minimum length of reads to be retained", + "fa_icon": "fas fa-ruler-horizontal", + "help_text": "Specify the minimum of length of reads to be kept for downstream analysis.\n\n> Modifies tool parameter(s):\n> - Filtlong: `--min_length`" + }, + "longread_qc_qualityfilter_keeppercent": { + "type": "integer", + "default": 90, + "description": "Specify the percent of high-quality bases to be retained", + "fa_icon": "fas fa-percentage", + "help_text": "Throw out the remaining percentage of reads outside the value. This is measured by bp, not by read count. So this option throws out the worst e.g. 10% of read bases if the parameter is set to `90`. _Modified from [Filtlong documentation](https://github.com/rrwick/Filtlong)_\n\n> Modifies tool parameter(s):\n> - Filtlong: `--keep_percent`" + }, + "longread_qc_qualityfilter_targetbases": { + "type": "integer", + "default": 500000000, + "description": "Specify the number of high-quality bases in the library to be retained", + "fa_icon": "fas fa-bullseye", + "help_text": "Removes the worst reads until only the specified value of bases remain, useful for very large read sets. If the input read set is less than the specified value, this setting will have no effect. _Modified from [Filtlong documentation](https://github.com/rrwick/Filtlong)_\n\n> Modifies tool parameter(s):\n> - Filtlong: `--keep_percent`" + } + }, + "fa_icon": "fas fa-expand-alt" + }, + "preprocessing_host_removal_options": { + "title": "Preprocessing host removal options", + "type": "object", + "description": "Options for pre-profiling host read removal", + "default": "", + "properties": { + "perform_shortread_hostremoval": { + "type": "boolean", + "fa_icon": "fas fa-toggle-on", + "description": "Turn on short-read host removal", + "help_text": "Turns on the ability to remove short-reads from the that derived from a known organism, using Bowtie2 and samtools\n\nThis subworkflow is useful to remove reads that may come from a host, or a known contamination like the human reference genome. Human DNA contamination of (microbial) reference genomes is well known, so removal of these prior profiling both reduces the risks of false positives, and in _some cases_ a faster runtime (as less reads need to be profiled).\n\nAlternatively, you can include the reference genome within your profiling databases and can turn off this subworkflow, with the trade off of a larger taxonomic profiling database." + }, + "perform_longread_hostremoval": { + "type": "boolean", + "fa_icon": "fas fa-toggle-on", + "description": "Turn on long-read host removal", + "help_text": "Turns on the ability to remove long-reads from the that derived from a known organism, using minimap2 and samtools\n\nThis subworkflow is useful to remove reads that may come from a host, or a known contamination like the human reference genome. Human DNA contamination of (microbial) reference genomes is well known, so removal of these prior profiling both reduces the risks of false positives, and in _some cases_ a faster runtime (as less reads need to be profiled).\n\nAlternatively, you can include the reference genome within your profiling databases and can turn off this subworkflow, with the trade off of a larger taxonomic profiling database." + }, + "hostremoval_reference": { + "type": "string", + "default": "None", + "fa_icon": "fas fa-file-alt", + "description": "Specify path to single reference FASTA of host(s) genome(s)", + "help_text": "Specify a path to the FASTA file (optionally gzipped) of the reference genome of the organism to be removed.\n\nIf you have two or more host organisms or contaminants you wish to remove, you can concatenate the FASTAs of the different taxa into a single one to provide to the pipeline." + }, + "shortread_hostremoval_index": { + "type": "string", + "default": "None", + "fa_icon": "fas fa-address-book", + "description": "Specify path to the directory containing pre-made BowTie2 indexes of the host removal reference", + "help_text": "Specify the path to a _directory_ containing pre-made Bowtie2 reference index files (i.e. the directory containing `.bt1`, `.bt2` files etc.). These should sit in the same directory alongside the the reference file specified in `--hostremoval_reference`.\n\nSpecifying premade indices can speed up runtime of the host-removal step, however if not supplied the pipeline will generate the indices for you." + }, + "longread_hostremoval_index": { + "type": "string", + "default": "None", + "fa_icon": "fas fa-address-book", + "description": "Specify path to a pre-made Minimap2 index file (.mmi) of the host removal reference", + "help_text": "Specify path to a pre-made Minimap2 index file (.mmi) of the host removal reference file given to `--hostremoval_reference`.\n\nSpecifying a premade index file can speed up runtime of the host-removal step, however if not supplied the pipeline will generate the indices for you." + }, + "save_hostremoval_index": { + "type": "boolean", + "fa_icon": "fas fa-save", + "description": "Save mapping index of input reference when not already supplied by user", + "help_text": "Save the output files of the in-built indexing of the host genome.\n\nThis is recommend to be turned on if you plan to use the same reference genome multiple times, as supplying the directory or file to `--shortread_hostremoval_index` or `--longread_hostremoval_index` respectively can speed up runtime of future runs. Once generated, we recommend you place this file _outside_ of your run results directory in a central 'cache' directory you and others using your machine can access and supply to the pipeline." + }, + "save_hostremoval_mapped": { + "type": "boolean", + "fa_icon": "fas fa-save", + "description": "Save mapped reads in BAM format from host removal", + "help_text": "Save the reads mapped to the reference genome in BAM format as output by the respective hostremoval alignment tool.\n\nThis can be useful if you wish to perform other analyses on the host organism (such as host-microbe interaction), however, you should consider whether the default mapping parameters of Bowtie2 (short-read) or minimap2 (long-read) are optimised to your context. " + }, + "save_hostremoval_unmapped": { + "type": "boolean", + "fa_icon": "fas fa-save", + "description": "Save unmapped reads in FASTQ format from host removal", + "help_text": "Save the unreads mapped to the reference genome in FASTQ format (as exported from `samtools view`).\n\nThis can be useful if you wish to perform other analyses on the off-target reads from the host mapping, such as manual profiling or _de novo_ assembly." + } + }, + "fa_icon": "fas fa-user-times" + }, + "preprocessing_run_merging_options": { + "title": "Preprocessing run merging options", + "type": "object", + "description": "Options for per-sample run-merging", + "default": "", + "properties": { + "perform_runmerging": { + "type": "boolean", + "fa_icon": "fas fa-toggle-on", + "description": "Turn on run merging", + "help_text": "Turns on the concatenation of sequencing runs or libraries with the same sample name.\n\nThis can be useful to ensure you get a single profile per sample, rather than one profile per run or library. Note that in some cases comparing profiles of independent _libraries_ may be useful, so this parameter may not always be suitable. " + }, + "save_runmerged_reads": { + "type": "boolean", + "fa_icon": "fas fa-save", + "description": "Save run-concatenated input FASTQ files for each sample", + "help_text": "Save the run- and library-concatenated reads of a given sample in FASTQ format." + } + }, + "fa_icon": "fas fa-clipboard-check" + }, + "profiling_options": { + "title": "Profiling options", + "type": "object", + "description": "", + "default": "", + "properties": { + "run_centrifuge": { + "type": "boolean", + "fa_icon": "fas fa-toggle-on", + "description": "Turn on profiling with Centrifuge. Requires database to be present CSV file passed to --databases" + }, + "centrifuge_save_reads": { + "type": "boolean", + "fa_icon": "fas fa-save", + "description": "Turn on saving of Centrifuge-aligned reads", + "help_text": "Save mapped (SAM, FASTQ) and unmapped (FASTQ) reads from alignment step of centrifuge in your output results directory.\n\n> Modifies tool parameter(s):\n> - centrifuge: `--un-gz`, `--al-gz`, `--un-conc-gz`, `--al-conc-gz`, `--out-fmt`" + }, + "run_diamond": { + "type": "boolean", + "fa_icon": "fas fa-toggle-on", + "description": "Turn on profiling with DIAMOND. Requires database to be present CSV file passed to --databases" + }, + "diamond_output_format": { + "type": "string", + "default": "tsv", + "enum": ["blast", "xml", "txt", "daa", "sam", "tsv", "paf"], + "fa_icon": "fas fa-file", + "description": "Specify output format from DIAMOND profiling.", + "help_text": "DIAMOND can produce output in a number of different formats, you can specify here which to produce.\n\nNote that DIAMOND can only produce one format at a time, and depending on which you pick, some downstream steps may not be executed. For example, selecting `daa` or `sam` will mean you will not get a tabular taxonomic profile as with the other tools.\n\nWill be overriden by `--diamond_save_reads.`\n\n> Modifies tool parameter(s):\n> - diamond blastx: `--outfmt`" + }, + "diamond_save_reads": { + "type": "boolean", + "fa_icon": "fas fa-save", + "description": "Turn on saving of DIAMOND-aligned reads. Will override --diamond_output_format and no taxon tables will be generated", + "help_text": "Save aligned reads in SAM format from alignment step of DIAMOND in your output results directory.\n\nNote this explicitly overrides `--diamond_output_format` to produce the SAM file, and no taxon table will be generated.\n\n> Modifies tool parameter(s):\n> - DIAMOND: `--outfmt`" + }, + "run_kaiju": { + "type": "boolean", + "fa_icon": "fas fa-toggle-on", + "description": "Turn on profiling with Kaiju. Requires database to be present CSV file passed to --databases" + }, + "kaiju_taxon_rank": { + "type": "string", + "default": "species", + "enum": ["phylum", "class", "order", "family", "genus", "species"], + "fa_icon": "fas fa-tag", + "description": "Specify taxonomic rank to be displayed in Kaiju taxon table", + "help_text": "Specify the taxonomic level(s) to be displayed in the resulting Kaiju taxon table, as generated by the kaiju2table helper tool.\n\nThis can be either a single level (e.g. `species`), or a comma separated list to display the full taxonomic path (e.g. `superkingdom,phylum,class,order,family,genus,species.`).\n\n> Modifies tool parameter(s):\n> - kaiju2table: `-l`" }, - { - "$ref": "#/definitions/preprocessing_general_qc_options" + "run_kraken2": { + "type": "boolean", + "fa_icon": "fas fa-toggle-on", + "description": "Turn on profiling with Kraken2. Requires database to be present CSV file passed to --databases" }, - { - "$ref": "#/definitions/preprocessing_short_read_qc_options" + "kraken2_save_reads": { + "type": "boolean", + "fa_icon": "fas fa-save", + "description": "Turn on saving of Kraken2-aligned reads", + "help_text": "Save reads that do and do not have a taxonomic classification in your output results directory in FASTQ format.\n\n> Modifies tool parameter(s):\n> - kraken2: `--classified-out` and `--unclassified-out`" }, - { - "$ref": "#/definitions/preprocessing_long_read_qc_options" + "kraken2_save_readclassification": { + "type": "boolean", + "fa_icon": "fas fa-save", + "description": "Turn on saving of Kraken2 per-read taxonomic assignment file", + "help_text": "Save a text file that contains a list of each read that had a taxonomic assignment, with information on specific taxonomic taxonomic assignment that that read recieved.\n\n> Modifies tool parameter(s):\n> - kraken2: `--output`" }, - { - "$ref": "#/definitions/preprocessing_host_removal_options" + "kraken2_save_minimizers": { + "type": "boolean", + "description": "Turn on saving minimizer information in the kraken2 report thus increasing to an eight column layout.", + "fa_icon": "fas fa-save", + "help_text": "Turn on saving minimizer information in the kraken2 report thus increasing to an eight column layout.\n\nAdds `--report-minimizer-data` to the kraken2 command." }, - { - "$ref": "#/definitions/preprocessing_run_merging_options" + "run_bracken": { + "type": "boolean", + "description": "Post-process kraken2 reports with Bracken.", + "fa_icon": "fas fa-toggle-on" }, - { - "$ref": "#/definitions/profiling_options" + "run_malt": { + "type": "boolean", + "fa_icon": "fas fa-toggle-on", + "description": "Turn on profiling with MALT. Requires database to be present CSV file passed to --databases" }, - { - "$ref": "#/definitions/postprocessing_and_visualisation_options" + "malt_mode": { + "type": "string", + "default": "BlastN", + "fa_icon": "fas fa-check-square", + "description": "Specify which MALT alignment mode to use", + "help_text": "Specify which version of MALT alignment to use.\n\nBlastN is generally recommended (nucleotide-nucleotide alignment), but particularly for very short reads (such as aDNA), whereas BlastX mode is similar to DIAMOND and will translate the nucleotide to amino acid sequences. Note each type of alignment mode requires different parameters during database construction. Refer to the MALT manual for more information.\n\n> Modifies tool parameter(s):\n> - malt-run: `-mode` " }, - { - "$ref": "#/definitions/institutional_config_options" + "malt_save_reads": { + "type": "boolean", + "fa_icon": "fas fa-save", + "description": "Turn on saving of MALT-aligned reads", + "help_text": "Turns on saving of MALT aligned reads in SAM format.\n\nNote that the SAM format produce by MALT is not completely valid, and may not work with downstream tools.\n\n> Modifies tool parameter(s):\n> - malt-run: `--alignments`, `-za`" }, - { - "$ref": "#/definitions/max_job_request_options" + "malt_generate_megansummary": { + "type": "boolean", + "fa_icon": "fas fa-save", + "description": "Turn on generation of MEGAN summary file from MALT results", + "help_text": "Turns on saving of MALT output in an additional MEGAN summary file (`.megan`) that can be loaded into the MEGAN metagenomic exploration tool.\n\nNote: this file is generated not directly from MALT but rather then MEGAN utility script `rma2info`.\n\n> Modifies tool parameter(s):\n> - rma2info: `-es`" }, - { - "$ref": "#/definitions/generic_options" + "run_metaphlan3": { + "type": "boolean", + "description": "Turn on profiling with MetaPhlAn3. Requires database to be present CSV file passed to --databases", + "fa_icon": "fas fa-toggle-on" }, - { - "$ref": "#/definitions/reference_genome_options" + "run_motus": { + "type": "boolean", + "fa_icon": "fas fa-toggle-on", + "description": "Turn on profiling with mOTUs. Requires database to be present CSV file passed to --databases" } - ], - "properties": { + }, + "fa_icon": "fas fa-align-center" + }, + "postprocessing_and_visualisation_options": { + "title": "Postprocessing and visualisation options", + "type": "object", + "description": "", + "default": "", + "properties": { + "run_profile_standardisation": { + "type": "boolean", + "fa_icon": "fas fa-toggle-on", + "description": "Turn on standardisation of taxon tables across profilers", + "help_text": "Turns on standardisation of output OTU tables across all tools; each into a TSV format following the following scheme:\n\n|TAXON | SAMPLE_A | SAMPLE_B |\n|-------------|----------------|-----------------|\n| taxon_a | 32 | 123 |\n| taxon_b | 1 | 5 |\n\nThis currently only is generated for mOTUs." + }, + "generate_biom_output": { + "type": "boolean", + "fa_icon": "fas fa-toggle-on", + "description": "Turn on generation of BIOM output (currently only applies to mOTUs)", + "help_text": "Turn on the saving of the taxonomic output in BIOM format (`.biom`) in the results directory of your pipeline run, instead of the default TSV format.\n\nNote this file is from the output of the `motus merge` command.\n\n> Modifies tool parameter(s):\n> - `-B -o`" + }, + "run_krona": { + "type": "boolean", + "fa_icon": "fas fa-toggle-on", + "description": "Turn on generation of Krona plots for supported profilers", + "help_text": "Turn on the generation of Krona interactive pie-chart HTMLs for a selection of profilers.\n\nThe tools currently supported are:\n\n- centrifuge\n- kraken2\n- kaiju\n- MALT" + }, + "krona_taxonomy_directory": { + "type": "string", + "default": "None", + "fa_icon": "fas fa-folder-open", + "description": "Specify path to krona taxonomy directories (required for MALT krona plots)", + "help_text": "Specify a path to a Krona taxonomy database directory (i.e. a directory containing a krona generated `.tab` file).\n\nThis is only required for generating Krona plots of MALT output.\n\nNote this taxonomy database must be downloaded and generated with the `updateTaxonomy.sh` script from the krona-tools package." + } + }, + "fa_icon": "fas fa-chart-line" + }, + "institutional_config_options": { + "title": "Institutional config options", + "type": "object", + "fa_icon": "fas fa-university", + "description": "Parameters used to describe centralised config profiles. These should not be edited.", + "help_text": "The centralised nf-core configuration profiles use a handful of pipeline parameters to describe themselves. This information is then printed to the Nextflow log when you run a pipeline. You should not need to change these values when you run a pipeline.", + "properties": { + "custom_config_version": { + "type": "string", + "description": "Git commit id for Institutional configs.", + "default": "master", + "hidden": true, + "fa_icon": "fas fa-users-cog" + }, + "custom_config_base": { + "type": "string", + "description": "Base directory for Institutional configs.", + "default": "https://raw.githubusercontent.com/nf-core/configs/master", + "hidden": true, + "help_text": "If you're running offline, Nextflow will not be able to fetch the institutional config files from the internet. If you don't need them, then this is not a problem. If you do need them, you should download the files from the repo and tell Nextflow where to find them with this parameter.", + "fa_icon": "fas fa-users-cog" + }, + "config_profile_name": { + "type": "string", + "description": "Institutional config name.", + "hidden": true, + "fa_icon": "fas fa-users-cog" + }, + "config_profile_description": { + "type": "string", + "description": "Institutional config description.", + "hidden": true, + "fa_icon": "fas fa-users-cog" + }, + "config_profile_contact": { + "type": "string", + "description": "Institutional config contact information.", + "hidden": true, + "fa_icon": "fas fa-users-cog" + }, + "config_profile_url": { + "type": "string", + "description": "Institutional config URL link.", + "hidden": true, + "fa_icon": "fas fa-users-cog" + } + } + }, + "max_job_request_options": { + "title": "Max job request options", + "type": "object", + "fa_icon": "fab fa-acquisitions-incorporated", + "description": "Set the top limit for requested resources for any single job.", + "help_text": "If you are running on a smaller system, a pipeline step requesting more resources than are available may cause the Nextflow to stop the run with an error. These options allow you to cap the maximum resources requested by any single job so that the pipeline will run on your system.\n\nNote that you can not _increase_ the resources requested by any job using these options. For that you will need your own configuration file. See [the nf-core website](https://nf-co.re/usage/configuration) for details.", + "properties": { + "max_cpus": { + "type": "integer", + "description": "Maximum number of CPUs that can be requested for any single job.", + "default": 16, + "fa_icon": "fas fa-microchip", + "hidden": true, + "help_text": "Use to set an upper-limit for the CPU requirement for each process. Should be an integer e.g. `--max_cpus 1`" + }, + "max_memory": { + "type": "string", + "description": "Maximum amount of memory that can be requested for any single job.", + "default": "128.GB", + "fa_icon": "fas fa-memory", + "pattern": "^\\d+(\\.\\d+)?\\.?\\s*(K|M|G|T)?B$", + "hidden": true, + "help_text": "Use to set an upper-limit for the memory requirement for each process. Should be a string in the format integer-unit e.g. `--max_memory '8.GB'`" + }, + "max_time": { + "type": "string", + "description": "Maximum amount of time that can be requested for any single job.", + "default": "240.h", + "fa_icon": "far fa-clock", + "pattern": "^(\\d+\\.?\\s*(s|m|h|day)\\s*)+$", + "hidden": true, + "help_text": "Use to set an upper-limit for the time requirement for each process. Should be a string in the format integer-unit e.g. `--max_time '2.h'`" + } + } + }, + "generic_options": { + "title": "Generic options", + "type": "object", + "fa_icon": "fas fa-file-import", + "description": "Less common options for the pipeline, typically set in a config file.", + "help_text": "These options are common to all nf-core pipelines and allow you to customise some of the core preferences for how the pipeline runs.\n\nTypically these options would be set in a Nextflow config file loaded for all pipeline runs, such as `~/.nextflow/config`.", + "properties": { + "help": { + "type": "boolean", + "description": "Display help text.", + "fa_icon": "fas fa-question-circle", + "hidden": true + }, + "publish_dir_mode": { + "type": "string", + "default": "copy", + "description": "Method used to save pipeline results to output directory.", + "help_text": "The Nextflow `publishDir` option specifies which intermediate files should be saved to the output directory. This option tells the pipeline what method should be used to move these files. See [Nextflow docs](https://www.nextflow.io/docs/latest/process.html#publishdir) for details.", + "fa_icon": "fas fa-copy", + "enum": [ + "symlink", + "rellink", + "link", + "copy", + "copyNoFollow", + "move" + ], + "hidden": true + }, + "email_on_fail": { + "type": "string", + "description": "Email address for completion summary, only when pipeline fails.", + "fa_icon": "fas fa-exclamation-triangle", + "pattern": "^([a-zA-Z0-9_\\-\\.]+)@([a-zA-Z0-9_\\-\\.]+)\\.([a-zA-Z]{2,5})$", + "help_text": "An email address to send a summary email to when the pipeline is completed - ONLY sent if the pipeline does not exit successfully.", + "hidden": true + }, + "plaintext_email": { + "type": "boolean", + "description": "Send plain-text email instead of HTML.", + "fa_icon": "fas fa-remove-format", + "hidden": true + }, + "max_multiqc_email_size": { + "type": "string", + "description": "File size limit when attaching MultiQC reports to summary emails.", + "pattern": "^\\d+(\\.\\d+)?\\.?\\s*(K|M|G|T)?B$", + "default": "25.MB", + "fa_icon": "fas fa-file-upload", + "hidden": true + }, "preprocessing_qc_tool": { - "type": "string", - "default": "fastqc", - "enum": ["fastqc", "falco"], - "help_text": "Falco is designed as a drop-in replacement for FastQC but written in C++ for faster computation. We particularly recommend using falco when using long reads (due to reduced memory constraints), however is also applicable for short reads.", - "description": "Specify the tool used for quality control of raw sequencing reads" - }, - "save_mgc_counts": { - "type": "boolean", - "description": "Save the mgc reads count for mOTUs." - }, - "save_ncbi_id": { - "type": "boolean", - "description": "Print NCBI taxonomic id for mOTUs." - }, - "save_read_counts": { - "type": "boolean", - "description": "Print mOTUs result as counts instead of relative abundances." + "type": "string", + "default": "fastqc", + "enum": ["fastqc", "falco"], + "help_text": "Falco is designed as a drop-in replacement for FastQC but written in C++ for faster computation. We particularly recommend using falco when using long reads (due to reduced memory constraints), however is also applicable for short reads.", + "description": "Specify the tool used for quality control of raw sequencing reads" + }, + "monochrome_logs": { + "type": "boolean", + "description": "Do not use coloured log outputs.", + "fa_icon": "fas fa-palette", + "hidden": true + }, + "hook_url": { + "type": "string", + "description": "Incoming hook URL for messaging service", + "fa_icon": "fas fa-people-group", + "help_text": "Incoming hook URL for messaging service. Currently, only MS Teams is supported.", + "hidden": true + }, + "multiqc_config": { + "type": "string", + "description": "Custom config file to supply to MultiQC.", + "fa_icon": "fas fa-cog", + "hidden": true + }, + "multiqc_logo": { + "type": "string", + "description": "Custom logo file to supply to MultiQC. File name must also be set in the MultiQC config file", + "fa_icon": "fas fa-image", + "hidden": true + }, + "multiqc_methods_description": { + "type": "string", + "description": "Custom MultiQC yaml file containing HTML including a methods description.", + "fa_icon": "fas fa-cog" + }, + "tracedir": { + "type": "string", + "description": "Directory to keep pipeline Nextflow logs and reports.", + "default": "${params.outdir}/pipeline_info", + "fa_icon": "fas fa-cogs", + "hidden": true + }, + "validate_params": { + "type": "boolean", + "description": "Boolean whether to validate parameters against the schema at runtime", + "default": true, + "fa_icon": "fas fa-check-square", + "hidden": true + }, + "show_hidden_params": { + "type": "boolean", + "fa_icon": "far fa-eye-slash", + "description": "Show all params when using `--help`", + "hidden": true, + "help_text": "By default, parameters set as _hidden_ in the schema are not shown on the command line when a user runs with `--help`. Specifying this option will tell the pipeline to show all parameters." + }, + "enable_conda": { + "type": "boolean", + "description": "Run this workflow with Conda. You can also use '-profile conda' instead of providing this parameter.", + "hidden": true, + "fa_icon": "fas fa-bacon" } + } + }, + "reference_genome_options": { + "title": "Reference genome options", + "type": "object", + "fa_icon": "fas fa-dna", + "description": "Reference genome related files and options required for the workflow.", + "properties": { + "genome": { + "type": "string", + "description": "Name of iGenomes reference.", + "fa_icon": "fas fa-book", + "help_text": "If using a reference genome configured in the pipeline using iGenomes, use this parameter to give the ID for the reference. This is then used to build the full paths for all required reference genome files e.g. `--genome GRCh38`. \n\nSee the [nf-core website docs](https://nf-co.re/usage/reference_genomes) for more details.", + "hidden": true + }, + "igenomes_base": { + "type": "string", + "format": "directory-path", + "description": "Directory / URL base for iGenomes references.", + "default": "s3://ngi-igenomes/igenomes", + "fa_icon": "fas fa-cloud-download-alt", + "hidden": true + }, + "igenomes_ignore": { + "type": "boolean", + "description": "Do not load the iGenomes reference config.", + "fa_icon": "fas fa-ban", + "hidden": true, + "help_text": "Do not load `igenomes.config` when running the pipeline. You may choose this option if you observe clashes between custom parameters and those supplied in `igenomes.config`." + } + } + } + }, + "allOf": [ + { + "$ref": "#/definitions/input_output_options" + }, + { + "$ref": "#/definitions/preprocessing_general_qc_options" + }, + { + "$ref": "#/definitions/preprocessing_short_read_qc_options" + }, + { + "$ref": "#/definitions/preprocessing_long_read_qc_options" + }, + { + "$ref": "#/definitions/preprocessing_host_removal_options" + }, + { + "$ref": "#/definitions/preprocessing_run_merging_options" + }, + { + "$ref": "#/definitions/profiling_options" + }, + { + "$ref": "#/definitions/postprocessing_and_visualisation_options" + }, + { + "$ref": "#/definitions/institutional_config_options" + }, + { + "$ref": "#/definitions/max_job_request_options" + }, + { + "$ref": "#/definitions/generic_options" + }, + { + "$ref": "#/definitions/reference_genome_options" + } + ], + "properties": { + "save_mgc_counts": { + "type": "boolean", + "description": "Save the mgc reads count for mOTUs." + }, + "save_ncbi_id": { + "type": "boolean", + "description": "Print NCBI taxonomic id for mOTUs." + }, + "save_read_counts": { + "type": "boolean", + "description": "Print mOTUs result as counts instead of relative abundances." } + } } From 12dd836e9c3f99d1028d43d6745ae66f48b6a2f4 Mon Sep 17 00:00:00 2001 From: sofstam Date: Tue, 29 Nov 2022 15:00:27 +0100 Subject: [PATCH 494/789] Fix conflict --- nextflow_schema.json | 1512 +++++++++++++++++++++--------------------- 1 file changed, 771 insertions(+), 741 deletions(-) diff --git a/nextflow_schema.json b/nextflow_schema.json index df4b4e7..0ec5d48 100644 --- a/nextflow_schema.json +++ b/nextflow_schema.json @@ -1,756 +1,786 @@ { - "$schema": "http://json-schema.org/draft-07/schema", - "$id": "https://raw.githubusercontent.com/nf-core/taxprofiler/master/nextflow_schema.json", - "title": "nf-core/taxprofiler pipeline parameters", - "description": "Taxonomic profiling of shotgun metagenomic data", - "type": "object", - "definitions": { - "input_output_options": { - "title": "Input/output options", - "type": "object", - "fa_icon": "fas fa-terminal", - "description": "Define where the pipeline should find input data and save output data.", - "required": ["input", "databases", "outdir"], - "properties": { - "input": { - "type": "string", - "format": "file-path", - "mimetype": "text/csv", - "pattern": "^\\S+\\.(csv|yaml|yml)$", - "schema": "assets/schema_input.json", - "description": "Path to comma-separated file containing information about the samples and libraries/runs.", - "help_text": "You will need to create a design file with information about the samples and libraries/runs you want to running in your pipeline run. Use this parameter to specify its location. It has to be a comma-separated file with 6 columns, and a header row. See [usage docs](https://nf-co.re/taxprofiler/usage#samplesheet-input).", - "fa_icon": "fas fa-file-csv" - }, - "databases": { - "type": "string", - "mimetype": "text/csv", - "format": "file-path", - "fa_icon": "fas fa-database", - "description": "Path to comma-separated file containing information about databases and profiling parameters for each taxonomic profiler", - "help_text": "You will need to create a design file with information about the samples in your experiment before running the pipeline. Use this parameter to specify its location. It has to be a comma-separated file with 4 columns, and a header row. See [usage docs](https://nf-co.re/taxprofiler/dev/usage#full-database-sheet).\n\nProfilers will only be executed if a corresponding database are supplied. \n\nWe recommend storing this database sheet somewhere centrally and accessible by others members of your lab/institutions, as this file will likely be regularly reused." - }, - "outdir": { - "type": "string", - "format": "directory-path", - "description": "The output directory where the results will be saved. You have to use absolute paths to storage on Cloud infrastructure.", - "fa_icon": "fas fa-folder-open" - }, - "email": { - "type": "string", - "description": "Email address for completion summary.", - "fa_icon": "fas fa-envelope", - "help_text": "Set this parameter to your e-mail address to get a summary e-mail with details of the run sent to you when the workflow exits. If set in your user config file (`~/.nextflow/config`) then you don't need to specify this on the command line for every run.", - "pattern": "^([a-zA-Z0-9_\\-\\.]+)@([a-zA-Z0-9_\\-\\.]+)\\.([a-zA-Z]{2,5})$" - }, - "multiqc_title": { - "type": "string", - "description": "MultiQC report title. Printed as page header, used for filename if not otherwise specified.", - "fa_icon": "fas fa-file-signature" - } - } - }, - "preprocessing_general_qc_options": { - "title": "Preprocessing general QC options", - "type": "object", - "description": "Common options across both long and short read preprocessing QC steps", - "default": "", - "properties": { - "save_preprocessed_reads": { - "type": "boolean", - "fa_icon": "fas fa-save", - "description": "Save reads from adapter clipping/pair-merging, length filtering for both short and long reads", - "help_text": "This saves the FASTQ output from the following tools:\n\n- fastp\n- AdapterRemoval\n- Porechop\n- Filtlong\n\nThese reads will be a mixture of: adapter clipped, quality trimmed, pair-merged, and length filtered, depending on the parameters you set." - } - }, - "fa_icon": "fas fa-users-cog" - }, - "preprocessing_short_read_qc_options": { - "title": "Preprocessing short-read QC options", - "type": "object", - "description": "Options for adapter clipping, quality trimming, pair-merging, and complexity filtering", - "default": "", - "properties": { - "perform_shortread_qc": { - "type": "boolean", - "fa_icon": "fas fa-toggle-on", - "description": "Turns on short read quality control steps (adapter clipping, complexity filtering etc.)", - "help_text": "Turns on short read quality control steps (adapter clipping, complexity filtering etc.)\n\nThis subworkflow can perform:\n\n- Adapter removal\n- Read quality trimming\n- Read pair merging\n- Length filtering\n- Complexity filtering\n\nEither with fastp or AdapterRemoval.\n\nRemoving adapters (if present) is recommend to reduce false-postive hits that may occur from 'dirty' or 'contaminated' reference genomes in a profiling database that contain accidentially incorporated adapter sequences. Note that some, but not all, tools support paired-end alignment (utilising information about the insert covered by the pairs). However read pair merging in some cases can be recommend to increase read length (such as in aDNA). Length filtering, and/or complexity can speed up alignment by reducing the number of short unspecific reads that need to be aligned." - }, - "shortread_qc_tool": { - "type": "string", - "default": "fastp", - "enum": ["fastp", "adapterremoval"], - "fa_icon": "fas fa-tools", - "description": "Specify which tool to use for short-read QC" - }, - "shortread_qc_skipadaptertrim": { - "type": "boolean", - "fa_icon": "fas fa-forward", - "description": "Skip adapter trimming", - "help_text": "Skip the removal of sequencing adapters. \n\nThis often can be useful to speed up run-time of the pipeline when analysing data downloaded from public databases such as the ENA or SRA, as adapters should already be removed (however we recommend to check FastQC results to ensure this is the case)." - }, - "shortread_qc_adapter1": { - "type": "string", - "default": "None", - "fa_icon": "fas fa-grip-lines", - "description": "Specify adapter 1 nucleotide sequence", - "help_text": "Specify a custom forward or R1 adapter sequence to be removed from reads. \n\nIf not set, the selected short-read QC tool's defaults will be used.\n\n> Modifies tool parameter(s):\n> - fastp: `--adapter_sequence`. fastp default: `AGATCGGAAGAGCACACGTCTGAACTCCAGTCA`\n> - AdapterRemoval: `--adapter1`. AdapteRemoval2 default: `AGATCGGAAGAGCACACGTCTGAACTCCAGTCACNNNNNNATCTCGTATGCCGTCTTCTGCTTG`" - }, - "shortread_qc_adapter2": { - "type": "string", - "default": "None", - "fa_icon": "fas fa-grip-lines", - "description": "Specify adapter 2 nucleotide sequence", - "help_text": "Specify a custom reverse or R2 adapter sequence to be removed from reads. \n\nIf not set, the selected short-read QC tool's defaults will be used.\n\n> Modifies tool parameter(s):\n> - fastp: `--adapter_sequence`. fastp default: `AGATCGGAAGAGCGTCGTGTAGGGAAAGAGTGT`\n> - AdapterRemoval: `--adapter1`. AdapteRemoval2 default: `AGATCGGAAGAGCGTCGTGTAGGGAAAGAGTGTAGATCTCGGTGGTCGCCGTATCATT`" - }, - "shortread_qc_adapterlist": { - "type": "string", - "default": "None", - "description": "Specify a list of all possible adapters to trim. Overrides --shortread_qc_adapter1/2. Formats: .txt (AdapterRemoval) or .fasta. (fastp).", - "help_text": "Allows to supply a file with a list of adapter (combinations) to remove from all files. \n\nOverrides the --shortread_qc_adapter1/--shortread_qc_adapter2 parameters . \n\nFor AdapterRemoval this consists of a two column table with a `.txt` extension: first column represents forward strand, second column for reverse strand. You must supply all possible combinations, one per line, and this list is applied to all files. See AdapterRemoval documentation for more information.\n\nFor fastp this consists of a standard FASTA format with a `.fasta`/`.fa`/`.fna`/`.fas` extension. The adapter sequence in this file should be at least 6bp long, otherwise it will be skipped. fastp trims the adapters present in the FASTA file one by one.\n\n> Modifies AdapterRemoval parameter: --adapter-list\n> Modifies fastp parameter: --adapter_fasta" - }, - "shortread_qc_mergepairs": { - "type": "boolean", - "fa_icon": "fas fa-toggle-on", - "description": "Turn on merging of read pairs for paired-end data", - "default": true, - "help_text": "Turn on the merging of read-pairs of paired-end short read sequencing data for AdapterRemoval (this is performed automatically with fastp).\n\n> Modifies tool parameter(s):\n> - AdapterRemoval: `--collapse`\n" - }, - "shortread_qc_excludeunmerged": { - "type": "boolean", - "fa_icon": "far fa-times-circle", - "description": "Discard unmerged reads from paired-end merging", - "help_text": "Turns off the inclusion of unmerged reads in resulting processing FASTQ file of paired-end sequencing data when using `fastp`.\n\nThis can be useful in cases where you prefer to have very short reads (e.g. aDNA), thus excluding longer-reads or possibly faulty reads where one of the pair was discarded.\n\n> Modifies tool parameter(s):\n> - removed from reads `--include_unmerged`\n" - }, - "shortread_qc_minlength": { - "type": "integer", - "default": 15, - "fa_icon": "fas fa-ruler-horizontal", - "description": "Specify the minimum length of reads to be retained", - "help_text": "Specifying a mimum read length filtering can speed up profiling by reducing the number of short unspecific reads that need to be match/aligned to the database.\n\n> Modifies tool parameter(s):\n> - removed from reads `--length_required`\n> - AdapterRemoval: `--minlength`" - }, - "perform_shortread_complexityfilter": { - "type": "boolean", - "fa_icon": "fas fa-toggle-on", - "description": "Turns on nucleotide sequence complexity filtering", - "help_text": "Turns on sequencing complexity filtering. Complexity filtering can be useful to increase run-time by removing unspecific read sequences that do not provide any informative taxon ID." - }, - "shortread_complexityfilter_tool": { - "type": "string", - "default": "bbduk", - "enum": ["bbduk", "prinseqplusplus", "fastp"], - "fa_icon": "fas fa-hammer", - "description": "Specify which tool to use for complexity filtering" - }, - "shortread_complexityfilter_entropy": { - "type": "number", - "default": 0.3, - "fa_icon": "fas fa-random", - "description": "Specify the minimum sequence entropy level for complexity filtering", - "help_text": "Specify the minimum 'entropy' value for complexity filtering for BBDuk or PRINSEQ++.\n\nNote that this value will only be used for PRINSEQ++ if `--shortread_complexityfilter_prinseqplusplus_mode` is set to `entropy`.\n\nEntropy here corresponds to the amount of sequence variation exists within the read. Higher values correspond to more variety, and thus will likely reslut in more specific matching to a taxon's reference genome. The trade off here is fewer reads (or abundance information) available for having a confident identification.\n\n\n> Modifies tool parameter(s):\n> - BBDuk: `entropy=`\n> - PRINSEQ++: `-lc_entropy`\n\n" - }, - "shortread_complexityfilter_bbduk_windowsize": { - "type": "integer", - "default": 50, - "fa_icon": "far fa-window-maximize", - "description": "Specify the window size for BBDuk complexity filtering", - "help_text": "Specify the window size to calculate the level entropy within for BBDuk.\n\n> Modifies tool parameter(s):\n> - BBDuk: `entropywindow=`" - }, - "shortread_complexityfilter_bbduk_mask": { - "type": "boolean", - "fa_icon": "fas fa-mask", - "description": "Turn on masking rather than discarding of low complexity reads for BBduk", - "help_text": "Turn on masking of low-complexity reads (i.e., replacement with `N`) rather than removal.\n\n> Modifies tool parameter(s)\n> - BBDuk: `entropymask=`" - }, - "shortread_complexityfilter_fastp_threshold": { - "type": "integer", - "default": 30, - "fa_icon": "fas fa-sort-numeric-down", - "description": "Specify the minimum complexity filter threshold of fastp", - "help_text": "Specify the minimum sequence complexity value for fastp. This value corresponds to the percentage of bases that is different from it's adjacent bases.\n\n> Modifies tool parameter(s):\n> - removed from reads `--complexity_threshold`" - }, - "shortread_complexityfilter_prinseqplusplus_mode": { - "type": "string", - "default": "entropy", - "enum": ["entropy", "dust"], - "fa_icon": "fas fa-check-square", - "description": "Specify the complexity filter mode for PRINSEQ++" - }, - "shortread_complexityfilter_prinseqplusplus_dustscore": { - "type": "number", - "default": 0.5, - "fa_icon": "fas fa-head-side-mask", - "description": "Specify the minimum dust score for PRINTSEQ++ complexity filtering", - "help_text": "Specify the minimum dust score below which low-complexity reads will be removed. A DUST score is based on how often different tri-nucleotides occur along a read.\n\n> Modifies tool parameter(s):\n> - PRINSEQ++: `--lc_dust`" - }, - "save_complexityfiltered_reads": { - "type": "boolean", - "fa_icon": "fas fa-save", - "description": "Save complexity filtered short-reads", - "help_text": "Specify whether to save the final complexity filtered reads in your results directory (`--outdir`)." + "$schema": "http://json-schema.org/draft-07/schema", + "$id": "https://raw.githubusercontent.com/nf-core/taxprofiler/master/nextflow_schema.json", + "title": "nf-core/taxprofiler pipeline parameters", + "description": "Taxonomic profiling of shotgun metagenomic data", + "type": "object", + "definitions": { + "input_output_options": { + "title": "Input/output options", + "type": "object", + "fa_icon": "fas fa-terminal", + "description": "Define where the pipeline should find input data and save output data.", + "required": [ + "input", + "databases", + "outdir" + ], + "properties": { + "input": { + "type": "string", + "format": "file-path", + "mimetype": "text/csv", + "pattern": "^\\S+\\.(csv|yaml|yml)$", + "schema": "assets/schema_input.json", + "description": "Path to comma-separated file containing information about the samples and libraries/runs.", + "help_text": "You will need to create a design file with information about the samples and libraries/runs you want to running in your pipeline run. Use this parameter to specify its location. It has to be a comma-separated file with 6 columns, and a header row. See [usage docs](https://nf-co.re/taxprofiler/usage#samplesheet-input).", + "fa_icon": "fas fa-file-csv" + }, + "databases": { + "type": "string", + "mimetype": "text/csv", + "format": "file-path", + "fa_icon": "fas fa-database", + "description": "Path to comma-separated file containing information about databases and profiling parameters for each taxonomic profiler", + "help_text": "You will need to create a design file with information about the samples in your experiment before running the pipeline. Use this parameter to specify its location. It has to be a comma-separated file with 4 columns, and a header row. See [usage docs](https://nf-co.re/taxprofiler/dev/usage#full-database-sheet).\n\nProfilers will only be executed if a corresponding database are supplied. \n\nWe recommend storing this database sheet somewhere centrally and accessible by others members of your lab/institutions, as this file will likely be regularly reused." + }, + "outdir": { + "type": "string", + "format": "directory-path", + "description": "The output directory where the results will be saved. You have to use absolute paths to storage on Cloud infrastructure.", + "fa_icon": "fas fa-folder-open" + }, + "email": { + "type": "string", + "description": "Email address for completion summary.", + "fa_icon": "fas fa-envelope", + "help_text": "Set this parameter to your e-mail address to get a summary e-mail with details of the run sent to you when the workflow exits. If set in your user config file (`~/.nextflow/config`) then you don't need to specify this on the command line for every run.", + "pattern": "^([a-zA-Z0-9_\\-\\.]+)@([a-zA-Z0-9_\\-\\.]+)\\.([a-zA-Z]{2,5})$" + }, + "multiqc_title": { + "type": "string", + "description": "MultiQC report title. Printed as page header, used for filename if not otherwise specified.", + "fa_icon": "fas fa-file-signature" + } + } + }, + "preprocessing_general_qc_options": { + "title": "Preprocessing general QC options", + "type": "object", + "description": "Common options across both long and short read preprocessing QC steps", + "default": "", + "properties": { + "save_preprocessed_reads": { + "type": "boolean", + "fa_icon": "fas fa-save", + "description": "Save reads from adapter clipping/pair-merging, length filtering for both short and long reads", + "help_text": "This saves the FASTQ output from the following tools:\n\n- fastp\n- AdapterRemoval\n- Porechop\n- Filtlong\n\nThese reads will be a mixture of: adapter clipped, quality trimmed, pair-merged, and length filtered, depending on the parameters you set." + } + }, + "fa_icon": "fas fa-users-cog" + }, + "preprocessing_short_read_qc_options": { + "title": "Preprocessing short-read QC options", + "type": "object", + "description": "Options for adapter clipping, quality trimming, pair-merging, and complexity filtering", + "default": "", + "properties": { + "perform_shortread_qc": { + "type": "boolean", + "fa_icon": "fas fa-toggle-on", + "description": "Turns on short read quality control steps (adapter clipping, complexity filtering etc.)", + "help_text": "Turns on short read quality control steps (adapter clipping, complexity filtering etc.)\n\nThis subworkflow can perform:\n\n- Adapter removal\n- Read quality trimming\n- Read pair merging\n- Length filtering\n- Complexity filtering\n\nEither with fastp or AdapterRemoval.\n\nRemoving adapters (if present) is recommend to reduce false-postive hits that may occur from 'dirty' or 'contaminated' reference genomes in a profiling database that contain accidentially incorporated adapter sequences. Note that some, but not all, tools support paired-end alignment (utilising information about the insert covered by the pairs). However read pair merging in some cases can be recommend to increase read length (such as in aDNA). Length filtering, and/or complexity can speed up alignment by reducing the number of short unspecific reads that need to be aligned." + }, + "shortread_qc_tool": { + "type": "string", + "default": "fastp", + "enum": [ + "fastp", + "adapterremoval" + ], + "fa_icon": "fas fa-tools", + "description": "Specify which tool to use for short-read QC" + }, + "shortread_qc_skipadaptertrim": { + "type": "boolean", + "fa_icon": "fas fa-forward", + "description": "Skip adapter trimming", + "help_text": "Skip the removal of sequencing adapters. \n\nThis often can be useful to speed up run-time of the pipeline when analysing data downloaded from public databases such as the ENA or SRA, as adapters should already be removed (however we recommend to check FastQC results to ensure this is the case)." + }, + "shortread_qc_adapter1": { + "type": "string", + "default": "None", + "fa_icon": "fas fa-grip-lines", + "description": "Specify adapter 1 nucleotide sequence", + "help_text": "Specify a custom forward or R1 adapter sequence to be removed from reads. \n\nIf not set, the selected short-read QC tool's defaults will be used.\n\n> Modifies tool parameter(s):\n> - fastp: `--adapter_sequence`. fastp default: `AGATCGGAAGAGCACACGTCTGAACTCCAGTCA`\n> - AdapterRemoval: `--adapter1`. AdapteRemoval2 default: `AGATCGGAAGAGCACACGTCTGAACTCCAGTCACNNNNNNATCTCGTATGCCGTCTTCTGCTTG`" + }, + "shortread_qc_adapter2": { + "type": "string", + "default": "None", + "fa_icon": "fas fa-grip-lines", + "description": "Specify adapter 2 nucleotide sequence", + "help_text": "Specify a custom reverse or R2 adapter sequence to be removed from reads. \n\nIf not set, the selected short-read QC tool's defaults will be used.\n\n> Modifies tool parameter(s):\n> - fastp: `--adapter_sequence`. fastp default: `AGATCGGAAGAGCGTCGTGTAGGGAAAGAGTGT`\n> - AdapterRemoval: `--adapter1`. AdapteRemoval2 default: `AGATCGGAAGAGCGTCGTGTAGGGAAAGAGTGTAGATCTCGGTGGTCGCCGTATCATT`" + }, + "shortread_qc_adapterlist": { + "type": "string", + "default": "None", + "description": "Specify a list of all possible adapters to trim. Overrides --shortread_qc_adapter1/2. Formats: .txt (AdapterRemoval) or .fasta. (fastp).", + "help_text": "Allows to supply a file with a list of adapter (combinations) to remove from all files. \n\nOverrides the --shortread_qc_adapter1/--shortread_qc_adapter2 parameters . \n\nFor AdapterRemoval this consists of a two column table with a `.txt` extension: first column represents forward strand, second column for reverse strand. You must supply all possible combinations, one per line, and this list is applied to all files. See AdapterRemoval documentation for more information.\n\nFor fastp this consists of a standard FASTA format with a `.fasta`/`.fa`/`.fna`/`.fas` extension. The adapter sequence in this file should be at least 6bp long, otherwise it will be skipped. fastp trims the adapters present in the FASTA file one by one.\n\n> Modifies AdapterRemoval parameter: --adapter-list\n> Modifies fastp parameter: --adapter_fasta" + }, + "shortread_qc_mergepairs": { + "type": "boolean", + "fa_icon": "fas fa-toggle-on", + "description": "Turn on merging of read pairs for paired-end data", + "default": true, + "help_text": "Turn on the merging of read-pairs of paired-end short read sequencing data for AdapterRemoval (this is performed automatically with fastp).\n\n> Modifies tool parameter(s):\n> - AdapterRemoval: `--collapse`\n" + }, + "shortread_qc_excludeunmerged": { + "type": "boolean", + "fa_icon": "far fa-times-circle", + "description": "Discard unmerged reads from paired-end merging", + "help_text": "Turns off the inclusion of unmerged reads in resulting processing FASTQ file of paired-end sequencing data when using `fastp`.\n\nThis can be useful in cases where you prefer to have very short reads (e.g. aDNA), thus excluding longer-reads or possibly faulty reads where one of the pair was discarded.\n\n> Modifies tool parameter(s):\n> - removed from reads `--include_unmerged`\n" + }, + "shortread_qc_minlength": { + "type": "integer", + "default": 15, + "fa_icon": "fas fa-ruler-horizontal", + "description": "Specify the minimum length of reads to be retained", + "help_text": "Specifying a mimum read length filtering can speed up profiling by reducing the number of short unspecific reads that need to be match/aligned to the database.\n\n> Modifies tool parameter(s):\n> - removed from reads `--length_required`\n> - AdapterRemoval: `--minlength`" + }, + "perform_shortread_complexityfilter": { + "type": "boolean", + "fa_icon": "fas fa-toggle-on", + "description": "Turns on nucleotide sequence complexity filtering", + "help_text": "Turns on sequencing complexity filtering. Complexity filtering can be useful to increase run-time by removing unspecific read sequences that do not provide any informative taxon ID." + }, + "shortread_complexityfilter_tool": { + "type": "string", + "default": "bbduk", + "enum": [ + "bbduk", + "prinseqplusplus", + "fastp" + ], + "fa_icon": "fas fa-hammer", + "description": "Specify which tool to use for complexity filtering" + }, + "shortread_complexityfilter_entropy": { + "type": "number", + "default": 0.3, + "fa_icon": "fas fa-random", + "description": "Specify the minimum sequence entropy level for complexity filtering", + "help_text": "Specify the minimum 'entropy' value for complexity filtering for BBDuk or PRINSEQ++.\n\nNote that this value will only be used for PRINSEQ++ if `--shortread_complexityfilter_prinseqplusplus_mode` is set to `entropy`.\n\nEntropy here corresponds to the amount of sequence variation exists within the read. Higher values correspond to more variety, and thus will likely reslut in more specific matching to a taxon's reference genome. The trade off here is fewer reads (or abundance information) available for having a confident identification.\n\n\n> Modifies tool parameter(s):\n> - BBDuk: `entropy=`\n> - PRINSEQ++: `-lc_entropy`\n\n" + }, + "shortread_complexityfilter_bbduk_windowsize": { + "type": "integer", + "default": 50, + "fa_icon": "far fa-window-maximize", + "description": "Specify the window size for BBDuk complexity filtering", + "help_text": "Specify the window size to calculate the level entropy within for BBDuk.\n\n> Modifies tool parameter(s):\n> - BBDuk: `entropywindow=`" + }, + "shortread_complexityfilter_bbduk_mask": { + "type": "boolean", + "fa_icon": "fas fa-mask", + "description": "Turn on masking rather than discarding of low complexity reads for BBduk", + "help_text": "Turn on masking of low-complexity reads (i.e., replacement with `N`) rather than removal.\n\n> Modifies tool parameter(s)\n> - BBDuk: `entropymask=`" + }, + "shortread_complexityfilter_fastp_threshold": { + "type": "integer", + "default": 30, + "fa_icon": "fas fa-sort-numeric-down", + "description": "Specify the minimum complexity filter threshold of fastp", + "help_text": "Specify the minimum sequence complexity value for fastp. This value corresponds to the percentage of bases that is different from it's adjacent bases.\n\n> Modifies tool parameter(s):\n> - removed from reads `--complexity_threshold`" + }, + "shortread_complexityfilter_prinseqplusplus_mode": { + "type": "string", + "default": "entropy", + "enum": [ + "entropy", + "dust" + ], + "fa_icon": "fas fa-check-square", + "description": "Specify the complexity filter mode for PRINSEQ++" + }, + "shortread_complexityfilter_prinseqplusplus_dustscore": { + "type": "number", + "default": 0.5, + "fa_icon": "fas fa-head-side-mask", + "description": "Specify the minimum dust score for PRINTSEQ++ complexity filtering", + "help_text": "Specify the minimum dust score below which low-complexity reads will be removed. A DUST score is based on how often different tri-nucleotides occur along a read.\n\n> Modifies tool parameter(s):\n> - PRINSEQ++: `--lc_dust`" + }, + "save_complexityfiltered_reads": { + "type": "boolean", + "fa_icon": "fas fa-save", + "description": "Save complexity filtered short-reads", + "help_text": "Specify whether to save the final complexity filtered reads in your results directory (`--outdir`)." + } + }, + "fa_icon": "fas fa-compress-alt" + }, + "preprocessing_long_read_qc_options": { + "title": "Preprocessing long-read QC options", + "type": "object", + "description": "Options for adapter clipping, quality trimming, and length filtering", + "default": "", + "properties": { + "perform_longread_qc": { + "type": "boolean", + "fa_icon": "fas fa-toggle-on", + "description": "Turns on long read quality control steps (adapter clipping, length filtering etc.)", + "help_text": "Turns on long read quality control steps (adapter clipping, length and/or quality filtering.)\n\nRemoving adapters (if present) is recommend to reduce false-postive hits that may occur from 'dirty' or 'contaminated' reference genomes in a profiling database that contain accidentially incorporated adapter sequences.\n\nLength filtering, and quality filtering can speed up alignment by reducing the number of unspecific reads that need to be aligned." + }, + "longread_qc_skipadaptertrim": { + "type": "boolean", + "description": "Skip long-read trimming", + "fa_icon": "fas fa-forward", + "help_text": "Skip removal of adapters by Porechop. This can be useful in some cases to speed up run time - particularly when you are running data downloading from public databases such as the ENA/SRA that should already have adapters removed. We recommend that you check your FastQC results this is indeed the case." + }, + "longread_qc_skipqualityfilter": { + "type": "boolean", + "description": "Skip long-read length and quality filtering", + "fa_icon": "fas fa-forward", + "help_text": "Skip removal of quality filtering with Filtlong. This will skip length, percent reads, and target bases filtering (see other `--longread_qc_qualityfilter_*` parameters)." + }, + "longread_qc_qualityfilter_minlength": { + "type": "integer", + "default": 1000, + "description": "Specify the minimum length of reads to be retained", + "fa_icon": "fas fa-ruler-horizontal", + "help_text": "Specify the minimum of length of reads to be kept for downstream analysis.\n\n> Modifies tool parameter(s):\n> - Filtlong: `--min_length`" + }, + "longread_qc_qualityfilter_keeppercent": { + "type": "integer", + "default": 90, + "description": "Specify the percent of high-quality bases to be retained", + "fa_icon": "fas fa-percentage", + "help_text": "Throw out the remaining percentage of reads outside the value. This is measured by bp, not by read count. So this option throws out the worst e.g. 10% of read bases if the parameter is set to `90`. _Modified from [Filtlong documentation](https://github.com/rrwick/Filtlong)_\n\n> Modifies tool parameter(s):\n> - Filtlong: `--keep_percent`" + }, + "longread_qc_qualityfilter_targetbases": { + "type": "integer", + "default": 500000000, + "description": "Specify the number of high-quality bases in the library to be retained", + "fa_icon": "fas fa-bullseye", + "help_text": "Removes the worst reads until only the specified value of bases remain, useful for very large read sets. If the input read set is less than the specified value, this setting will have no effect. _Modified from [Filtlong documentation](https://github.com/rrwick/Filtlong)_\n\n> Modifies tool parameter(s):\n> - Filtlong: `--keep_percent`" + } + }, + "fa_icon": "fas fa-expand-alt" + }, + "preprocessing_host_removal_options": { + "title": "Preprocessing host removal options", + "type": "object", + "description": "Options for pre-profiling host read removal", + "default": "", + "properties": { + "perform_shortread_hostremoval": { + "type": "boolean", + "fa_icon": "fas fa-toggle-on", + "description": "Turn on short-read host removal", + "help_text": "Turns on the ability to remove short-reads from the that derived from a known organism, using Bowtie2 and samtools\n\nThis subworkflow is useful to remove reads that may come from a host, or a known contamination like the human reference genome. Human DNA contamination of (microbial) reference genomes is well known, so removal of these prior profiling both reduces the risks of false positives, and in _some cases_ a faster runtime (as less reads need to be profiled).\n\nAlternatively, you can include the reference genome within your profiling databases and can turn off this subworkflow, with the trade off of a larger taxonomic profiling database." + }, + "perform_longread_hostremoval": { + "type": "boolean", + "fa_icon": "fas fa-toggle-on", + "description": "Turn on long-read host removal", + "help_text": "Turns on the ability to remove long-reads from the that derived from a known organism, using minimap2 and samtools\n\nThis subworkflow is useful to remove reads that may come from a host, or a known contamination like the human reference genome. Human DNA contamination of (microbial) reference genomes is well known, so removal of these prior profiling both reduces the risks of false positives, and in _some cases_ a faster runtime (as less reads need to be profiled).\n\nAlternatively, you can include the reference genome within your profiling databases and can turn off this subworkflow, with the trade off of a larger taxonomic profiling database." + }, + "hostremoval_reference": { + "type": "string", + "default": "None", + "fa_icon": "fas fa-file-alt", + "description": "Specify path to single reference FASTA of host(s) genome(s)", + "help_text": "Specify a path to the FASTA file (optionally gzipped) of the reference genome of the organism to be removed.\n\nIf you have two or more host organisms or contaminants you wish to remove, you can concatenate the FASTAs of the different taxa into a single one to provide to the pipeline." + }, + "shortread_hostremoval_index": { + "type": "string", + "default": "None", + "fa_icon": "fas fa-address-book", + "description": "Specify path to the directory containing pre-made BowTie2 indexes of the host removal reference", + "help_text": "Specify the path to a _directory_ containing pre-made Bowtie2 reference index files (i.e. the directory containing `.bt1`, `.bt2` files etc.). These should sit in the same directory alongside the the reference file specified in `--hostremoval_reference`.\n\nSpecifying premade indices can speed up runtime of the host-removal step, however if not supplied the pipeline will generate the indices for you." + }, + "longread_hostremoval_index": { + "type": "string", + "default": "None", + "fa_icon": "fas fa-address-book", + "description": "Specify path to a pre-made Minimap2 index file (.mmi) of the host removal reference", + "help_text": "Specify path to a pre-made Minimap2 index file (.mmi) of the host removal reference file given to `--hostremoval_reference`.\n\nSpecifying a premade index file can speed up runtime of the host-removal step, however if not supplied the pipeline will generate the indices for you." + }, + "save_hostremoval_index": { + "type": "boolean", + "fa_icon": "fas fa-save", + "description": "Save mapping index of input reference when not already supplied by user", + "help_text": "Save the output files of the in-built indexing of the host genome.\n\nThis is recommend to be turned on if you plan to use the same reference genome multiple times, as supplying the directory or file to `--shortread_hostremoval_index` or `--longread_hostremoval_index` respectively can speed up runtime of future runs. Once generated, we recommend you place this file _outside_ of your run results directory in a central 'cache' directory you and others using your machine can access and supply to the pipeline." + }, + "save_hostremoval_mapped": { + "type": "boolean", + "fa_icon": "fas fa-save", + "description": "Save mapped reads in BAM format from host removal", + "help_text": "Save the reads mapped to the reference genome in BAM format as output by the respective hostremoval alignment tool.\n\nThis can be useful if you wish to perform other analyses on the host organism (such as host-microbe interaction), however, you should consider whether the default mapping parameters of Bowtie2 (short-read) or minimap2 (long-read) are optimised to your context. " + }, + "save_hostremoval_unmapped": { + "type": "boolean", + "fa_icon": "fas fa-save", + "description": "Save unmapped reads in FASTQ format from host removal", + "help_text": "Save the unreads mapped to the reference genome in FASTQ format (as exported from `samtools view`).\n\nThis can be useful if you wish to perform other analyses on the off-target reads from the host mapping, such as manual profiling or _de novo_ assembly." + } + }, + "fa_icon": "fas fa-user-times" + }, + "preprocessing_run_merging_options": { + "title": "Preprocessing run merging options", + "type": "object", + "description": "Options for per-sample run-merging", + "default": "", + "properties": { + "perform_runmerging": { + "type": "boolean", + "fa_icon": "fas fa-toggle-on", + "description": "Turn on run merging", + "help_text": "Turns on the concatenation of sequencing runs or libraries with the same sample name.\n\nThis can be useful to ensure you get a single profile per sample, rather than one profile per run or library. Note that in some cases comparing profiles of independent _libraries_ may be useful, so this parameter may not always be suitable. " + }, + "save_runmerged_reads": { + "type": "boolean", + "fa_icon": "fas fa-save", + "description": "Save run-concatenated input FASTQ files for each sample", + "help_text": "Save the run- and library-concatenated reads of a given sample in FASTQ format." + } + }, + "fa_icon": "fas fa-clipboard-check" + }, + "profiling_options": { + "title": "Profiling options", + "type": "object", + "description": "", + "default": "", + "properties": { + "run_centrifuge": { + "type": "boolean", + "fa_icon": "fas fa-toggle-on", + "description": "Turn on profiling with Centrifuge. Requires database to be present CSV file passed to --databases" + }, + "centrifuge_save_reads": { + "type": "boolean", + "fa_icon": "fas fa-save", + "description": "Turn on saving of Centrifuge-aligned reads", + "help_text": "Save mapped (SAM, FASTQ) and unmapped (FASTQ) reads from alignment step of centrifuge in your output results directory.\n\n> Modifies tool parameter(s):\n> - centrifuge: `--un-gz`, `--al-gz`, `--un-conc-gz`, `--al-conc-gz`, `--out-fmt`" + }, + "run_diamond": { + "type": "boolean", + "fa_icon": "fas fa-toggle-on", + "description": "Turn on profiling with DIAMOND. Requires database to be present CSV file passed to --databases" + }, + "diamond_output_format": { + "type": "string", + "default": "tsv", + "enum": [ + "blast", + "xml", + "txt", + "daa", + "sam", + "tsv", + "paf" + ], + "fa_icon": "fas fa-file", + "description": "Specify output format from DIAMOND profiling.", + "help_text": "DIAMOND can produce output in a number of different formats, you can specify here which to produce.\n\nNote that DIAMOND can only produce one format at a time, and depending on which you pick, some downstream steps may not be executed. For example, selecting `daa` or `sam` will mean you will not get a tabular taxonomic profile as with the other tools.\n\nWill be overriden by `--diamond_save_reads.`\n\n> Modifies tool parameter(s):\n> - diamond blastx: `--outfmt`" + }, + "diamond_save_reads": { + "type": "boolean", + "fa_icon": "fas fa-save", + "description": "Turn on saving of DIAMOND-aligned reads. Will override --diamond_output_format and no taxon tables will be generated", + "help_text": "Save aligned reads in SAM format from alignment step of DIAMOND in your output results directory.\n\nNote this explicitly overrides `--diamond_output_format` to produce the SAM file, and no taxon table will be generated.\n\n> Modifies tool parameter(s):\n> - DIAMOND: `--outfmt`" + }, + "run_kaiju": { + "type": "boolean", + "fa_icon": "fas fa-toggle-on", + "description": "Turn on profiling with Kaiju. Requires database to be present CSV file passed to --databases" + }, + "kaiju_taxon_rank": { + "type": "string", + "default": "species", + "enum": [ + "phylum", + "class", + "order", + "family", + "genus", + "species" + ], + "fa_icon": "fas fa-tag", + "description": "Specify taxonomic rank to be displayed in Kaiju taxon table", + "help_text": "Specify the taxonomic level(s) to be displayed in the resulting Kaiju taxon table, as generated by the kaiju2table helper tool.\n\nThis can be either a single level (e.g. `species`), or a comma separated list to display the full taxonomic path (e.g. `superkingdom,phylum,class,order,family,genus,species.`).\n\n> Modifies tool parameter(s):\n> - kaiju2table: `-l`" + }, + "run_kraken2": { + "type": "boolean", + "fa_icon": "fas fa-toggle-on", + "description": "Turn on profiling with Kraken2. Requires database to be present CSV file passed to --databases" + }, + "kraken2_save_reads": { + "type": "boolean", + "fa_icon": "fas fa-save", + "description": "Turn on saving of Kraken2-aligned reads", + "help_text": "Save reads that do and do not have a taxonomic classification in your output results directory in FASTQ format.\n\n> Modifies tool parameter(s):\n> - kraken2: `--classified-out` and `--unclassified-out`" + }, + "kraken2_save_readclassification": { + "type": "boolean", + "fa_icon": "fas fa-save", + "description": "Turn on saving of Kraken2 per-read taxonomic assignment file", + "help_text": "Save a text file that contains a list of each read that had a taxonomic assignment, with information on specific taxonomic taxonomic assignment that that read recieved.\n\n> Modifies tool parameter(s):\n> - kraken2: `--output`" + }, + "kraken2_save_minimizers": { + "type": "boolean", + "description": "Turn on saving minimizer information in the kraken2 report thus increasing to an eight column layout.", + "fa_icon": "fas fa-save", + "help_text": "Turn on saving minimizer information in the kraken2 report thus increasing to an eight column layout.\n\nAdds `--report-minimizer-data` to the kraken2 command." + }, + "run_bracken": { + "type": "boolean", + "description": "Post-process kraken2 reports with Bracken.", + "fa_icon": "fas fa-toggle-on" + }, + "run_malt": { + "type": "boolean", + "fa_icon": "fas fa-toggle-on", + "description": "Turn on profiling with MALT. Requires database to be present CSV file passed to --databases" + }, + "malt_mode": { + "type": "string", + "default": "BlastN", + "fa_icon": "fas fa-check-square", + "description": "Specify which MALT alignment mode to use", + "help_text": "Specify which version of MALT alignment to use.\n\nBlastN is generally recommended (nucleotide-nucleotide alignment), but particularly for very short reads (such as aDNA), whereas BlastX mode is similar to DIAMOND and will translate the nucleotide to amino acid sequences. Note each type of alignment mode requires different parameters during database construction. Refer to the MALT manual for more information.\n\n> Modifies tool parameter(s):\n> - malt-run: `-mode` " + }, + "malt_save_reads": { + "type": "boolean", + "fa_icon": "fas fa-save", + "description": "Turn on saving of MALT-aligned reads", + "help_text": "Turns on saving of MALT aligned reads in SAM format.\n\nNote that the SAM format produce by MALT is not completely valid, and may not work with downstream tools.\n\n> Modifies tool parameter(s):\n> - malt-run: `--alignments`, `-za`" + }, + "malt_generate_megansummary": { + "type": "boolean", + "fa_icon": "fas fa-save", + "description": "Turn on generation of MEGAN summary file from MALT results", + "help_text": "Turns on saving of MALT output in an additional MEGAN summary file (`.megan`) that can be loaded into the MEGAN metagenomic exploration tool.\n\nNote: this file is generated not directly from MALT but rather then MEGAN utility script `rma2info`.\n\n> Modifies tool parameter(s):\n> - rma2info: `-es`" + }, + "run_metaphlan3": { + "type": "boolean", + "description": "Turn on profiling with MetaPhlAn3. Requires database to be present CSV file passed to --databases", + "fa_icon": "fas fa-toggle-on" + }, + "run_motus": { + "type": "boolean", + "fa_icon": "fas fa-toggle-on", + "description": "Turn on profiling with mOTUs. Requires database to be present CSV file passed to --databases" + }, + "save_mgc_counts": { + "type": "boolean", + "description": "Save the mgc reads count for mOTUs." + }, + "save_read_counts": { + "type": "boolean", + "description": "Print mOTUs result as counts instead of relative abundances." + }, + "save_ncbi_id": { + "type": "boolean", + "description": "Print NCBI taxonomic id for mOTUs." + } + }, + "fa_icon": "fas fa-align-center" + }, + "postprocessing_and_visualisation_options": { + "title": "Postprocessing and visualisation options", + "type": "object", + "description": "", + "default": "", + "properties": { + "run_profile_standardisation": { + "type": "boolean", + "fa_icon": "fas fa-toggle-on", + "description": "Turn on standardisation of taxon tables across profilers", + "help_text": "Turns on standardisation of output OTU tables across all tools; each into a TSV format following the following scheme:\n\n|TAXON | SAMPLE_A | SAMPLE_B |\n|-------------|----------------|-----------------|\n| taxon_a | 32 | 123 |\n| taxon_b | 1 | 5 |\n\nThis currently only is generated for mOTUs." + }, + "generate_biom_output": { + "type": "boolean", + "fa_icon": "fas fa-toggle-on", + "description": "Turn on generation of BIOM output (currently only applies to mOTUs)", + "help_text": "Turn on the saving of the taxonomic output in BIOM format (`.biom`) in the results directory of your pipeline run, instead of the default TSV format.\n\nNote this file is from the output of the `motus merge` command.\n\n> Modifies tool parameter(s):\n> - `-B -o`" + }, + "run_krona": { + "type": "boolean", + "fa_icon": "fas fa-toggle-on", + "description": "Turn on generation of Krona plots for supported profilers", + "help_text": "Turn on the generation of Krona interactive pie-chart HTMLs for a selection of profilers.\n\nThe tools currently supported are:\n\n- centrifuge\n- kraken2\n- kaiju\n- MALT" + }, + "krona_taxonomy_directory": { + "type": "string", + "default": "None", + "fa_icon": "fas fa-folder-open", + "description": "Specify path to krona taxonomy directories (required for MALT krona plots)", + "help_text": "Specify a path to a Krona taxonomy database directory (i.e. a directory containing a krona generated `.tab` file).\n\nThis is only required for generating Krona plots of MALT output.\n\nNote this taxonomy database must be downloaded and generated with the `updateTaxonomy.sh` script from the krona-tools package." + } + }, + "fa_icon": "fas fa-chart-line" + }, + "institutional_config_options": { + "title": "Institutional config options", + "type": "object", + "fa_icon": "fas fa-university", + "description": "Parameters used to describe centralised config profiles. These should not be edited.", + "help_text": "The centralised nf-core configuration profiles use a handful of pipeline parameters to describe themselves. This information is then printed to the Nextflow log when you run a pipeline. You should not need to change these values when you run a pipeline.", + "properties": { + "custom_config_version": { + "type": "string", + "description": "Git commit id for Institutional configs.", + "default": "master", + "hidden": true, + "fa_icon": "fas fa-users-cog" + }, + "custom_config_base": { + "type": "string", + "description": "Base directory for Institutional configs.", + "default": "https://raw.githubusercontent.com/nf-core/configs/master", + "hidden": true, + "help_text": "If you're running offline, Nextflow will not be able to fetch the institutional config files from the internet. If you don't need them, then this is not a problem. If you do need them, you should download the files from the repo and tell Nextflow where to find them with this parameter.", + "fa_icon": "fas fa-users-cog" + }, + "config_profile_name": { + "type": "string", + "description": "Institutional config name.", + "hidden": true, + "fa_icon": "fas fa-users-cog" + }, + "config_profile_description": { + "type": "string", + "description": "Institutional config description.", + "hidden": true, + "fa_icon": "fas fa-users-cog" + }, + "config_profile_contact": { + "type": "string", + "description": "Institutional config contact information.", + "hidden": true, + "fa_icon": "fas fa-users-cog" + }, + "config_profile_url": { + "type": "string", + "description": "Institutional config URL link.", + "hidden": true, + "fa_icon": "fas fa-users-cog" + } + } + }, + "max_job_request_options": { + "title": "Max job request options", + "type": "object", + "fa_icon": "fab fa-acquisitions-incorporated", + "description": "Set the top limit for requested resources for any single job.", + "help_text": "If you are running on a smaller system, a pipeline step requesting more resources than are available may cause the Nextflow to stop the run with an error. These options allow you to cap the maximum resources requested by any single job so that the pipeline will run on your system.\n\nNote that you can not _increase_ the resources requested by any job using these options. For that you will need your own configuration file. See [the nf-core website](https://nf-co.re/usage/configuration) for details.", + "properties": { + "max_cpus": { + "type": "integer", + "description": "Maximum number of CPUs that can be requested for any single job.", + "default": 16, + "fa_icon": "fas fa-microchip", + "hidden": true, + "help_text": "Use to set an upper-limit for the CPU requirement for each process. Should be an integer e.g. `--max_cpus 1`" + }, + "max_memory": { + "type": "string", + "description": "Maximum amount of memory that can be requested for any single job.", + "default": "128.GB", + "fa_icon": "fas fa-memory", + "pattern": "^\\d+(\\.\\d+)?\\.?\\s*(K|M|G|T)?B$", + "hidden": true, + "help_text": "Use to set an upper-limit for the memory requirement for each process. Should be a string in the format integer-unit e.g. `--max_memory '8.GB'`" + }, + "max_time": { + "type": "string", + "description": "Maximum amount of time that can be requested for any single job.", + "default": "240.h", + "fa_icon": "far fa-clock", + "pattern": "^(\\d+\\.?\\s*(s|m|h|day)\\s*)+$", + "hidden": true, + "help_text": "Use to set an upper-limit for the time requirement for each process. Should be a string in the format integer-unit e.g. `--max_time '2.h'`" + } + } + }, + "generic_options": { + "title": "Generic options", + "type": "object", + "fa_icon": "fas fa-file-import", + "description": "Less common options for the pipeline, typically set in a config file.", + "help_text": "These options are common to all nf-core pipelines and allow you to customise some of the core preferences for how the pipeline runs.\n\nTypically these options would be set in a Nextflow config file loaded for all pipeline runs, such as `~/.nextflow/config`.", + "properties": { + "help": { + "type": "boolean", + "description": "Display help text.", + "fa_icon": "fas fa-question-circle", + "hidden": true + }, + "publish_dir_mode": { + "type": "string", + "default": "copy", + "description": "Method used to save pipeline results to output directory.", + "help_text": "The Nextflow `publishDir` option specifies which intermediate files should be saved to the output directory. This option tells the pipeline what method should be used to move these files. See [Nextflow docs](https://www.nextflow.io/docs/latest/process.html#publishdir) for details.", + "fa_icon": "fas fa-copy", + "enum": [ + "symlink", + "rellink", + "link", + "copy", + "copyNoFollow", + "move" + ], + "hidden": true + }, + "email_on_fail": { + "type": "string", + "description": "Email address for completion summary, only when pipeline fails.", + "fa_icon": "fas fa-exclamation-triangle", + "pattern": "^([a-zA-Z0-9_\\-\\.]+)@([a-zA-Z0-9_\\-\\.]+)\\.([a-zA-Z]{2,5})$", + "help_text": "An email address to send a summary email to when the pipeline is completed - ONLY sent if the pipeline does not exit successfully.", + "hidden": true + }, + "plaintext_email": { + "type": "boolean", + "description": "Send plain-text email instead of HTML.", + "fa_icon": "fas fa-remove-format", + "hidden": true + }, + "max_multiqc_email_size": { + "type": "string", + "description": "File size limit when attaching MultiQC reports to summary emails.", + "pattern": "^\\d+(\\.\\d+)?\\.?\\s*(K|M|G|T)?B$", + "default": "25.MB", + "fa_icon": "fas fa-file-upload", + "hidden": true + }, + "preprocessing_qc_tool": { + "type": "string", + "default": "fastqc", + "enum": [ + "fastqc", + "falco" + ], + "help_text": "Falco is designed as a drop-in replacement for FastQC but written in C++ for faster computation. We particularly recommend using falco when using long reads (due to reduced memory constraints), however is also applicable for short reads.", + "description": "Specify the tool used for quality control of raw sequencing reads" + }, + "monochrome_logs": { + "type": "boolean", + "description": "Do not use coloured log outputs.", + "fa_icon": "fas fa-palette", + "hidden": true + }, + "hook_url": { + "type": "string", + "description": "Incoming hook URL for messaging service", + "fa_icon": "fas fa-people-group", + "help_text": "Incoming hook URL for messaging service. Currently, only MS Teams is supported.", + "hidden": true + }, + "multiqc_config": { + "type": "string", + "description": "Custom config file to supply to MultiQC.", + "fa_icon": "fas fa-cog", + "hidden": true + }, + "multiqc_logo": { + "type": "string", + "description": "Custom logo file to supply to MultiQC. File name must also be set in the MultiQC config file", + "fa_icon": "fas fa-image", + "hidden": true + }, + "multiqc_methods_description": { + "type": "string", + "description": "Custom MultiQC yaml file containing HTML including a methods description.", + "fa_icon": "fas fa-cog" + }, + "tracedir": { + "type": "string", + "description": "Directory to keep pipeline Nextflow logs and reports.", + "default": "${params.outdir}/pipeline_info", + "fa_icon": "fas fa-cogs", + "hidden": true + }, + "validate_params": { + "type": "boolean", + "description": "Boolean whether to validate parameters against the schema at runtime", + "default": true, + "fa_icon": "fas fa-check-square", + "hidden": true + }, + "show_hidden_params": { + "type": "boolean", + "fa_icon": "far fa-eye-slash", + "description": "Show all params when using `--help`", + "hidden": true, + "help_text": "By default, parameters set as _hidden_ in the schema are not shown on the command line when a user runs with `--help`. Specifying this option will tell the pipeline to show all parameters." + }, + "enable_conda": { + "type": "boolean", + "description": "Run this workflow with Conda. You can also use '-profile conda' instead of providing this parameter.", + "hidden": true, + "fa_icon": "fas fa-bacon" + } + } + }, + "reference_genome_options": { + "title": "Reference genome options", + "type": "object", + "fa_icon": "fas fa-dna", + "description": "Reference genome related files and options required for the workflow.", + "properties": { + "genome": { + "type": "string", + "description": "Name of iGenomes reference.", + "fa_icon": "fas fa-book", + "help_text": "If using a reference genome configured in the pipeline using iGenomes, use this parameter to give the ID for the reference. This is then used to build the full paths for all required reference genome files e.g. `--genome GRCh38`. \n\nSee the [nf-core website docs](https://nf-co.re/usage/reference_genomes) for more details.", + "hidden": true + }, + "igenomes_base": { + "type": "string", + "format": "directory-path", + "description": "Directory / URL base for iGenomes references.", + "default": "s3://ngi-igenomes/igenomes", + "fa_icon": "fas fa-cloud-download-alt", + "hidden": true + }, + "igenomes_ignore": { + "type": "boolean", + "description": "Do not load the iGenomes reference config.", + "fa_icon": "fas fa-ban", + "hidden": true, + "help_text": "Do not load `igenomes.config` when running the pipeline. You may choose this option if you observe clashes between custom parameters and those supplied in `igenomes.config`." + } + } } - }, - "fa_icon": "fas fa-compress-alt" }, - "preprocessing_long_read_qc_options": { - "title": "Preprocessing long-read QC options", - "type": "object", - "description": "Options for adapter clipping, quality trimming, and length filtering", - "default": "", - "properties": { - "perform_longread_qc": { - "type": "boolean", - "fa_icon": "fas fa-toggle-on", - "description": "Turns on long read quality control steps (adapter clipping, length filtering etc.)", - "help_text": "Turns on long read quality control steps (adapter clipping, length and/or quality filtering.)\n\nRemoving adapters (if present) is recommend to reduce false-postive hits that may occur from 'dirty' or 'contaminated' reference genomes in a profiling database that contain accidentially incorporated adapter sequences.\n\nLength filtering, and quality filtering can speed up alignment by reducing the number of unspecific reads that need to be aligned." - }, - "longread_qc_skipadaptertrim": { - "type": "boolean", - "description": "Skip long-read trimming", - "fa_icon": "fas fa-forward", - "help_text": "Skip removal of adapters by Porechop. This can be useful in some cases to speed up run time - particularly when you are running data downloading from public databases such as the ENA/SRA that should already have adapters removed. We recommend that you check your FastQC results this is indeed the case." - }, - "longread_qc_skipqualityfilter": { - "type": "boolean", - "description": "Skip long-read length and quality filtering", - "fa_icon": "fas fa-forward", - "help_text": "Skip removal of quality filtering with Filtlong. This will skip length, percent reads, and target bases filtering (see other `--longread_qc_qualityfilter_*` parameters)." - }, - "longread_qc_qualityfilter_minlength": { - "type": "integer", - "default": 1000, - "description": "Specify the minimum length of reads to be retained", - "fa_icon": "fas fa-ruler-horizontal", - "help_text": "Specify the minimum of length of reads to be kept for downstream analysis.\n\n> Modifies tool parameter(s):\n> - Filtlong: `--min_length`" - }, - "longread_qc_qualityfilter_keeppercent": { - "type": "integer", - "default": 90, - "description": "Specify the percent of high-quality bases to be retained", - "fa_icon": "fas fa-percentage", - "help_text": "Throw out the remaining percentage of reads outside the value. This is measured by bp, not by read count. So this option throws out the worst e.g. 10% of read bases if the parameter is set to `90`. _Modified from [Filtlong documentation](https://github.com/rrwick/Filtlong)_\n\n> Modifies tool parameter(s):\n> - Filtlong: `--keep_percent`" - }, - "longread_qc_qualityfilter_targetbases": { - "type": "integer", - "default": 500000000, - "description": "Specify the number of high-quality bases in the library to be retained", - "fa_icon": "fas fa-bullseye", - "help_text": "Removes the worst reads until only the specified value of bases remain, useful for very large read sets. If the input read set is less than the specified value, this setting will have no effect. _Modified from [Filtlong documentation](https://github.com/rrwick/Filtlong)_\n\n> Modifies tool parameter(s):\n> - Filtlong: `--keep_percent`" - } - }, - "fa_icon": "fas fa-expand-alt" - }, - "preprocessing_host_removal_options": { - "title": "Preprocessing host removal options", - "type": "object", - "description": "Options for pre-profiling host read removal", - "default": "", - "properties": { - "perform_shortread_hostremoval": { - "type": "boolean", - "fa_icon": "fas fa-toggle-on", - "description": "Turn on short-read host removal", - "help_text": "Turns on the ability to remove short-reads from the that derived from a known organism, using Bowtie2 and samtools\n\nThis subworkflow is useful to remove reads that may come from a host, or a known contamination like the human reference genome. Human DNA contamination of (microbial) reference genomes is well known, so removal of these prior profiling both reduces the risks of false positives, and in _some cases_ a faster runtime (as less reads need to be profiled).\n\nAlternatively, you can include the reference genome within your profiling databases and can turn off this subworkflow, with the trade off of a larger taxonomic profiling database." - }, - "perform_longread_hostremoval": { - "type": "boolean", - "fa_icon": "fas fa-toggle-on", - "description": "Turn on long-read host removal", - "help_text": "Turns on the ability to remove long-reads from the that derived from a known organism, using minimap2 and samtools\n\nThis subworkflow is useful to remove reads that may come from a host, or a known contamination like the human reference genome. Human DNA contamination of (microbial) reference genomes is well known, so removal of these prior profiling both reduces the risks of false positives, and in _some cases_ a faster runtime (as less reads need to be profiled).\n\nAlternatively, you can include the reference genome within your profiling databases and can turn off this subworkflow, with the trade off of a larger taxonomic profiling database." - }, - "hostremoval_reference": { - "type": "string", - "default": "None", - "fa_icon": "fas fa-file-alt", - "description": "Specify path to single reference FASTA of host(s) genome(s)", - "help_text": "Specify a path to the FASTA file (optionally gzipped) of the reference genome of the organism to be removed.\n\nIf you have two or more host organisms or contaminants you wish to remove, you can concatenate the FASTAs of the different taxa into a single one to provide to the pipeline." - }, - "shortread_hostremoval_index": { - "type": "string", - "default": "None", - "fa_icon": "fas fa-address-book", - "description": "Specify path to the directory containing pre-made BowTie2 indexes of the host removal reference", - "help_text": "Specify the path to a _directory_ containing pre-made Bowtie2 reference index files (i.e. the directory containing `.bt1`, `.bt2` files etc.). These should sit in the same directory alongside the the reference file specified in `--hostremoval_reference`.\n\nSpecifying premade indices can speed up runtime of the host-removal step, however if not supplied the pipeline will generate the indices for you." - }, - "longread_hostremoval_index": { - "type": "string", - "default": "None", - "fa_icon": "fas fa-address-book", - "description": "Specify path to a pre-made Minimap2 index file (.mmi) of the host removal reference", - "help_text": "Specify path to a pre-made Minimap2 index file (.mmi) of the host removal reference file given to `--hostremoval_reference`.\n\nSpecifying a premade index file can speed up runtime of the host-removal step, however if not supplied the pipeline will generate the indices for you." - }, - "save_hostremoval_index": { - "type": "boolean", - "fa_icon": "fas fa-save", - "description": "Save mapping index of input reference when not already supplied by user", - "help_text": "Save the output files of the in-built indexing of the host genome.\n\nThis is recommend to be turned on if you plan to use the same reference genome multiple times, as supplying the directory or file to `--shortread_hostremoval_index` or `--longread_hostremoval_index` respectively can speed up runtime of future runs. Once generated, we recommend you place this file _outside_ of your run results directory in a central 'cache' directory you and others using your machine can access and supply to the pipeline." - }, - "save_hostremoval_mapped": { - "type": "boolean", - "fa_icon": "fas fa-save", - "description": "Save mapped reads in BAM format from host removal", - "help_text": "Save the reads mapped to the reference genome in BAM format as output by the respective hostremoval alignment tool.\n\nThis can be useful if you wish to perform other analyses on the host organism (such as host-microbe interaction), however, you should consider whether the default mapping parameters of Bowtie2 (short-read) or minimap2 (long-read) are optimised to your context. " - }, - "save_hostremoval_unmapped": { - "type": "boolean", - "fa_icon": "fas fa-save", - "description": "Save unmapped reads in FASTQ format from host removal", - "help_text": "Save the unreads mapped to the reference genome in FASTQ format (as exported from `samtools view`).\n\nThis can be useful if you wish to perform other analyses on the off-target reads from the host mapping, such as manual profiling or _de novo_ assembly." - } - }, - "fa_icon": "fas fa-user-times" - }, - "preprocessing_run_merging_options": { - "title": "Preprocessing run merging options", - "type": "object", - "description": "Options for per-sample run-merging", - "default": "", - "properties": { - "perform_runmerging": { - "type": "boolean", - "fa_icon": "fas fa-toggle-on", - "description": "Turn on run merging", - "help_text": "Turns on the concatenation of sequencing runs or libraries with the same sample name.\n\nThis can be useful to ensure you get a single profile per sample, rather than one profile per run or library. Note that in some cases comparing profiles of independent _libraries_ may be useful, so this parameter may not always be suitable. " - }, - "save_runmerged_reads": { - "type": "boolean", - "fa_icon": "fas fa-save", - "description": "Save run-concatenated input FASTQ files for each sample", - "help_text": "Save the run- and library-concatenated reads of a given sample in FASTQ format." - } - }, - "fa_icon": "fas fa-clipboard-check" - }, - "profiling_options": { - "title": "Profiling options", - "type": "object", - "description": "", - "default": "", - "properties": { - "run_centrifuge": { - "type": "boolean", - "fa_icon": "fas fa-toggle-on", - "description": "Turn on profiling with Centrifuge. Requires database to be present CSV file passed to --databases" - }, - "centrifuge_save_reads": { - "type": "boolean", - "fa_icon": "fas fa-save", - "description": "Turn on saving of Centrifuge-aligned reads", - "help_text": "Save mapped (SAM, FASTQ) and unmapped (FASTQ) reads from alignment step of centrifuge in your output results directory.\n\n> Modifies tool parameter(s):\n> - centrifuge: `--un-gz`, `--al-gz`, `--un-conc-gz`, `--al-conc-gz`, `--out-fmt`" - }, - "run_diamond": { - "type": "boolean", - "fa_icon": "fas fa-toggle-on", - "description": "Turn on profiling with DIAMOND. Requires database to be present CSV file passed to --databases" - }, - "diamond_output_format": { - "type": "string", - "default": "tsv", - "enum": ["blast", "xml", "txt", "daa", "sam", "tsv", "paf"], - "fa_icon": "fas fa-file", - "description": "Specify output format from DIAMOND profiling.", - "help_text": "DIAMOND can produce output in a number of different formats, you can specify here which to produce.\n\nNote that DIAMOND can only produce one format at a time, and depending on which you pick, some downstream steps may not be executed. For example, selecting `daa` or `sam` will mean you will not get a tabular taxonomic profile as with the other tools.\n\nWill be overriden by `--diamond_save_reads.`\n\n> Modifies tool parameter(s):\n> - diamond blastx: `--outfmt`" - }, - "diamond_save_reads": { - "type": "boolean", - "fa_icon": "fas fa-save", - "description": "Turn on saving of DIAMOND-aligned reads. Will override --diamond_output_format and no taxon tables will be generated", - "help_text": "Save aligned reads in SAM format from alignment step of DIAMOND in your output results directory.\n\nNote this explicitly overrides `--diamond_output_format` to produce the SAM file, and no taxon table will be generated.\n\n> Modifies tool parameter(s):\n> - DIAMOND: `--outfmt`" - }, - "run_kaiju": { - "type": "boolean", - "fa_icon": "fas fa-toggle-on", - "description": "Turn on profiling with Kaiju. Requires database to be present CSV file passed to --databases" - }, - "kaiju_taxon_rank": { - "type": "string", - "default": "species", - "enum": ["phylum", "class", "order", "family", "genus", "species"], - "fa_icon": "fas fa-tag", - "description": "Specify taxonomic rank to be displayed in Kaiju taxon table", - "help_text": "Specify the taxonomic level(s) to be displayed in the resulting Kaiju taxon table, as generated by the kaiju2table helper tool.\n\nThis can be either a single level (e.g. `species`), or a comma separated list to display the full taxonomic path (e.g. `superkingdom,phylum,class,order,family,genus,species.`).\n\n> Modifies tool parameter(s):\n> - kaiju2table: `-l`" + "allOf": [ + { + "$ref": "#/definitions/input_output_options" }, - "run_kraken2": { - "type": "boolean", - "fa_icon": "fas fa-toggle-on", - "description": "Turn on profiling with Kraken2. Requires database to be present CSV file passed to --databases" + { + "$ref": "#/definitions/preprocessing_general_qc_options" }, - "kraken2_save_reads": { - "type": "boolean", - "fa_icon": "fas fa-save", - "description": "Turn on saving of Kraken2-aligned reads", - "help_text": "Save reads that do and do not have a taxonomic classification in your output results directory in FASTQ format.\n\n> Modifies tool parameter(s):\n> - kraken2: `--classified-out` and `--unclassified-out`" + { + "$ref": "#/definitions/preprocessing_short_read_qc_options" }, - "kraken2_save_readclassification": { - "type": "boolean", - "fa_icon": "fas fa-save", - "description": "Turn on saving of Kraken2 per-read taxonomic assignment file", - "help_text": "Save a text file that contains a list of each read that had a taxonomic assignment, with information on specific taxonomic taxonomic assignment that that read recieved.\n\n> Modifies tool parameter(s):\n> - kraken2: `--output`" + { + "$ref": "#/definitions/preprocessing_long_read_qc_options" }, - "kraken2_save_minimizers": { - "type": "boolean", - "description": "Turn on saving minimizer information in the kraken2 report thus increasing to an eight column layout.", - "fa_icon": "fas fa-save", - "help_text": "Turn on saving minimizer information in the kraken2 report thus increasing to an eight column layout.\n\nAdds `--report-minimizer-data` to the kraken2 command." + { + "$ref": "#/definitions/preprocessing_host_removal_options" }, - "run_bracken": { - "type": "boolean", - "description": "Post-process kraken2 reports with Bracken.", - "fa_icon": "fas fa-toggle-on" + { + "$ref": "#/definitions/preprocessing_run_merging_options" }, - "run_malt": { - "type": "boolean", - "fa_icon": "fas fa-toggle-on", - "description": "Turn on profiling with MALT. Requires database to be present CSV file passed to --databases" + { + "$ref": "#/definitions/profiling_options" }, - "malt_mode": { - "type": "string", - "default": "BlastN", - "fa_icon": "fas fa-check-square", - "description": "Specify which MALT alignment mode to use", - "help_text": "Specify which version of MALT alignment to use.\n\nBlastN is generally recommended (nucleotide-nucleotide alignment), but particularly for very short reads (such as aDNA), whereas BlastX mode is similar to DIAMOND and will translate the nucleotide to amino acid sequences. Note each type of alignment mode requires different parameters during database construction. Refer to the MALT manual for more information.\n\n> Modifies tool parameter(s):\n> - malt-run: `-mode` " + { + "$ref": "#/definitions/postprocessing_and_visualisation_options" }, - "malt_save_reads": { - "type": "boolean", - "fa_icon": "fas fa-save", - "description": "Turn on saving of MALT-aligned reads", - "help_text": "Turns on saving of MALT aligned reads in SAM format.\n\nNote that the SAM format produce by MALT is not completely valid, and may not work with downstream tools.\n\n> Modifies tool parameter(s):\n> - malt-run: `--alignments`, `-za`" + { + "$ref": "#/definitions/institutional_config_options" }, - "malt_generate_megansummary": { - "type": "boolean", - "fa_icon": "fas fa-save", - "description": "Turn on generation of MEGAN summary file from MALT results", - "help_text": "Turns on saving of MALT output in an additional MEGAN summary file (`.megan`) that can be loaded into the MEGAN metagenomic exploration tool.\n\nNote: this file is generated not directly from MALT but rather then MEGAN utility script `rma2info`.\n\n> Modifies tool parameter(s):\n> - rma2info: `-es`" + { + "$ref": "#/definitions/max_job_request_options" }, - "run_metaphlan3": { - "type": "boolean", - "description": "Turn on profiling with MetaPhlAn3. Requires database to be present CSV file passed to --databases", - "fa_icon": "fas fa-toggle-on" + { + "$ref": "#/definitions/generic_options" }, - "run_motus": { - "type": "boolean", - "fa_icon": "fas fa-toggle-on", - "description": "Turn on profiling with mOTUs. Requires database to be present CSV file passed to --databases" + { + "$ref": "#/definitions/reference_genome_options" } - }, - "fa_icon": "fas fa-align-center" - }, - "postprocessing_and_visualisation_options": { - "title": "Postprocessing and visualisation options", - "type": "object", - "description": "", - "default": "", - "properties": { - "run_profile_standardisation": { - "type": "boolean", - "fa_icon": "fas fa-toggle-on", - "description": "Turn on standardisation of taxon tables across profilers", - "help_text": "Turns on standardisation of output OTU tables across all tools; each into a TSV format following the following scheme:\n\n|TAXON | SAMPLE_A | SAMPLE_B |\n|-------------|----------------|-----------------|\n| taxon_a | 32 | 123 |\n| taxon_b | 1 | 5 |\n\nThis currently only is generated for mOTUs." - }, - "generate_biom_output": { - "type": "boolean", - "fa_icon": "fas fa-toggle-on", - "description": "Turn on generation of BIOM output (currently only applies to mOTUs)", - "help_text": "Turn on the saving of the taxonomic output in BIOM format (`.biom`) in the results directory of your pipeline run, instead of the default TSV format.\n\nNote this file is from the output of the `motus merge` command.\n\n> Modifies tool parameter(s):\n> - `-B -o`" - }, - "run_krona": { - "type": "boolean", - "fa_icon": "fas fa-toggle-on", - "description": "Turn on generation of Krona plots for supported profilers", - "help_text": "Turn on the generation of Krona interactive pie-chart HTMLs for a selection of profilers.\n\nThe tools currently supported are:\n\n- centrifuge\n- kraken2\n- kaiju\n- MALT" - }, - "krona_taxonomy_directory": { - "type": "string", - "default": "None", - "fa_icon": "fas fa-folder-open", - "description": "Specify path to krona taxonomy directories (required for MALT krona plots)", - "help_text": "Specify a path to a Krona taxonomy database directory (i.e. a directory containing a krona generated `.tab` file).\n\nThis is only required for generating Krona plots of MALT output.\n\nNote this taxonomy database must be downloaded and generated with the `updateTaxonomy.sh` script from the krona-tools package." - } - }, - "fa_icon": "fas fa-chart-line" - }, - "institutional_config_options": { - "title": "Institutional config options", - "type": "object", - "fa_icon": "fas fa-university", - "description": "Parameters used to describe centralised config profiles. These should not be edited.", - "help_text": "The centralised nf-core configuration profiles use a handful of pipeline parameters to describe themselves. This information is then printed to the Nextflow log when you run a pipeline. You should not need to change these values when you run a pipeline.", - "properties": { - "custom_config_version": { - "type": "string", - "description": "Git commit id for Institutional configs.", - "default": "master", - "hidden": true, - "fa_icon": "fas fa-users-cog" - }, - "custom_config_base": { - "type": "string", - "description": "Base directory for Institutional configs.", - "default": "https://raw.githubusercontent.com/nf-core/configs/master", - "hidden": true, - "help_text": "If you're running offline, Nextflow will not be able to fetch the institutional config files from the internet. If you don't need them, then this is not a problem. If you do need them, you should download the files from the repo and tell Nextflow where to find them with this parameter.", - "fa_icon": "fas fa-users-cog" - }, - "config_profile_name": { - "type": "string", - "description": "Institutional config name.", - "hidden": true, - "fa_icon": "fas fa-users-cog" - }, - "config_profile_description": { - "type": "string", - "description": "Institutional config description.", - "hidden": true, - "fa_icon": "fas fa-users-cog" - }, - "config_profile_contact": { - "type": "string", - "description": "Institutional config contact information.", - "hidden": true, - "fa_icon": "fas fa-users-cog" - }, - "config_profile_url": { - "type": "string", - "description": "Institutional config URL link.", - "hidden": true, - "fa_icon": "fas fa-users-cog" - } - } - }, - "max_job_request_options": { - "title": "Max job request options", - "type": "object", - "fa_icon": "fab fa-acquisitions-incorporated", - "description": "Set the top limit for requested resources for any single job.", - "help_text": "If you are running on a smaller system, a pipeline step requesting more resources than are available may cause the Nextflow to stop the run with an error. These options allow you to cap the maximum resources requested by any single job so that the pipeline will run on your system.\n\nNote that you can not _increase_ the resources requested by any job using these options. For that you will need your own configuration file. See [the nf-core website](https://nf-co.re/usage/configuration) for details.", - "properties": { - "max_cpus": { - "type": "integer", - "description": "Maximum number of CPUs that can be requested for any single job.", - "default": 16, - "fa_icon": "fas fa-microchip", - "hidden": true, - "help_text": "Use to set an upper-limit for the CPU requirement for each process. Should be an integer e.g. `--max_cpus 1`" - }, - "max_memory": { - "type": "string", - "description": "Maximum amount of memory that can be requested for any single job.", - "default": "128.GB", - "fa_icon": "fas fa-memory", - "pattern": "^\\d+(\\.\\d+)?\\.?\\s*(K|M|G|T)?B$", - "hidden": true, - "help_text": "Use to set an upper-limit for the memory requirement for each process. Should be a string in the format integer-unit e.g. `--max_memory '8.GB'`" - }, - "max_time": { - "type": "string", - "description": "Maximum amount of time that can be requested for any single job.", - "default": "240.h", - "fa_icon": "far fa-clock", - "pattern": "^(\\d+\\.?\\s*(s|m|h|day)\\s*)+$", - "hidden": true, - "help_text": "Use to set an upper-limit for the time requirement for each process. Should be a string in the format integer-unit e.g. `--max_time '2.h'`" - } - } - }, - "generic_options": { - "title": "Generic options", - "type": "object", - "fa_icon": "fas fa-file-import", - "description": "Less common options for the pipeline, typically set in a config file.", - "help_text": "These options are common to all nf-core pipelines and allow you to customise some of the core preferences for how the pipeline runs.\n\nTypically these options would be set in a Nextflow config file loaded for all pipeline runs, such as `~/.nextflow/config`.", - "properties": { - "help": { - "type": "boolean", - "description": "Display help text.", - "fa_icon": "fas fa-question-circle", - "hidden": true - }, - "publish_dir_mode": { - "type": "string", - "default": "copy", - "description": "Method used to save pipeline results to output directory.", - "help_text": "The Nextflow `publishDir` option specifies which intermediate files should be saved to the output directory. This option tells the pipeline what method should be used to move these files. See [Nextflow docs](https://www.nextflow.io/docs/latest/process.html#publishdir) for details.", - "fa_icon": "fas fa-copy", - "enum": [ - "symlink", - "rellink", - "link", - "copy", - "copyNoFollow", - "move" - ], - "hidden": true - }, - "email_on_fail": { - "type": "string", - "description": "Email address for completion summary, only when pipeline fails.", - "fa_icon": "fas fa-exclamation-triangle", - "pattern": "^([a-zA-Z0-9_\\-\\.]+)@([a-zA-Z0-9_\\-\\.]+)\\.([a-zA-Z]{2,5})$", - "help_text": "An email address to send a summary email to when the pipeline is completed - ONLY sent if the pipeline does not exit successfully.", - "hidden": true - }, - "plaintext_email": { - "type": "boolean", - "description": "Send plain-text email instead of HTML.", - "fa_icon": "fas fa-remove-format", - "hidden": true - }, - "max_multiqc_email_size": { - "type": "string", - "description": "File size limit when attaching MultiQC reports to summary emails.", - "pattern": "^\\d+(\\.\\d+)?\\.?\\s*(K|M|G|T)?B$", - "default": "25.MB", - "fa_icon": "fas fa-file-upload", - "hidden": true - }, - "preprocessing_qc_tool": { - "type": "string", - "default": "fastqc", - "enum": ["fastqc", "falco"], - "help_text": "Falco is designed as a drop-in replacement for FastQC but written in C++ for faster computation. We particularly recommend using falco when using long reads (due to reduced memory constraints), however is also applicable for short reads.", - "description": "Specify the tool used for quality control of raw sequencing reads" - }, - "monochrome_logs": { - "type": "boolean", - "description": "Do not use coloured log outputs.", - "fa_icon": "fas fa-palette", - "hidden": true - }, - "hook_url": { - "type": "string", - "description": "Incoming hook URL for messaging service", - "fa_icon": "fas fa-people-group", - "help_text": "Incoming hook URL for messaging service. Currently, only MS Teams is supported.", - "hidden": true - }, - "multiqc_config": { - "type": "string", - "description": "Custom config file to supply to MultiQC.", - "fa_icon": "fas fa-cog", - "hidden": true - }, - "multiqc_logo": { - "type": "string", - "description": "Custom logo file to supply to MultiQC. File name must also be set in the MultiQC config file", - "fa_icon": "fas fa-image", - "hidden": true - }, - "multiqc_methods_description": { - "type": "string", - "description": "Custom MultiQC yaml file containing HTML including a methods description.", - "fa_icon": "fas fa-cog" - }, - "tracedir": { - "type": "string", - "description": "Directory to keep pipeline Nextflow logs and reports.", - "default": "${params.outdir}/pipeline_info", - "fa_icon": "fas fa-cogs", - "hidden": true - }, - "validate_params": { - "type": "boolean", - "description": "Boolean whether to validate parameters against the schema at runtime", - "default": true, - "fa_icon": "fas fa-check-square", - "hidden": true - }, - "show_hidden_params": { - "type": "boolean", - "fa_icon": "far fa-eye-slash", - "description": "Show all params when using `--help`", - "hidden": true, - "help_text": "By default, parameters set as _hidden_ in the schema are not shown on the command line when a user runs with `--help`. Specifying this option will tell the pipeline to show all parameters." - }, - "enable_conda": { - "type": "boolean", - "description": "Run this workflow with Conda. You can also use '-profile conda' instead of providing this parameter.", - "hidden": true, - "fa_icon": "fas fa-bacon" - } - } - }, - "reference_genome_options": { - "title": "Reference genome options", - "type": "object", - "fa_icon": "fas fa-dna", - "description": "Reference genome related files and options required for the workflow.", - "properties": { - "genome": { - "type": "string", - "description": "Name of iGenomes reference.", - "fa_icon": "fas fa-book", - "help_text": "If using a reference genome configured in the pipeline using iGenomes, use this parameter to give the ID for the reference. This is then used to build the full paths for all required reference genome files e.g. `--genome GRCh38`. \n\nSee the [nf-core website docs](https://nf-co.re/usage/reference_genomes) for more details.", - "hidden": true - }, - "igenomes_base": { - "type": "string", - "format": "directory-path", - "description": "Directory / URL base for iGenomes references.", - "default": "s3://ngi-igenomes/igenomes", - "fa_icon": "fas fa-cloud-download-alt", - "hidden": true - }, - "igenomes_ignore": { - "type": "boolean", - "description": "Do not load the iGenomes reference config.", - "fa_icon": "fas fa-ban", - "hidden": true, - "help_text": "Do not load `igenomes.config` when running the pipeline. You may choose this option if you observe clashes between custom parameters and those supplied in `igenomes.config`." - } - } - } - }, - "allOf": [ - { - "$ref": "#/definitions/input_output_options" - }, - { - "$ref": "#/definitions/preprocessing_general_qc_options" - }, - { - "$ref": "#/definitions/preprocessing_short_read_qc_options" - }, - { - "$ref": "#/definitions/preprocessing_long_read_qc_options" - }, - { - "$ref": "#/definitions/preprocessing_host_removal_options" - }, - { - "$ref": "#/definitions/preprocessing_run_merging_options" - }, - { - "$ref": "#/definitions/profiling_options" - }, - { - "$ref": "#/definitions/postprocessing_and_visualisation_options" - }, - { - "$ref": "#/definitions/institutional_config_options" - }, - { - "$ref": "#/definitions/max_job_request_options" - }, - { - "$ref": "#/definitions/generic_options" - }, - { - "$ref": "#/definitions/reference_genome_options" - } - ], - "properties": { - "save_mgc_counts": { - "type": "boolean", - "description": "Save the mgc reads count for mOTUs." - }, - "save_ncbi_id": { - "type": "boolean", - "description": "Print NCBI taxonomic id for mOTUs." - }, - "save_read_counts": { - "type": "boolean", - "description": "Print mOTUs result as counts instead of relative abundances." - } - } -} + ] +} \ No newline at end of file From 933b820c198808b5d6a5336b0bae2b2a369eb982 Mon Sep 17 00:00:00 2001 From: sofstam Date: Tue, 29 Nov 2022 16:57:07 +0100 Subject: [PATCH 495/789] Apply review suggestions --- conf/modules.config | 6 +++--- conf/test_motus.config | 6 +++--- nextflow.config | 6 +++--- nextflow_schema.json | 29 +++++++++++------------------ 4 files changed, 20 insertions(+), 27 deletions(-) diff --git a/conf/modules.config b/conf/modules.config index 0f54301..63be9ff 100644 --- a/conf/modules.config +++ b/conf/modules.config @@ -448,9 +448,9 @@ process { withName: MOTUS_PROFILE { ext.args = { [ - params.save_ncbi_id ? "-p" : "", - params.save_read_counts ? "-c" : "", - params.save_mgc_counts ? "-M ${task.ext.prefix}.mgc" : "" + params.motus_ncbi_id ? "-p" : "", + params.motus_read_counts ? "-c" : "", + params.motus_mgc_counts ? "-M ${task.ext.prefix}.mgc" : "" ].join(',').replaceAll(','," ") } ext.prefix = params.perform_runmerging ? { "${meta.id}-${meta.db_name}" } : { "${meta.id}-${meta.run_accession}-${meta.db_name}" } diff --git a/conf/test_motus.config b/conf/test_motus.config index 70681dd..8eb324b 100644 --- a/conf/test_motus.config +++ b/conf/test_motus.config @@ -39,8 +39,8 @@ params { run_centrifuge = false run_diamond = false run_motus = true - save_mgc_counts = true - save_ncbi_id = true - save_read_counts = true + motus_mgc_counts = true + motus_ncbi_id = true + motus_read_counts = true run_profile_standardisation = true } diff --git a/nextflow.config b/nextflow.config index 91875b2..c9bb0f4 100644 --- a/nextflow.config +++ b/nextflow.config @@ -140,9 +140,9 @@ params { // mOTUs run_motus = false - save_mgc_counts = false - save_ncbi_id = false - save_read_counts = false + motus_mgc_counts = false + motus_ncbi_id = false + motus_read_counts = false // krona run_krona = false diff --git a/nextflow_schema.json b/nextflow_schema.json index cec0ab7..0b20762 100644 --- a/nextflow_schema.json +++ b/nextflow_schema.json @@ -63,7 +63,10 @@ "preprocessing_qc_tool": { "type": "string", "default": "fastqc", - "enum": ["fastqc", "falco"], + "enum": [ + "fastqc", + "falco" + ], "help_text": "Falco is designed as a drop-in replacement for FastQC but written in C++ for faster computation. We particularly recommend using falco when using long reads (due to reduced memory constraints), however is also applicable for short reads.", "description": "Specify the tool used for quality control of raw sequencing reads", "fa_icon": "fas fa-tools" @@ -470,17 +473,17 @@ "fa_icon": "fas fa-toggle-on", "description": "Turn on profiling with mOTUs. Requires database to be present CSV file passed to --databases" }, - "save_mgc_counts": { + "motus_mgc_counts": { "type": "boolean", - "description": "Save the mgc reads count for mOTUs." + "description": "Save the mgc reads count." }, - "save_read_counts": { + "motus_ncbi_id": { "type": "boolean", - "description": "Print mOTUs result as counts instead of relative abundances." + "description": "Print NCBI id." }, - "save_ncbi_id": { + "motus_read_counts": { "type": "boolean", - "description": "Print NCBI taxonomic id for mOTUs." + "description": "Print result as counts instead of relative abundances." } }, "fa_icon": "fas fa-align-center" @@ -653,16 +656,6 @@ "fa_icon": "fas fa-file-upload", "hidden": true }, - "preprocessing_qc_tool": { - "type": "string", - "default": "fastqc", - "enum": [ - "fastqc", - "falco" - ], - "help_text": "Falco is designed as a drop-in replacement for FastQC but written in C++ for faster computation. We particularly recommend using falco when using long reads (due to reduced memory constraints), however is also applicable for short reads.", - "description": "Specify the tool used for quality control of raw sequencing reads" - }, "monochrome_logs": { "type": "boolean", "description": "Do not use coloured log outputs.", @@ -791,4 +784,4 @@ "$ref": "#/definitions/reference_genome_options" } ] -} \ No newline at end of file +} From 8067012c01c1e29803a5365529cd139d463543eb Mon Sep 17 00:00:00 2001 From: nf-core-bot Date: Thu, 1 Dec 2022 09:15:35 +0000 Subject: [PATCH 496/789] [automated] Fix linting with Prettier --- nextflow_schema.json | 55 +++++++------------------------------------- 1 file changed, 8 insertions(+), 47 deletions(-) diff --git a/nextflow_schema.json b/nextflow_schema.json index 0b20762..2fcdd80 100644 --- a/nextflow_schema.json +++ b/nextflow_schema.json @@ -10,11 +10,7 @@ "type": "object", "fa_icon": "fas fa-terminal", "description": "Define where the pipeline should find input data and save output data.", - "required": [ - "input", - "databases", - "outdir" - ], + "required": ["input", "databases", "outdir"], "properties": { "input": { "type": "string", @@ -63,10 +59,7 @@ "preprocessing_qc_tool": { "type": "string", "default": "fastqc", - "enum": [ - "fastqc", - "falco" - ], + "enum": ["fastqc", "falco"], "help_text": "Falco is designed as a drop-in replacement for FastQC but written in C++ for faster computation. We particularly recommend using falco when using long reads (due to reduced memory constraints), however is also applicable for short reads.", "description": "Specify the tool used for quality control of raw sequencing reads", "fa_icon": "fas fa-tools" @@ -95,10 +88,7 @@ "shortread_qc_tool": { "type": "string", "default": "fastp", - "enum": [ - "fastp", - "adapterremoval" - ], + "enum": ["fastp", "adapterremoval"], "fa_icon": "fas fa-tools", "description": "Specify which tool to use for short-read QC" }, @@ -157,11 +147,7 @@ "shortread_complexityfilter_tool": { "type": "string", "default": "bbduk", - "enum": [ - "bbduk", - "prinseqplusplus", - "fastp" - ], + "enum": ["bbduk", "prinseqplusplus", "fastp"], "fa_icon": "fas fa-hammer", "description": "Specify which tool to use for complexity filtering" }, @@ -195,10 +181,7 @@ "shortread_complexityfilter_prinseqplusplus_mode": { "type": "string", "default": "entropy", - "enum": [ - "entropy", - "dust" - ], + "enum": ["entropy", "dust"], "fa_icon": "fas fa-check-square", "description": "Specify the complexity filter mode for PRINSEQ++" }, @@ -372,15 +355,7 @@ "diamond_output_format": { "type": "string", "default": "tsv", - "enum": [ - "blast", - "xml", - "txt", - "daa", - "sam", - "tsv", - "paf" - ], + "enum": ["blast", "xml", "txt", "daa", "sam", "tsv", "paf"], "fa_icon": "fas fa-file", "description": "Specify output format from DIAMOND profiling.", "help_text": "DIAMOND can produce output in a number of different formats, you can specify here which to produce.\n\nNote that DIAMOND can only produce one format at a time, and depending on which you pick, some downstream steps may not be executed. For example, selecting `daa` or `sam` will mean you will not get a tabular taxonomic profile as with the other tools.\n\nWill be overriden by `--diamond_save_reads.`\n\n> Modifies tool parameter(s):\n> - diamond blastx: `--outfmt`" @@ -399,14 +374,7 @@ "kaiju_taxon_rank": { "type": "string", "default": "species", - "enum": [ - "phylum", - "class", - "order", - "family", - "genus", - "species" - ], + "enum": ["phylum", "class", "order", "family", "genus", "species"], "fa_icon": "fas fa-tag", "description": "Specify taxonomic rank to be displayed in Kaiju taxon table", "help_text": "Specify the taxonomic level(s) to be displayed in the resulting Kaiju taxon table, as generated by the kaiju2table helper tool.\n\nThis can be either a single level (e.g. `species`), or a comma separated list to display the full taxonomic path (e.g. `superkingdom,phylum,class,order,family,genus,species.`).\n\n> Modifies tool parameter(s):\n> - kaiju2table: `-l`" @@ -624,14 +592,7 @@ "description": "Method used to save pipeline results to output directory.", "help_text": "The Nextflow `publishDir` option specifies which intermediate files should be saved to the output directory. This option tells the pipeline what method should be used to move these files. See [Nextflow docs](https://www.nextflow.io/docs/latest/process.html#publishdir) for details.", "fa_icon": "fas fa-copy", - "enum": [ - "symlink", - "rellink", - "link", - "copy", - "copyNoFollow", - "move" - ], + "enum": ["symlink", "rellink", "link", "copy", "copyNoFollow", "move"], "hidden": true }, "email_on_fail": { From bc98f5b80f24b77d3168412e81e7e7feaf043bc0 Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Thu, 1 Dec 2022 10:37:14 +0100 Subject: [PATCH 497/789] Separate KrakenUniq test run --- .github/workflows/ci.yml | 33 +++++++++++++++++ conf/test_krakenuniq.config | 72 +++++++++++++++++++++++++++++++++++++ conf/test_motus.config | 4 +++ nextflow.config | 1 + 4 files changed, 110 insertions(+) create mode 100644 conf/test_krakenuniq.config diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index a2a1662..77440b7 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -101,3 +101,36 @@ jobs: with: command: nextflow run ${GITHUB_WORKSPACE} -profile test_motus,docker --outdir ./results --databases ./database_motus.csv attempt_limit: 3 + + krakenuniq: + name: Test mOTUs with workflow parameters + if: ${{ github.event_name != 'push' || (github.event_name == 'push' && github.repository == 'nf-core/taxprofiler') }} + runs-on: ubuntu-latest + strategy: + matrix: + NXF_VER: + - "21.10.3" + - "latest-everything" + + steps: + - name: Check out pipeline code + uses: actions/checkout@v2 + + - name: Install Nextflow + uses: nf-core/setup-nextflow@v1 + with: + version: "${{ matrix.NXF_VER }}" + + - name: Show current locale + run: locale + + - name: Set UTF-8 enabled locale + run: | + sudo locale-gen en_US.UTF-8 + sudo update-locale LANG=en_US.UTF-8 + + - name: Run pipeline with test data + uses: Wandalen/wretry.action@v1.0.11 + with: + command: nextflow run ${GITHUB_WORKSPACE} -profile test_krakenuniq,docker --outdir ./results + attempt_limit: 3 diff --git a/conf/test_krakenuniq.config b/conf/test_krakenuniq.config new file mode 100644 index 0000000..c6e2548 --- /dev/null +++ b/conf/test_krakenuniq.config @@ -0,0 +1,72 @@ +/* +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Nextflow config file for running minimal tests +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Defines input files and everything required to run a fast and simple pipeline test. + + Use as follows: + nextflow run nf-core/taxprofiler -profile test, --outdir + +---------------------------------------------------------------------------------------- +*/ + +// +// Separate test as KrakenUniq database can sometimes be too big for GHA +// + +params { + config_profile_name = 'Test profile' + config_profile_description = 'Minimal test to check mOTUs function' + + // Limit resources so that this can run on GitHub Actions + max_cpus = 2 + max_memory = '6.GB' + max_time = '6.h' + + // Input data + // TODO nf-core: Specify the paths to your test data on nf-core/test-datasets + // TODO nf-core: Give any required params for the test so that command line flags are not needed + input = 'https://raw.githubusercontent.com/nf-core/test-datasets/taxprofiler/samplesheet.csv' + databases = 'https://raw.githubusercontent.com/nf-core/test-datasets/taxprofiler/database_krakenuniq.csv' + perform_shortread_qc = true + perform_longread_qc = true + shortread_qc_mergepairs = true + perform_shortread_complexityfilter = true + perform_shortread_hostremoval = true + perform_longread_hostremoval = true + perform_runmerging = true + hostremoval_reference = 'https://raw.githubusercontent.com/nf-core/test-datasets/modules/data/genomics/homo_sapiens/genome/genome.fasta' + run_kaiju = false` + run_kraken2 = false` + run_bracken = false + run_malt = false + run_metaphlan3 = false + run_centrifuge = false + run_diamond = false + run_krakenuniq = true + run_motus = false + run_krona = true + krona_taxonomy_directory = 'https://raw.githubusercontent.com/nf-core/test-datasets/modules/data/genomics/sarscov2/metagenome/krona_taxonomy.tab' + malt_save_reads = true + kraken2_save_reads = true + centrifuge_save_reads = true + diamond_save_reads = true +} + +process { + withName: MALT_RUN { + maxForks = 1 + } + withName: MEGAN_RMA2INFO_TSV { + maxForks = 1 + } + withName: MEGAN_RMA2INFO_KRONA { + maxForks = 1 + } + withName: 'EIDO_VALIDATE' { + ext.args = '--st-index sample' + } + withName: 'EIDO_CONVERT' { + ext.args = '--st-index sample' + } +} diff --git a/conf/test_motus.config b/conf/test_motus.config index 2428a4c..a077dad 100644 --- a/conf/test_motus.config +++ b/conf/test_motus.config @@ -10,6 +10,10 @@ ---------------------------------------------------------------------------------------- */ +// +// Separate test as mOTUs database download can be flaky +// + params { config_profile_name = 'mOTUs Test profile' config_profile_description = 'Minimal test to check mOTUs function' diff --git a/nextflow.config b/nextflow.config index 9ad8def..721a21c 100644 --- a/nextflow.config +++ b/nextflow.config @@ -242,6 +242,7 @@ profiles { test_nopreprocessing { includeConfig 'conf/test_nopreprocessing.config' } test_nothing { includeConfig 'conf/test_nothing.config' } test_motus { includeConfig 'conf/test_motus.config' } + test_krakenuniq { includeConfig 'conf/test_krakenuniq.config' } test_pep { includeConfig 'conf/test_pep.config' } } From e5bb627402179b42ef817845db8c99a0546c4a16 Mon Sep 17 00:00:00 2001 From: sofstam Date: Thu, 1 Dec 2022 11:12:31 +0100 Subject: [PATCH 498/789] Apply review suggestions --- conf/modules.config | 6 ++-- conf/test_motus.config | 6 ++-- nextflow.config | 6 ++-- nextflow_schema.json | 73 ++++++++++++++++++++++++++++++++---------- 4 files changed, 65 insertions(+), 26 deletions(-) diff --git a/conf/modules.config b/conf/modules.config index 63be9ff..1ff6f55 100644 --- a/conf/modules.config +++ b/conf/modules.config @@ -448,9 +448,9 @@ process { withName: MOTUS_PROFILE { ext.args = { [ - params.motus_ncbi_id ? "-p" : "", - params.motus_read_counts ? "-c" : "", - params.motus_mgc_counts ? "-M ${task.ext.prefix}.mgc" : "" + params.motus_use_ncbi_ids ? "-p" : "", + params.motus_output_type ? "-c" : "", + params.motus_save_mgcreadcounts ? "-M ${task.ext.prefix}.mgc" : "" ].join(',').replaceAll(','," ") } ext.prefix = params.perform_runmerging ? { "${meta.id}-${meta.db_name}" } : { "${meta.id}-${meta.run_accession}-${meta.db_name}" } diff --git a/conf/test_motus.config b/conf/test_motus.config index 8eb324b..b5c2c51 100644 --- a/conf/test_motus.config +++ b/conf/test_motus.config @@ -39,8 +39,8 @@ params { run_centrifuge = false run_diamond = false run_motus = true - motus_mgc_counts = true - motus_ncbi_id = true - motus_read_counts = true + motus_save_mgcreadcounts = true + motus_use_ncbi_ids = true + motus_output_type = true run_profile_standardisation = true } diff --git a/nextflow.config b/nextflow.config index c9bb0f4..b1da76a 100644 --- a/nextflow.config +++ b/nextflow.config @@ -140,9 +140,9 @@ params { // mOTUs run_motus = false - motus_mgc_counts = false - motus_ncbi_id = false - motus_read_counts = false + motus_output_type = false + motus_use_ncbi_ids = false + motus_save_mgcreadcounts = false // krona run_krona = false diff --git a/nextflow_schema.json b/nextflow_schema.json index 2fcdd80..7c4998a 100644 --- a/nextflow_schema.json +++ b/nextflow_schema.json @@ -10,7 +10,11 @@ "type": "object", "fa_icon": "fas fa-terminal", "description": "Define where the pipeline should find input data and save output data.", - "required": ["input", "databases", "outdir"], + "required": [ + "input", + "databases", + "outdir" + ], "properties": { "input": { "type": "string", @@ -59,7 +63,10 @@ "preprocessing_qc_tool": { "type": "string", "default": "fastqc", - "enum": ["fastqc", "falco"], + "enum": [ + "fastqc", + "falco" + ], "help_text": "Falco is designed as a drop-in replacement for FastQC but written in C++ for faster computation. We particularly recommend using falco when using long reads (due to reduced memory constraints), however is also applicable for short reads.", "description": "Specify the tool used for quality control of raw sequencing reads", "fa_icon": "fas fa-tools" @@ -88,7 +95,10 @@ "shortread_qc_tool": { "type": "string", "default": "fastp", - "enum": ["fastp", "adapterremoval"], + "enum": [ + "fastp", + "adapterremoval" + ], "fa_icon": "fas fa-tools", "description": "Specify which tool to use for short-read QC" }, @@ -147,7 +157,11 @@ "shortread_complexityfilter_tool": { "type": "string", "default": "bbduk", - "enum": ["bbduk", "prinseqplusplus", "fastp"], + "enum": [ + "bbduk", + "prinseqplusplus", + "fastp" + ], "fa_icon": "fas fa-hammer", "description": "Specify which tool to use for complexity filtering" }, @@ -181,7 +195,10 @@ "shortread_complexityfilter_prinseqplusplus_mode": { "type": "string", "default": "entropy", - "enum": ["entropy", "dust"], + "enum": [ + "entropy", + "dust" + ], "fa_icon": "fas fa-check-square", "description": "Specify the complexity filter mode for PRINSEQ++" }, @@ -355,7 +372,15 @@ "diamond_output_format": { "type": "string", "default": "tsv", - "enum": ["blast", "xml", "txt", "daa", "sam", "tsv", "paf"], + "enum": [ + "blast", + "xml", + "txt", + "daa", + "sam", + "tsv", + "paf" + ], "fa_icon": "fas fa-file", "description": "Specify output format from DIAMOND profiling.", "help_text": "DIAMOND can produce output in a number of different formats, you can specify here which to produce.\n\nNote that DIAMOND can only produce one format at a time, and depending on which you pick, some downstream steps may not be executed. For example, selecting `daa` or `sam` will mean you will not get a tabular taxonomic profile as with the other tools.\n\nWill be overriden by `--diamond_save_reads.`\n\n> Modifies tool parameter(s):\n> - diamond blastx: `--outfmt`" @@ -374,7 +399,14 @@ "kaiju_taxon_rank": { "type": "string", "default": "species", - "enum": ["phylum", "class", "order", "family", "genus", "species"], + "enum": [ + "phylum", + "class", + "order", + "family", + "genus", + "species" + ], "fa_icon": "fas fa-tag", "description": "Specify taxonomic rank to be displayed in Kaiju taxon table", "help_text": "Specify the taxonomic level(s) to be displayed in the resulting Kaiju taxon table, as generated by the kaiju2table helper tool.\n\nThis can be either a single level (e.g. `species`), or a comma separated list to display the full taxonomic path (e.g. `superkingdom,phylum,class,order,family,genus,species.`).\n\n> Modifies tool parameter(s):\n> - kaiju2table: `-l`" @@ -441,17 +473,17 @@ "fa_icon": "fas fa-toggle-on", "description": "Turn on profiling with mOTUs. Requires database to be present CSV file passed to --databases" }, - "motus_mgc_counts": { - "type": "boolean", - "description": "Save the mgc reads count." + "motus_use_ncbi_ids": { + "type": "string", + "default": "false" }, - "motus_ncbi_id": { - "type": "boolean", - "description": "Print NCBI id." + "motus_save_mgcreadcounts": { + "type": "string", + "default": "false" }, - "motus_read_counts": { - "type": "boolean", - "description": "Print result as counts instead of relative abundances." + "motus_output_type": { + "type": "string", + "default": "false" } }, "fa_icon": "fas fa-align-center" @@ -592,7 +624,14 @@ "description": "Method used to save pipeline results to output directory.", "help_text": "The Nextflow `publishDir` option specifies which intermediate files should be saved to the output directory. This option tells the pipeline what method should be used to move these files. See [Nextflow docs](https://www.nextflow.io/docs/latest/process.html#publishdir) for details.", "fa_icon": "fas fa-copy", - "enum": ["symlink", "rellink", "link", "copy", "copyNoFollow", "move"], + "enum": [ + "symlink", + "rellink", + "link", + "copy", + "copyNoFollow", + "move" + ], "hidden": true }, "email_on_fail": { From 1965ade961c93c5efaf8fc6fee93af9838a788a8 Mon Sep 17 00:00:00 2001 From: sofstam Date: Thu, 1 Dec 2022 11:32:51 +0100 Subject: [PATCH 499/789] Update schema --- nextflow_schema.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/nextflow_schema.json b/nextflow_schema.json index 7c4998a..2864a52 100644 --- a/nextflow_schema.json +++ b/nextflow_schema.json @@ -474,16 +474,16 @@ "description": "Turn on profiling with mOTUs. Requires database to be present CSV file passed to --databases" }, "motus_use_ncbi_ids": { - "type": "string", - "default": "false" + "type": "boolean", + "description": "Turn on printing ncbi taxonomic ids." }, "motus_save_mgcreadcounts": { - "type": "string", - "default": "false" + "type": "boolean", + "description": "Turn on saving the mgc reads count to a separate file." }, "motus_output_type": { - "type": "string", - "default": "false" + "type": "boolean", + "description": "Turn on printing result as counts instead of relative abundances." } }, "fa_icon": "fas fa-align-center" From ef1d2da17917abd883d8937197fc92bb63ab372c Mon Sep 17 00:00:00 2001 From: "James A. Fellows Yates" Date: Thu, 1 Dec 2022 12:53:34 +0100 Subject: [PATCH 500/789] Apply suggestions from code review Co-authored-by: Moritz E. Beber --- .github/workflows/ci.yml | 2 +- conf/test_krakenuniq.config | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 77440b7..d179c6e 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -103,7 +103,7 @@ jobs: attempt_limit: 3 krakenuniq: - name: Test mOTUs with workflow parameters + name: Test KrakenUniq with workflow parameters if: ${{ github.event_name != 'push' || (github.event_name == 'push' && github.repository == 'nf-core/taxprofiler') }} runs-on: ubuntu-latest strategy: diff --git a/conf/test_krakenuniq.config b/conf/test_krakenuniq.config index c6e2548..c504ec9 100644 --- a/conf/test_krakenuniq.config +++ b/conf/test_krakenuniq.config @@ -16,7 +16,7 @@ params { config_profile_name = 'Test profile' - config_profile_description = 'Minimal test to check mOTUs function' + config_profile_description = 'Minimal test to check KrakenUniq function' // Limit resources so that this can run on GitHub Actions max_cpus = 2 From 38a818fd174718229385a0ed301c42c76cadb9ec Mon Sep 17 00:00:00 2001 From: sofstam Date: Thu, 1 Dec 2022 13:42:21 +0100 Subject: [PATCH 501/789] Apply review suggestions --- conf/modules.config | 6 +++--- conf/test_motus.config | 6 +++--- nextflow.config | 8 ++++---- nextflow_schema.json | 28 +++++++++++++++------------- 4 files changed, 25 insertions(+), 23 deletions(-) diff --git a/conf/modules.config b/conf/modules.config index 1ff6f55..43e179d 100644 --- a/conf/modules.config +++ b/conf/modules.config @@ -448,9 +448,9 @@ process { withName: MOTUS_PROFILE { ext.args = { [ - params.motus_use_ncbi_ids ? "-p" : "", - params.motus_output_type ? "-c" : "", - params.motus_save_mgcreadcounts ? "-M ${task.ext.prefix}.mgc" : "" + params.motus_remove_ncbi_ids ? "" : "-p", + params.motus_use_relative_abundance ? "" : "-c", + params.motus_save_mgc_read_counts ? "-M ${task.ext.prefix}.mgc" : "" ].join(',').replaceAll(','," ") } ext.prefix = params.perform_runmerging ? { "${meta.id}-${meta.db_name}" } : { "${meta.id}-${meta.run_accession}-${meta.db_name}" } diff --git a/conf/test_motus.config b/conf/test_motus.config index b5c2c51..92c9a91 100644 --- a/conf/test_motus.config +++ b/conf/test_motus.config @@ -39,8 +39,8 @@ params { run_centrifuge = false run_diamond = false run_motus = true - motus_save_mgcreadcounts = true - motus_use_ncbi_ids = true - motus_output_type = true + motus_save_mgc_read_counts = true + motus_remove_ncbi_ids = true + motus_use_relative_abundance = true run_profile_standardisation = true } diff --git a/nextflow.config b/nextflow.config index b1da76a..84c5242 100644 --- a/nextflow.config +++ b/nextflow.config @@ -139,10 +139,10 @@ params { diamond_save_reads = false // this will override default diamond output format so no taxonomic profile is generated! added directly to module in profiling.nf // mOTUs - run_motus = false - motus_output_type = false - motus_use_ncbi_ids = false - motus_save_mgcreadcounts = false + run_motus = false + motus_use_relative_abundance = false + motus_remove_ncbi_ids = false + motus_save_mgc_read_counts = false // krona run_krona = false diff --git a/nextflow_schema.json b/nextflow_schema.json index 2864a52..e6db686 100644 --- a/nextflow_schema.json +++ b/nextflow_schema.json @@ -472,18 +472,6 @@ "type": "boolean", "fa_icon": "fas fa-toggle-on", "description": "Turn on profiling with mOTUs. Requires database to be present CSV file passed to --databases" - }, - "motus_use_ncbi_ids": { - "type": "boolean", - "description": "Turn on printing ncbi taxonomic ids." - }, - "motus_save_mgcreadcounts": { - "type": "boolean", - "description": "Turn on saving the mgc reads count to a separate file." - }, - "motus_output_type": { - "type": "boolean", - "description": "Turn on printing result as counts instead of relative abundances." } }, "fa_icon": "fas fa-align-center" @@ -783,5 +771,19 @@ { "$ref": "#/definitions/reference_genome_options" } - ] + ], + "properties": { + "motus_use_relative_abundance": { + "type": "string", + "default": "false" + }, + "motus_remove_ncbi_ids": { + "type": "string", + "default": "false" + }, + "motus_save_mgc_read_counts": { + "type": "string", + "default": "false" + } + } } From f960c14caf6cf9625f336fbaecad7acfee806d37 Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Thu, 1 Dec 2022 13:46:57 +0100 Subject: [PATCH 502/789] Fix typos --- conf/test_krakenuniq.config | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/conf/test_krakenuniq.config b/conf/test_krakenuniq.config index c504ec9..67b559e 100644 --- a/conf/test_krakenuniq.config +++ b/conf/test_krakenuniq.config @@ -36,8 +36,8 @@ params { perform_longread_hostremoval = true perform_runmerging = true hostremoval_reference = 'https://raw.githubusercontent.com/nf-core/test-datasets/modules/data/genomics/homo_sapiens/genome/genome.fasta' - run_kaiju = false` - run_kraken2 = false` + run_kaiju = false + run_kraken2 = false run_bracken = false run_malt = false run_metaphlan3 = false From 4800a5f03ee654ed2cb16f3b7bf273c29bf95b18 Mon Sep 17 00:00:00 2001 From: sofstam Date: Thu, 1 Dec 2022 14:23:40 +0100 Subject: [PATCH 503/789] Update schema --- nextflow_schema.json | 28 +++++++++++++--------------- 1 file changed, 13 insertions(+), 15 deletions(-) diff --git a/nextflow_schema.json b/nextflow_schema.json index e6db686..8d473a9 100644 --- a/nextflow_schema.json +++ b/nextflow_schema.json @@ -472,6 +472,18 @@ "type": "boolean", "fa_icon": "fas fa-toggle-on", "description": "Turn on profiling with mOTUs. Requires database to be present CSV file passed to --databases" + }, + "motus_use_relative_abundance": { + "type": "boolean", + "description": "Turn on printing relative abundance instead of counts." + }, + "motus_save_mgc_read_counts": { + "type": "boolean", + "description": "Turn on saving the mgc reads count." + }, + "motus_remove_ncbi_ids": { + "type": "boolean", + "description": "Turn on removing NCBI taxonomic IDs." } }, "fa_icon": "fas fa-align-center" @@ -771,19 +783,5 @@ { "$ref": "#/definitions/reference_genome_options" } - ], - "properties": { - "motus_use_relative_abundance": { - "type": "string", - "default": "false" - }, - "motus_remove_ncbi_ids": { - "type": "string", - "default": "false" - }, - "motus_save_mgc_read_counts": { - "type": "string", - "default": "false" - } - } + ] } From 410196c37b740fcc60e382ae3ba7142a2dc7341a Mon Sep 17 00:00:00 2001 From: nf-core-bot Date: Thu, 1 Dec 2022 14:33:34 +0000 Subject: [PATCH 504/789] [automated] Fix linting with Prettier --- nextflow_schema.json | 55 +++++++------------------------------------- 1 file changed, 8 insertions(+), 47 deletions(-) diff --git a/nextflow_schema.json b/nextflow_schema.json index 8d473a9..3468f64 100644 --- a/nextflow_schema.json +++ b/nextflow_schema.json @@ -10,11 +10,7 @@ "type": "object", "fa_icon": "fas fa-terminal", "description": "Define where the pipeline should find input data and save output data.", - "required": [ - "input", - "databases", - "outdir" - ], + "required": ["input", "databases", "outdir"], "properties": { "input": { "type": "string", @@ -63,10 +59,7 @@ "preprocessing_qc_tool": { "type": "string", "default": "fastqc", - "enum": [ - "fastqc", - "falco" - ], + "enum": ["fastqc", "falco"], "help_text": "Falco is designed as a drop-in replacement for FastQC but written in C++ for faster computation. We particularly recommend using falco when using long reads (due to reduced memory constraints), however is also applicable for short reads.", "description": "Specify the tool used for quality control of raw sequencing reads", "fa_icon": "fas fa-tools" @@ -95,10 +88,7 @@ "shortread_qc_tool": { "type": "string", "default": "fastp", - "enum": [ - "fastp", - "adapterremoval" - ], + "enum": ["fastp", "adapterremoval"], "fa_icon": "fas fa-tools", "description": "Specify which tool to use for short-read QC" }, @@ -157,11 +147,7 @@ "shortread_complexityfilter_tool": { "type": "string", "default": "bbduk", - "enum": [ - "bbduk", - "prinseqplusplus", - "fastp" - ], + "enum": ["bbduk", "prinseqplusplus", "fastp"], "fa_icon": "fas fa-hammer", "description": "Specify which tool to use for complexity filtering" }, @@ -195,10 +181,7 @@ "shortread_complexityfilter_prinseqplusplus_mode": { "type": "string", "default": "entropy", - "enum": [ - "entropy", - "dust" - ], + "enum": ["entropy", "dust"], "fa_icon": "fas fa-check-square", "description": "Specify the complexity filter mode for PRINSEQ++" }, @@ -372,15 +355,7 @@ "diamond_output_format": { "type": "string", "default": "tsv", - "enum": [ - "blast", - "xml", - "txt", - "daa", - "sam", - "tsv", - "paf" - ], + "enum": ["blast", "xml", "txt", "daa", "sam", "tsv", "paf"], "fa_icon": "fas fa-file", "description": "Specify output format from DIAMOND profiling.", "help_text": "DIAMOND can produce output in a number of different formats, you can specify here which to produce.\n\nNote that DIAMOND can only produce one format at a time, and depending on which you pick, some downstream steps may not be executed. For example, selecting `daa` or `sam` will mean you will not get a tabular taxonomic profile as with the other tools.\n\nWill be overriden by `--diamond_save_reads.`\n\n> Modifies tool parameter(s):\n> - diamond blastx: `--outfmt`" @@ -399,14 +374,7 @@ "kaiju_taxon_rank": { "type": "string", "default": "species", - "enum": [ - "phylum", - "class", - "order", - "family", - "genus", - "species" - ], + "enum": ["phylum", "class", "order", "family", "genus", "species"], "fa_icon": "fas fa-tag", "description": "Specify taxonomic rank to be displayed in Kaiju taxon table", "help_text": "Specify the taxonomic level(s) to be displayed in the resulting Kaiju taxon table, as generated by the kaiju2table helper tool.\n\nThis can be either a single level (e.g. `species`), or a comma separated list to display the full taxonomic path (e.g. `superkingdom,phylum,class,order,family,genus,species.`).\n\n> Modifies tool parameter(s):\n> - kaiju2table: `-l`" @@ -624,14 +592,7 @@ "description": "Method used to save pipeline results to output directory.", "help_text": "The Nextflow `publishDir` option specifies which intermediate files should be saved to the output directory. This option tells the pipeline what method should be used to move these files. See [Nextflow docs](https://www.nextflow.io/docs/latest/process.html#publishdir) for details.", "fa_icon": "fas fa-copy", - "enum": [ - "symlink", - "rellink", - "link", - "copy", - "copyNoFollow", - "move" - ], + "enum": ["symlink", "rellink", "link", "copy", "copyNoFollow", "move"], "hidden": true }, "email_on_fail": { From 7e7299203c9e8e21242eb3fd9cc51b913d8f7816 Mon Sep 17 00:00:00 2001 From: Sofia Stamouli <91951607+sofstam@users.noreply.github.com> Date: Fri, 2 Dec 2022 08:55:23 +0100 Subject: [PATCH 505/789] Set values to false --- conf/test_motus.config | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/conf/test_motus.config b/conf/test_motus.config index 29808ed..ee41447 100644 --- a/conf/test_motus.config +++ b/conf/test_motus.config @@ -44,8 +44,8 @@ params { run_diamond = false run_krakenuniq = false run_motus = true - motus_save_mgc_read_counts = true - motus_remove_ncbi_ids = true - motus_use_relative_abundance = true + motus_save_mgc_read_counts = false + motus_remove_ncbi_ids = false + motus_use_relative_abundance = false run_profile_standardisation = true } From de74e4f727ae5c35b12c3203aa1462be4c985037 Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Fri, 2 Dec 2022 12:47:14 +0100 Subject: [PATCH 506/789] Fix centrifuge warning, filter out long reads from Brakcen, add some caveat docs to usage.md --- docs/usage.md | 24 ++++++++++++++++++- subworkflows/local/profiling.nf | 10 +++++++- .../local/standardisation_profiles.nf | 10 ++++---- 3 files changed, 37 insertions(+), 7 deletions(-) diff --git a/docs/usage.md b/docs/usage.md index a87102c..d21761f 100644 --- a/docs/usage.md +++ b/docs/usage.md @@ -248,9 +248,31 @@ You can optionally save the FASTQ output of the run merging with the `--save_run ##### Profiling +###### Bracken + +It is unclear whether Bracken is suitable for running long reads, as it makes certain assumptions about read lengths. Furthemore, during testing we found issues where Bracken would fail on the long-read test data. Therefore nf-core/taxprofiler does not run Bracken on data specified as being sequenced with `OXFORD_NANOPORE` in the input samplesheet. If you believe this to be wrong, please contact us on the nf-core slack and we can discuss this. + +###### Centrifuge + +Centrifuge currently does not accept FASTA files as input, therefore no output will be produced for these input files. + +###### DIAMOND + +DIAMOND only allows output of a single format at a time, therefore parameters such --diamond_save_reads supplied will result in only aligned reads in SAM format will be produced, no taxonomic profiles will be available. Be aware of this when setting up your pipeline runs, depending n your particular use case. + ###### MALT -nf-core/taxprofiler uses MALT 0.4.1, which is a compatively old version. However it has been found that the most recent version of MALT (0.5.\*), at the time of writing, is broken. [The LCA step appears not to be executed](http://megan.informatik.uni-tuebingen.de/t/lca-placement-failure-with-malt-v-0-5-2-and-0-5-3/1996/3), pushing all hits to the leaves of the taxonomy. However, if you need to use a more recent taxonomy map file with your databases, the output of `malt-build` from MALT 0.5.3 should be still be compatible with `malt-run` of 0.4.1. +MALT does not support paired-end reads alignment (unlike other tools), therefore nf-core/taxprofiler aligns these as indepenent files if read-merging is skipped. If you skip merging, you can sum or average the results of the counts of the pairs. + +Krona can only be run on MALT output if path to Krona taxonomy database supplied to `--krona_taxonomy_directory`. Therefore if you do not supply the a KRona directory, Krona plots will not be produced for MALT. + +###### MetaPhlAn3 + +MetaPhlAn3 currently does not accept FASTA files as input, therefore no output will be produced for these input files. + +###### mOTUs + +mOTUs currently does not accept FASTA files as input, therefore no output will be produced for these input files. ### Updating the pipeline diff --git a/subworkflows/local/profiling.nf b/subworkflows/local/profiling.nf index aeee2a4..5256951 100644 --- a/subworkflows/local/profiling.nf +++ b/subworkflows/local/profiling.nf @@ -145,7 +145,15 @@ workflow PROFILING { if ( params.run_kraken2 && params.run_bracken ) { // Remove files from 'pure' kraken2 runs, so only those aligned against Bracken & kraken2 database are used. def ch_kraken2_output = KRAKEN2_KRAKEN2.out.report - .filter { meta, report -> meta['tool'] == 'bracken' } + .filter { + meta, report -> + if ( meta['instrument_platform'] == 'OXFORD_NANOPORE' ) log.warn "[nf-core/taxprofiler] Bracken has not been evaluated for long-read data. Skipping Bracken for sample ${meta.id}." + meta['tool'] == 'bracken' && meta['instrument_platform'] != 'OXFORD_NANOPORE' + + + } + + // If necessary, convert the eight column output to six column output. if (params.kraken2_save_minimizers) { diff --git a/subworkflows/local/standardisation_profiles.nf b/subworkflows/local/standardisation_profiles.nf index cbb0fab..8c73472 100644 --- a/subworkflows/local/standardisation_profiles.nf +++ b/subworkflows/local/standardisation_profiles.nf @@ -3,7 +3,7 @@ // include { KAIJU_KAIJU2TABLE } from '../../modules/nf-core/kaiju/kaiju2table/main' -include { KRAKENTOOLS_COMBINEKREPORTS } from '../../modules/nf-core/krakentools/combinekreports/main' +include { KRAKENTOOLS_COMBINEKREPORTS as KRAKENTOOLS_COMBINEKREPORTS_KRAKEN } from '../../modules/nf-core/krakentools/combinekreports/main' include { KRAKENTOOLS_COMBINEKREPORTS as KRAKENTOOLS_COMBINEKREPORTS_CENTRIFUGE } from '../../modules/nf-core/krakentools/combinekreports/main' include { METAPHLAN3_MERGEMETAPHLANTABLES } from '../../modules/nf-core/metaphlan3/mergemetaphlantables/main' include { MOTUS_MERGE } from '../../modules/nf-core/motus/merge/main' @@ -93,10 +93,10 @@ workflow STANDARDISATION_PROFILES { [[id:it[0]], it[1]] } - KRAKENTOOLS_COMBINEKREPORTS ( ch_profiles_for_kraken2 ) - ch_standardised_tables = ch_standardised_tables.mix( KRAKENTOOLS_COMBINEKREPORTS.out.txt ) - ch_multiqc_files = ch_multiqc_files.mix( KRAKENTOOLS_COMBINEKREPORTS.out.txt ) - ch_versions = ch_versions.mix( KRAKENTOOLS_COMBINEKREPORTS.out.versions ) + KRAKENTOOLS_COMBINEKREPORTS_KRAKEN ( ch_profiles_for_kraken2 ) + ch_standardised_tables = ch_standardised_tables.mix( KRAKENTOOLS_COMBINEKREPORTS_KRAKEN.out.txt ) + ch_multiqc_files = ch_multiqc_files.mix( KRAKENTOOLS_COMBINEKREPORTS_KRAKEN.out.txt ) + ch_versions = ch_versions.mix( KRAKENTOOLS_COMBINEKREPORTS_KRAKEN.out.versions ) // MetaPhlAn3 From ab42f6b66272240223ee7807ad08c5b8ac9c7b1c Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Fri, 2 Dec 2022 12:49:00 +0100 Subject: [PATCH 507/789] wteak message --- subworkflows/local/profiling.nf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/subworkflows/local/profiling.nf b/subworkflows/local/profiling.nf index b8eb086..ec15386 100644 --- a/subworkflows/local/profiling.nf +++ b/subworkflows/local/profiling.nf @@ -147,7 +147,7 @@ workflow PROFILING { def ch_kraken2_output = KRAKEN2_KRAKEN2.out.report .filter { meta, report -> - if ( meta['instrument_platform'] == 'OXFORD_NANOPORE' ) log.warn "[nf-core/taxprofiler] Bracken has not been evaluated for long-read data. Skipping Bracken for sample ${meta.id}." + if ( meta['instrument_platform'] == 'OXFORD_NANOPORE' ) log.warn "[nf-core/taxprofiler] Bracken has not been evaluated for Nanopore data. Skipping Bracken for sample ${meta.id}." meta['tool'] == 'bracken' && meta['instrument_platform'] != 'OXFORD_NANOPORE' From cf8ad9677124c57e8ade33d5d56de719e6eb9e5b Mon Sep 17 00:00:00 2001 From: "James A. Fellows Yates" Date: Fri, 2 Dec 2022 15:09:08 +0100 Subject: [PATCH 508/789] Update subworkflows/local/profiling.nf --- subworkflows/local/profiling.nf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/subworkflows/local/profiling.nf b/subworkflows/local/profiling.nf index ec15386..2454ef3 100644 --- a/subworkflows/local/profiling.nf +++ b/subworkflows/local/profiling.nf @@ -147,8 +147,8 @@ workflow PROFILING { def ch_kraken2_output = KRAKEN2_KRAKEN2.out.report .filter { meta, report -> - if ( meta['instrument_platform'] == 'OXFORD_NANOPORE' ) log.warn "[nf-core/taxprofiler] Bracken has not been evaluated for Nanopore data. Skipping Bracken for sample ${meta.id}." meta['tool'] == 'bracken' && meta['instrument_platform'] != 'OXFORD_NANOPORE' + if ( meta['instrument_platform'] == 'OXFORD_NANOPORE' ) log.warn "[nf-core/taxprofiler] Bracken has not been evaluated for Nanopore data. Skipping Bracken for sample ${meta.id}." } From 0dccfddc249107e69f3dfdb748d304a0e2aaa676 Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Sat, 3 Dec 2022 21:38:25 +0100 Subject: [PATCH 509/789] Switch order back --- subworkflows/local/profiling.nf | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/subworkflows/local/profiling.nf b/subworkflows/local/profiling.nf index 2454ef3..f5c970c 100644 --- a/subworkflows/local/profiling.nf +++ b/subworkflows/local/profiling.nf @@ -147,14 +147,10 @@ workflow PROFILING { def ch_kraken2_output = KRAKEN2_KRAKEN2.out.report .filter { meta, report -> - meta['tool'] == 'bracken' && meta['instrument_platform'] != 'OXFORD_NANOPORE' if ( meta['instrument_platform'] == 'OXFORD_NANOPORE' ) log.warn "[nf-core/taxprofiler] Bracken has not been evaluated for Nanopore data. Skipping Bracken for sample ${meta.id}." - - + meta['tool'] == 'bracken' && meta['instrument_platform'] != 'OXFORD_NANOPORE' } - - // If necessary, convert the eight column output to six column output. if (params.kraken2_save_minimizers) { ch_kraken2_output = KRAKEN2_STANDARD_REPORT(ch_kraken2_output).report From 0a0dffa37ca581386d17cb9dd4296e18697196f4 Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Sun, 4 Dec 2022 12:06:33 +0100 Subject: [PATCH 510/789] Try separating MALT --- .github/workflows/ci.yml | 33 +++++++++++++++++++++++++++++++++ conf/test.config | 2 +- 2 files changed, 34 insertions(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index d179c6e..dad2838 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -134,3 +134,36 @@ jobs: with: command: nextflow run ${GITHUB_WORKSPACE} -profile test_krakenuniq,docker --outdir ./results attempt_limit: 3 + + malt: + name: Test MALT with workflow parameters + if: ${{ github.event_name != 'push' || (github.event_name == 'push' && github.repository == 'nf-core/taxprofiler') }} + runs-on: ubuntu-latest + strategy: + matrix: + NXF_VER: + - "21.10.3" + - "latest-everything" + + steps: + - name: Check out pipeline code + uses: actions/checkout@v2 + + - name: Install Nextflow + uses: nf-core/setup-nextflow@v1 + with: + version: "${{ matrix.NXF_VER }}" + + - name: Show current locale + run: locale + + - name: Set UTF-8 enabled locale + run: | + sudo locale-gen en_US.UTF-8 + sudo update-locale LANG=en_US.UTF-8 + + - name: Run pipeline with test data + uses: Wandalen/wretry.action@v1.0.11 + with: + command: nextflow run ${GITHUB_WORKSPACE} -profile test_nothing,docker --run_malt --outdir ./results + attempt_limit: 3 diff --git a/conf/test.config b/conf/test.config index 898743e..db9f81d 100644 --- a/conf/test.config +++ b/conf/test.config @@ -35,7 +35,7 @@ params { run_kaiju = true run_kraken2 = true run_bracken = true - run_malt = true + run_malt = false run_metaphlan3 = true run_centrifuge = true run_diamond = true From 4529e7e5457df2de7557c6e8d7c1295f3c24daa7 Mon Sep 17 00:00:00 2001 From: "Moritz E. Beber" Date: Thu, 1 Dec 2022 17:25:25 +0100 Subject: [PATCH 511/789] refactor: change parameter exclude unmerged to include --- .github/workflows/ci.yml | 4 ++-- conf/modules.config | 2 +- docs/usage.md | 2 +- nextflow.config | 2 +- nextflow_schema.json | 6 +++--- subworkflows/local/shortread_adapterremoval.nf | 4 ++-- workflows/taxprofiler.nf | 2 +- 7 files changed, 11 insertions(+), 11 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index dad2838..11db52e 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -28,10 +28,10 @@ jobs: - "--perform_longread_qc false" - "--perform_shortread_qc false" - "--shortread_qc_tool fastp" - - "--shortread_qc_tool fastp --shortread_qc_mergepairs --shortread_qc_excludeunmerged" + - "--shortread_qc_tool fastp --shortread_qc_mergepairs --shortread_qc_includeunmerged" - "--shortread_qc_tool fastp --shortread_qc_mergepairs" - "--shortread_qc_tool adapterremoval" - - "--shortread_qc_tool adapterremoval --shortread_qc_mergepairs --shortread_qc_excludeunmerged" + - "--shortread_qc_tool adapterremoval --shortread_qc_mergepairs --shortread_qc_includeunmerged" - "--shortread_qc_tool adapterremoval --shortread_qc_mergepairs" - "--shortread_complexityfilter_tool bbduk" - "--shortread_complexityfilter_tool prinseqplusplus" diff --git a/conf/modules.config b/conf/modules.config index f6045e5..dd85c0c 100644 --- a/conf/modules.config +++ b/conf/modules.config @@ -79,7 +79,7 @@ process { withName: FASTP_PAIRED { ext.args = [ // collapsing options - option to retain singletons - params.shortread_qc_excludeunmerged ? '' : "--include_unmerged", + params.shortread_qc_includeunmerged ? '--include_unmerged' : '', // trimming options params.shortread_qc_skipadaptertrim ? "--disable_adapter_trimming" : "", params.shortread_qc_adapterlist ? "" : params.shortread_qc_adapter1 ? "--adapter_sequence ${params.shortread_qc_adapter1}" : "", diff --git a/docs/usage.md b/docs/usage.md index d21761f..d2f41bf 100644 --- a/docs/usage.md +++ b/docs/usage.md @@ -204,7 +204,7 @@ It is highly recommended to run this on raw reads to remove artifacts from seque There are currently two options for short-read preprocessing: `fastp` or `adapterremoval`. For adapter clipping, you can either rely on tool default adapter sequences, or supply your own adapters (`--shortread_qc_adapter1` and `--shortread_qc_adapter2`) -By default, paired-end merging is not activated and paired-end profiling is performed where supported otherwise pairs will be independently profiled. If paired-end merging is activated you can also specify whether to exclude unmerged reads in the reads sent for profiling (`--shortread_qc_mergepairs` and `--shortread_qc_excludeunmerged`). +By default, paired-end merging is not activated and paired-end profiling is performed where supported otherwise pairs will be independently profiled. If paired-end merging is activated you can also specify whether to include unmerged reads in the reads sent for profiling (`--shortread_qc_mergepairs` and `--shortread_qc_includeunmerged`). You can also turn off clipping and only perform paired-end merging, if requested. This can be useful when processing data downloaded from the ENA, SRA, or DDBJ (`--shortread_qc_skipadaptertrim`). Both tools support length filtering of reads and can be tuned with `--shortread_qc_minlength`. Performing length filtering can be useful to remove short (often low sequencing complexity) sequences that result in unspecific classification and therefore slow down runtime during profiling, with minimal gain. diff --git a/nextflow.config b/nextflow.config index 3cf160d..54e220d 100644 --- a/nextflow.config +++ b/nextflow.config @@ -66,7 +66,7 @@ params { shortread_qc_tool = 'fastp' shortread_qc_skipadaptertrim = false shortread_qc_mergepairs = true - shortread_qc_excludeunmerged = false + shortread_qc_includeunmerged = false shortread_qc_adapter1 = null shortread_qc_adapter2 = null shortread_qc_adapterlist = null diff --git a/nextflow_schema.json b/nextflow_schema.json index ae4e311..350830c 100644 --- a/nextflow_schema.json +++ b/nextflow_schema.json @@ -125,11 +125,11 @@ "default": true, "help_text": "Turn on the merging of read-pairs of paired-end short read sequencing data for AdapterRemoval (this is performed automatically with fastp).\n\n> Modifies tool parameter(s):\n> - AdapterRemoval: `--collapse`\n" }, - "shortread_qc_excludeunmerged": { + "shortread_qc_includeunmerged": { "type": "boolean", "fa_icon": "far fa-times-circle", - "description": "Discard unmerged reads from paired-end merging", - "help_text": "Turns off the inclusion of unmerged reads in resulting processing FASTQ file of paired-end sequencing data when using `fastp`.\n\nThis can be useful in cases where you prefer to have very short reads (e.g. aDNA), thus excluding longer-reads or possibly faulty reads where one of the pair was discarded.\n\n> Modifies tool parameter(s):\n> - removed from reads `--include_unmerged`\n" + "description": "Include unmerged reads from paired-end merging in the downstream processing", + "help_text": "Turns on the inclusion of unmerged reads in resulting processing FASTQ file of paired-end sequencing data when using `fastp`.\n\nExcluding unmerged reads can be useful in cases where you prefer to have very short reads (e.g. aDNA), thus excluding longer-reads or possibly faulty reads where one of the pair was discarded.\n\n> Modifies tool parameter(s):\n> - adds option `--include_unmerged`\n" }, "shortread_qc_minlength": { "type": "integer", diff --git a/subworkflows/local/shortread_adapterremoval.nf b/subworkflows/local/shortread_adapterremoval.nf index 6567007..4340e0d 100644 --- a/subworkflows/local/shortread_adapterremoval.nf +++ b/subworkflows/local/shortread_adapterremoval.nf @@ -30,7 +30,7 @@ workflow SHORTREAD_ADAPTERREMOVAL { * has to be exported in a separate channel and we must manually recombine when necessary. */ - if ( params.shortread_qc_mergepairs && !params.shortread_qc_excludeunmerged ) { + if ( params.shortread_qc_mergepairs && params.shortread_qc_includeunmerged ) { ch_concat_fastq = Channel.empty() .mix( @@ -55,7 +55,7 @@ workflow SHORTREAD_ADAPTERREMOVAL { ch_adapterremoval_reads_prepped = CAT_FASTQ.out.reads .mix(ADAPTERREMOVAL_SINGLE.out.singles_truncated) - } else if ( params.shortread_qc_mergepairs && params.shortread_qc_excludeunmerged ) { + } else if ( params.shortread_qc_mergepairs && !params.shortread_qc_includeunmerged ) { ch_concat_fastq = Channel.empty() .mix( diff --git a/workflows/taxprofiler.nf b/workflows/taxprofiler.nf index ba52a4f..68fc47a 100644 --- a/workflows/taxprofiler.nf +++ b/workflows/taxprofiler.nf @@ -28,7 +28,7 @@ if ( params.input ) { if (params.databases) { ch_databases = file(params.databases) } else { exit 1, 'Input database sheet not specified!' } if (params.shortread_qc_mergepairs && params.run_malt ) log.warn "[nf-core/taxprofiler] MALT does not accept uncollapsed paired-reads. Pairs will be profiled as separate files." -if (params.shortread_qc_excludeunmerged && !params.shortread_qc_mergepairs) exit 1, "ERROR: [nf-core/taxprofiler] cannot include unmerged reads when merging not turned on. Please specify --shortread_qc_mergepairs" +if (params.shortread_qc_includeunmerged && !params.shortread_qc_mergepairs) exit 1, "ERROR: [nf-core/taxprofiler] cannot include unmerged reads when merging is not turned on. Please specify --shortread_qc_mergepairs" if (params.shortread_complexityfilter_tool == 'fastp' && ( params.perform_shortread_qc == false || params.shortread_qc_tool != 'fastp' )) exit 1, "ERROR: [nf-core/taxprofiler] cannot use fastp complexity filtering if preprocessing not turned on and/or tool is not fastp. Please specify --perform_shortread_qc and/or --shortread_qc_tool 'fastp'" From b2088bcbb3bfc1057543df056783dcb3defdfd4a Mon Sep 17 00:00:00 2001 From: "Moritz E. Beber" Date: Sun, 4 Dec 2022 21:53:38 +0100 Subject: [PATCH 512/789] docs: improve description of `shortread_qc_includeunmerged` --- nextflow_schema.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/nextflow_schema.json b/nextflow_schema.json index 350830c..02085d5 100644 --- a/nextflow_schema.json +++ b/nextflow_schema.json @@ -128,8 +128,8 @@ "shortread_qc_includeunmerged": { "type": "boolean", "fa_icon": "far fa-times-circle", - "description": "Include unmerged reads from paired-end merging in the downstream processing", - "help_text": "Turns on the inclusion of unmerged reads in resulting processing FASTQ file of paired-end sequencing data when using `fastp`.\n\nExcluding unmerged reads can be useful in cases where you prefer to have very short reads (e.g. aDNA), thus excluding longer-reads or possibly faulty reads where one of the pair was discarded.\n\n> Modifies tool parameter(s):\n> - adds option `--include_unmerged`\n" + "description": "Include unmerged reads from paired-end merging in the downstream analysis", + "help_text": "Turns on the inclusion of unmerged reads in resulting FASTQ file from merging paired-end sequencing data when using `fastp` and/or `AdapterRemoval`. For `fastp` this means the unmerged read pairs are directly included in the output FASTQ file. For `AdapterRemoval`, additional output files containing unmerged reads are all concatenated into one file by the workflow.\n\nExcluding unmerged reads can be useful in cases where you prefer to have very short reads (e.g. aDNA), thus excluding longer-reads or possibly faulty reads where one of the pair was discarded.\n\n> Adds `fastp` option: `--include_unmerged`\n" }, "shortread_qc_minlength": { "type": "integer", From 24e5bc54101873f86a5e64610162769651ba8f26 Mon Sep 17 00:00:00 2001 From: "Moritz E. Beber" Date: Sun, 4 Dec 2022 21:54:10 +0100 Subject: [PATCH 513/789] refactor: use shorter and more explicit syntax --- subworkflows/local/shortread_adapterremoval.nf | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/subworkflows/local/shortread_adapterremoval.nf b/subworkflows/local/shortread_adapterremoval.nf index 4340e0d..7f5a0fb 100644 --- a/subworkflows/local/shortread_adapterremoval.nf +++ b/subworkflows/local/shortread_adapterremoval.nf @@ -40,9 +40,7 @@ workflow SHORTREAD_ADAPTERREMOVAL { ADAPTERREMOVAL_PAIRED.out.paired_truncated ) .map { meta, reads -> - def meta_new = meta.clone() - meta_new.single_end = true - [meta_new, reads] + [meta + [single_end: true], reads] } .groupTuple() // Paired-end reads cause a nested tuple during grouping. @@ -63,9 +61,7 @@ workflow SHORTREAD_ADAPTERREMOVAL { ADAPTERREMOVAL_PAIRED.out.collapsed_truncated ) .map { meta, reads -> - def meta_new = meta.clone() - meta_new.single_end = true - [meta_new, reads] + [meta + [single_end: true], reads] } .groupTuple() .map { meta, fastq -> [meta, fastq.flatten()] } From 3dba6405c53939a81ec3e82569d9c7ec7290e0c0 Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Tue, 6 Dec 2022 11:47:16 +0100 Subject: [PATCH 514/789] Sets correct default for --shortread_qc_mergepairs --- nextflow.config | 2 +- nextflow_schema.json | 3 +-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/nextflow.config b/nextflow.config index 54e220d..00edd9b 100644 --- a/nextflow.config +++ b/nextflow.config @@ -65,7 +65,7 @@ params { perform_shortread_qc = false shortread_qc_tool = 'fastp' shortread_qc_skipadaptertrim = false - shortread_qc_mergepairs = true + shortread_qc_mergepairs = false shortread_qc_includeunmerged = false shortread_qc_adapter1 = null shortread_qc_adapter2 = null diff --git a/nextflow_schema.json b/nextflow_schema.json index 02085d5..d6debb3 100644 --- a/nextflow_schema.json +++ b/nextflow_schema.json @@ -122,8 +122,7 @@ "type": "boolean", "fa_icon": "fas fa-toggle-on", "description": "Turn on merging of read pairs for paired-end data", - "default": true, - "help_text": "Turn on the merging of read-pairs of paired-end short read sequencing data for AdapterRemoval (this is performed automatically with fastp).\n\n> Modifies tool parameter(s):\n> - AdapterRemoval: `--collapse`\n" + "help_text": "Turn on the merging of read-pairs of paired-end short read sequencing data. \n\n> Modifies tool parameter(s):\n> - AdapterRemoval: `--collapse`\n> - fastp: `-m --merged_out`\n" }, "shortread_qc_includeunmerged": { "type": "boolean", From d8751787ac6b609ef87ca218a970fef354ed8a8a Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Wed, 7 Dec 2022 07:27:40 +0100 Subject: [PATCH 515/789] Update bracken so parameters come directly from database args --- modules.json | 2 +- modules/nf-core/bracken/bracken/main.nf | 7 ++----- modules/nf-core/bracken/bracken/meta.yml | 5 ++++- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/modules.json b/modules.json index f2b6da8..fb721a8 100644 --- a/modules.json +++ b/modules.json @@ -23,7 +23,7 @@ }, "bracken/bracken": { "branch": "master", - "git_sha": "5e34754d42cd2d5d248ca8673c0a53cdf5624905" + "git_sha": "8cab56516076b23c6f8eb1ac20ba4ce9692c85e1" }, "cat/fastq": { "branch": "master", diff --git a/modules/nf-core/bracken/bracken/main.nf b/modules/nf-core/bracken/bracken/main.nf index 5e08418..ac7d1af 100644 --- a/modules/nf-core/bracken/bracken/main.nf +++ b/modules/nf-core/bracken/bracken/main.nf @@ -21,12 +21,9 @@ process BRACKEN_BRACKEN { task.ext.when == null || task.ext.when script: - def threshold = meta.threshold ?: 10 - def taxonomic_level = meta.taxonomic_level ?: 'S' - def read_length = meta.read_length ?: 150 - def args = task.ext.args ?: "-l ${taxonomic_level} -t ${threshold} -r ${read_length}" + def args = task.ext.args ?: "" def prefix = task.ext.prefix ?: "${meta.id}" - bracken_report = "${prefix}_${taxonomic_level}.tsv" + bracken_report = "${prefix}.tsv" // WARN: Version information not provided by tool on CLI. // Please update version string below when bumping container versions. def VERSION = '2.7' diff --git a/modules/nf-core/bracken/bracken/meta.yml b/modules/nf-core/bracken/bracken/meta.yml index 1931161..4a05edd 100644 --- a/modules/nf-core/bracken/bracken/meta.yml +++ b/modules/nf-core/bracken/bracken/meta.yml @@ -1,7 +1,10 @@ name: bracken_bracken description: Re-estimate taxonomic abundance of metagenomic samples analyzed by kraken. keywords: - - sort + - bracken + - metagenomics + - abundance + - kraken2 tools: - bracken: description: Bracken (Bayesian Reestimation of Abundance with KrakEN) is a highly accurate statistical method that computes the abundance of species in DNA sequences from a metagenomics sample. From da3d2d96e6f04ee382ac63888fe1fbb2497d5abc Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Fri, 9 Dec 2022 10:27:50 +0100 Subject: [PATCH 516/789] Fix linting --- README.md | 2 +- modules.json | 117 ++++++++++++++++++++++++++++++++++----------------- 2 files changed, 79 insertions(+), 40 deletions(-) diff --git a/README.md b/README.md index 767fceb..3f45cba 100644 --- a/README.md +++ b/README.md @@ -54,7 +54,7 @@ On release, automated continuous integration tests run the pipeline on a full-si ## Quick Start -1. Install [`Nextflow`](https://www.nextflow.io/docs/latest/getstarted.html#installation) (`>=21.10.3`). +1. Install [`Nextflow`](https://www.nextflow.io/docs/latest/getstarted.html#installation) (`>=22.10.1`). 2. Install any of [`Docker`](https://docs.docker.com/engine/installation/), [`Singularity`](https://www.sylabs.io/guides/3.0/user-guide/) (you can follow [this tutorial](https://singularity-tutorial.github.io/01-installation/)), [`Podman`](https://podman.io/), [`Shifter`](https://nersc.gitlab.io/development/shifter/how-to-use/) or [`Charliecloud`](https://hpc.github.io/charliecloud/) for full pipeline reproducibility _(you can use [`Conda`](https://conda.io/miniconda.html) both to install Nextflow itself and also to manage software within pipelines. Please only use it within pipelines as a last resort; see [docs](https://nf-co.re/usage/configuration#basic-configuration-profiles))_. diff --git a/modules.json b/modules.json index fe1c8ac..377e902 100644 --- a/modules.json +++ b/modules.json @@ -7,35 +7,43 @@ "nf-core": { "adapterremoval": { "branch": "master", - "git_sha": "ce7cf27e377fdacf7ebe8e75903ec70405ea1659" + "git_sha": "ce7cf27e377fdacf7ebe8e75903ec70405ea1659", + "installed_by": ["modules"] }, "bbmap/bbduk": { "branch": "master", - "git_sha": "5e34754d42cd2d5d248ca8673c0a53cdf5624905" + "git_sha": "5e34754d42cd2d5d248ca8673c0a53cdf5624905", + "installed_by": ["modules"] }, "bowtie2/align": { "branch": "master", - "git_sha": "5e34754d42cd2d5d248ca8673c0a53cdf5624905" + "git_sha": "5e34754d42cd2d5d248ca8673c0a53cdf5624905", + "installed_by": ["modules"] }, "bowtie2/build": { "branch": "master", - "git_sha": "5e34754d42cd2d5d248ca8673c0a53cdf5624905" + "git_sha": "5e34754d42cd2d5d248ca8673c0a53cdf5624905", + "installed_by": ["modules"] }, "bracken/bracken": { "branch": "master", - "git_sha": "8cab56516076b23c6f8eb1ac20ba4ce9692c85e1" + "git_sha": "8cab56516076b23c6f8eb1ac20ba4ce9692c85e1", + "installed_by": ["modules"] }, "cat/fastq": { "branch": "master", - "git_sha": "5e34754d42cd2d5d248ca8673c0a53cdf5624905" + "git_sha": "5e34754d42cd2d5d248ca8673c0a53cdf5624905", + "installed_by": ["modules"] }, "centrifuge/centrifuge": { "branch": "master", - "git_sha": "5e34754d42cd2d5d248ca8673c0a53cdf5624905" + "git_sha": "5e34754d42cd2d5d248ca8673c0a53cdf5624905", + "installed_by": ["modules"] }, "centrifuge/kreport": { "branch": "master", - "git_sha": "5e34754d42cd2d5d248ca8673c0a53cdf5624905" + "git_sha": "5e34754d42cd2d5d248ca8673c0a53cdf5624905", + "installed_by": ["modules"] }, "custom/dumpsoftwareversions": { "branch": "master", @@ -44,23 +52,28 @@ }, "diamond/blastx": { "branch": "master", - "git_sha": "5e34754d42cd2d5d248ca8673c0a53cdf5624905" + "git_sha": "5e34754d42cd2d5d248ca8673c0a53cdf5624905", + "installed_by": ["modules"] }, "eido/convert": { "branch": "master", - "git_sha": "5e34754d42cd2d5d248ca8673c0a53cdf5624905" + "git_sha": "5e34754d42cd2d5d248ca8673c0a53cdf5624905", + "installed_by": ["modules"] }, "eido/validate": { "branch": "master", - "git_sha": "5e34754d42cd2d5d248ca8673c0a53cdf5624905" + "git_sha": "5e34754d42cd2d5d248ca8673c0a53cdf5624905", + "installed_by": ["modules"] }, "falco": { "branch": "master", - "git_sha": "fc959214036403ad83efe7a41d43d0606c445cda" + "git_sha": "fc959214036403ad83efe7a41d43d0606c445cda", + "installed_by": ["modules"] }, "fastp": { "branch": "master", - "git_sha": "1e49f31e93c56a3832833eef90a02d3cde5a3f7e" + "git_sha": "1e49f31e93c56a3832833eef90a02d3cde5a3f7e", + "installed_by": ["modules"] }, "fastqc": { "branch": "master", @@ -69,79 +82,98 @@ }, "filtlong": { "branch": "master", - "git_sha": "5e34754d42cd2d5d248ca8673c0a53cdf5624905" + "git_sha": "5e34754d42cd2d5d248ca8673c0a53cdf5624905", + "installed_by": ["modules"] }, "gunzip": { "branch": "master", - "git_sha": "5e34754d42cd2d5d248ca8673c0a53cdf5624905" + "git_sha": "5e34754d42cd2d5d248ca8673c0a53cdf5624905", + "installed_by": ["modules"] }, "kaiju/kaiju": { "branch": "master", - "git_sha": "5e34754d42cd2d5d248ca8673c0a53cdf5624905" + "git_sha": "5e34754d42cd2d5d248ca8673c0a53cdf5624905", + "installed_by": ["modules"] }, "kaiju/kaiju2krona": { "branch": "master", - "git_sha": "5e34754d42cd2d5d248ca8673c0a53cdf5624905" + "git_sha": "5e34754d42cd2d5d248ca8673c0a53cdf5624905", + "installed_by": ["modules"] }, "kaiju/kaiju2table": { "branch": "master", - "git_sha": "5e34754d42cd2d5d248ca8673c0a53cdf5624905" + "git_sha": "5e34754d42cd2d5d248ca8673c0a53cdf5624905", + "installed_by": ["modules"] }, "kraken2/kraken2": { "branch": "master", - "git_sha": "5e34754d42cd2d5d248ca8673c0a53cdf5624905" + "git_sha": "5e34754d42cd2d5d248ca8673c0a53cdf5624905", + "installed_by": ["modules"] }, "krakentools/combinekreports": { "branch": "master", - "git_sha": "5e34754d42cd2d5d248ca8673c0a53cdf5624905" + "git_sha": "5e34754d42cd2d5d248ca8673c0a53cdf5624905", + "installed_by": ["modules"] }, "krakentools/kreport2krona": { "branch": "master", - "git_sha": "5e34754d42cd2d5d248ca8673c0a53cdf5624905" + "git_sha": "5e34754d42cd2d5d248ca8673c0a53cdf5624905", + "installed_by": ["modules"] }, "krakenuniq/preloadedkrakenuniq": { "branch": "master", - "git_sha": "05649975c6611c6e007537a7984e186e12ae03af" + "git_sha": "05649975c6611c6e007537a7984e186e12ae03af", + "installed_by": ["modules"] }, "krona/ktimporttaxonomy": { "branch": "master", - "git_sha": "5e34754d42cd2d5d248ca8673c0a53cdf5624905" + "git_sha": "5e34754d42cd2d5d248ca8673c0a53cdf5624905", + "installed_by": ["modules"] }, "krona/ktimporttext": { "branch": "master", - "git_sha": "5e34754d42cd2d5d248ca8673c0a53cdf5624905" + "git_sha": "5e34754d42cd2d5d248ca8673c0a53cdf5624905", + "installed_by": ["modules"] }, "malt/run": { "branch": "master", - "git_sha": "6d9712f03ec2de8264a50ee4541a617e1e063b51" + "git_sha": "6d9712f03ec2de8264a50ee4541a617e1e063b51", + "installed_by": ["modules"] }, "megan/rma2info": { "branch": "master", - "git_sha": "5e34754d42cd2d5d248ca8673c0a53cdf5624905" + "git_sha": "5e34754d42cd2d5d248ca8673c0a53cdf5624905", + "installed_by": ["modules"] }, "metaphlan3/mergemetaphlantables": { "branch": "master", - "git_sha": "5e34754d42cd2d5d248ca8673c0a53cdf5624905" + "git_sha": "5e34754d42cd2d5d248ca8673c0a53cdf5624905", + "installed_by": ["modules"] }, "metaphlan3/metaphlan3": { "branch": "master", - "git_sha": "5e34754d42cd2d5d248ca8673c0a53cdf5624905" + "git_sha": "5e34754d42cd2d5d248ca8673c0a53cdf5624905", + "installed_by": ["modules"] }, "minimap2/align": { "branch": "master", - "git_sha": "5e34754d42cd2d5d248ca8673c0a53cdf5624905" + "git_sha": "5e34754d42cd2d5d248ca8673c0a53cdf5624905", + "installed_by": ["modules"] }, "minimap2/index": { "branch": "master", - "git_sha": "5e34754d42cd2d5d248ca8673c0a53cdf5624905" + "git_sha": "5e34754d42cd2d5d248ca8673c0a53cdf5624905", + "installed_by": ["modules"] }, "motus/merge": { "branch": "master", - "git_sha": "5e34754d42cd2d5d248ca8673c0a53cdf5624905" + "git_sha": "5e34754d42cd2d5d248ca8673c0a53cdf5624905", + "installed_by": ["modules"] }, "motus/profile": { "branch": "master", - "git_sha": "5e34754d42cd2d5d248ca8673c0a53cdf5624905" + "git_sha": "5e34754d42cd2d5d248ca8673c0a53cdf5624905", + "installed_by": ["modules"] }, "multiqc": { "branch": "master", @@ -150,31 +182,38 @@ }, "porechop/porechop": { "branch": "master", - "git_sha": "2a4e85eb81875a572bb58133e37f84ba3cc484d7" + "git_sha": "2a4e85eb81875a572bb58133e37f84ba3cc484d7", + "installed_by": ["modules"] }, "prinseqplusplus": { "branch": "master", - "git_sha": "5e34754d42cd2d5d248ca8673c0a53cdf5624905" + "git_sha": "5e34754d42cd2d5d248ca8673c0a53cdf5624905", + "installed_by": ["modules"] }, "samtools/bam2fq": { "branch": "master", - "git_sha": "5e34754d42cd2d5d248ca8673c0a53cdf5624905" + "git_sha": "5e34754d42cd2d5d248ca8673c0a53cdf5624905", + "installed_by": ["modules"] }, "samtools/index": { "branch": "master", - "git_sha": "5e34754d42cd2d5d248ca8673c0a53cdf5624905" + "git_sha": "5e34754d42cd2d5d248ca8673c0a53cdf5624905", + "installed_by": ["modules"] }, "samtools/stats": { "branch": "master", - "git_sha": "5e34754d42cd2d5d248ca8673c0a53cdf5624905" + "git_sha": "5e34754d42cd2d5d248ca8673c0a53cdf5624905", + "installed_by": ["modules"] }, "samtools/view": { "branch": "master", - "git_sha": "5e34754d42cd2d5d248ca8673c0a53cdf5624905" + "git_sha": "5e34754d42cd2d5d248ca8673c0a53cdf5624905", + "installed_by": ["modules"] }, "untar": { "branch": "master", - "git_sha": "5e34754d42cd2d5d248ca8673c0a53cdf5624905" + "git_sha": "5e34754d42cd2d5d248ca8673c0a53cdf5624905", + "installed_by": ["modules"] } } } From dca0b86c78a3f420f6858b44597c721ce87f3d86 Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Fri, 9 Dec 2022 10:28:48 +0100 Subject: [PATCH 517/789] Fix versions --- .github/workflows/ci.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 11dbf97..a26c28b 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -73,7 +73,7 @@ jobs: strategy: matrix: NXF_VER: - - "21.10.3" + - "22.10.1" - "latest-everything" steps: @@ -113,7 +113,7 @@ jobs: strategy: matrix: NXF_VER: - - "21.10.3" + - "22.10.1" - "latest-everything" steps: @@ -146,7 +146,7 @@ jobs: strategy: matrix: NXF_VER: - - "21.10.3" + - "22.10.1" - "latest-everything" steps: From 97fbc2bceb54cacc66f97eccdb250b58779442ee Mon Sep 17 00:00:00 2001 From: sofstam Date: Fri, 9 Dec 2022 12:58:51 +0100 Subject: [PATCH 518/789] Update usage.md --- docs/usage.md | 27 +++++++++++++++++++++++---- 1 file changed, 23 insertions(+), 4 deletions(-) diff --git a/docs/usage.md b/docs/usage.md index 8ec435a..36d3a8d 100644 --- a/docs/usage.md +++ b/docs/usage.md @@ -185,7 +185,7 @@ work # Directory containing the nextflow working files ### Sequencing quality control -nf-core taxprofiler offers [`falco`][https://github.com/smithlabcode/falco] as an alternative option to [`FastQC`](https://www.bioinformatics.babraham.ac.uk/projects/fastqc/). +nf-core taxprofiler offers [`falco`](https://github.com/smithlabcode/falco) as an alternative option to [`FastQC`](https://www.bioinformatics.babraham.ac.uk/projects/fastqc/). ### Preprocessing Steps @@ -202,14 +202,14 @@ Raw sequencing read processing in the form of adapter clipping and paired-end re It is highly recommended to run this on raw reads to remove artifacts from sequencing that can cause false positive identification of taxa (e.g. contaminated reference genomes) and/or skews in taxonomic abundance profiles. -There are currently two options for short-read preprocessing: `fastp` or `adapterremoval`. +There are currently two options for short-read preprocessing: [`fastp`](https://github.com/OpenGene/fastp) or [`adapterremoval`](https://github.com/MikkelSchubert/adapterremoval). For adapter clipping, you can either rely on tool default adapter sequences, or supply your own adapters (`--shortread_qc_adapter1` and `--shortread_qc_adapter2`) By default, paired-end merging is not activated and paired-end profiling is performed where supported otherwise pairs will be independently profiled. If paired-end merging is activated you can also specify whether to include unmerged reads in the reads sent for profiling (`--shortread_qc_mergepairs` and `--shortread_qc_includeunmerged`). You can also turn off clipping and only perform paired-end merging, if requested. This can be useful when processing data downloaded from the ENA, SRA, or DDBJ (`--shortread_qc_skipadaptertrim`). Both tools support length filtering of reads and can be tuned with `--shortread_qc_minlength`. Performing length filtering can be useful to remove short (often low sequencing complexity) sequences that result in unspecific classification and therefore slow down runtime during profiling, with minimal gain. -There is currently one option for long-read Oxford Nanopore processing: `porechop`. +There is currently one option for long-read Oxford Nanopore processing: [`porechop`](https://github.com/rrwick/Porechop). For both short-read and long-read preprocessing, you can optionally save the resulting processed reads with `--save_preprocessed_reads`. @@ -227,6 +227,8 @@ The tools offer different algorithms and parameters for removing low complexity You can optionally save the FASTQ output of the run merging with the `--save_complexityfiltered_reads`. If running with `fastp`, complexity filtering happens inclusively within the earlier shortread preprocessing step. Therefore there will not be an independent pipeline step for complexity filtering, and no independent FASTQ file (i.e. `--save_complexityfiltered_reads` will be ignored) - your complexity filtered reads will also be in the `fastp/` folder in the same file(s) as the preprocessed read. +**We do not any read preprocessing or complexity filtering if you are using ONTs Guppy toolkit for basecalling and post-processing.** + #### Host Removal Removal of possible-host reads from FASTQ files prior profiling can be activated with `--perform_shortread_hostremoval` or `--perform_longread_hostremoval`. @@ -480,7 +482,7 @@ NXF_OPTS='-Xms1g -Xmx4g' Kraken2 allows the user to build custom databases. You can follow Kraken2 [tutorial](https://github.com/DerrickWood/kraken2/blob/master/docs/MANUAL.markdown#custom-databases). #### Centrifuge -Centrifuge is similar to Kraken2 in that it enables to [build custom databases](https://ccb.jhu.edu/software/centrifuge/manual.shtml#custom-database). +Centrifuge allows the user to [build custom databases](https://ccb.jhu.edu/software/centrifuge/manual.shtml#custom-database). #### Kaiju It is possible to [create custom databases](https://github.com/bioinformatics-centre/kaiju#custom-database) with Kaiju. @@ -495,12 +497,29 @@ malt-build -i path/to/fasta/files/*.{fna,fa} -s DNA -d index -t 8 -st 4 -a2t meg ``` #### Bracken +You can follow Bracken [tutorial](https://ccb.jhu.edu/software/bracken/index.shtml?t=manual) to build a custom database. Alternatively, you can use one of the indexes that can be found [here](https://benlangmead.github.io/aws-indexes/k2). #### KrakenUniq +For KrakenUniq, we recommend using one of the available databases [here](https://benlangmead.github.io/aws-indexes/k2) #### DIAMOND +To create a custom database for DIAMOND, the user should download and unzip the NCBI's taxonomy files. The `makedb` needs to be executed afterwards. A detailed description can be found [here](https://gensoft.pasteur.fr/docs/diamond/0.8.22/diamond_manual.pdf) + +```bash +wget ftp://ftp.ncbi.nlm.nih.gov/pub/taxonomy/taxdmp.zip +unzip taxdmp.zip + +## warning: large file! +wget ftp://ftp.ncbi.nlm.nih.gov/pub/taxonomy/accession2taxid/prot.accession2taxid.FULL.gz + +## warning: takes a long time! +cat ../raw/*.faa | diamond makedb -d testdb-diamond --taxonmap prot.accession2taxid.FULL.gz --taxonnodes nodes.dmp --taxonnames names.dmp + +rm *dmp *txt *gz *prt *zip +``` #### mOTUs +A detailed description on how to download mOTUs database can be found [here](https://github.com/motu-tool/mOTUs) ## Troubleshooting and FAQs From a622dcaef0f94e30c5062de114f6ef34f7114f06 Mon Sep 17 00:00:00 2001 From: Sofia Stamouli <91951607+sofstam@users.noreply.github.com> Date: Fri, 9 Dec 2022 13:59:37 +0100 Subject: [PATCH 519/789] Delete one line --- docs/usage.md | 1 - 1 file changed, 1 deletion(-) diff --git a/docs/usage.md b/docs/usage.md index 6ad005c..8f6d776 100644 --- a/docs/usage.md +++ b/docs/usage.md @@ -162,7 +162,6 @@ Expected (uncompressed) database files for each tool are as follows: with same release version of the mOTUs tools. The database for same version tools can be thus reused for multiple runs. Users can download the database once using the script above and specify the path the database to the TSV table provided to `--databases`. -- **KrakenUniq** WIP ## Running the pipeline From c5f4c9486acbcea695a49d048403ae3cb5d91790 Mon Sep 17 00:00:00 2001 From: sofstam Date: Fri, 9 Dec 2022 15:30:11 +0100 Subject: [PATCH 520/789] Start the documentation of output.md --- docs/output.md | 70 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 70 insertions(+) diff --git a/docs/output.md b/docs/output.md index 177ca20..cbfb011 100644 --- a/docs/output.md +++ b/docs/output.md @@ -13,6 +13,13 @@ The directories listed below will be created in the results directory after the The pipeline is built using [Nextflow](https://www.nextflow.io/) and processes data using the following steps: - [FastQC](#fastqc) - Raw read QC +- [falco](#falco) - Alternative to FastQC for raw read QC +- [fastp](#fastp) - Adapter trimming for Illumina data +- [AdapterRemoval](#adapterremoval) - Adapter trimming for Illumina data +- [Porechop](#porechop) - Adapter removal for Oxford Nanopore data +- [BBDuk](#bbduk) - Quality trimming and filtering for Illumina data +- [PRINSEQ++](#prinseq++) - Quality trimming and filtering for Illunina data +- [Filtlong](#filtlong) - Quality trimming and filtering for Nanopore data - [MultiQC](#multiqc) - Aggregate report describing results and QC from the whole pipeline - [Pipeline information](#pipeline-information) - Report metrics generated during the workflow execution @@ -37,6 +44,69 @@ The pipeline is built using [Nextflow](https://www.nextflow.io/) and processes d > **NB:** The FastQC plots displayed in the MultiQC report shows _untrimmed_ reads. They may contain adapter sequence and potentially regions with low quality. +### fastp + +fastp can automatically detect adapter sequences for Illumina data. + +
    +Output files + +- `fastp` + +
    + +### AdapterRemoval + +
    +Output files + +- `adapterremoval` + +
    + +### Porechop + +
    +Output files + +- `porechop` + - `.fastq.gz` + +
    + +### BBDuk + +
    +Output files + +- `bbduk` + - `.bbduk.log` + - `.fastq.gz` + +
    + +### PRINSEQ++ + +
    +Output files + +- `prinseq++` + +
    + +### Filtlong + +
    +Output files + +- `filtlong` + - `_filtered.fastq.g` + - `_filtered.log` + +
    + + + ### MultiQC
    From 98f3ab9fd1ba0e9a8c1bf5adcf5b5dd8bb7993f1 Mon Sep 17 00:00:00 2001 From: Sofia Stamouli Date: Fri, 9 Dec 2022 15:35:51 +0100 Subject: [PATCH 521/789] Apply prettier --- docs/usage.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/docs/usage.md b/docs/usage.md index 8f6d776..d17d168 100644 --- a/docs/usage.md +++ b/docs/usage.md @@ -484,15 +484,19 @@ NXF_OPTS='-Xms1g -Xmx4g' ### Tutorial - How to create your custom database #### Kraken2 + Kraken2 allows the user to build custom databases. You can follow Kraken2 [tutorial](https://github.com/DerrickWood/kraken2/blob/master/docs/MANUAL.markdown#custom-databases). #### Centrifuge + Centrifuge allows the user to [build custom databases](https://ccb.jhu.edu/software/centrifuge/manual.shtml#custom-database). #### Kaiju + It is possible to [create custom databases](https://github.com/bioinformatics-centre/kaiju#custom-database) with Kaiju. #### MALT + To create a custom database for MALT, the user should download and unzip the following database which lists all NCBI records. The input files are specified using -i and the index is specified using -d. A detailed description for each argument can be found [here](https://software-ab.informatik.uni-tuebingen.de/download/malt/manual.pdf) ```bash @@ -502,12 +506,15 @@ malt-build -i path/to/fasta/files/*.{fna,fa} -s DNA -d index -t 8 -st 4 -a2t meg ``` #### Bracken + You can follow Bracken [tutorial](https://ccb.jhu.edu/software/bracken/index.shtml?t=manual) to build a custom database. Alternatively, you can use one of the indexes that can be found [here](https://benlangmead.github.io/aws-indexes/k2). #### KrakenUniq + For KrakenUniq, we recommend using one of the available databases [here](https://benlangmead.github.io/aws-indexes/k2) #### DIAMOND + To create a custom database for DIAMOND, the user should download and unzip the NCBI's taxonomy files. The `makedb` needs to be executed afterwards. A detailed description can be found [here](https://gensoft.pasteur.fr/docs/diamond/0.8.22/diamond_manual.pdf) ```bash @@ -524,6 +531,7 @@ rm *dmp *txt *gz *prt *zip ``` #### mOTUs + A detailed description on how to download mOTUs database can be found [here](https://github.com/motu-tool/mOTUs) ## Troubleshooting and FAQs From 6d0b5d0a58d92fabfc239818f272bb06cfeb1e66 Mon Sep 17 00:00:00 2001 From: Sofia Stamouli Date: Fri, 9 Dec 2022 15:38:59 +0100 Subject: [PATCH 522/789] Prettier --- docs/output.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/docs/output.md b/docs/output.md index cbfb011..459d3a2 100644 --- a/docs/output.md +++ b/docs/output.md @@ -105,8 +105,6 @@ fastp can automatically detect adapter sequences for Illumina data.
    - - ### MultiQC
    From b35d26744ddc07310457d69cd0ae151bb6ab83cf Mon Sep 17 00:00:00 2001 From: sofstam Date: Fri, 9 Dec 2022 17:11:48 +0100 Subject: [PATCH 523/789] Add classifiers --- docs/output.md | 75 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 75 insertions(+) diff --git a/docs/output.md b/docs/output.md index cbfb011..e07d659 100644 --- a/docs/output.md +++ b/docs/output.md @@ -20,6 +20,13 @@ The pipeline is built using [Nextflow](https://www.nextflow.io/) and processes d - [BBDuk](#bbduk) - Quality trimming and filtering for Illumina data - [PRINSEQ++](#prinseq++) - Quality trimming and filtering for Illunina data - [Filtlong](#filtlong) - Quality trimming and filtering for Nanopore data +- [Bowtie2](#bowtie2) - Host removal for Illumina reads +- [minimap2](#minimap2) - Host removal for Nanopore reads +- [samtoolsstats](#samtoolsstats) - Statistics from host removal +- [cat] - **WIP** +- [Kraken2](#kraken2) - Taxonomic classifier using exact k-mer matches +- [KrakenUniq](#krakenuniq) - Taxonomic classifier that combines the k-mer-based classification and the number of unique k-mers found in each species +- [Bracken](#bracken) - - [MultiQC](#multiqc) - Aggregate report describing results and QC from the whole pipeline - [Pipeline information](#pipeline-information) - Report metrics generated during the workflow execution @@ -105,6 +112,74 @@ fastp can automatically detect adapter sequences for Illumina data.
    +### Bowtie2 + +
    +Output files + +- `bowtie2` + - `.bam` + - `.bowtie2.log` + - `.unmapped.fastq.gz` + +
    + +### minimap2 + +
    +Output files + +- `minimap2` + - `.bam` + +
    + +### Samtools stats + +
    +Output files + +- `samtoolsstats` + - `.stats` + +
    + +### cat + +
    +Output files + +- `cat` + +
    + +### Kraken2 + +
    +Output files + +- `kraken2` + - `.classified.fastq.gz` + - `.unclassified.fastq.gz` + - `.report.txt` + - `.classifiedreads.txt` + +
    + +### KrakenUniq + +
    +Output files + +- `krakenuniq` + - `.classified.fastq.gz` + - `.krakenuniq.classified.txt` + - `.krakenuniq.report.txt` + - `.unclassified.fastq.gz` + + ## interleaved? + +
    ### MultiQC From 8939ce3e2088a7ba89c0fdbf29901e98df4e231f Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Sun, 11 Dec 2022 16:52:34 +0100 Subject: [PATCH 524/789] Start adding bracken/combinebrackenreports (need smodule update) --- conf/modules.config | 9 +++++ modules.json | 5 +++ .../bracken/combinebrackenoutputs/main.nf | 36 +++++++++++++++++++ .../bracken/combinebrackenoutputs/meta.yml | 31 ++++++++++++++++ .../local/standardisation_profiles.nf | 19 ++++++++-- 5 files changed, 97 insertions(+), 3 deletions(-) create mode 100644 modules/nf-core/bracken/combinebrackenoutputs/main.nf create mode 100644 modules/nf-core/bracken/combinebrackenoutputs/meta.yml diff --git a/conf/modules.config b/conf/modules.config index dd85c0c..a8bf3e8 100644 --- a/conf/modules.config +++ b/conf/modules.config @@ -321,6 +321,15 @@ process { ] } + withName: BRACKEN_COMBINEBRACKENOUTPUTS { + ext.prefix = { "bracken_${meta.id}_combined_reports" } + publishDir = [ + path: { "${params.outdir}/bracken/" }, + mode: params.publish_dir_mode, + pattern: '*.{txt}' + ] + } + withName: KRAKENTOOLS_COMBINEKREPORTS { ext.prefix = { "kraken2_${meta.id}_combined_reports" } publishDir = [ diff --git a/modules.json b/modules.json index 377e902..7815f5d 100644 --- a/modules.json +++ b/modules.json @@ -30,6 +30,11 @@ "git_sha": "8cab56516076b23c6f8eb1ac20ba4ce9692c85e1", "installed_by": ["modules"] }, + "bracken/combinebrackenoutputs": { + "branch": "master", + "git_sha": "5e34754d42cd2d5d248ca8673c0a53cdf5624905", + "installed_by": ["modules"] + }, "cat/fastq": { "branch": "master", "git_sha": "5e34754d42cd2d5d248ca8673c0a53cdf5624905", diff --git a/modules/nf-core/bracken/combinebrackenoutputs/main.nf b/modules/nf-core/bracken/combinebrackenoutputs/main.nf new file mode 100644 index 0000000..73b7148 --- /dev/null +++ b/modules/nf-core/bracken/combinebrackenoutputs/main.nf @@ -0,0 +1,36 @@ +process BRACKEN_COMBINEBRACKENOUTPUTS { + label 'process_low' + + conda (params.enable_conda ? "bioconda::bracken=2.7" : null) + container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? + 'https://depot.galaxyproject.org/singularity/bracken:2.7--py39hc16433a_0': + 'quay.io/biocontainers/bracken:2.7--py39hc16433a_0' }" + + input: + path input + + output: + path "*.txt" , emit: txt + path "versions.yml", emit: versions + + when: + task.ext.when == null || task.ext.when + + script: + def args = task.ext.args ?: '' + def prefix = task.ext.prefix ?: "bracken_combined.txt" + // WARN: Version information not provided by tool on CLI. + // Please update version string below when bumping container versions. + def VERSION = '2.7' + """ + combine_bracken_outputs.py \\ + $args \\ + --files ${input} \\ + -o ${prefix} + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + combine_bracken_output: ${VERSION} + END_VERSIONS + """ +} diff --git a/modules/nf-core/bracken/combinebrackenoutputs/meta.yml b/modules/nf-core/bracken/combinebrackenoutputs/meta.yml new file mode 100644 index 0000000..c4a9712 --- /dev/null +++ b/modules/nf-core/bracken/combinebrackenoutputs/meta.yml @@ -0,0 +1,31 @@ +name: "bracken_combinebrackenoutputs" +description: Combine output of metagenomic samples analyzed by bracken. +keywords: + - sort +tools: + - "bracken": + description: Bracken (Bayesian Reestimation of Abundance with KrakEN) is a highly accurate statistical method that computes the abundance of species in DNA sequences from a metagenomics sample. + homepage: https://ccb.jhu.edu/software/bracken/ + documentation: https://ccb.jhu.edu/software/bracken/index.shtml?t=manual + tool_dev_url: https://github.com/jenniferlu717/Bracken + doi: "10.7717/peerj-cs.104" + licence: ["GPL v3"] + +input: + - input: + type: file + description: List of output files from bracken + pattern: "*" + +output: + - versions: + type: file + description: File containing software versions + pattern: "versions.yml" + - txt: + type: file + description: Combined output in table format + pattern: "*.txt" + +authors: + - "@jfy133" diff --git a/subworkflows/local/standardisation_profiles.nf b/subworkflows/local/standardisation_profiles.nf index 8c73472..582aaed 100644 --- a/subworkflows/local/standardisation_profiles.nf +++ b/subworkflows/local/standardisation_profiles.nf @@ -2,6 +2,7 @@ // Standardise output files e.g. aggregation // +include { BRACKEN_COMBINEBRACKENOUTPUTS } from '../../modules/nf-core/bracken/combinebrackenoutputs/main' include { KAIJU_KAIJU2TABLE } from '../../modules/nf-core/kaiju/kaiju2table/main' include { KRAKENTOOLS_COMBINEKREPORTS as KRAKENTOOLS_COMBINEKREPORTS_KRAKEN } from '../../modules/nf-core/krakentools/combinekreports/main' include { KRAKENTOOLS_COMBINEKREPORTS as KRAKENTOOLS_COMBINEKREPORTS_CENTRIFUGE } from '../../modules/nf-core/krakentools/combinekreports/main' @@ -25,10 +26,11 @@ workflow STANDARDISATION_PROFILES { */ ch_input_profiles = profiles .branch { - motus: it[0]['tool'] == 'motus' - kraken2: it[0]['tool'] == 'kraken2' + bracken: it[0]['tool'] == 'bracken' centrifuge: it[0]['tool'] == 'centrifuge' + kraken2: it[0]['tool'] == 'kraken2' metaphlan3: it[0]['tool'] == 'metaphlan3' + motus: it[0]['tool'] == 'motus' unknown: true } @@ -49,7 +51,18 @@ workflow STANDARDISATION_PROFILES { Standardise and aggregate */ - // CENTRIFUGE + // Bracken + + ch_profiles_for_bracken = ch_input_profiles.bracken + .map { [it[0]['db_name'], it[1]] } + .groupTuple() + .map { + [[id:it[0]], it[1]] + } + + BRACKEN_COMBINEBRACKENOUTPUTS ( ch_profiles_for_bracken ) + + // CENTRIFUGE // Collect and replace id for db_name for prefix // Have to sort by size to ensure first file actually has hits otherwise From 4b68e957702e2b3e68ed1cdfe91049b580498ad7 Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Mon, 12 Dec 2022 08:49:13 +0100 Subject: [PATCH 525/789] Revert PEP validation back to python samplesheet check --- README.md | 2 - assets/samplesheet_schema.yaml | 55 ------ bin/check_samplesheet.py | 236 +++++++++++++++++++++++++ conf/modules.config | 8 - conf/test.config | 6 - conf/test_krakenuniq.config | 6 - conf/test_pep.config | 45 ----- docs/usage.md | 7 - lib/WorkflowMain.groovy | 2 +- modules.json | 10 -- modules/local/samplesheet_check.nf | 27 +++ modules/nf-core/eido/convert/main.nf | 38 ---- modules/nf-core/eido/convert/meta.yml | 39 ---- modules/nf-core/eido/validate/main.nf | 33 ---- modules/nf-core/eido/validate/meta.yml | 41 ----- nextflow.config | 1 - subworkflows/local/input_check.nf | 42 +---- workflows/taxprofiler.nf | 5 +- 18 files changed, 275 insertions(+), 328 deletions(-) delete mode 100644 assets/samplesheet_schema.yaml create mode 100755 bin/check_samplesheet.py delete mode 100644 conf/test_pep.config create mode 100644 modules/local/samplesheet_check.nf delete mode 100644 modules/nf-core/eido/convert/main.nf delete mode 100644 modules/nf-core/eido/convert/meta.yml delete mode 100644 modules/nf-core/eido/validate/main.nf delete mode 100644 modules/nf-core/eido/validate/meta.yml diff --git a/README.md b/README.md index 3f45cba..ba4022f 100644 --- a/README.md +++ b/README.md @@ -77,8 +77,6 @@ On release, automated continuous integration tests run the pipeline on a full-si nextflow run nf-core/taxprofiler --input samplesheet.csv --databases database.csv --outdir --run_ --run_ -profile ``` -Note pipeline supports both CSV and PEP input sample sheets. Find out more [here](http://pep.databio.org/en/2.1.0/specification/). - ## Documentation The nf-core/taxprofiler pipeline comes with documentation about the pipeline [usage](https://nf-co.re/taxprofiler/usage), [parameters](https://nf-co.re/taxprofiler/parameters) and [output](https://nf-co.re/taxprofiler/output). diff --git a/assets/samplesheet_schema.yaml b/assets/samplesheet_schema.yaml deleted file mode 100644 index 88ff451..0000000 --- a/assets/samplesheet_schema.yaml +++ /dev/null @@ -1,55 +0,0 @@ -description: A schema for validation of samplesheet.csv for taxprofiler pipeline. -imports: - - https://schema.databio.org/pep/2.1.0.yaml -properties: - samples: - type: array - items: - type: object - properties: - sample: - type: string - description: "Sample identifier." - pattern: "^\\S*$" - run_accession: - type: string - description: "Run accession number." - instrument_platform: - type: string - description: "Name of the platform that sequenced the samples." - enum: - [ - "ABI_SOLID", - "BGISEQ", - "CAPILLARY", - "COMPLETE_GENOMICS", - "DNBSEQ", - "HELICOS", - "ILLUMINA", - "ION_TORRENT", - "LS454", - "OXFORD_NANOPORE", - "PACBIO_SMRT", - ] - fastq1: - type: ["string", "null"] - description: "Optional FASTQ file for read 1 of paired-end sequenced libraries." - pattern: "^[\\S]+.(fq\\.gz|fastq\\.gz)$" - fastq2: - type: ["string", "null"] - description: "Optional FASTQ file for read 2 of paired-end sequenced libraries." - pattern: "^[\\S]+.(fq\\.gz|fastq\\.gz)$" - fasta: - type: ["string", "null"] - description: "Optional FASTA file." - pattern: "^[\\S]+.(fa\\.gz|fasta\\.gz)$" - required: - - sample - - run_accession - - instrument_platform - files: - - fastq1 - - fastq2 - - fasta -required: - - samples diff --git a/bin/check_samplesheet.py b/bin/check_samplesheet.py new file mode 100755 index 0000000..ca54ed9 --- /dev/null +++ b/bin/check_samplesheet.py @@ -0,0 +1,236 @@ +#!/usr/bin/env python + +from distutils import extension +import os +import sys +import errno +import argparse + + +def parse_args(args=None): + Description = "Reformat nf-core/taxprofiler samplesheet file and check its contents." + + Epilog = "Example usage: python check_samplesheet.py " + + parser = argparse.ArgumentParser(description=Description, epilog=Epilog) + parser.add_argument("FILE_IN", help="Input samplesheet file.") + parser.add_argument("FILE_OUT", help="Output file.") + return parser.parse_args(args) + + +def make_dir(path): + if len(path) > 0: + try: + os.makedirs(path) + except OSError as exception: + if exception.errno != errno.EEXIST: + raise exception + + +def print_error(error, context="Line", context_str=""): + error_str = "ERROR: Please check samplesheet -> {}".format(error) + if context != "" and context_str != "": + error_str = "ERROR: Please check samplesheet -> {}\n{}: '{}'".format( + error, context.strip(), context_str.strip() + ) + print(error_str) + sys.exit(1) + + +def check_samplesheet(file_in, file_out): + """ + This function checks that the samplesheet follows the following structure: + + sample,run_accession,instrument_platform,fastq_1,fastq_2,fasta + 2611,ERR5766174,ILLUMINA,,,ERX5474930_ERR5766174_1.fa.gz + 2612,ERR5766176,ILLUMINA,ERX5474932_ERR5766176_1.fastq.gz,ERX5474932_ERR5766176_2.fastq.gz, + 2612,ERR5766174,ILLUMINA,ERX5474936_ERR5766180_1.fastq.gz,, + 2613,ERR5766181,ILLUMINA,ERX5474937_ERR5766181_1.fastq.gz,ERX5474937_ERR5766181_2.fastq.gz, + """ + + FQ_EXTENSIONS = (".fq.gz", ".fastq.gz") + FA_EXTENSIONS = ( + ".fa", + ".fa.gz", + ".fasta", + ".fasta.gz", + ".fna", + ".fna.gz", + ".fas", + ".fas.gz", + ) + INSTRUMENT_PLATFORMS = [ + "ABI_SOLID", + "BGISEQ", + "CAPILLARY", + "COMPLETE_GENOMICS", + "DNBSEQ", + "HELICOS", + "ILLUMINA", + "ION_TORRENT", + "LS454", + "OXFORD_NANOPORE", + "PACBIO_SMRT", + ] + + sample_mapping_dict = {} + with open(file_in, "r") as fin: + + ## Check header + MIN_COLS = 4 + HEADER = [ + "sample", + "run_accession", + "instrument_platform", + "fastq_1", + "fastq_2", + "fasta", + ] + header = [x.strip('"') for x in fin.readline().strip().split(",")] + + ## Check for missing mandatory columns + missing_columns = list(set(HEADER) - set(header)) + if len(missing_columns) > 0: + print( + "ERROR: Missing required column header -> {}. Note some columns can otherwise be empty. See pipeline documentation (https://nf-co.re/taxprofiler/usage).".format( + ",".join(missing_columns) + ) + ) + sys.exit(1) + + ## Find locations of mandatory columns + header_locs = {} + for i in HEADER: + header_locs[i] = header.index(i) + + ## Check sample entries + for line in fin: + + ## Pull out only relevant columns for downstream checking + line_parsed = [x.strip().strip('"') for x in line.strip().split(",")] + lspl = [line_parsed[i] for i in header_locs.values()] + + # Check valid number of columns per row + if len(lspl) < len(HEADER): + print_error( + "Invalid number of columns (minimum = {})!".format(len(HEADER)), + "Line", + line, + ) + num_cols = len([x for x in lspl if x]) + if num_cols < MIN_COLS: + print_error( + "Invalid number of populated columns (minimum = {})!".format(MIN_COLS), + "Line", + line, + ) + + ## Check sample name entries + + ( + sample, + run_accession, + instrument_platform, + fastq_1, + fastq_2, + fasta, + ) = lspl[: len(HEADER)] + sample = sample.replace(" ", "_") + if not sample: + print_error("Sample entry has not been specified!", "Line", line) + + ## Check FastQ file extension + for fastq in [fastq_1, fastq_2]: + if fastq: + if fastq.find(" ") != -1: + print_error("FastQ file contains spaces!", "Line", line) + if not fastq.endswith(FQ_EXTENSIONS): + print_error( + f"FastQ file does not have extension {' or '.join(list(FQ_EXTENSIONS))} !", + "Line", + line, + ) + if fasta: + if fasta.find(" ") != -1: + print_error("FastA file contains spaces!", "Line", line) + if not fasta.endswith(FA_EXTENSIONS): + print_error( + f"FastA file does not have extension {' or '.join(list(FA_EXTENSIONS))}!", + "Line", + line, + ) + sample_info = [] + + # Check run_accession + if not run_accession: + print_error("Run accession has not been specified!", "Line", line) + else: + sample_info.append(run_accession) + + # Check instrument_platform + if not instrument_platform: + print_error("Instrument platform has not been specified!", "Line", line) + else: + if instrument_platform not in INSTRUMENT_PLATFORMS: + print_error( + f"Instrument platform {instrument_platform} is not supported!", + f"List of supported platforms {', '.join(INSTRUMENT_PLATFORMS)}", + "Line", + line, + ) + sample_info.append(instrument_platform) + + ## Auto-detect paired-end/single-end + if sample and fastq_1 and fastq_2: ## Paired-end short reads + sample_info.extend(["0", fastq_1, fastq_2, fasta]) + elif sample and fastq_1 and not fastq_2: ## Single-end short/long fastq reads + sample_info.extend(["1", fastq_1, fastq_2, fasta]) + elif sample and fasta and not fastq_1 and not fastq_2: ## Single-end long reads + sample_info.extend(["1", fastq_1, fastq_2, fasta]) + elif fasta and (fastq_1 or fastq_2): + print_error( + "FastQ and FastA files cannot be specified together in the same library!", + "Line", + line, + ) + else: + print_error("Invalid combination of columns provided!", "Line", line) + + ## Create sample mapping dictionary = { sample: [ run_accession, instrument_platform, single_end, fastq_1, fastq_2 , fasta ] } + if sample not in sample_mapping_dict: + sample_mapping_dict[sample] = [sample_info] + else: + if sample_info in sample_mapping_dict[sample]: + print_error("Samplesheet contains duplicate rows!", "Line", line) + else: + sample_mapping_dict[sample].append(sample_info) + + ## Write validated samplesheet with appropriate columns + HEADER_OUT = [ + "sample", + "run_accession", + "instrument_platform", + "single_end", + "fastq_1", + "fastq_2", + "fasta", + ] + if len(sample_mapping_dict) > 0: + out_dir = os.path.dirname(file_out) + make_dir(out_dir) + with open(file_out, "w") as fout: + fout.write(",".join(HEADER_OUT) + "\n") + for sample in sorted(sample_mapping_dict.keys()): + for idx, val in enumerate(sample_mapping_dict[sample]): + fout.write(f"{sample},{','.join(val)}\n") + else: + print_error("No entries to process!", "Samplesheet: {}".format(file_in)) + + +def main(args=None): + args = parse_args(args) + check_samplesheet(args.FILE_IN, args.FILE_OUT) + + +if __name__ == "__main__": + sys.exit(main()) diff --git a/conf/modules.config b/conf/modules.config index dd85c0c..d84102c 100644 --- a/conf/modules.config +++ b/conf/modules.config @@ -495,12 +495,4 @@ process { saveAs: { filename -> filename.equals('versions.yml') ? null : filename } ] } - - withName: 'EIDO_VALIDATE' { - ext.args = '--st-index sample' - } - - withName: 'EIDO_CONVERT' { - ext.args = '--st-index sample' - } } diff --git a/conf/test.config b/conf/test.config index db9f81d..275e5a0 100644 --- a/conf/test.config +++ b/conf/test.config @@ -60,10 +60,4 @@ process { withName: MEGAN_RMA2INFO_KRONA { maxForks = 1 } - withName: 'EIDO_VALIDATE' { - ext.args = '--st-index sample' - } - withName: 'EIDO_CONVERT' { - ext.args = '--st-index sample' - } } diff --git a/conf/test_krakenuniq.config b/conf/test_krakenuniq.config index 67b559e..7ba18fa 100644 --- a/conf/test_krakenuniq.config +++ b/conf/test_krakenuniq.config @@ -63,10 +63,4 @@ process { withName: MEGAN_RMA2INFO_KRONA { maxForks = 1 } - withName: 'EIDO_VALIDATE' { - ext.args = '--st-index sample' - } - withName: 'EIDO_CONVERT' { - ext.args = '--st-index sample' - } } diff --git a/conf/test_pep.config b/conf/test_pep.config deleted file mode 100644 index 6ce788d..0000000 --- a/conf/test_pep.config +++ /dev/null @@ -1,45 +0,0 @@ -params { - config_profile_name = 'Test PEP profile' - config_profile_description = 'Minimal test dataset to check pipeline function with PEP file as an input.' - - // Limit resources so that this can run on GitHub Actions - max_cpus = 2 - max_memory = '6.GB' - max_time = '6.h' - - // Input data - input = 'https://raw.githubusercontent.com/nf-core/test-datasets/modules/data/delete_me/pep/test_pep_format_files/config.yaml' - databases = 'https://raw.githubusercontent.com/nf-core/test-datasets/taxprofiler/database.csv' - perform_shortread_qc = true - perform_longread_qc = true - perform_shortread_complexityfilter = true - perform_shortread_hostremoval = true - perform_longread_hostremoval = true - perform_runmerging = true - hostremoval_reference = 'https://raw.githubusercontent.com/nf-core/test-datasets/modules/data/genomics/homo_sapiens/genome/genome.fasta' - run_kaiju = true - run_kraken2 = true - run_bracken = true - run_malt = true - run_metaphlan3 = true - run_centrifuge = true - run_diamond = true - run_motus = false - run_krona = true - krona_taxonomy_directory = 'https://raw.githubusercontent.com/nf-core/test-datasets/modules/data/genomics/sarscov2/metagenome/krona_taxonomy.tab' - malt_save_reads = true - kraken2_save_reads = true - centrifuge_save_reads = true - diamond_save_reads = true -} - - -process { - withName: MALT_RUN { - maxForks = 1 - ext.args = { "-m ${params.malt_mode} -J-Xmx12G" } - } - withName: MEGAN_RMA2INFO { - maxForks = 1 - } -} diff --git a/docs/usage.md b/docs/usage.md index f748764..685c3e3 100644 --- a/docs/usage.md +++ b/docs/usage.md @@ -22,10 +22,6 @@ This samplesheet is then specified on the command line as follows: --input '[path to samplesheet file]' --databases '[path to database sheet file]' ``` -Note pipeline supports both CSV and PEP input sample sheets. Find out more [here](http://pep.databio.org/en/2.1.0/specification/). -When using PEP as an input, the `samplesheet.csv` must be placed in the same folder -as `config.yaml` file. A path to `samplesheet.csv` within the config must be absolute. - ### Multiple runs of the same sample The `sample` identifiers have to be the same when you have re-sequenced the same sample more than once e.g. to increase sequencing depth. The pipeline will concatenate different runs FASTQ files of the same sample before performing profiling, when `--perform_runmerging` is supplied. Below is an example for the same sample sequenced across 3 lanes: @@ -312,9 +308,6 @@ If `-profile` is not specified, the pipeline will run locally and expect all sof - `test` - A profile with a complete configuration for automated testing - Includes links to test data so needs no other parameters -- `test_pep` - - A profile with a complete configuration for running a pipeline with PEP as input - - Includes links to test data so needs no other parameters - `docker` - A generic configuration profile to be used with [Docker](https://docker.com/) - `singularity` diff --git a/lib/WorkflowMain.groovy b/lib/WorkflowMain.groovy index 93d2af3..f0107fb 100755 --- a/lib/WorkflowMain.groovy +++ b/lib/WorkflowMain.groovy @@ -81,7 +81,7 @@ class WorkflowMain { // Check input has been provided if (!params.input) { - log.error "Please provide an input samplesheet or PEP to the pipeline e.g. '--input samplesheet.csv'" + log.error "Please provide an input samplesheet to the pipeline e.g. '--input samplesheet.csv'" System.exit(1) } } diff --git a/modules.json b/modules.json index 377e902..286ab88 100644 --- a/modules.json +++ b/modules.json @@ -55,16 +55,6 @@ "git_sha": "5e34754d42cd2d5d248ca8673c0a53cdf5624905", "installed_by": ["modules"] }, - "eido/convert": { - "branch": "master", - "git_sha": "5e34754d42cd2d5d248ca8673c0a53cdf5624905", - "installed_by": ["modules"] - }, - "eido/validate": { - "branch": "master", - "git_sha": "5e34754d42cd2d5d248ca8673c0a53cdf5624905", - "installed_by": ["modules"] - }, "falco": { "branch": "master", "git_sha": "fc959214036403ad83efe7a41d43d0606c445cda", diff --git a/modules/local/samplesheet_check.nf b/modules/local/samplesheet_check.nf new file mode 100644 index 0000000..dea4362 --- /dev/null +++ b/modules/local/samplesheet_check.nf @@ -0,0 +1,27 @@ +process SAMPLESHEET_CHECK { + tag "$samplesheet" + + conda (params.enable_conda ? "conda-forge::python=3.8.3" : null) + container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? + 'https://depot.galaxyproject.org/singularity/python:3.8.3' : + 'quay.io/biocontainers/python:3.8.3' }" + + input: + path samplesheet + + output: + path '*.csv' , emit: csv + path "versions.yml", emit: versions + + script: // This script is bundled with the pipeline, in nf-core/taxprofiler/bin/ + """ + check_samplesheet.py \\ + $samplesheet \\ + samplesheet.valid.csv + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + python: \$(python --version | sed 's/Python //g') + END_VERSIONS + """ +} diff --git a/modules/nf-core/eido/convert/main.nf b/modules/nf-core/eido/convert/main.nf deleted file mode 100644 index 7ec4b8c..0000000 --- a/modules/nf-core/eido/convert/main.nf +++ /dev/null @@ -1,38 +0,0 @@ -process EIDO_CONVERT { - tag "$samplesheet" - label 'process_single' - - conda (params.enable_conda ? "conda-forge::eido=0.1.9" : null) - container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://containers.biocontainers.pro/s3/SingImgsRepo/eido/0.1.9_cv1/eido_0.1.9_cv1.sif' : - 'biocontainers/eido:0.1.9_cv1' }" - - input: - path samplesheet - val format - path pep_input_base_dir - - output: - path "versions.yml" , emit: versions - path "${prefix}.${format}" , emit: samplesheet_converted - - when: - task.ext.when == null || task.ext.when - - script: - def args = task.ext.args ?: '' - prefix = task.ext.prefix ?: "samplesheet_converted" - """ - eido \\ - convert \\ - -f $format \\ - $samplesheet \\ - $args \\ - -p samples=${prefix}.${format} - - cat <<-END_VERSIONS > versions.yml - "${task.process}": - eido: \$(echo \$(eido --version 2>&1) | sed 's/^.*eido //;s/ .*//' )) - END_VERSIONS - """ -} diff --git a/modules/nf-core/eido/convert/meta.yml b/modules/nf-core/eido/convert/meta.yml deleted file mode 100644 index bd12e03..0000000 --- a/modules/nf-core/eido/convert/meta.yml +++ /dev/null @@ -1,39 +0,0 @@ -name: "eido_convert" -description: Convert any PEP project or Nextflow samplesheet to any format -keywords: - - eido - - convert - - PEP - - format - - samplesheet -tools: - - "eido": - description: "Convert any PEP project or Nextflow samplesheet to any format" - homepage: "http://eido.databio.org/en/latest/" - documentation: "http://eido.databio.org/en/latest/" - doi: "10.1093/gigascience/giab077" - licence: "BSD-2-Clause" - -input: - - samplesheet: - type: file - description: Nextflow samplesheet or PEP project - pattern: "*.{yaml,yml,csv}" - - format: - type: value - description: Extension of an output file - - pep_input_base_dir: - type: file - description: Optional path to the directory where files specified in a PEP config file are stored. Any paths specified in the config will need to be relative to this base directory. - -output: - - versions: - type: file - description: File containing software versions - pattern: "versions.yml" - - samplesheet_converted: - type: file - description: PEP project or samplesheet converted to csv file - -authors: - - "@rafalstepien" diff --git a/modules/nf-core/eido/validate/main.nf b/modules/nf-core/eido/validate/main.nf deleted file mode 100644 index 798d3a0..0000000 --- a/modules/nf-core/eido/validate/main.nf +++ /dev/null @@ -1,33 +0,0 @@ -process EIDO_VALIDATE { - tag "$samplesheet" - label 'process_single' - - conda (params.enable_conda ? "conda-forge::eido=0.1.9" : null) - container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://containers.biocontainers.pro/s3/SingImgsRepo/eido/0.1.9_cv2/eido_0.1.9_cv2.sif' : - 'biocontainers/eido:0.1.9_cv2' }" - - input: - path samplesheet - path schema - path pep_input_base_dir - - output: - path "versions.yml" , emit: versions - path "*.log" , emit: log - - when: - task.ext.when == null || task.ext.when - - script: - def args = task.ext.args ?: '' - def prefix = task.ext.prefix ?: "validation" - """ - eido validate $args $samplesheet -s $schema -e > ${prefix}.log - - cat <<-END_VERSIONS > versions.yml - "${task.process}": - eido: \$(echo \$(eido --version 2>&1) | sed 's/^.*eido //;s/ .*//' )) - END_VERSIONS - """ -} diff --git a/modules/nf-core/eido/validate/meta.yml b/modules/nf-core/eido/validate/meta.yml deleted file mode 100644 index eb7b295..0000000 --- a/modules/nf-core/eido/validate/meta.yml +++ /dev/null @@ -1,41 +0,0 @@ -name: "eido_validate" -description: Validate samplesheet or PEP config against a schema -keywords: - - eido - - validate - - schema - - format - - pep -tools: - - "validate": - description: "Validate samplesheet or PEP config against a schema." - homepage: "http://eido.databio.org/en/latest/" - documentation: "http://eido.databio.org/en/latest/" - doi: "10.1093/gigascience/giab077" - licence: "BSD-2-Clause" - -input: - - samplesheet: - type: file - description: Samplesheet or PEP file to be validated - pattern: "*.{yaml,yml,csv}" - - schema: - type: file - description: Schema that the samplesheet will be validated against - pattern: "*.{yaml,yml}" - - pep_input_base_dir: - type: file - description: Optional path to the directory where files specified in a PEP config file are stored. Any paths specified in the config will need to be relative to this base directory. - -output: - - versions: - type: file - description: File containing software versions - pattern: "versions.yml" - - log: - type: file - description: File containing validation log. - pattern: "*.log" - -authors: - - "@rafalstepien" diff --git a/nextflow.config b/nextflow.config index 6d5a374..088bcec 100644 --- a/nextflow.config +++ b/nextflow.config @@ -252,7 +252,6 @@ profiles { test_nothing { includeConfig 'conf/test_nothing.config' } test_motus { includeConfig 'conf/test_motus.config' } test_krakenuniq { includeConfig 'conf/test_krakenuniq.config' } - test_pep { includeConfig 'conf/test_pep.config' } } diff --git a/subworkflows/local/input_check.nf b/subworkflows/local/input_check.nf index 46baff2..eb21b9d 100644 --- a/subworkflows/local/input_check.nf +++ b/subworkflows/local/input_check.nf @@ -2,41 +2,31 @@ // Check input samplesheet and get read channels // -include { EIDO_VALIDATE } from '../../modules/nf-core/eido/validate/main' -include { EIDO_CONVERT } from '../../modules/nf-core/eido/convert/main' +include { SAMPLESHEET_CHECK } from '../../modules/local/samplesheet_check' workflow INPUT_CHECK { take: - samplesheet_or_pep_config // file: /path/to/samplesheet.csv or /path/to/pep/config.yaml - pep_input_base_dir + samplesheet // file: /path/to/samplesheet.csv main: - ch_versions = Channel.empty() - - EIDO_VALIDATE ( samplesheet_or_pep_config, file("$projectDir/assets/samplesheet_schema.yaml"), pep_input_base_dir ) - ch_versions = ch_versions.mix(EIDO_VALIDATE.out.versions) - - EIDO_CONVERT ( samplesheet_or_pep_config, "csv", pep_input_base_dir ) - ch_versions = ch_versions.mix(EIDO_CONVERT.out.versions) - - ch_parsed_samplesheet = EIDO_CONVERT.out.samplesheet_converted + parsed_samplesheet = SAMPLESHEET_CHECK ( samplesheet ) + .csv .splitCsv ( header:true, sep:',' ) - .map { check_missing_and_singleend_autodetect(it) } .branch { fasta: it['fasta'] != '' nanopore: it['instrument_platform'] == 'OXFORD_NANOPORE' fastq: true } - ch_parsed_samplesheet.fastq + parsed_samplesheet.fastq .map { create_fastq_channel(it) } .set { fastq } - ch_parsed_samplesheet.nanopore + parsed_samplesheet.nanopore .map { create_fastq_channel(it) } .set { nanopore } - ch_parsed_samplesheet.fasta + parsed_samplesheet.fasta .map { create_fasta_channel(it) } .set { fasta } @@ -44,20 +34,7 @@ workflow INPUT_CHECK { fastq = fastq ?: [] // channel: [ val(meta), [ reads ] ] nanopore = nanopore ?: [] // channel: [ val(meta), [ reads ] ] fasta = fasta ?: [] // channel: [ val(meta), fasta ] - versions = ch_versions // channel: [ versions.yml ] -} - -// Function to validate input sheet and auto-detect R1/R2 -def check_missing_and_singleend_autodetect(LinkedHashMap row) { - - // Checks not supported by EIDO(?) - if ( ( row['fastq_1'] != "" || row['fastq_2'] != "" ) && row['fasta'] != "" ) { exit 1, "[nf-core/taxprofiler] ERROR: FastQ and FastA files cannot be specified together in the same library. Check input samplesheet! Check sample: ${row['sample']}" } - if ( row['fastq_1'] == "" && row['fastq_2'] != "" ) { exit 1, "[nf-core/taxprofiler] ERROR: Input samplesheet has a missing fastq_1 when fastq_2 is specified. Check sample: ${row['sample']}" } - - single_end = row['fastq_2'] == "" ? true : false - row['single_end'] = single_end - - return row + versions = SAMPLESHEET_CHECK.out.versions // channel: [ versions.yml ] } // Function to get list of [ meta, [ fastq_1, fastq_2 ] ] @@ -87,12 +64,11 @@ def create_fastq_channel(LinkedHashMap row) { if (!file(row.fastq_2).exists()) { exit 1, "ERROR: Please check input samplesheet -> Read 2 FastQ file does not exist!\n${row.fastq_2}" } - fastq_meta = [ meta, [ file(row.fastq_1), file(row.fastq_2) ] ] + fastq_meta = [ meta, [ file(row.fastq_1), file(row.fastq_2) ] ] } } return fastq_meta - }// Function to get list of [ meta, fasta ] def create_fasta_channel(LinkedHashMap row) { def meta = [:] diff --git a/workflows/taxprofiler.nf b/workflows/taxprofiler.nf index c9f002c..73aa0ef 100644 --- a/workflows/taxprofiler.nf +++ b/workflows/taxprofiler.nf @@ -20,9 +20,8 @@ for (param in checkPathParamList) { if (param) { file(param, checkIfExists: true // Check mandatory parameters if ( params.input ) { ch_input = file(params.input, checkIfExists: true) - pep_input_base_dir = file(params.input).extension.matches("yaml|yml") ? file(file(params.input).getParent(), checkIfExists: true) : [] } else { - exit 1, "Input samplesheet, or PEP config and base directory not specified" + exit 1, "Input samplesheet not specified" } if (params.databases) { ch_databases = file(params.databases) } else { exit 1, 'Input database sheet not specified!' } @@ -115,7 +114,7 @@ workflow TAXPROFILER { SUBWORKFLOW: Read in samplesheet, validate and stage input files */ INPUT_CHECK ( - ch_input, pep_input_base_dir + ch_input ) ch_versions = ch_versions.mix(INPUT_CHECK.out.versions) From 07bd989bc6f8e663c9e10b998101d8ed86dc5d5f Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Mon, 12 Dec 2022 10:02:22 +0100 Subject: [PATCH 526/789] Start work on groovy native datbase checks --- conf/modules.config | 8 -------- modules/local/database_check.nf | 29 --------------------------- subworkflows/local/db_check.nf | 35 +++++++++++++++++++++++++++------ workflows/taxprofiler.nf | 2 +- 4 files changed, 30 insertions(+), 44 deletions(-) delete mode 100644 modules/local/database_check.nf diff --git a/conf/modules.config b/conf/modules.config index dd85c0c..017e0c9 100644 --- a/conf/modules.config +++ b/conf/modules.config @@ -12,14 +12,6 @@ process { - withName: DATABASE_CHECK { - publishDir = [ - path: { "${params.outdir}/pipeline_info" }, - mode: params.publish_dir_mode, - saveAs: { filename -> filename.equals('versions.yml') ? null : filename } - ] - } - withName: FASTQC { ext.args = '--quiet' ext.prefix = { "${meta.id}_${meta.run_accession}_raw" } diff --git a/modules/local/database_check.nf b/modules/local/database_check.nf deleted file mode 100644 index ccf611c..0000000 --- a/modules/local/database_check.nf +++ /dev/null @@ -1,29 +0,0 @@ -process DATABASE_CHECK { - tag "$databasesheet" - label 'process_single' - - conda (params.enable_conda ? "conda-forge::python=3.8.3" : null) - container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/python:3.8.3' : - 'quay.io/biocontainers/python:3.8.3' }" - - input: - path databasesheet - - output: - path '*.csv' , emit: csv - path "versions.yml", emit: versions - - when: - task.ext.when == null || task.ext.when - - script: // This script is bundled with the pipeline, in nf-core/taxprofiler/bin/ - """ - cat $databasesheet >> database_sheet.valid.csv - - cat <<-END_VERSIONS > versions.yml - "${task.process}": - python: \$(python --version | sed 's/Python //g') - END_VERSIONS - """ -} diff --git a/subworkflows/local/db_check.nf b/subworkflows/local/db_check.nf index 5d0c4eb..ce26905 100644 --- a/subworkflows/local/db_check.nf +++ b/subworkflows/local/db_check.nf @@ -2,7 +2,6 @@ // Check input samplesheet and get read channels // -include { DATABASE_CHECK } from '../../modules/local/database_check' include { UNTAR } from '../../modules/nf-core/untar/main' workflow DB_CHECK { @@ -10,15 +9,18 @@ workflow DB_CHECK { dbsheet // file: /path/to/dbsheet.csv main: + ch_versions = Channel.empty() // TODO: make database sheet check // Checks: // 1) no duplicates, - // 2) args do not have quotes, e.g. just `,,` and NOT `,"",` - parsed_samplesheet = DATABASE_CHECK ( dbsheet ) - .csv + + parsed_samplesheet = Channel.fromPath(dbsheet) .splitCsv ( header:true, sep:',' ) - .map { create_db_channels(it) } + .map { + validate_db_sheet(it) + create_db_channels(it) + } ch_dbs_for_untar = parsed_samplesheet .branch { @@ -29,12 +31,31 @@ workflow DB_CHECK { // TODO Filter to only run UNTAR on DBs of tools actually using? // TODO make optional whether to save UNTAR ( ch_dbs_for_untar.untar ) + ch_versions = ch_versions.mix(UNTAR.out.versions.first()) ch_final_dbs = ch_dbs_for_untar.skip.mix( UNTAR.out.untar ) emit: dbs = ch_final_dbs // channel: [ val(meta), [ db ] ] - versions = DATABASE_CHECK.out.versions.mix(UNTAR.out.versions.first()) // channel: [ versions.yml ] + versions = ch_versions // channel: [ versions.yml ] +} + +def validate_db_sheet(LinkedHashMap row){ + + // check minimum number of columns + if (row.size() < 4) exit 1, "[nf-core/taxprofiler] error: Invalid database input sheet - malformed row (e.g. missing column). See documentation for more information. Error in: ${row}, " + + // all columns there + def expected_headers = ['tool', 'db_name', 'db_params', 'db_path'] + if ( !row.keySet().containsAll(expected_headers) ) exit 1, "[nf-core/taxprofiler] error: Invalid database input sheet - malformed column names. Please check input TSV. Column names should be: ${expected_keys.join(", ")}" + + // valid tools specified// TIFNISIH LIST + def expected_tools = [ "bracken", "centrifuge", "diamond", "kaiju", "kraken2", "malt", "metaphlan3" ] + + // detect quotes in params + if ( row.db_params.contains('"') ) exit 1, "[nf-core/taxprofiler] error: Invalid database db_params entry. No quotes allowed. Error in: ${row}" + if ( row.db_params.contains("'") ) exit 1, "[nf-core/taxprofiler] error: Invalid database db_params entry. No quotes allowed. Error in: ${row}" + } def create_db_channels(LinkedHashMap row) { @@ -51,3 +72,5 @@ def create_db_channels(LinkedHashMap row) { return array } + + diff --git a/workflows/taxprofiler.nf b/workflows/taxprofiler.nf index c9f002c..7bcfc3a 100644 --- a/workflows/taxprofiler.nf +++ b/workflows/taxprofiler.nf @@ -25,7 +25,7 @@ if ( params.input ) { exit 1, "Input samplesheet, or PEP config and base directory not specified" } -if (params.databases) { ch_databases = file(params.databases) } else { exit 1, 'Input database sheet not specified!' } +if (params.databases) { ch_databases = file(params.databases, checkIfExists: true) } else { exit 1, 'Input database sheet not specified!' } if (params.shortread_qc_mergepairs && params.run_malt ) log.warn "[nf-core/taxprofiler] MALT does not accept uncollapsed paired-reads. Pairs will be profiled as separate files." if (params.shortread_qc_includeunmerged && !params.shortread_qc_mergepairs) exit 1, "ERROR: [nf-core/taxprofiler] cannot include unmerged reads when merging is not turned on. Please specify --shortread_qc_mergepairs" From 3df0a383da88107a0cd34d6b8b3573a0a9a0fed4 Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Mon, 12 Dec 2022 10:10:24 +0100 Subject: [PATCH 527/789] Update combine bracken outputs to include meta for publishing purposes --- conf/modules.config | 4 ++-- modules.json | 2 +- modules/nf-core/bracken/combinebrackenoutputs/main.nf | 11 ++++++----- .../nf-core/bracken/combinebrackenoutputs/meta.yml | 10 ++++++++++ 4 files changed, 19 insertions(+), 8 deletions(-) diff --git a/conf/modules.config b/conf/modules.config index a8bf3e8..742992d 100644 --- a/conf/modules.config +++ b/conf/modules.config @@ -330,12 +330,12 @@ process { ] } - withName: KRAKENTOOLS_COMBINEKREPORTS { + withName: KRAKENTOOLS_COMBINEKREPORTS_KRAKEN { ext.prefix = { "kraken2_${meta.id}_combined_reports" } publishDir = [ path: { "${params.outdir}/kraken2/" }, mode: params.publish_dir_mode, - pattern: '*.{txt}' + pattern: '*.txt' ] } diff --git a/modules.json b/modules.json index 7815f5d..b46e88d 100644 --- a/modules.json +++ b/modules.json @@ -32,7 +32,7 @@ }, "bracken/combinebrackenoutputs": { "branch": "master", - "git_sha": "5e34754d42cd2d5d248ca8673c0a53cdf5624905", + "git_sha": "9c87d5fdad182590a370ea43a4ecebd200a6f6fb", "installed_by": ["modules"] }, "cat/fastq": { diff --git a/modules/nf-core/bracken/combinebrackenoutputs/main.nf b/modules/nf-core/bracken/combinebrackenoutputs/main.nf index 73b7148..977030c 100644 --- a/modules/nf-core/bracken/combinebrackenoutputs/main.nf +++ b/modules/nf-core/bracken/combinebrackenoutputs/main.nf @@ -1,4 +1,5 @@ process BRACKEN_COMBINEBRACKENOUTPUTS { + tag "$meta.id" label 'process_low' conda (params.enable_conda ? "bioconda::bracken=2.7" : null) @@ -7,18 +8,18 @@ process BRACKEN_COMBINEBRACKENOUTPUTS { 'quay.io/biocontainers/bracken:2.7--py39hc16433a_0' }" input: - path input + tuple val(meta), path(input) output: - path "*.txt" , emit: txt - path "versions.yml", emit: versions + tuple val(meta), path("*.txt"), emit: txt + path "versions.yml" , emit: versions when: task.ext.when == null || task.ext.when script: def args = task.ext.args ?: '' - def prefix = task.ext.prefix ?: "bracken_combined.txt" + def prefix = task.ext.prefix ?: "${meta.id}" // WARN: Version information not provided by tool on CLI. // Please update version string below when bumping container versions. def VERSION = '2.7' @@ -26,7 +27,7 @@ process BRACKEN_COMBINEBRACKENOUTPUTS { combine_bracken_outputs.py \\ $args \\ --files ${input} \\ - -o ${prefix} + -o ${prefix}.txt cat <<-END_VERSIONS > versions.yml "${task.process}": diff --git a/modules/nf-core/bracken/combinebrackenoutputs/meta.yml b/modules/nf-core/bracken/combinebrackenoutputs/meta.yml index c4a9712..9ad5385 100644 --- a/modules/nf-core/bracken/combinebrackenoutputs/meta.yml +++ b/modules/nf-core/bracken/combinebrackenoutputs/meta.yml @@ -12,12 +12,22 @@ tools: licence: ["GPL v3"] input: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] - input: type: file description: List of output files from bracken pattern: "*" output: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] - versions: type: file description: File containing software versions From 460f3ca157bd618dde7dbc20f5c99bdd2bda731b Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Mon, 12 Dec 2022 11:03:40 +0100 Subject: [PATCH 528/789] Add database sheet validation --- subworkflows/local/db_check.nf | 33 +++++++++++++++++++++------------ subworkflows/local/profiling.nf | 10 +++++----- 2 files changed, 26 insertions(+), 17 deletions(-) diff --git a/subworkflows/local/db_check.nf b/subworkflows/local/db_check.nf index ce26905..4ed786d 100644 --- a/subworkflows/local/db_check.nf +++ b/subworkflows/local/db_check.nf @@ -11,14 +11,22 @@ workflow DB_CHECK { main: ch_versions = Channel.empty() - // TODO: make database sheet check - // Checks: - // 1) no duplicates, - + // special check to check _between_ rows, for which we must group rows together + Channel.fromPath(dbsheet) + .splitCsv ( header:true, sep:',' ) + .map {[it.tool, it.db_name] } + .groupTuple() + .map { + tool, db_name -> + def unique_names = db_name.unique(false) + if ( unique_names.size() < db_name.size() ) exit 1, "[nf-core/taxprofiler] ERROR: Each database for a tool must have a unique name, duplicated detected. Tool: ${tool}, Database name: ${unique_names}" + } + + // normal checks for within-row validity, so can be moved to separate functions parsed_samplesheet = Channel.fromPath(dbsheet) .splitCsv ( header:true, sep:',' ) .map { - validate_db_sheet(it) + validate_db_rows(it) create_db_channels(it) } @@ -40,21 +48,22 @@ workflow DB_CHECK { versions = ch_versions // channel: [ versions.yml ] } -def validate_db_sheet(LinkedHashMap row){ +def validate_db_rows(LinkedHashMap row){ // check minimum number of columns - if (row.size() < 4) exit 1, "[nf-core/taxprofiler] error: Invalid database input sheet - malformed row (e.g. missing column). See documentation for more information. Error in: ${row}, " + if (row.size() < 4) exit 1, "[nf-core/taxprofiler] ERROR: Invalid database input sheet - malformed row (e.g. missing column). See documentation for more information. Error in: ${row}" // all columns there def expected_headers = ['tool', 'db_name', 'db_params', 'db_path'] - if ( !row.keySet().containsAll(expected_headers) ) exit 1, "[nf-core/taxprofiler] error: Invalid database input sheet - malformed column names. Please check input TSV. Column names should be: ${expected_keys.join(", ")}" + if ( !row.keySet().containsAll(expected_headers) ) exit 1, "[nf-core/taxprofiler] ERROR: Invalid database input sheet - malformed column names. Please check input TSV. Column names should be: ${expected_keys.join(", ")}" // valid tools specified// TIFNISIH LIST - def expected_tools = [ "bracken", "centrifuge", "diamond", "kaiju", "kraken2", "malt", "metaphlan3" ] + def expected_tools = [ "bracken", "centrifuge", "diamond", "kaiju", "kraken2", "krakenuniq", "malt", "metaphlan3", "motus" ] + if ( !expected_tools.contains(row.tool) ) exit 1, "[nf-core/taxprofiler] ERROR: Invalid tool name. Please see documentation for all supported profilers. Error in: ${row}" // detect quotes in params - if ( row.db_params.contains('"') ) exit 1, "[nf-core/taxprofiler] error: Invalid database db_params entry. No quotes allowed. Error in: ${row}" - if ( row.db_params.contains("'") ) exit 1, "[nf-core/taxprofiler] error: Invalid database db_params entry. No quotes allowed. Error in: ${row}" + if ( row.db_params.contains('"') ) exit 1, "[nf-core/taxprofiler] ERROR: Invalid database db_params entry. No quotes allowed. Error in: ${row}" + if ( row.db_params.contains("'") ) exit 1, "[nf-core/taxprofiler] ERROR: Invalid database db_params entry. No quotes allowed. Error in: ${row}" } @@ -66,7 +75,7 @@ def create_db_channels(LinkedHashMap row) { def array = [] if (!file(row.db_path, type: 'dir').exists()) { - exit 1, "ERROR: Please check input samplesheet -> database could not be found!\n${row.db_path}" + exit 1, "ERROR: Please check input samplesheet -> database path could not be found!\n${row.db_path}" } array = [ meta, file(row.db_path) ] diff --git a/subworkflows/local/profiling.nf b/subworkflows/local/profiling.nf index f5c970c..6613648 100644 --- a/subworkflows/local/profiling.nf +++ b/subworkflows/local/profiling.nf @@ -41,14 +41,14 @@ workflow PROFILING { } .combine(databases) .branch { - malt: it[2]['tool'] == 'malt' - kraken2: it[2]['tool'] == 'kraken2' || it[2]['tool'] == 'bracken' // to reuse the kraken module to produce the input data for bracken - metaphlan3: it[2]['tool'] == 'metaphlan3' centrifuge: it[2]['tool'] == 'centrifuge' - kaiju: it[2]['tool'] == 'kaiju' diamond: it[2]['tool'] == 'diamond' - motus: it[2]['tool'] == 'motus' + kaiju: it[2]['tool'] == 'kaiju' + kraken2: it[2]['tool'] == 'kraken2' || it[2]['tool'] == 'bracken' // to reuse the kraken module to produce the input data for bracken krakenuniq: it[2]['tool'] == 'krakenuniq' + malt: it[2]['tool'] == 'malt' + metaphlan3: it[2]['tool'] == 'metaphlan3' + motus: it[2]['tool'] == 'motus' unknown: true } From 7c66968fef7ec7bd2ca44e5cb1571814817acf16 Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Mon, 12 Dec 2022 11:04:21 +0100 Subject: [PATCH 529/789] More comments --- subworkflows/local/db_check.nf | 1 + 1 file changed, 1 insertion(+) diff --git a/subworkflows/local/db_check.nf b/subworkflows/local/db_check.nf index 4ed786d..14078d9 100644 --- a/subworkflows/local/db_check.nf +++ b/subworkflows/local/db_check.nf @@ -12,6 +12,7 @@ workflow DB_CHECK { ch_versions = Channel.empty() // special check to check _between_ rows, for which we must group rows together + // note: this will run in parallel to within-row validity, but we can assume this will run faster thus will fail first Channel.fromPath(dbsheet) .splitCsv ( header:true, sep:',' ) .map {[it.tool, it.db_name] } From 896a39e68dffdebee06cfd698f231773fade76b0 Mon Sep 17 00:00:00 2001 From: sofstam Date: Mon, 12 Dec 2022 13:19:59 +0100 Subject: [PATCH 530/789] Apply review suggestions --- docs/usage.md | 58 ++++++++++++++++++++++++++++++++++++++++----------- 1 file changed, 46 insertions(+), 12 deletions(-) diff --git a/docs/usage.md b/docs/usage.md index d17d168..88fbf10 100644 --- a/docs/usage.md +++ b/docs/usage.md @@ -162,6 +162,7 @@ Expected (uncompressed) database files for each tool are as follows: with same release version of the mOTUs tools. The database for same version tools can be thus reused for multiple runs. Users can download the database once using the script above and specify the path the database to the TSV table provided to `--databases`. +- **KrakenUniq** WIP ## Running the pipeline @@ -184,7 +185,7 @@ work # Directory containing the nextflow working files ### Sequencing quality control -nf-core taxprofiler offers [`falco`](https://github.com/smithlabcode/falco) as an alternative option to [`FastQC`](https://www.bioinformatics.babraham.ac.uk/projects/fastqc/). +[`FastQC`](https://www.bioinformatics.babraham.ac.uk/projects/fastqc/) gives general quality metrics about your reads. It provides information about the quality score distribution across your reads, per base sequence content (%A/T/G/C), adapter contamination and overrepresented sequences. nf-core taxprofiler offers [`falco`](https://github.com/smithlabcode/falco) as an alternative option. ### Preprocessing Steps @@ -226,7 +227,7 @@ The tools offer different algorithms and parameters for removing low complexity You can optionally save the FASTQ output of the run merging with the `--save_complexityfiltered_reads`. If running with `fastp`, complexity filtering happens inclusively within the earlier shortread preprocessing step. Therefore there will not be an independent pipeline step for complexity filtering, and no independent FASTQ file (i.e. `--save_complexityfiltered_reads` will be ignored) - your complexity filtered reads will also be in the `fastp/` folder in the same file(s) as the preprocessed read. -**We do not any read preprocessing or complexity filtering if you are using ONTs Guppy toolkit for basecalling and post-processing.** +**We do not recommend performing any read preprocessing or complexity filtering if you are using ONTs Guppy toolkit for basecalling and post-processing.** #### Host Removal @@ -484,19 +485,56 @@ NXF_OPTS='-Xms1g -Xmx4g' ### Tutorial - How to create your custom database #### Kraken2 +Kraken2 allows the user to build custom databases. + +To install a taxonomy: + +```bash +kraken2-build --download-taxonomy --db $DBNAME +``` + +To install one or more reference libraries: + +```bash +--download-library bacteria --db $DBNAME +--download-library viral --db $DBNAME +--download-library archaea --db $DBNAME +``` + +To add more genomes: + +```bash +kraken2-build --add-to-library genome.fa --db $DBNAME +``` + +You can follow Kraken2 [tutorial](https://github.com/DerrickWood/kraken2/blob/master/docs/MANUAL.markdown#custom-databases) for a more detailed description. -Kraken2 allows the user to build custom databases. You can follow Kraken2 [tutorial](https://github.com/DerrickWood/kraken2/blob/master/docs/MANUAL.markdown#custom-databases). #### Centrifuge +Centrifuge allows the user to [build custom databases](https://ccb.jhu.edu/software/centrifuge/manual.shtml#custom-database). The user should download taxonomy files, make custom `seqid2taxid.map` and combine the fasta files together. -Centrifuge allows the user to [build custom databases](https://ccb.jhu.edu/software/centrifuge/manual.shtml#custom-database). +```bash +centrifuge-download -o taxonomy taxonomy -#### Kaiju +## custom seqid2taxid.map +NC_001133.9 4392 +NC_012920.1 9606 +NC_001134.8 4392 +NC_001135.5 4392 + +cat *.{fa,fna} > input-sequences.fna +centrifuge-build -p 4 --conversion-table seqid2taxid.map --taxonomy-tree taxonomy/nodes.dmp --name-table taxonomy/names.dmp input-sequences.fna taxprofiler_cf +``` +#### Kaiju It is possible to [create custom databases](https://github.com/bioinformatics-centre/kaiju#custom-database) with Kaiju. -#### MALT +```bash +kaiju-mkbwt -n 5 -a ACDEFGHIKLMNPQRSTVWY -o proteins proteins.faa +kaiju-mkfmi proteins +``` +#### MALT To create a custom database for MALT, the user should download and unzip the following database which lists all NCBI records. The input files are specified using -i and the index is specified using -d. A detailed description for each argument can be found [here](https://software-ab.informatik.uni-tuebingen.de/download/malt/manual.pdf) ```bash @@ -506,16 +544,13 @@ malt-build -i path/to/fasta/files/*.{fna,fa} -s DNA -d index -t 8 -st 4 -a2t meg ``` #### Bracken - You can follow Bracken [tutorial](https://ccb.jhu.edu/software/bracken/index.shtml?t=manual) to build a custom database. Alternatively, you can use one of the indexes that can be found [here](https://benlangmead.github.io/aws-indexes/k2). #### KrakenUniq - -For KrakenUniq, we recommend using one of the available databases [here](https://benlangmead.github.io/aws-indexes/k2) +For KrakenUniq, we recommend using one of the available databases [here](https://benlangmead.github.io/aws-indexes/k2). But if you wish to build your own, please see the [documentation](https://github.com/fbreitwieser/krakenuniq/blob/master/README.md#custom-databases-with-ncbi-taxonomy). #### DIAMOND - -To create a custom database for DIAMOND, the user should download and unzip the NCBI's taxonomy files. The `makedb` needs to be executed afterwards. A detailed description can be found [here](https://gensoft.pasteur.fr/docs/diamond/0.8.22/diamond_manual.pdf) +To create a custom database for DIAMOND, the user should download and unzip the NCBI's taxonomy files. The `makedb` needs to be executed afterwards. A detailed description can be found [here](https://github.com/bbuchfink/diamond/wiki/1.-Tutorial) ```bash wget ftp://ftp.ncbi.nlm.nih.gov/pub/taxonomy/taxdmp.zip @@ -531,7 +566,6 @@ rm *dmp *txt *gz *prt *zip ``` #### mOTUs - A detailed description on how to download mOTUs database can be found [here](https://github.com/motu-tool/mOTUs) ## Troubleshooting and FAQs From bd5cd0a89710dbcb80133baa54c071a5d8583e49 Mon Sep 17 00:00:00 2001 From: Sofia Stamouli Date: Mon, 12 Dec 2022 13:34:53 +0100 Subject: [PATCH 531/789] Prettier --- docs/usage.md | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/docs/usage.md b/docs/usage.md index 88fbf10..defef04 100644 --- a/docs/usage.md +++ b/docs/usage.md @@ -485,6 +485,7 @@ NXF_OPTS='-Xms1g -Xmx4g' ### Tutorial - How to create your custom database #### Kraken2 + Kraken2 allows the user to build custom databases. To install a taxonomy: @@ -509,8 +510,8 @@ kraken2-build --add-to-library genome.fa --db $DBNAME You can follow Kraken2 [tutorial](https://github.com/DerrickWood/kraken2/blob/master/docs/MANUAL.markdown#custom-databases) for a more detailed description. - #### Centrifuge + Centrifuge allows the user to [build custom databases](https://ccb.jhu.edu/software/centrifuge/manual.shtml#custom-database). The user should download taxonomy files, make custom `seqid2taxid.map` and combine the fasta files together. ```bash @@ -527,6 +528,7 @@ centrifuge-build -p 4 --conversion-table seqid2taxid.map --taxonomy-tree taxonom ``` #### Kaiju + It is possible to [create custom databases](https://github.com/bioinformatics-centre/kaiju#custom-database) with Kaiju. ```bash @@ -535,6 +537,7 @@ kaiju-mkfmi proteins ``` #### MALT + To create a custom database for MALT, the user should download and unzip the following database which lists all NCBI records. The input files are specified using -i and the index is specified using -d. A detailed description for each argument can be found [here](https://software-ab.informatik.uni-tuebingen.de/download/malt/manual.pdf) ```bash @@ -544,12 +547,15 @@ malt-build -i path/to/fasta/files/*.{fna,fa} -s DNA -d index -t 8 -st 4 -a2t meg ``` #### Bracken + You can follow Bracken [tutorial](https://ccb.jhu.edu/software/bracken/index.shtml?t=manual) to build a custom database. Alternatively, you can use one of the indexes that can be found [here](https://benlangmead.github.io/aws-indexes/k2). #### KrakenUniq + For KrakenUniq, we recommend using one of the available databases [here](https://benlangmead.github.io/aws-indexes/k2). But if you wish to build your own, please see the [documentation](https://github.com/fbreitwieser/krakenuniq/blob/master/README.md#custom-databases-with-ncbi-taxonomy). #### DIAMOND + To create a custom database for DIAMOND, the user should download and unzip the NCBI's taxonomy files. The `makedb` needs to be executed afterwards. A detailed description can be found [here](https://github.com/bbuchfink/diamond/wiki/1.-Tutorial) ```bash @@ -566,6 +572,7 @@ rm *dmp *txt *gz *prt *zip ``` #### mOTUs + A detailed description on how to download mOTUs database can be found [here](https://github.com/motu-tool/mOTUs) ## Troubleshooting and FAQs From e31e7d31725cf035a51f3e796c0e52ff62b32704 Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Mon, 12 Dec 2022 15:42:01 +0100 Subject: [PATCH 532/789] Update mOTUs to 3.0.3 --- modules.json | 4 ++-- modules/nf-core/motus/merge/main.nf | 8 +++----- modules/nf-core/motus/merge/meta.yml | 2 +- modules/nf-core/motus/profile/main.nf | 6 +++--- modules/nf-core/motus/profile/meta.yml | 2 +- 5 files changed, 10 insertions(+), 12 deletions(-) diff --git a/modules.json b/modules.json index b46e88d..a3017f7 100644 --- a/modules.json +++ b/modules.json @@ -172,12 +172,12 @@ }, "motus/merge": { "branch": "master", - "git_sha": "5e34754d42cd2d5d248ca8673c0a53cdf5624905", + "git_sha": "3fce766123e71e82fb384db7d07b59180baa9ee9", "installed_by": ["modules"] }, "motus/profile": { "branch": "master", - "git_sha": "5e34754d42cd2d5d248ca8673c0a53cdf5624905", + "git_sha": "3fce766123e71e82fb384db7d07b59180baa9ee9", "installed_by": ["modules"] }, "multiqc": { diff --git a/modules/nf-core/motus/merge/main.nf b/modules/nf-core/motus/merge/main.nf index d9f091e..5041cf0 100644 --- a/modules/nf-core/motus/merge/main.nf +++ b/modules/nf-core/motus/merge/main.nf @@ -1,13 +1,11 @@ -VERSION = '3.0.1' - process MOTUS_MERGE { tag "$meta.id" label 'process_single' - conda (params.enable_conda ? "bioconda::motus=3.0.1" : null) + conda (params.enable_conda ? "bioconda::motus=3.0.3" : null) container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/motus:3.0.1--pyhdfd78af_0': - 'quay.io/biocontainers/motus:3.0.1--pyhdfd78af_0' }" + 'https://depot.galaxyproject.org/singularity/motus:3.0.3--pyhdfd78af_0': + 'quay.io/biocontainers/motus:3.0.3--pyhdfd78af_0' }" input: tuple val(meta), path(input) diff --git a/modules/nf-core/motus/merge/meta.yml b/modules/nf-core/motus/merge/meta.yml index 02d11d0..24ae939 100644 --- a/modules/nf-core/motus/merge/meta.yml +++ b/modules/nf-core/motus/merge/meta.yml @@ -14,7 +14,7 @@ tools: homepage: "https://motu-tool.org/" documentation: "https://github.com/motu-tool/mOTUs/wiki" tool_dev_url: "https://github.com/motu-tool/mOTUs" - doi: "10.1038/s41467-019-08844-4" + doi: "10.1186/s40168-022-01410-z" licence: "['GPL v3']" input: diff --git a/modules/nf-core/motus/profile/main.nf b/modules/nf-core/motus/profile/main.nf index bd7a127..8a76250 100644 --- a/modules/nf-core/motus/profile/main.nf +++ b/modules/nf-core/motus/profile/main.nf @@ -2,10 +2,10 @@ process MOTUS_PROFILE { tag "$meta.id" label 'process_medium' - conda (params.enable_conda ? "bioconda::motus=3.0.1" : null) + conda (params.enable_conda ? "bioconda::motus=3.0.3" : null) container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/motus:3.0.1--pyhdfd78af_0': - 'quay.io/biocontainers/motus:3.0.1--pyhdfd78af_0' }" + 'https://depot.galaxyproject.org/singularity/motus:3.0.3--pyhdfd78af_0': + 'quay.io/biocontainers/motus:3.0.3--pyhdfd78af_0' }" input: tuple val(meta), path(reads) diff --git a/modules/nf-core/motus/profile/meta.yml b/modules/nf-core/motus/profile/meta.yml index 3c3b660..1202042 100644 --- a/modules/nf-core/motus/profile/meta.yml +++ b/modules/nf-core/motus/profile/meta.yml @@ -11,7 +11,7 @@ tools: homepage: "https://motu-tool.org/" documentation: "https://github.com/motu-tool/mOTUs/wiki" tool_dev_url: "https://github.com/motu-tool/mOTUs" - doi: "10.1038/s41467-019-08844-4" + doi: "10.1186/s40168-022-01410-z" licence: "['GPL v3']" input: From a99f89af7758143c26c788dc46a336d2e48059f1 Mon Sep 17 00:00:00 2001 From: Sofia Stamouli Date: Mon, 12 Dec 2022 16:30:28 +0100 Subject: [PATCH 533/789] Apply review suggestions --- docs/usage.md | 50 +++++++++++++++++++++++++++++++++++--------------- 1 file changed, 35 insertions(+), 15 deletions(-) diff --git a/docs/usage.md b/docs/usage.md index defef04..f52e0ea 100644 --- a/docs/usage.md +++ b/docs/usage.md @@ -227,7 +227,7 @@ The tools offer different algorithms and parameters for removing low complexity You can optionally save the FASTQ output of the run merging with the `--save_complexityfiltered_reads`. If running with `fastp`, complexity filtering happens inclusively within the earlier shortread preprocessing step. Therefore there will not be an independent pipeline step for complexity filtering, and no independent FASTQ file (i.e. `--save_complexityfiltered_reads` will be ignored) - your complexity filtered reads will also be in the `fastp/` folder in the same file(s) as the preprocessed read. -**We do not recommend performing any read preprocessing or complexity filtering if you are using ONTs Guppy toolkit for basecalling and post-processing.** +> ⚠️ For nanopore data: we do not recommend performing any read preprocessing or complexity filtering if you are using ONTs Guppy toolkit for basecalling and post-processing. #### Host Removal @@ -484,31 +484,43 @@ NXF_OPTS='-Xms1g -Xmx4g' ### Tutorial - How to create your custom database +Here we will give brief guidance on how to build databases for each supported taxonomic profiler. You should always consult the documentation of each toolfor more information, how we provide these as quick reference guides. +The following tutorial assumes you already have the tool available (e.g. installed locally, or via conda, docker etc.), and you have already downloaded the FASTA files you wish to build into a database. + #### Kraken2 -Kraken2 allows the user to build custom databases. +> These are instructions are based on Kraken 2.1.2 +> To build a Kraken2 database you need two components: a taxonomy (consisting of `names.dmp`, `nodes.dmp`, and `*accession2taxid`) files, and the FASTA files you wish to include. +> To install pull the NCBI taxonomy you can run the following: -To install a taxonomy: +```bash +kraken2-build --download-taxonomy --db +``` + +You can then add your FASTA files with the following build command. ```bash -kraken2-build --download-taxonomy --db $DBNAME +kraken2-build --add-to-library *.fna --db ``` -To install one or more reference libraries: +You can repeat this step multiple times to iteratively add more genomes prior building. + +You can also automatical download and add 'standard' libraries provided by Kraken2 (e.g. bacteria on RefSeq) ```bash ---download-library bacteria --db $DBNAME ---download-library viral --db $DBNAME ---download-library archaea --db $DBNAME +kraken2-build --download-library bacteria --db ``` -To add more genomes: +Once all genomes are added to the library, you can build the database (and optionally clean it up): ```bash -kraken2-build --add-to-library genome.fa --db $DBNAME +kraken2-build --build --db +kraken2-build --clean--db ``` -You can follow Kraken2 [tutorial](https://github.com/DerrickWood/kraken2/blob/master/docs/MANUAL.markdown#custom-databases) for a more detailed description. +You can then add the / path to your nf-core/taxprofiler database input sheet. + +You can follow the Kraken2 [tutorial](https://github.com/DerrickWood/kraken2/blob/master/docs/MANUAL.markdown#custom-databases) for a more detailed description. #### Centrifuge @@ -538,14 +550,22 @@ kaiju-mkfmi proteins #### MALT -To create a custom database for MALT, the user should download and unzip the following database which lists all NCBI records. The input files are specified using -i and the index is specified using -d. A detailed description for each argument can be found [here](https://software-ab.informatik.uni-tuebingen.de/download/malt/manual.pdf) +MALT does not provide any default databases for profiling, therefore you must build your own. +You need FASTA files to include, and an (unzipped) [MEGAN mapping 'db' file](https://software-ab.informatik.uni-tuebingen.de/download/megan6/) for your FASTA type. +In addition to the input directory, output directory, and the mapping file database, you also need to specify the sequence type (DNA or Protein) with the `-s` flag. ```bash -wget https://software-ab.informatik.uni-tuebingen.de/download/megan6/megan-nucl-Feb2022.db.zip -unzip megan-nucl-Feb2022.db -malt-build -i path/to/fasta/files/*.{fna,fa} -s DNA -d index -t 8 -st 4 -a2t megan-nucl-Feb2022.db +malt-build -i ///*.{fna,fa,fasta} -a2t //.db -d / -s DNA ``` +You can then add the / path to your nf-core/taxprofiler database input sheet. + +⚠️ MALT generates very large database files and requires large amounts of RAM. You can reduce both by increasing the step size `-st` (with a reduction in sensitivity). + +MALT-build can be multi-threaded with `-t` to speed up building. + +See the [MALT manual](https://software-ab.informatik.uni-tuebingen.de/download/malt/manual.pdf) for more information. + #### Bracken You can follow Bracken [tutorial](https://ccb.jhu.edu/software/bracken/index.shtml?t=manual) to build a custom database. Alternatively, you can use one of the indexes that can be found [here](https://benlangmead.github.io/aws-indexes/k2). From b1eb477f338037ca432276a9cfa816f59ddb0f37 Mon Sep 17 00:00:00 2001 From: sofstam Date: Mon, 12 Dec 2022 17:06:05 +0100 Subject: [PATCH 534/789] Update output.md --- docs/output.md | 60 ++++++++++++++++++++++++++++++++++++++++---------- 1 file changed, 48 insertions(+), 12 deletions(-) diff --git a/docs/output.md b/docs/output.md index dd82e1f..fe80761 100644 --- a/docs/output.md +++ b/docs/output.md @@ -23,10 +23,13 @@ The pipeline is built using [Nextflow](https://www.nextflow.io/) and processes d - [Bowtie2](#bowtie2) - Host removal for Illumina reads - [minimap2](#minimap2) - Host removal for Nanopore reads - [samtoolsstats](#samtoolsstats) - Statistics from host removal -- [cat] - **WIP** - [Kraken2](#kraken2) - Taxonomic classifier using exact k-mer matches - [KrakenUniq](#krakenuniq) - Taxonomic classifier that combines the k-mer-based classification and the number of unique k-mers found in each species - [Bracken](#bracken) - +- [Centrifuge](#centrifuge) - Taxonomic classifier that uses a novel indexing scheme based on the Burrows-Wheeler transform (BWT) and the Ferragina-Manzini (FM) index. +- [Kaiju](#kaiju) - Taxonomic classifier that finds maximum (in-)exact matches on the protein-level. +- [Diamond](#diamond) - Sequence aligner for protein and translated DNA searches. +- [mOTUs](#motus) - Tool for marker gene-based OTU (mOTU) profiling. - [MultiQC](#multiqc) - Aggregate report describing results and QC from the whole pipeline - [Pipeline information](#pipeline-information) - Report metrics generated during the workflow execution @@ -145,15 +148,6 @@ fastp can automatically detect adapter sequences for Illumina data. -### cat - -
    -Output files - -- `cat` - -
    - ### Kraken2
    @@ -182,9 +176,51 @@ fastp can automatically detect adapter sequences for Illumina data.
    +### Centrifuge + +
    +Output files + +- `centrifuge` + - `.centrifuge.mapped.fastq.gz` + - `.centrifuge.report.txt` + - `.centrifuge.results.txt` + - `.centrifuge.unmapped.fastq.gz` + +
    + +### Kaiju + +
    +Output files + +- `kaiju` + - `.tsv` + +
    + +### Diamond + +
    +Output files + +- `diamond` + - `.log` + - `.sam` + +
    + +### mOTUs + +
    +Output files + +- `motus` + - `.log` + - `.out` + +
    -======= ->>>>>>> 6d0b5d0a58d92fabfc239818f272bb06cfeb1e66 ### MultiQC
    From 4756dc7f0d845cf783858fa18805a3c0f4616610 Mon Sep 17 00:00:00 2001 From: sofstam Date: Mon, 12 Dec 2022 17:14:57 +0100 Subject: [PATCH 535/789] Update output.md --- docs/output.md | 1 - 1 file changed, 1 deletion(-) diff --git a/docs/output.md b/docs/output.md index fe80761..e194d4d 100644 --- a/docs/output.md +++ b/docs/output.md @@ -115,7 +115,6 @@ fastp can automatically detect adapter sequences for Illumina data.
    -<<<<<<< HEAD ### Bowtie2
    From 97e48075c8926922a322c7c072ca680d3961326d Mon Sep 17 00:00:00 2001 From: Sofia Stamouli <91951607+sofstam@users.noreply.github.com> Date: Tue, 13 Dec 2022 09:37:43 +0100 Subject: [PATCH 536/789] Apply review suggestion Co-authored-by: James A. Fellows Yates --- docs/usage.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/usage.md b/docs/usage.md index f52e0ea..6c1214d 100644 --- a/docs/usage.md +++ b/docs/usage.md @@ -185,7 +185,7 @@ work # Directory containing the nextflow working files ### Sequencing quality control -[`FastQC`](https://www.bioinformatics.babraham.ac.uk/projects/fastqc/) gives general quality metrics about your reads. It provides information about the quality score distribution across your reads, per base sequence content (%A/T/G/C), adapter contamination and overrepresented sequences. nf-core taxprofiler offers [`falco`](https://github.com/smithlabcode/falco) as an alternative option. +[`FastQC`](https://www.bioinformatics.babraham.ac.uk/projects/fastqc/) gives general quality metrics about your reads. It provides information about the quality score distribution across your reads, per base sequence content (%A/T/G/C), adapter contamination and overrepresented sequences. nf-core taxprofiler offers [`falco`](https://github.com/smithlabcode/falco) as an drop-in replacement, with supposedly better improvement particularly for long reads. ### Preprocessing Steps From 1eb3da758b04893fbe2199d8873cad461fc6308b Mon Sep 17 00:00:00 2001 From: Sofia Stamouli <91951607+sofstam@users.noreply.github.com> Date: Tue, 13 Dec 2022 09:38:09 +0100 Subject: [PATCH 537/789] Apply review suggestion Co-authored-by: James A. Fellows Yates --- docs/usage.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/docs/usage.md b/docs/usage.md index 6c1214d..c45d828 100644 --- a/docs/usage.md +++ b/docs/usage.md @@ -568,8 +568,12 @@ See the [MALT manual](https://software-ab.informatik.uni-tuebingen.de/download/m #### Bracken -You can follow Bracken [tutorial](https://ccb.jhu.edu/software/bracken/index.shtml?t=manual) to build a custom database. Alternatively, you can use one of the indexes that can be found [here](https://benlangmead.github.io/aws-indexes/k2). +Bracken does not provide any default databases for profiling, but rather building upon Kraken2 databases. See [Kraken2](#kraken2) for more information on how to build these. +In addition to a Kraken2 database, you also need to have the (average) read lengths (in bp) of your sequencing experiment, the K-mer size used to build the Kraken2 database, and Kraken2 available on your machine. + +```bash +bracken-build -d -k -l #### KrakenUniq For KrakenUniq, we recommend using one of the available databases [here](https://benlangmead.github.io/aws-indexes/k2). But if you wish to build your own, please see the [documentation](https://github.com/fbreitwieser/krakenuniq/blob/master/README.md#custom-databases-with-ncbi-taxonomy). From f80adee9e2d1ff4931dcc368890ff7a9d250c2eb Mon Sep 17 00:00:00 2001 From: Sofia Stamouli Date: Tue, 13 Dec 2022 09:50:05 +0100 Subject: [PATCH 538/789] Review suggestions and prettier --- docs/usage.md | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/docs/usage.md b/docs/usage.md index c45d828..44d385a 100644 --- a/docs/usage.md +++ b/docs/usage.md @@ -174,6 +174,8 @@ nextflow run nf-core/taxprofiler --input samplesheet.csv --databases databases.c This will launch the pipeline with the `docker` configuration profile. See below for more information about profiles. +When running nf-core/taxprofiler, every step and tool is 'opt in'. To run a given profiler you must make sure to supply both a database in your `.csv` and supply `--run_` flag to your command. Omitting either will result in the profiling tool not executing. If you wish to perform pre-processing (adapter clipping, merge running etc.) or post-processing (visualisation) steps, these are also opt in `--perform_` and in some cases may also require additional files. Please check the parameters tab of this documentation for more information. + Note that the pipeline will create the following files in your working directory: ```bash @@ -574,6 +576,14 @@ In addition to a Kraken2 database, you also need to have the (average) read leng ```bash bracken-build -d -k -l +``` + +> 🛈 You can speed up database construction by supplying the threads parameter (`-t`). + +> 🛈 If you do not have Kraken2 in your `$PATH` you can point to the binary with `-x ///kraken2`. + +You can follow Bracken [tutorial](https://ccb.jhu.edu/software/bracken/index.shtml?t=manual) for more information. Alternatively, you can use one of the indexes that can be found [here](https://benlangmead.github.io/aws-indexes/k2). + #### KrakenUniq For KrakenUniq, we recommend using one of the available databases [here](https://benlangmead.github.io/aws-indexes/k2). But if you wish to build your own, please see the [documentation](https://github.com/fbreitwieser/krakenuniq/blob/master/README.md#custom-databases-with-ncbi-taxonomy). From d99706f43d2df8e3524b5656e99d7ec602805a85 Mon Sep 17 00:00:00 2001 From: sofstam Date: Tue, 13 Dec 2022 11:23:07 +0100 Subject: [PATCH 539/789] Move database section and alphabetical order --- docs/usage.md | 269 ++++++++++++++++++++++++++++++-------------------- 1 file changed, 164 insertions(+), 105 deletions(-) diff --git a/docs/usage.md b/docs/usage.md index 44d385a..f6168a6 100644 --- a/docs/usage.md +++ b/docs/usage.md @@ -103,66 +103,22 @@ nf-core/taxprofiler will automatically decompress and extract any compressed arc Expected (uncompressed) database files for each tool are as follows: -- **MALT** output of `malt-build`. A directory containing: - - `ref.idx` - - `taxonomy.idx` - - `taxonomy.map` - - `index0.idx` - - `table0.idx` - - `table0.db` - - `ref.inf` - - `ref.db` - - `taxonomy.tre` -- **Kraken2** output of `kraken2-build` command(s) A directory containing: - - `opts.k2d` - - `hash.k2d` - - `taxo.k2d` -- **Bracken** output of a combined `kraken2-` and `bracken-build` process. Please see the [documentation on Bracken](https://github.com/jenniferlu717/Bracken#running-bracken-easy-version) for details. The output is a directory containing files per expected sequencing read length similarly to: - - `hash.k2d` - - `opts.k2d` - - `taxo.k2d` - - `database.kraken` - - `database100mers.kmer_distrib` - - `database100mers.kraken` - - `database150mers.kmer_distrib` - - `database150mers.kraken` -- **KrakenUniq** output of `krakenuniq-build` command(s) A directory containing: - - `opts.k2d` - - `hash.k2d` - - `taxo.k2d` - - `database.idx` - - `taxDB` -- **Centrifuge** output of `centrifuge-build`. A directory containing: - - `..cf` - - `..cf` - - `..cf` - - `..cf` -- **MetaPhlAn3** generated with `metaphlan --install` or downloaded from links on the [MetaPhlAn3 wiki](https://github.com/biobakery/MetaPhlAn/wiki/MetaPhlAn-3.0#customizing-the-database). A directory containing: - - `mpa_v30_CHOCOPhlAn_201901.pkl` - - `mpa_v30_CHOCOPhlAn_201901.pkl` - - `mpa_v30_CHOCOPhlAn_201901.fasta` - - `mpa_v30_CHOCOPhlAn_201901.3.bt2` - - `mpa_v30_CHOCOPhlAn_201901.4.bt2` - - `mpa_v30_CHOCOPhlAn_201901.1.bt2` - - `mpa_v30_CHOCOPhlAn_201901.2.bt2` - - `mpa_v30_CHOCOPhlAn_201901.rev.1.bt2` - - `mpa_v30_CHOCOPhlAn_201901.rev.2.bt2` - - `mpa_latest` -- **Kaiju** output of `kaiju-makedb`. A directory containing: - - `kaiju_db_*.fmi` - - `nodes.dmp` - - `names.dmp` -- **DIAMOND** output of `diamond makedb`. Note: requires building with taxonomy files - to generate taxonomic profile. See [DIAMOND documentation](https://github.com/bbuchfink/diamond/wiki/3.-Command-line-options#makedb-options). A file named: - - `.dmnd` -- **mOTUs** is composed of code and database together. The mOTUs tools +- [**Bracken** output](#bracken) of a combined `kraken2-` and `bracken-build` process. Please see the [documentation on Bracken](https://github.com/jenniferlu717/Bracken#running-bracken-easy-version) for details. The output is a directory containing files per expected sequencing read length. +- [**Centrifuge** output](#centrifuge) of `centrifuge-build`. +- [**DIAMOND** output](#diamond) of `diamond makedb`. Note: requires building with taxonomy files + to generate taxonomic profile. See [DIAMOND documentation](https://github.com/bbuchfink/diamond/wiki/3.-Command-line-options#makedb-options). +- [**Kaiju** output](#kaiju) of `kaiju-makedb`. +- [**Kraken2** output](#kraken2) of `kraken2-build` command(s). +- [**KrakenUniq** output](#krakenuniq) of `krakenuniq-build` command(s). +- [**MALT** output](#malt) of `malt-build`. +- [**MetaPhlAn3**](#metaphlan3) generated with `metaphlan --install` or downloaded from links on the [MetaPhlAn3 wiki](https://github.com/biobakery/MetaPhlAn/wiki/MetaPhlAn-3.0#customizing-the-database). +- [**mOTUs**](#motus) is composed of code and database together. The mOTUs tools [`downloadDB`](https://github.com/motu-tool/mOTUs/blob/master/motus/downloadDB.py) is used to prepare the mOTUs database and create a file with the version information. The database download step can be time consuming and the database will be consisting with same release version of the mOTUs tools. The database for same version tools can be thus reused for multiple runs. Users can download the database once using the script above and specify the path the database to the TSV table provided to `--databases`. -- **KrakenUniq** WIP ## Running the pipeline @@ -489,43 +445,50 @@ NXF_OPTS='-Xms1g -Xmx4g' Here we will give brief guidance on how to build databases for each supported taxonomic profiler. You should always consult the documentation of each toolfor more information, how we provide these as quick reference guides. The following tutorial assumes you already have the tool available (e.g. installed locally, or via conda, docker etc.), and you have already downloaded the FASTA files you wish to build into a database. -#### Kraken2 - -> These are instructions are based on Kraken 2.1.2 -> To build a Kraken2 database you need two components: a taxonomy (consisting of `names.dmp`, `nodes.dmp`, and `*accession2taxid`) files, and the FASTA files you wish to include. -> To install pull the NCBI taxonomy you can run the following: +#### Bracken -```bash -kraken2-build --download-taxonomy --db -``` +
    +Output files -You can then add your FASTA files with the following build command. +- `bracken` + - `hash.k2d` + - `opts.k2d` + - `taxo.k2d` + - `database.kraken` + - `database100mers.kmer_distrib` + - `database100mers.kraken` + - `database150mers.kmer_distrib` + - `database150mers.kraken` -```bash -kraken2-build --add-to-library *.fna --db -``` +
    -You can repeat this step multiple times to iteratively add more genomes prior building. +Bracken does not provide any default databases for profiling, but rather building upon Kraken2 databases. See [Kraken2](#kraken2) for more information on how to build these. -You can also automatical download and add 'standard' libraries provided by Kraken2 (e.g. bacteria on RefSeq) +In addition to a Kraken2 database, you also need to have the (average) read lengths (in bp) of your sequencing experiment, the K-mer size used to build the Kraken2 database, and Kraken2 available on your machine. ```bash -kraken2-build --download-library bacteria --db +bracken-build -d -k -l ``` -Once all genomes are added to the library, you can build the database (and optionally clean it up): - -```bash -kraken2-build --build --db -kraken2-build --clean--db -``` +> 🛈 You can speed up database construction by supplying the threads parameter (`-t`). -You can then add the / path to your nf-core/taxprofiler database input sheet. +> 🛈 If you do not have Kraken2 in your `$PATH` you can point to the binary with `-x ///kraken2`. -You can follow the Kraken2 [tutorial](https://github.com/DerrickWood/kraken2/blob/master/docs/MANUAL.markdown#custom-databases) for a more detailed description. +You can follow Bracken [tutorial](https://ccb.jhu.edu/software/bracken/index.shtml?t=manual) for more information. Alternatively, you can use one of the indexes that can be found [here](https://benlangmead.github.io/aws-indexes/k2). #### Centrifuge +
    +Output files + +- `centrifuge` + - `..cf` + - `..cf` + - `..cf` + - `..cf` + +
    + Centrifuge allows the user to [build custom databases](https://ccb.jhu.edu/software/centrifuge/manual.shtml#custom-database). The user should download taxonomy files, make custom `seqid2taxid.map` and combine the fasta files together. ```bash @@ -541,8 +504,43 @@ cat *.{fa,fna} > input-sequences.fna centrifuge-build -p 4 --conversion-table seqid2taxid.map --taxonomy-tree taxonomy/nodes.dmp --name-table taxonomy/names.dmp input-sequences.fna taxprofiler_cf ``` +#### DIAMOND + +
    +Output files + +- `diamond` + - `.dmnd` + +
    + +To create a custom database for DIAMOND, the user should download and unzip the NCBI's taxonomy files. The `makedb` needs to be executed afterwards. A detailed description can be found [here](https://github.com/bbuchfink/diamond/wiki/1.-Tutorial) + +```bash +wget ftp://ftp.ncbi.nlm.nih.gov/pub/taxonomy/taxdmp.zip +unzip taxdmp.zip + +## warning: large file! +wget ftp://ftp.ncbi.nlm.nih.gov/pub/taxonomy/accession2taxid/prot.accession2taxid.FULL.gz + +## warning: takes a long time! +cat ../raw/*.faa | diamond makedb -d testdb-diamond --taxonmap prot.accession2taxid.FULL.gz --taxonnodes nodes.dmp --taxonnames names.dmp + +rm *dmp *txt *gz *prt *zip +``` + #### Kaiju +
    +Output files + +- `kaiju` + - `kaiju_db_*.fmi` + - `nodes.dmp` + - `names.dmp` + +
    + It is possible to [create custom databases](https://github.com/bioinformatics-centre/kaiju#custom-database) with Kaiju. ```bash @@ -550,61 +548,122 @@ kaiju-mkbwt -n 5 -a ACDEFGHIKLMNPQRSTVWY -o proteins proteins.faa kaiju-mkfmi proteins ``` -#### MALT +#### Kraken2 -MALT does not provide any default databases for profiling, therefore you must build your own. -You need FASTA files to include, and an (unzipped) [MEGAN mapping 'db' file](https://software-ab.informatik.uni-tuebingen.de/download/megan6/) for your FASTA type. -In addition to the input directory, output directory, and the mapping file database, you also need to specify the sequence type (DNA or Protein) with the `-s` flag. +
    +Output files -```bash -malt-build -i ///*.{fna,fa,fasta} -a2t //.db -d / -s DNA -``` +- `kraken2` + - `opts.k2d` + - `hash.k2d` + - `taxo.k2d` -You can then add the / path to your nf-core/taxprofiler database input sheet. +
    -⚠️ MALT generates very large database files and requires large amounts of RAM. You can reduce both by increasing the step size `-st` (with a reduction in sensitivity). +> These are instructions are based on Kraken 2.1.2 +> To build a Kraken2 database you need two components: a taxonomy (consisting of `names.dmp`, `nodes.dmp`, and `*accession2taxid`) files, and the FASTA files you wish to include. +> To install pull the NCBI taxonomy you can run the following: -MALT-build can be multi-threaded with `-t` to speed up building. +```bash +kraken2-build --download-taxonomy --db +``` -See the [MALT manual](https://software-ab.informatik.uni-tuebingen.de/download/malt/manual.pdf) for more information. +You can then add your FASTA files with the following build command. -#### Bracken +```bash +kraken2-build --add-to-library *.fna --db +``` -Bracken does not provide any default databases for profiling, but rather building upon Kraken2 databases. See [Kraken2](#kraken2) for more information on how to build these. +You can repeat this step multiple times to iteratively add more genomes prior building. -In addition to a Kraken2 database, you also need to have the (average) read lengths (in bp) of your sequencing experiment, the K-mer size used to build the Kraken2 database, and Kraken2 available on your machine. +You can also automatical download and add 'standard' libraries provided by Kraken2 (e.g. bacteria on RefSeq) ```bash -bracken-build -d -k -l +kraken2-build --download-library bacteria --db ``` -> 🛈 You can speed up database construction by supplying the threads parameter (`-t`). +Once all genomes are added to the library, you can build the database (and optionally clean it up): -> 🛈 If you do not have Kraken2 in your `$PATH` you can point to the binary with `-x ///kraken2`. +```bash +kraken2-build --build --db +kraken2-build --clean--db +``` -You can follow Bracken [tutorial](https://ccb.jhu.edu/software/bracken/index.shtml?t=manual) for more information. Alternatively, you can use one of the indexes that can be found [here](https://benlangmead.github.io/aws-indexes/k2). +You can then add the / path to your nf-core/taxprofiler database input sheet. + +You can follow the Kraken2 [tutorial](https://github.com/DerrickWood/kraken2/blob/master/docs/MANUAL.markdown#custom-databases) for a more detailed description. #### KrakenUniq +
    +Output files + +- `krakenuniq` + - `opts.k2d` + - `hash.k2d` + - `taxo.k2d` + - `database.idx` + - `taxDB` + +
    + For KrakenUniq, we recommend using one of the available databases [here](https://benlangmead.github.io/aws-indexes/k2). But if you wish to build your own, please see the [documentation](https://github.com/fbreitwieser/krakenuniq/blob/master/README.md#custom-databases-with-ncbi-taxonomy). -#### DIAMOND -To create a custom database for DIAMOND, the user should download and unzip the NCBI's taxonomy files. The `makedb` needs to be executed afterwards. A detailed description can be found [here](https://github.com/bbuchfink/diamond/wiki/1.-Tutorial) +#### MALT -```bash -wget ftp://ftp.ncbi.nlm.nih.gov/pub/taxonomy/taxdmp.zip -unzip taxdmp.zip +
    +Output files -## warning: large file! -wget ftp://ftp.ncbi.nlm.nih.gov/pub/taxonomy/accession2taxid/prot.accession2taxid.FULL.gz +- `malt` + - `ref.idx` + - `taxonomy.idx` + - `taxonomy.map` + - `index0.idx` + - `table0.idx` + - `table0.db` + - `ref.inf` + - `ref.db` + - `taxonomy.tre` -## warning: takes a long time! -cat ../raw/*.faa | diamond makedb -d testdb-diamond --taxonmap prot.accession2taxid.FULL.gz --taxonnodes nodes.dmp --taxonnames names.dmp +
    -rm *dmp *txt *gz *prt *zip +MALT does not provide any default databases for profiling, therefore you must build your own. +You need FASTA files to include, and an (unzipped) [MEGAN mapping 'db' file](https://software-ab.informatik.uni-tuebingen.de/download/megan6/) for your FASTA type. +In addition to the input directory, output directory, and the mapping file database, you also need to specify the sequence type (DNA or Protein) with the `-s` flag. + +```bash +malt-build -i ///*.{fna,fa,fasta} -a2t //.db -d / -s DNA ``` +You can then add the / path to your nf-core/taxprofiler database input sheet. + +⚠️ MALT generates very large database files and requires large amounts of RAM. You can reduce both by increasing the step size `-st` (with a reduction in sensitivity). + +MALT-build can be multi-threaded with `-t` to speed up building. + +See the [MALT manual](https://software-ab.informatik.uni-tuebingen.de/download/malt/manual.pdf) for more information. + + +#### MetaPhlAn3 + +
    +Output files + +- `metaphlan3` + - `mpa_v30_CHOCOPhlAn_201901.pkl` + - `mpa_v30_CHOCOPhlAn_201901.pkl` + - `mpa_v30_CHOCOPhlAn_201901.fasta` + - `mpa_v30_CHOCOPhlAn_201901.3.bt2` + - `mpa_v30_CHOCOPhlAn_201901.4.bt2` + - `mpa_v30_CHOCOPhlAn_201901.1.bt2` + - `mpa_v30_CHOCOPhlAn_201901.2.bt2` + - `mpa_v30_CHOCOPhlAn_201901.rev.1.bt2` + - `mpa_v30_CHOCOPhlAn_201901.rev.2.bt2` + - `mpa_latest` + +
    + #### mOTUs A detailed description on how to download mOTUs database can be found [here](https://github.com/motu-tool/mOTUs) From c9e4eba62db71e8d7b40fa5c00b897277d34ffeb Mon Sep 17 00:00:00 2001 From: Sofia Stamouli Date: Tue, 13 Dec 2022 11:26:06 +0100 Subject: [PATCH 540/789] Prettier --- docs/output.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/output.md b/docs/output.md index e194d4d..ef04736 100644 --- a/docs/output.md +++ b/docs/output.md @@ -166,6 +166,7 @@ fastp can automatically detect adapter sequences for Illumina data. Output files - `krakenuniq` + - `.classified.fastq.gz` - `.krakenuniq.classified.txt` - `.krakenuniq.report.txt` From 3282f5944b45482ed00f1187fdaf9cc21e469bcf Mon Sep 17 00:00:00 2001 From: Sofia Stamouli Date: Tue, 13 Dec 2022 11:28:17 +0100 Subject: [PATCH 541/789] Apply prettier --- docs/usage.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/docs/usage.md b/docs/usage.md index f6168a6..77f5483 100644 --- a/docs/usage.md +++ b/docs/usage.md @@ -609,7 +609,6 @@ You can follow the Kraken2 [tutorial](https://github.com/DerrickWood/kraken2/blo For KrakenUniq, we recommend using one of the available databases [here](https://benlangmead.github.io/aws-indexes/k2). But if you wish to build your own, please see the [documentation](https://github.com/fbreitwieser/krakenuniq/blob/master/README.md#custom-databases-with-ncbi-taxonomy). - #### MALT
    @@ -644,7 +643,6 @@ MALT-build can be multi-threaded with `-t` to speed up building. See the [MALT manual](https://software-ab.informatik.uni-tuebingen.de/download/malt/manual.pdf) for more information. - #### MetaPhlAn3
    From 644c4ab83115629ae0b08719d636601824d018bb Mon Sep 17 00:00:00 2001 From: Sofia Stamouli Date: Tue, 13 Dec 2022 12:00:32 +0100 Subject: [PATCH 542/789] Review suggestions --- docs/usage.md | 47 +++++++++++++++++++++++++++++++++++++---------- 1 file changed, 37 insertions(+), 10 deletions(-) diff --git a/docs/usage.md b/docs/usage.md index 77f5483..d5ec101 100644 --- a/docs/usage.md +++ b/docs/usage.md @@ -440,7 +440,7 @@ NXF_OPTS='-Xms1g -Xmx4g' ## Tutorials -### Tutorial - How to create your custom database +### Retrieving databases or building custom databases Here we will give brief guidance on how to build databases for each supported taxonomic profiler. You should always consult the documentation of each toolfor more information, how we provide these as quick reference guides. The following tutorial assumes you already have the tool available (e.g. installed locally, or via conda, docker etc.), and you have already downloaded the FASTA files you wish to build into a database. @@ -448,7 +448,7 @@ The following tutorial assumes you already have the tool available (e.g. install #### Bracken
    -Output files +Expected files in database directory - `bracken` - `hash.k2d` @@ -479,7 +479,7 @@ You can follow Bracken [tutorial](https://ccb.jhu.edu/software/bracken/index.sht #### Centrifuge
    -Output files +Expected files in database directory - `centrifuge` - `..cf` @@ -507,7 +507,7 @@ centrifuge-build -p 4 --conversion-table seqid2taxid.map --taxonomy-tree taxonom #### DIAMOND
    -Output files +Expected files in database directory - `diamond` - `.dmnd` @@ -532,7 +532,7 @@ rm *dmp *txt *gz *prt *zip #### Kaiju
    -Output files +Expected files in database directory - `kaiju` - `kaiju_db_*.fmi` @@ -551,7 +551,7 @@ kaiju-mkfmi proteins #### Kraken2
    -Output files +Expected files in database directory - `kraken2` - `opts.k2d` @@ -596,7 +596,7 @@ You can follow the Kraken2 [tutorial](https://github.com/DerrickWood/kraken2/blo #### KrakenUniq
    -Output files +Expected files in database directory - `krakenuniq` - `opts.k2d` @@ -612,7 +612,7 @@ For KrakenUniq, we recommend using one of the available databases [here](https:/ #### MALT
    -Output files +Expected files in database directory - `malt` - `ref.idx` @@ -645,8 +645,19 @@ See the [MALT manual](https://software-ab.informatik.uni-tuebingen.de/download/m #### MetaPhlAn3 +MetaPhlAn3 provides a prebuilt database of marker genes. +This must be downloaded by the user. To do this you need to have `MetaPhlAn3` installed on your machine. + +```bash +metaphlan --install --bowtie2db / +``` + +You can then add the `/` path to your nf-core/taxprofiler database input sheet. + +> 🛈 It is generally not recommended to modify this database yourself, thus this is currently not supported in the pipeline. However, it is possible to customise the existing database by adding your own marker genomes following the instructions [here](https://github.com/biobakery/MetaPhlAn/wiki/MetaPhlAn-3.1#customizing-the-database). If using your own database is relevant for you, please contact the nf-core/taxprofiler developers on the [nf-core slack](https://nf-co.re/join) and we will investigate supporting this. +
    -Output files +Expected files in database directory - `metaphlan3` - `mpa_v30_CHOCOPhlAn_201901.pkl` @@ -662,9 +673,25 @@ See the [MALT manual](https://software-ab.informatik.uni-tuebingen.de/download/m
    +More information on the MetaPhlAn3 database can be found [here](https://github.com/biobakery/MetaPhlAn/wiki/MetaPhlAn-3.1#installation). + #### mOTUs -A detailed description on how to download mOTUs database can be found [here](https://github.com/motu-tool/mOTUs) +mOTUs provides a prebuilt database of marker genes. + +This must be downloaded by the user. To do this you need to have `mOTUs` installed on your machine. + +```bash +motus downloadDB +``` + +Then supply the `db_mOTU/` path to your nf-core/taxprofiler database input sheet. + +> ⚠️ The `db_mOTU/` directory may be downloaded to somewhere in your Python's `site-package` directory. You will have to find this yourself as the exact location varies depends on installation method. + +It is not possible to create a custom mOTUs database. + +More information on the mOTUs database can be found [here](https://motu-tool.org/installation.html). ## Troubleshooting and FAQs From 88589fbc53fa861a76509351bb032474e6ef3161 Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Thu, 15 Dec 2022 10:35:06 +0100 Subject: [PATCH 543/789] Fix publishing of log files of rpreprocessing steps --- conf/modules.config | 144 ++++++++++++++++++++++++++++++-------------- 1 file changed, 100 insertions(+), 44 deletions(-) diff --git a/conf/modules.config b/conf/modules.config index 747a03a..5127ff5 100644 --- a/conf/modules.config +++ b/conf/modules.config @@ -61,10 +61,17 @@ process { ].join(' ').trim() ext.prefix = { "${meta.id}_${meta.run_accession}" } publishDir = [ - path: { "${params.outdir}/fastp" }, - mode: params.publish_dir_mode, - pattern: '*.fastq.gz', - enabled: params.save_preprocessed_reads + [ + path: { "${params.outdir}/fastp" }, + mode: params.publish_dir_mode, + pattern: '*.fastq.gz', + enabled: params.save_preprocessed_reads + ], + [ + path: { "${params.outdir}/fastp" }, + mode: params.publish_dir_mode, + pattern: '*.{log,html,json}' + ] ] } @@ -82,10 +89,17 @@ process { ].join(' ').trim() ext.prefix = { "${meta.id}_${meta.run_accession}" } publishDir = [ - path: { "${params.outdir}/fastp" }, - mode: params.publish_dir_mode, - pattern: '*.fastq.gz', - enabled: params.save_preprocessed_reads + [ + path: { "${params.outdir}/fastp" }, + mode: params.publish_dir_mode, + pattern: '*.fastq.gz', + enabled: params.save_preprocessed_reads + ], + [ + path: { "${params.outdir}/fastp" }, + mode: params.publish_dir_mode, + pattern: '*.{log,html,json}' + ] ] } @@ -98,10 +112,17 @@ process { ].join(' ').trim() ext.prefix = { "${meta.id}_${meta.run_accession}" } publishDir = [ - path: { "${params.outdir}/adapterremoval" }, - mode: params.publish_dir_mode, - pattern: '*.fastq.gz', - enabled: params.save_preprocessed_reads + [ + path: { "${params.outdir}/adapterremoval" }, + mode: params.publish_dir_mode, + pattern: '*.fastq.gz', + enabled: params.save_preprocessed_reads + ], + [ + path: { "${params.outdir}/adapterremoval" }, + mode: params.publish_dir_mode, + pattern: '*.settings' + ] ] } @@ -117,20 +138,34 @@ process { ].join(' ').trim() ext.prefix = { "${meta.id}_${meta.run_accession}" } publishDir = [ - path: { "${params.outdir}/adapterremoval" }, - mode: params.publish_dir_mode, - pattern: '*.fastq.gz', - enabled: params.save_preprocessed_reads + [ + path: { "${params.outdir}/adapterremoval" }, + mode: params.publish_dir_mode, + pattern: '*.fastq.gz', + enabled: params.save_preprocessed_reads + ], + [ + path: { "${params.outdir}/adapterremoval" }, + mode: params.publish_dir_mode, + pattern: '*.settings' + ] ] } withName: PORECHOP_PORECHOP { ext.prefix = { "${meta.id}_${meta.run_accession}" } publishDir = [ - path: { "${params.outdir}/porechop" }, - mode: params.publish_dir_mode, - pattern: '*.fastq.gz', - enabled: params.save_preprocessed_reads + [ + path: { "${params.outdir}/porechop" }, + mode: params.publish_dir_mode, + pattern: '*.fastq.gz', + enabled: params.save_preprocessed_reads + ], + [ + path: { "${params.outdir}/porechop" }, + mode: params.publish_dir_mode, + pattern: '*.log' + ] ] } @@ -143,10 +178,17 @@ process { .join(' ').trim() ext.prefix = { "${meta.id}_${meta.run_accession}_filtered" } publishDir = [ - path: { "${params.outdir}/filtlong" }, - mode: params.publish_dir_mode, - pattern: '*.{fastq.gz,log}', - enabled: params.save_preprocessed_reads + [ + path: { "${params.outdir}/filtlong" }, + mode: params.publish_dir_mode, + pattern: '*.fastq.gz', + enabled: params.save_preprocessed_reads + ], + [ + path: { "${params.outdir}/filtlong" }, + mode: params.publish_dir_mode, + pattern: '*.log' + ] ] } @@ -163,21 +205,21 @@ process { ext.prefix = { "${meta.id}_${meta.run_accession}" } publishDir = [ [ - path: { "${params.outdir}/bowtie2/align" }, - mode: params.publish_dir_mode, - pattern: '*.log' + path: { "${params.outdir}/bowtie2/align" }, + mode: params.publish_dir_mode, + pattern: '*.log' ], [ - path: { "${params.outdir}/bowtie2/align" }, - mode: params.publish_dir_mode, - enabled: params.save_hostremoval_mapped, - pattern: '*.bam' + path: { "${params.outdir}/bowtie2/align" }, + mode: params.publish_dir_mode, + enabled: params.save_hostremoval_mapped, + pattern: '*.bam' ], [ - path: { "${params.outdir}/bowtie2/align" }, - mode: params.publish_dir_mode, - enabled: params.save_hostremoval_unmapped, - pattern: '*.fastq.gz' + path: { "${params.outdir}/bowtie2/align" }, + mode: params.publish_dir_mode, + enabled: params.save_hostremoval_unmapped, + pattern: '*.fastq.gz' ] ] } @@ -240,10 +282,17 @@ process { ].join(' ').trim() ext.prefix = { "${meta.id}-${meta.run_accession}" } publishDir = [ - path: { "${params.outdir}/bbduk/" }, - mode: params.publish_dir_mode, - pattern: '*.{fastq.gz,log}', - enabled: params.save_complexityfiltered_reads + [ + path: { "${params.outdir}/bbduk/" }, + mode: params.publish_dir_mode, + pattern: '*.{fastq.gz,log}', + enabled: params.save_complexityfiltered_reads + ], + [ + path: { "${params.outdir}/bbduk/" }, + mode: params.publish_dir_mode, + pattern: '*.log' + ] ] } @@ -255,10 +304,17 @@ process { ].join(' ').trim() ext.prefix = { "${meta.id}-${meta.run_accession}" } publishDir = [ - path: { "${params.outdir}/prinseqplusplus/" }, - mode: params.publish_dir_mode, - pattern: '*{_good_out.fastq.gz,_good_out_R1.fastq.gz,_good_out_R2.fastq.gz,log}', - enabled: params.save_complexityfiltered_reads + [ + path: { "${params.outdir}/prinseqplusplus/" }, + mode: params.publish_dir_mode, + pattern: '*{_good_out.fastq.gz,_good_out_R1.fastq.gz,_good_out_R2.fastq.gz}', + enabled: params.save_complexityfiltered_reads + ], + [ + path: { "${params.outdir}/prinseqplusplus/" }, + mode: params.publish_dir_mode, + pattern: '*.log' + ] ] } @@ -318,7 +374,7 @@ process { publishDir = [ path: { "${params.outdir}/bracken/" }, mode: params.publish_dir_mode, - pattern: '*.{txt}' + pattern: '*.txt' ] } From 3b86a22556825e3aa7e15cd5fa4d415343d3ac13 Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Thu, 15 Dec 2022 12:57:49 +0100 Subject: [PATCH 544/789] Fix falco publication names --- conf/modules.config | 4 ++-- modules/nf-core/falco/main.nf | 4 +++- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/conf/modules.config b/conf/modules.config index 5127ff5..f50b20c 100644 --- a/conf/modules.config +++ b/conf/modules.config @@ -33,7 +33,7 @@ process { } withName: FALCO { - ext.prefix = { "${meta.id}_${meta.run_accession}_raw" } + ext.prefix = { "${meta.id}_${meta.run_accession}_raw_falco" } publishDir = [ path: { "${params.outdir}/falco/raw" }, mode: params.publish_dir_mode, @@ -42,7 +42,7 @@ process { } withName: FALCO_PROCESSED { - ext.prefix = { "${meta.id}_${meta.run_accession}_processed" } + ext.prefix = { "${meta.id}_${meta.run_accession}_processed_falco" } publishDir = [ path: { "${params.outdir}/falco/processed" }, mode: params.publish_dir_mode, diff --git a/modules/nf-core/falco/main.nf b/modules/nf-core/falco/main.nf index 1688162..b279c57 100644 --- a/modules/nf-core/falco/main.nf +++ b/modules/nf-core/falco/main.nf @@ -33,7 +33,9 @@ process FALCO { """ } else { """ - falco $args --threads $task.cpus ${reads} + [ ! -f ${prefix}_1.fastq.gz ] && ln -s ${reads[0]} ${prefix}_1.fastq.gz + [ ! -f ${prefix}_2.fastq.gz ] && ln -s ${reads[1]} ${prefix}_2.fastq.gz + falco $args --threads $task.cpus ${prefix}_1.fastq.gz ${prefix}_2.fastq.gz cat <<-END_VERSIONS > versions.yml "${task.process}": From 9e6a91aff929ddd12170278565771571c18f0dda Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Thu, 15 Dec 2022 13:25:01 +0100 Subject: [PATCH 545/789] Distinguish Kraken2 from Bracken --- conf/modules.config | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/conf/modules.config b/conf/modules.config index f50b20c..60ebaa4 100644 --- a/conf/modules.config +++ b/conf/modules.config @@ -351,7 +351,7 @@ process { withName: KRAKEN2_KRAKEN2 { ext.args = params.kraken2_save_minimizers ? { "${meta.db_params} --report-minimizer-data" } : { "${meta.db_params}" } - ext.prefix = params.perform_runmerging ? { "${meta.id}-${meta.db_name}" } : { "${meta.id}-${meta.run_accession}-${meta.db_name}" } + ext.prefix = params.perform_runmerging ? { meta.tool == "bracken" ? "${meta.id}-${meta.db_name}.bracken" : "${meta.id}-${meta.db_name}" } : { meta.tool == "bracken" ? "${meta.id}-${meta.run_accession}-${meta.db_name}.bracken" : "${meta.id}-${meta.run_accession}-${meta.db_name}" } publishDir = [ path: { "${params.outdir}/kraken2/${meta.db_name}/" }, mode: params.publish_dir_mode, @@ -361,7 +361,7 @@ process { withName: BRACKEN_BRACKEN { errorStrategy = 'ignore' - ext.prefix = params.perform_runmerging ? { "${meta.id}-${meta.db_name}" } : { "${meta.id}-${meta.run_accession}-${meta.db_name}" } + ext.prefix = params.perform_runmerging ? { "${meta.id}-${meta.db_name}.bracken" } : { "${meta.id}-${meta.run_accession}-${meta.db_name}.bracken" } publishDir = [ path: { "${params.outdir}/bracken/${meta.db_name}/" }, mode: params.publish_dir_mode, From 0bdc119f9cee402257816ef4362b42a2b92b4866 Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Thu, 15 Dec 2022 13:27:41 +0100 Subject: [PATCH 546/789] Include falco patch --- modules.json | 3 ++- modules/nf-core/falco/falco.diff | 16 ++++++++++++++++ 2 files changed, 18 insertions(+), 1 deletion(-) create mode 100644 modules/nf-core/falco/falco.diff diff --git a/modules.json b/modules.json index a3017f7..7eb15e3 100644 --- a/modules.json +++ b/modules.json @@ -73,7 +73,8 @@ "falco": { "branch": "master", "git_sha": "fc959214036403ad83efe7a41d43d0606c445cda", - "installed_by": ["modules"] + "installed_by": ["modules"], + "patch": "modules/nf-core/falco/falco.diff" }, "fastp": { "branch": "master", diff --git a/modules/nf-core/falco/falco.diff b/modules/nf-core/falco/falco.diff new file mode 100644 index 0000000..4c726b9 --- /dev/null +++ b/modules/nf-core/falco/falco.diff @@ -0,0 +1,16 @@ +Changes in module 'nf-core/falco' +--- modules/nf-core/falco/main.nf ++++ modules/nf-core/falco/main.nf +@@ -33,7 +33,9 @@ + """ + } else { + """ +- falco $args --threads $task.cpus ${reads} ++ [ ! -f ${prefix}_1.fastq.gz ] && ln -s ${reads[0]} ${prefix}_1.fastq.gz ++ [ ! -f ${prefix}_2.fastq.gz ] && ln -s ${reads[1]} ${prefix}_2.fastq.gz ++ falco $args --threads $task.cpus ${prefix}_1.fastq.gz ${prefix}_2.fastq.gz + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + +************************************************************ From d6db04503e0fe2d643a7f34cb915a708f490de1e Mon Sep 17 00:00:00 2001 From: Sofia Stamouli <91951607+sofstam@users.noreply.github.com> Date: Thu, 15 Dec 2022 17:04:45 +0100 Subject: [PATCH 547/789] Configuration of multiqc report --- assets/multiqc_config.yml | 207 +++++++++++++++++++++++++++++++++++++- 1 file changed, 205 insertions(+), 2 deletions(-) diff --git a/assets/multiqc_config.yml b/assets/multiqc_config.yml index e4a04a9..865879b 100644 --- a/assets/multiqc_config.yml +++ b/assets/multiqc_config.yml @@ -19,11 +19,20 @@ custom_logo_title: "nf-core/taxprofiler" run_modules: - fastqc - adapterRemoval + - bbduk + - prinseqplusplus - fastp + - filtlong - bowtie2 + - minimap2 - samtools - kraken + - kaiju + - metaphlan + - diamond - malt + - motus + - porechop - custom_content #extra_fn_clean_exts: @@ -36,16 +45,41 @@ top_modules: name: "FastQC (pre-Trimming)" path_filters: - "*raw_*fastqc.zip" + - "fastqc": + name: "Falco (pre-Trimming)" + path_filters: + - "*_raw_falco_*_report.html" - "fastp" - "adapterRemoval" + - "porechop" - "fastqc": name: "FastQC (post-Trimming)" path_filters: - - "*raw_*processed.zip" + - "*_processed_*fastqc.zip" + - "fastqc": + name: "Falco (post-Trimming)" + path_filters: + - "*_processed_falco_*_report.html" + - "bbduk" + - "prinseqplusplus" + - "filtlong" + - "bowtie2": + name: "bowtie2" + - "samtools": + name: "Samtools Stats" - "kraken": name: "Kraken" path_filters: - - "*.kraken2.report.txt" + - "*.kraken2.kraken2.report.txt" + - "kraken": + name: "Bracken" + anchor: "bracken" + target: "Bracken" + doi: "10.7717/peerj-cs.104" + info: "Estimates species abundances in metagenomics samples by probabilistically re-distributing reads in the taxonomic tree." + extra: "Note: plot title will say Kraken2 due to the first step of bracken producing the same output format as Kraken. Abundance information is currently not supported in MultiQC." + path_filters: + - "*.bracken.kraken2.report.txt" - "kraken": name: "Centrifuge" anchor: "centrifuge" @@ -55,3 +89,172 @@ top_modules: extra: "Note: plot title will say Kraken2 due to Centrifuge producing the same output format as Kraken. If activated, see the actual Kraken2 results in the section above." path_filters: - "*.centrifuge.txt" + - "malt": + name: "MALT" + - "diamond" + - "kaiju": + name: "Kaiju" + - "motus" + +#It is not possible to set placement for custom kraken and centrifuge columns. + +table_columns_placement: + FastQC (pre-Trimming): + total_sequences: 100 + avg_sequence_length: 110 + percent_duplicates: 120 + percent_gc: 130 + percent_fails: 140 + Falco (pre-Trimming): + total_sequences: 200 + avg_sequence_length: 210 + percent_duplicates: 220 + percent_gc: 230 + percent_fails: 240 + fastp: + pct_adapter: 300 + pct_surviving: 310 + pct_duplication: 320 + after_filtering_gc_content: 330 + after_filtering_q30_rate: 340 + after_filtering_q30_bases: 350 + Adapter Removal: + aligned_total: 360 + percent_aligned: 370 + percent_collapsed: 380 + percent_discarded: 390 + FastQC (post-Trimming): + total_sequences: 400 + avg_sequence_length: 410 + percent_duplicates: 420 + percent_gc: 430 + percent_fails: 440 + Falco (post-Trimming): + total_sequences: 500 + avg_sequence_length: 510 + percent_duplicates: 520 + percent_gc: 530 + percent_fails: 540 + bowtie2: + overall_alignment_rate: 600 + Samtools Stats: + raw_total_sequences: 700 + reads_mapped: 710 + reads_mapped_percent: 720 + reads_properly_paired_percent: 730 + non-primary_alignments: 740 + reads_MQ0_percent: 750 + error_rate: 760 + MALT: + Num. of queries: 1000 + Total reads: 1100 + Mappability: 1200 + Assig. Taxonomy: 1300 + Taxonomic assignment success: 1400 + Kaiju: + assigned: 2000 + "% Assigned": 2100 + "% Unclassified": 2200 + +table_columns_visible: + FastQC (pre-Trimming): + total_sequences: True + avg_sequence_length: True + percent_duplicates: True + percent_gc: True + percent_fails: False + Falco (pre-Trimming): + total_sequences: True + avg_sequence_length: True + percent_duplicates: True + percent_gc: True + percent_fails: False + fastp: + pct_adapter: True + pct_surviving: True + pct_duplication: False + after_filtering_gc_content: False + after_filtering_q30_rate: False + after_filtering_q30_bases: False + Adapter Removal: + aligned_total: True + percent_aligned: True + percent_collapsed: True + percent_discarded: False + FastQC (post-Trimming): + total_sequences: True + avg_sequence_length: True + percent_duplicates: False + percent_gc: False + percent_fails: False + Falco (post-Trimming): + total_sequences: True + avg_sequence_length: True + percent_duplicates: False + percent_gc: False + percent_fails: False + bowtie2: + overall_alignment_rate: True + Samtools Stats: + raw_total_sequences: True + reads_mapped: True + reads_mapped_percent: True + reads_properly_paired_percent: False + non-primary_alignments: False + reads_MQ0_percent: False + error_rate: False + Kraken: + "% Unclassified": True + "% Top 5": False + Bracken: + "% Unclassified": True + "% Top 5": False + Centrifuge: + "% Unclassified": True + "% Top 5": False + MALT: + Num. of queries: True + Total reads: True + Mappability: True + Assig. Taxonomy: False + Taxonomic assignment success: True + Kaiju: + assigned: False + "% Assigned": False + "% Unclassified": True +table_columns_name: + FastQC (pre-Trimming): + total_sequences: "Nr. Input Reads" + avg_sequence_length: "Length Input Reads" + percent_gc: "% GC Input Reads" + percent_duplicates: "% Dups Input Reads" + percent_fails: "% Failed Input Reads" + Falco (pre-Trimming): + total_sequences: "Nr. Input Reads" + avg_sequence_length: "Length Input Reads" + percent_gc: "% GC Input Reads" + percent_duplicates: "% Dups Input Reads" + percent_fails: "% Failed Input Reads" + FastQC (post-Trimming): + total_sequences: "Nr. Processed Reads" + avg_sequence_length: "Length Processed Reads" + percent_gc: "% GC Processed Reads" + percent_duplicates: "% Dups Processed Reads" + percent_fails: "%Failed Processed Reads" + Falco (post-Trimming): + total_sequences: "Nr. Processed Reads" + avg_sequence_length: "Length Processed Reads" + percent_gc: "% GC Processed Reads" + percent_duplicates: "% Dups Processed Reads" + percent_fails: "%Failed Processed Reads" + Samtools Stats: + raw_total_sequences: "Nr. Reads Into Mapping" + reads_mapped: "Nr. Mapped Reads" + reads_mapped_percent: "% Mapped Reads" + + +extra_fn_clean_exts: + - ".kraken2.kraken2.report.txt" + - ".centrifuge.txt" + - ".bracken.kraken2.report.txt" + - ".settings" From a2c81e33fd6496e1cfa81d091d870cdda1030687 Mon Sep 17 00:00:00 2001 From: Sofia Stamouli Date: Fri, 16 Dec 2022 08:38:58 +0100 Subject: [PATCH 548/789] Prettier --- assets/multiqc_config.yml | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/assets/multiqc_config.yml b/assets/multiqc_config.yml index 865879b..1deb8f8 100644 --- a/assets/multiqc_config.yml +++ b/assets/multiqc_config.yml @@ -251,10 +251,9 @@ table_columns_name: raw_total_sequences: "Nr. Reads Into Mapping" reads_mapped: "Nr. Mapped Reads" reads_mapped_percent: "% Mapped Reads" - extra_fn_clean_exts: - - ".kraken2.kraken2.report.txt" - - ".centrifuge.txt" - - ".bracken.kraken2.report.txt" - - ".settings" + - ".kraken2.kraken2.report.txt" + - ".centrifuge.txt" + - ".bracken.kraken2.report.txt" + - ".settings" From 5a592f086e9e7c7cd448f9e1f0c276f218885080 Mon Sep 17 00:00:00 2001 From: Sofia Stamouli <91951607+sofstam@users.noreply.github.com> Date: Fri, 16 Dec 2022 11:46:35 +0100 Subject: [PATCH 549/789] Update assets/multiqc_config.yml Co-authored-by: James A. Fellows Yates --- assets/multiqc_config.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/assets/multiqc_config.yml b/assets/multiqc_config.yml index 1deb8f8..014d9f7 100644 --- a/assets/multiqc_config.yml +++ b/assets/multiqc_config.yml @@ -246,7 +246,7 @@ table_columns_name: avg_sequence_length: "Length Processed Reads" percent_gc: "% GC Processed Reads" percent_duplicates: "% Dups Processed Reads" - percent_fails: "%Failed Processed Reads" + percent_fails: "% Failed Processed Reads" Samtools Stats: raw_total_sequences: "Nr. Reads Into Mapping" reads_mapped: "Nr. Mapped Reads" From 07a1cfae62ceb98b074615868550d1f933a021b4 Mon Sep 17 00:00:00 2001 From: Sofia Stamouli <91951607+sofstam@users.noreply.github.com> Date: Fri, 16 Dec 2022 11:46:42 +0100 Subject: [PATCH 550/789] Update assets/multiqc_config.yml Co-authored-by: James A. Fellows Yates --- assets/multiqc_config.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/assets/multiqc_config.yml b/assets/multiqc_config.yml index 014d9f7..6bc13c2 100644 --- a/assets/multiqc_config.yml +++ b/assets/multiqc_config.yml @@ -240,7 +240,7 @@ table_columns_name: avg_sequence_length: "Length Processed Reads" percent_gc: "% GC Processed Reads" percent_duplicates: "% Dups Processed Reads" - percent_fails: "%Failed Processed Reads" + percent_fails: "% Failed Processed Reads" Falco (post-Trimming): total_sequences: "Nr. Processed Reads" avg_sequence_length: "Length Processed Reads" From c23eb968f918317e33e3163ec7ed20f5bac2f765 Mon Sep 17 00:00:00 2001 From: Sofia Stamouli Date: Fri, 16 Dec 2022 15:20:06 +0100 Subject: [PATCH 551/789] Remove TODOs from test configs --- conf/test.config | 2 -- conf/test_krakenuniq.config | 2 -- conf/test_motus.config | 2 -- conf/test_nopreprocessing.config | 2 -- conf/test_noprofiling.config | 2 -- conf/test_nothing.config | 2 -- 6 files changed, 12 deletions(-) diff --git a/conf/test.config b/conf/test.config index db9f81d..68a3c6d 100644 --- a/conf/test.config +++ b/conf/test.config @@ -20,8 +20,6 @@ params { max_time = '6.h' // Input data - // TODO nf-core: Specify the paths to your test data on nf-core/test-datasets - // TODO nf-core: Give any required params for the test so that command line flags are not needed input = 'https://raw.githubusercontent.com/nf-core/test-datasets/taxprofiler/samplesheet.csv' databases = 'https://raw.githubusercontent.com/nf-core/test-datasets/taxprofiler/database.csv' perform_shortread_qc = true diff --git a/conf/test_krakenuniq.config b/conf/test_krakenuniq.config index 67b559e..eda9c4c 100644 --- a/conf/test_krakenuniq.config +++ b/conf/test_krakenuniq.config @@ -24,8 +24,6 @@ params { max_time = '6.h' // Input data - // TODO nf-core: Specify the paths to your test data on nf-core/test-datasets - // TODO nf-core: Give any required params for the test so that command line flags are not needed input = 'https://raw.githubusercontent.com/nf-core/test-datasets/taxprofiler/samplesheet.csv' databases = 'https://raw.githubusercontent.com/nf-core/test-datasets/taxprofiler/database_krakenuniq.csv' perform_shortread_qc = true diff --git a/conf/test_motus.config b/conf/test_motus.config index ee41447..f7e694d 100644 --- a/conf/test_motus.config +++ b/conf/test_motus.config @@ -24,8 +24,6 @@ params { max_time = '6.h' // Input data - // TODO nf-core: Specify the paths to your test data on nf-core/test-datasets - // TODO nf-core: Give any required params for the test so that command line flags are not needed input = 'https://raw.githubusercontent.com/nf-core/test-datasets/taxprofiler/samplesheet.csv' databases = 'database_motus.csv' perform_shortread_qc = false diff --git a/conf/test_nopreprocessing.config b/conf/test_nopreprocessing.config index 1a36159..d84e2ec 100644 --- a/conf/test_nopreprocessing.config +++ b/conf/test_nopreprocessing.config @@ -20,8 +20,6 @@ params { max_time = '6.h' // Input data - // TODO nf-core: Specify the paths to your test data on nf-core/test-datasets - // TODO nf-core: Give any required params for the test so that command line flags are not needed input = 'https://raw.githubusercontent.com/nf-core/test-datasets/taxprofiler/samplesheet.csv' databases = 'https://raw.githubusercontent.com/nf-core/test-datasets/taxprofiler/database.csv' perform_shortread_qc = false diff --git a/conf/test_noprofiling.config b/conf/test_noprofiling.config index 3ca715b..e565491 100644 --- a/conf/test_noprofiling.config +++ b/conf/test_noprofiling.config @@ -20,8 +20,6 @@ params { max_time = '6.h' // Input data - // TODO nf-core: Specify the paths to your test data on nf-core/test-datasets - // TODO nf-core: Give any required params for the test so that command line flags are not needed input = 'https://raw.githubusercontent.com/nf-core/test-datasets/taxprofiler/samplesheet.csv' databases = 'https://raw.githubusercontent.com/nf-core/test-datasets/taxprofiler/database.csv' perform_shortread_qc = true diff --git a/conf/test_nothing.config b/conf/test_nothing.config index b95deb4..e881731 100644 --- a/conf/test_nothing.config +++ b/conf/test_nothing.config @@ -20,8 +20,6 @@ params { max_time = '6.h' // Input data - // TODO nf-core: Specify the paths to your test data on nf-core/test-datasets - // TODO nf-core: Give any required params for the test so that command line flags are not needed input = 'https://raw.githubusercontent.com/nf-core/test-datasets/taxprofiler/samplesheet.csv' databases = 'https://raw.githubusercontent.com/nf-core/test-datasets/taxprofiler/database.csv' perform_shortread_qc = false From 770924587495e74a3bef3a57f3439d64f28595c4 Mon Sep 17 00:00:00 2001 From: "James A. Fellows Yates" Date: Tue, 20 Dec 2022 13:54:05 +0100 Subject: [PATCH 552/789] Update subworkflows/local/input_check.nf Co-authored-by: Moritz E. Beber --- subworkflows/local/input_check.nf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/subworkflows/local/input_check.nf b/subworkflows/local/input_check.nf index eb21b9d..7fd0072 100644 --- a/subworkflows/local/input_check.nf +++ b/subworkflows/local/input_check.nf @@ -34,7 +34,7 @@ workflow INPUT_CHECK { fastq = fastq ?: [] // channel: [ val(meta), [ reads ] ] nanopore = nanopore ?: [] // channel: [ val(meta), [ reads ] ] fasta = fasta ?: [] // channel: [ val(meta), fasta ] - versions = SAMPLESHEET_CHECK.out.versions // channel: [ versions.yml ] + versions = SAMPLESHEET_CHECK.out.versions.first() // channel: [ versions.yml ] } // Function to get list of [ meta, [ fastq_1, fastq_2 ] ] From 11db981a887b27a271bede8cda0406a47a84743e Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Tue, 20 Dec 2022 13:55:15 +0100 Subject: [PATCH 553/789] minor fixes --- bin/check_samplesheet.py | 4 ---- docs/usage.md | 2 +- subworkflows/local/input_check.nf | 11 ++++------- 3 files changed, 5 insertions(+), 12 deletions(-) diff --git a/bin/check_samplesheet.py b/bin/check_samplesheet.py index ca54ed9..a45cb93 100755 --- a/bin/check_samplesheet.py +++ b/bin/check_samplesheet.py @@ -50,13 +50,9 @@ def check_samplesheet(file_in, file_out): FQ_EXTENSIONS = (".fq.gz", ".fastq.gz") FA_EXTENSIONS = ( - ".fa", ".fa.gz", - ".fasta", ".fasta.gz", - ".fna", ".fna.gz", - ".fas", ".fas.gz", ) INSTRUMENT_PLATFORMS = [ diff --git a/docs/usage.md b/docs/usage.md index 685c3e3..4f3e038 100644 --- a/docs/usage.md +++ b/docs/usage.md @@ -12,7 +12,7 @@ nf-core/taxprofiler can accept as input raw or preprocessed single- or paired-end short-read (e.g. Illumina) FASTQ files, long-read FASTQ files (e.g. Oxford Nanopore), or FASTA sequences (available for a subset of profilers). -> ⚠️ Input FASTQ files _must_ be gzipped, while FASTA files may optionally be uncompressed (although this is not recommended) +> ⚠️ Input FASTQ and FASTA files _must_ be gzipped You will need to create a samplesheet with information about the samples you would like to analyse before running the pipeline. Use this parameter to specify its location. It has to be a comma-separated file with 6 columns, and a header row as shown in the examples below. Furthermother, nf-core/taxprofiler also requires a second comma-separated file of 3 columns with a header row as in the examples below. diff --git a/subworkflows/local/input_check.nf b/subworkflows/local/input_check.nf index 7fd0072..672c0e8 100644 --- a/subworkflows/local/input_check.nf +++ b/subworkflows/local/input_check.nf @@ -18,23 +18,20 @@ workflow INPUT_CHECK { fastq: true } - parsed_samplesheet.fastq + fastq = parsed_samplesheet.fastq .map { create_fastq_channel(it) } - .set { fastq } - parsed_samplesheet.nanopore + nanopore = parsed_samplesheet.nanopore .map { create_fastq_channel(it) } - .set { nanopore } - parsed_samplesheet.fasta + fasta = parsed_samplesheet.fasta .map { create_fasta_channel(it) } - .set { fasta } emit: fastq = fastq ?: [] // channel: [ val(meta), [ reads ] ] nanopore = nanopore ?: [] // channel: [ val(meta), [ reads ] ] fasta = fasta ?: [] // channel: [ val(meta), fasta ] - versions = SAMPLESHEET_CHECK.out.versions.first() // channel: [ versions.yml ] + versions = SAMPLESHEET_CHECK.out.versions.first() // channel: [ versions.yml ] } // Function to get list of [ meta, [ fastq_1, fastq_2 ] ] From 41063bc6703f044d59cc20f601cbbc419bf10e5c Mon Sep 17 00:00:00 2001 From: "James A. Fellows Yates" Date: Tue, 20 Dec 2022 13:56:01 +0100 Subject: [PATCH 554/789] Apply suggestions from code review Co-authored-by: Moritz E. Beber --- bin/check_samplesheet.py | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/bin/check_samplesheet.py b/bin/check_samplesheet.py index a45cb93..9bc84cc 100755 --- a/bin/check_samplesheet.py +++ b/bin/check_samplesheet.py @@ -104,22 +104,23 @@ def check_samplesheet(file_in, file_out): ## Pull out only relevant columns for downstream checking line_parsed = [x.strip().strip('"') for x in line.strip().split(",")] - lspl = [line_parsed[i] for i in header_locs.values()] # Check valid number of columns per row - if len(lspl) < len(HEADER): + if len(line_parsed) < len(HEADER): print_error( "Invalid number of columns (minimum = {})!".format(len(HEADER)), "Line", line, ) - num_cols = len([x for x in lspl if x]) + num_cols = len([x for x in line_parsed if x]) if num_cols < MIN_COLS: print_error( "Invalid number of populated columns (minimum = {})!".format(MIN_COLS), "Line", line, ) + + lspl = [line_parsed[i] for i in header_locs.values()] ## Check sample name entries @@ -169,7 +170,7 @@ def check_samplesheet(file_in, file_out): else: if instrument_platform not in INSTRUMENT_PLATFORMS: print_error( - f"Instrument platform {instrument_platform} is not supported!", + f"Instrument platform {instrument_platform} is not supported! " f"List of supported platforms {', '.join(INSTRUMENT_PLATFORMS)}", "Line", line, From 577da7e835eda533640a4c8f6521a12babdb4a7c Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Tue, 20 Dec 2022 13:59:14 +0100 Subject: [PATCH 555/789] Remove .first() as the module only executes once anyway and we get a ugly warning --- subworkflows/local/input_check.nf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/subworkflows/local/input_check.nf b/subworkflows/local/input_check.nf index 672c0e8..57061f1 100644 --- a/subworkflows/local/input_check.nf +++ b/subworkflows/local/input_check.nf @@ -31,7 +31,7 @@ workflow INPUT_CHECK { fastq = fastq ?: [] // channel: [ val(meta), [ reads ] ] nanopore = nanopore ?: [] // channel: [ val(meta), [ reads ] ] fasta = fasta ?: [] // channel: [ val(meta), fasta ] - versions = SAMPLESHEET_CHECK.out.versions.first() // channel: [ versions.yml ] + versions = SAMPLESHEET_CHECK.out.versions // channel: [ versions.yml ] } // Function to get list of [ meta, [ fastq_1, fastq_2 ] ] From 656956b0f9a8bb04e31e8f74d4c7ac0380269fde Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Tue, 20 Dec 2022 14:08:42 +0100 Subject: [PATCH 556/789] Black formatting --- bin/check_samplesheet.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bin/check_samplesheet.py b/bin/check_samplesheet.py index 9bc84cc..f5b0e6a 100755 --- a/bin/check_samplesheet.py +++ b/bin/check_samplesheet.py @@ -119,7 +119,7 @@ def check_samplesheet(file_in, file_out): "Line", line, ) - + lspl = [line_parsed[i] for i in header_locs.values()] ## Check sample name entries From 7be3cfc4509b9a5fd827d154a84967a2a96c266d Mon Sep 17 00:00:00 2001 From: Sofia Stamouli Date: Tue, 20 Dec 2022 15:00:17 +0100 Subject: [PATCH 557/789] Review suggestions --- docs/usage.md | 203 ++++++++++++++++++++++++++++---------------------- 1 file changed, 116 insertions(+), 87 deletions(-) diff --git a/docs/usage.md b/docs/usage.md index d5ec101..c61c580 100644 --- a/docs/usage.md +++ b/docs/usage.md @@ -103,22 +103,16 @@ nf-core/taxprofiler will automatically decompress and extract any compressed arc Expected (uncompressed) database files for each tool are as follows: -- [**Bracken** output](#bracken) of a combined `kraken2-` and `bracken-build` process. Please see the [documentation on Bracken](https://github.com/jenniferlu717/Bracken#running-bracken-easy-version) for details. The output is a directory containing files per expected sequencing read length. -- [**Centrifuge** output](#centrifuge) of `centrifuge-build`. -- [**DIAMOND** output](#diamond) of `diamond makedb`. Note: requires building with taxonomy files +- [**Bracken** output](#bracken-custom-database) of a combined `kraken2-` and `bracken-build` process. +- [**Centrifuge** output](#centrifuge-custom-database) of `centrifuge-build`. +- [**DIAMOND** output](#diamond-custom-database) of `diamond makedb`. to generate taxonomic profile. See [DIAMOND documentation](https://github.com/bbuchfink/diamond/wiki/3.-Command-line-options#makedb-options). -- [**Kaiju** output](#kaiju) of `kaiju-makedb`. -- [**Kraken2** output](#kraken2) of `kraken2-build` command(s). -- [**KrakenUniq** output](#krakenuniq) of `krakenuniq-build` command(s). -- [**MALT** output](#malt) of `malt-build`. -- [**MetaPhlAn3**](#metaphlan3) generated with `metaphlan --install` or downloaded from links on the [MetaPhlAn3 wiki](https://github.com/biobakery/MetaPhlAn/wiki/MetaPhlAn-3.0#customizing-the-database). -- [**mOTUs**](#motus) is composed of code and database together. The mOTUs tools - [`downloadDB`](https://github.com/motu-tool/mOTUs/blob/master/motus/downloadDB.py) - is used to prepare the mOTUs database and create a file with the version information. - The database download step can be time consuming and the database will be consisting - with same release version of the mOTUs tools. The database for same version tools - can be thus reused for multiple runs. Users can download the database once using the script above and - specify the path the database to the TSV table provided to `--databases`. +- [**Kaiju** output](#kaiju-custom-database) of `kaiju-makedb`. +- [**Kraken2** output](#kraken2-custom-database) of `kraken2-build` command(s). +- [**KrakenUniq** output](#krakenuniq-custom-database) of `krakenuniq-build` command(s). +- [**MALT** output](#malt-custom-database) of `malt-build`. +- [**MetaPhlAn3**](#metaphlan3-custom-database) generated with `metaphlan --install` or downloaded from links on the [MetaPhlAn3 wiki](https://github.com/biobakery/MetaPhlAn/wiki/MetaPhlAn-3.0#customizing-the-database). +- [**mOTUs**](#motus-custom-database) is composed of code and database together. ## Running the pipeline @@ -130,7 +124,7 @@ nextflow run nf-core/taxprofiler --input samplesheet.csv --databases databases.c This will launch the pipeline with the `docker` configuration profile. See below for more information about profiles. -When running nf-core/taxprofiler, every step and tool is 'opt in'. To run a given profiler you must make sure to supply both a database in your `.csv` and supply `--run_` flag to your command. Omitting either will result in the profiling tool not executing. If you wish to perform pre-processing (adapter clipping, merge running etc.) or post-processing (visualisation) steps, these are also opt in `--perform_` and in some cases may also require additional files. Please check the parameters tab of this documentation for more information. +When running nf-core/taxprofiler, every step and tool is 'opt in'. To run a given profiler you must make sure to supply both a database in your `.csv` and supply `--run_` flag to your command. Omitting either will result in the profiling tool not executing. If you wish to perform pre-processing (adapter clipping, merge running etc.) or post-processing (visualisation) steps, these are also opt in with a `--perform_` flag. In some cases, the pre- and post-processing steps may also require additional files. Please check the parameters tab of this documentation for more information. Note that the pipeline will create the following files in your working directory: @@ -158,12 +152,12 @@ nf-core/taxprofiler offers four main preprocessing steps Raw sequencing read processing in the form of adapter clipping and paired-end read merging can be activated via the `--perform_shortread_qc` or `--perform_longread_qc` flags. -It is highly recommended to run this on raw reads to remove artifacts from sequencing that can cause false positive identification of taxa (e.g. contaminated reference genomes) and/or skews in taxonomic abundance profiles. +It is highly recommended to run this on raw reads to remove artifacts from sequencing that can cause false positive identification of taxa (e.g. contaminated reference genomes) and/or skews in taxonomic abundance profiles. If you have public data, normally these should have been corrected for however you should still check this is the case. There are currently two options for short-read preprocessing: [`fastp`](https://github.com/OpenGene/fastp) or [`adapterremoval`](https://github.com/MikkelSchubert/adapterremoval). -For adapter clipping, you can either rely on tool default adapter sequences, or supply your own adapters (`--shortread_qc_adapter1` and `--shortread_qc_adapter2`) -By default, paired-end merging is not activated and paired-end profiling is performed where supported otherwise pairs will be independently profiled. If paired-end merging is activated you can also specify whether to include unmerged reads in the reads sent for profiling (`--shortread_qc_mergepairs` and `--shortread_qc_includeunmerged`). +For adapter clipping, you can either rely on the tool's default adapter sequences, or supply your own adapters (`--shortread_qc_adapter1` and `--shortread_qc_adapter2`) +By default, paired-end merging is not activated. In this case paired-end 'alignment' against the reference databases is performed where supported, and if not, supported pairs will be independently profiled. If paired-end merging is activated you can also specify whether to include unmerged reads in the reads sent for profiling (`--shortread_qc_mergepairs` and `--shortread_qc_includeunmerged`). You can also turn off clipping and only perform paired-end merging, if requested. This can be useful when processing data downloaded from the ENA, SRA, or DDBJ (`--shortread_qc_skipadaptertrim`). Both tools support length filtering of reads and can be tuned with `--shortread_qc_minlength`. Performing length filtering can be useful to remove short (often low sequencing complexity) sequences that result in unspecific classification and therefore slow down runtime during profiling, with minimal gain. @@ -211,9 +205,11 @@ You can optionally save the FASTQ output of the run merging with the `--save_run #### Profiling +The following suggestion gives you some tips and suggestions regarding running some of the different tools specifically _within the pipeline_. For advice as to which tool to run in your context, please see the documentation of each tool. + ###### Bracken -It is unclear whether Bracken is suitable for running long reads, as it makes certain assumptions about read lengths. Furthemore, during testing we found issues where Bracken would fail on the long-read test data. Therefore nf-core/taxprofiler does not run Bracken on data specified as being sequenced with `OXFORD_NANOPORE` in the input samplesheet. If you believe this to be wrong, please contact us on the nf-core slack and we can discuss this. +It is unclear whether Bracken is suitable for running long reads, as it makes certain assumptions about read lengths. Furthemore, during testing we found issues where Bracken would fail on the long-read test data. Therefore nf-core/taxprofiler does not run Bracken on data specified as being sequenced with `OXFORD_NANOPORE` in the input samplesheet. If you would like to change this behaviour, please contact us on the nf-core slack and we can discuss this. ###### Centrifuge @@ -221,13 +217,13 @@ Centrifuge currently does not accept FASTA files as input, therefore no output w ###### DIAMOND -DIAMOND only allows output of a single format at a time, therefore parameters such --diamond_save_reads supplied will result in only aligned reads in SAM format will be produced, no taxonomic profiles will be available. Be aware of this when setting up your pipeline runs, depending n your particular use case. +DIAMOND only allows output of a single format at a time, therefore parameters such --diamond_save_reads supplied will result in only aligned reads in SAM format will be produced, no taxonomic profiles will be available. Be aware of this when setting up your pipeline runs, depending on your particular use case. ###### MALT MALT does not support paired-end reads alignment (unlike other tools), therefore nf-core/taxprofiler aligns these as indepenent files if read-merging is skipped. If you skip merging, you can sum or average the results of the counts of the pairs. -Krona can only be run on MALT output if path to Krona taxonomy database supplied to `--krona_taxonomy_directory`. Therefore if you do not supply the a KRona directory, Krona plots will not be produced for MALT. +Krona can only be run on MALT output if path to Krona taxonomy database supplied to `--krona_taxonomy_directory`. Therefore if you do not supply the a Krona directory, Krona plots will not be produced for MALT. ###### MetaPhlAn3 @@ -443,9 +439,21 @@ NXF_OPTS='-Xms1g -Xmx4g' ### Retrieving databases or building custom databases Here we will give brief guidance on how to build databases for each supported taxonomic profiler. You should always consult the documentation of each toolfor more information, how we provide these as quick reference guides. -The following tutorial assumes you already have the tool available (e.g. installed locally, or via conda, docker etc.), and you have already downloaded the FASTA files you wish to build into a database. +The following tutorials assumes you already have the tool available (e.g. installed locally, or via conda, docker etc.), and you have already downloaded the FASTA files you wish to build into a database. + +#### Bracken custom database + +Bracken does not provide any default databases for profiling, but rather building upon Kraken2 databases. See [Kraken2](#kraken2-custom-database) for more information on how to build these. + +In addition to a Kraken2 database, you also need to have the (average) read lengths (in bp) of your sequencing experiment, the K-mer size used to build the Kraken2 database, and Kraken2 available on your machine. -#### Bracken +```bash +bracken-build -d -k -l +``` + +> 🛈 You can speed up database construction by supplying the threads parameter (`-t`). + +> 🛈 If you do not have Kraken2 in your `$PATH` you can point to the binary with `-x ///kraken2`.
    Expected files in database directory @@ -462,32 +470,9 @@ The following tutorial assumes you already have the tool available (e.g. install
    -Bracken does not provide any default databases for profiling, but rather building upon Kraken2 databases. See [Kraken2](#kraken2) for more information on how to build these. - -In addition to a Kraken2 database, you also need to have the (average) read lengths (in bp) of your sequencing experiment, the K-mer size used to build the Kraken2 database, and Kraken2 available on your machine. - -```bash -bracken-build -d -k -l -``` - -> 🛈 You can speed up database construction by supplying the threads parameter (`-t`). - -> 🛈 If you do not have Kraken2 in your `$PATH` you can point to the binary with `-x ///kraken2`. - You can follow Bracken [tutorial](https://ccb.jhu.edu/software/bracken/index.shtml?t=manual) for more information. Alternatively, you can use one of the indexes that can be found [here](https://benlangmead.github.io/aws-indexes/k2). -#### Centrifuge - -
    -Expected files in database directory - -- `centrifuge` - - `..cf` - - `..cf` - - `..cf` - - `..cf` - -
    +#### Centrifuge custom database Centrifuge allows the user to [build custom databases](https://ccb.jhu.edu/software/centrifuge/manual.shtml#custom-database). The user should download taxonomy files, make custom `seqid2taxid.map` and combine the fasta files together. @@ -504,16 +489,19 @@ cat *.{fa,fna} > input-sequences.fna centrifuge-build -p 4 --conversion-table seqid2taxid.map --taxonomy-tree taxonomy/nodes.dmp --name-table taxonomy/names.dmp input-sequences.fna taxprofiler_cf ``` -#### DIAMOND -
    Expected files in database directory -- `diamond` - - `.dmnd` +- `centrifuge` + - `..cf` + - `..cf` + - `..cf` + - `..cf`
    +#### DIAMOND custom database + To create a custom database for DIAMOND, the user should download and unzip the NCBI's taxonomy files. The `makedb` needs to be executed afterwards. A detailed description can be found [here](https://github.com/bbuchfink/diamond/wiki/1.-Tutorial) ```bash @@ -529,40 +517,38 @@ cat ../raw/*.faa | diamond makedb -d testdb-diamond --taxonmap prot.accession2ta rm *dmp *txt *gz *prt *zip ``` -#### Kaiju -
    Expected files in database directory -- `kaiju` - - `kaiju_db_*.fmi` - - `nodes.dmp` - - `names.dmp` +- `diamond` + - `.dmnd`
    -It is possible to [create custom databases](https://github.com/bioinformatics-centre/kaiju#custom-database) with Kaiju. +#### Kaiju custom database + +It is possible to [create custom databases](https://github.com/bioinformatics-centre/kaiju#custom-database) with Kaiju. To build a kaiju database, you need three components: a FASTA file with the protein sequences (the headers are the numeric NCBI taxon identifiers of the protein sequences), number of threads and you need to define the uppercase characters of the standard 20 amino acids. ```bash kaiju-mkbwt -n 5 -a ACDEFGHIKLMNPQRSTVWY -o proteins proteins.faa kaiju-mkfmi proteins ``` -#### Kraken2 -
    Expected files in database directory -- `kraken2` - - `opts.k2d` - - `hash.k2d` - - `taxo.k2d` +- `kaiju` + - `kaiju_db_*.fmi` + - `nodes.dmp` + - `names.dmp`
    -> These are instructions are based on Kraken 2.1.2 -> To build a Kraken2 database you need two components: a taxonomy (consisting of `names.dmp`, `nodes.dmp`, and `*accession2taxid`) files, and the FASTA files you wish to include. -> To install pull the NCBI taxonomy you can run the following: +#### Kraken2 custom database + +To build a Kraken2 database you need two components: a taxonomy (consisting of `names.dmp`, `nodes.dmp`, and `*accession2taxid`) files, and the FASTA files you wish to include. + +To install pulling the NCBI taxonomy, you can run the following: ```bash kraken2-build --download-taxonomy --db @@ -591,9 +577,50 @@ kraken2-build --clean--db You can then add the / path to your nf-core/taxprofiler database input sheet. +
    +Expected files in database directory + +- `kraken2` + - `opts.k2d` + - `hash.k2d` + - `taxo.k2d` + +
    + You can follow the Kraken2 [tutorial](https://github.com/DerrickWood/kraken2/blob/master/docs/MANUAL.markdown#custom-databases) for a more detailed description. -#### KrakenUniq +#### KrakenUniq custom database + +KrakenUniq allows to re-use Kraken(2) databases ([see above](#kraken2)) however with some restrictions. KrakenUniq also provides you with the ability to auto-download and build 'standard' NCBI reference datasets. + +For any KrakenUniq databases, you require: taxonomy files, the FASTA files you wish to include, a `seqid2mapid` file, and a k-mer length. + +To auto-download and build a 'standard' database of Bacteria and Archaea genomes from RefSeq, you can run something like: + +```bash +krakenuniq-download --db taxonomy +krakenuniq-download --db --threads 10 --dust refseq/bacteria refseq/archaea +krakenuniq-build --db --kmer-len 31 --threads 10 --taxids-for-genomes --taxids-for-sequences +``` + +This will download all the required files for you and build the database. + +Alternatively, if you want to build your own you first must make a `seqid2taxid.map` file which is a two column text file containing the FASTA sequence header and the NCBI taxonomy ID for each sequence: + +``` +MT192765.1 2697049 +``` + +Then make a directory (`/`), containing the `seqid2taxid.map` file and your FASTA files in a subdirectory called `library/`. You must then run the `taxonomy` command on the `/` directory, and then build it. + +``` +mkdir -p /library +mv `seqid2taxid.map` / +mv *.fna /library +krakenuniq-build --db --kmer-len 31 +``` + +> 🛈 You can speed up database construction by supplying the threads parameter (`--threads`).
    Expected files in database directory @@ -607,9 +634,25 @@ You can follow the Kraken2 [tutorial](https://github.com/DerrickWood/kraken2/blo
    -For KrakenUniq, we recommend using one of the available databases [here](https://benlangmead.github.io/aws-indexes/k2). But if you wish to build your own, please see the [documentation](https://github.com/fbreitwieser/krakenuniq/blob/master/README.md#custom-databases-with-ncbi-taxonomy). +Please see the [KrakenUniq documentation](https://github.com/fbreitwieser/krakenuniq#database-building) for more information. + +```` + +#### MALT custom database + +MALT does not provide any default databases for profiling, therefore you must build your own. +You need FASTA files to include, and an (unzipped) [MEGAN mapping 'db' file](https://software-ab.informatik.uni-tuebingen.de/download/megan6/) for your FASTA type. +In addition to the input directory, output directory, and the mapping file database, you also need to specify the sequence type (DNA or Protein) with the `-s` flag. + +```bash +malt-build -i ///*.{fna,fa,fasta} -a2t //.db -d / -s DNA +```` + +You can then add the / path to your nf-core/taxprofiler database input sheet. + +⚠️ MALT generates very large database files and requires large amounts of RAM. You can reduce both by increasing the step size `-st` (with a reduction in sensitivity). -#### MALT +> 🛈 MALT-build can be multi-threaded with `-t` to speed up building.
    Expected files in database directory @@ -627,23 +670,9 @@ For KrakenUniq, we recommend using one of the available databases [here](https:/
    -MALT does not provide any default databases for profiling, therefore you must build your own. -You need FASTA files to include, and an (unzipped) [MEGAN mapping 'db' file](https://software-ab.informatik.uni-tuebingen.de/download/megan6/) for your FASTA type. -In addition to the input directory, output directory, and the mapping file database, you also need to specify the sequence type (DNA or Protein) with the `-s` flag. - -```bash -malt-build -i ///*.{fna,fa,fasta} -a2t //.db -d / -s DNA -``` - -You can then add the / path to your nf-core/taxprofiler database input sheet. - -⚠️ MALT generates very large database files and requires large amounts of RAM. You can reduce both by increasing the step size `-st` (with a reduction in sensitivity). - -MALT-build can be multi-threaded with `-t` to speed up building. - See the [MALT manual](https://software-ab.informatik.uni-tuebingen.de/download/malt/manual.pdf) for more information. -#### MetaPhlAn3 +#### MetaPhlAn3 custom database MetaPhlAn3 provides a prebuilt database of marker genes. This must be downloaded by the user. To do this you need to have `MetaPhlAn3` installed on your machine. @@ -675,7 +704,7 @@ You can then add the `/` path to your nf-core/taxprofiler database More information on the MetaPhlAn3 database can be found [here](https://github.com/biobakery/MetaPhlAn/wiki/MetaPhlAn-3.1#installation). -#### mOTUs +#### mOTUs custom database mOTUs provides a prebuilt database of marker genes. From d7c4554b1887e9fa74e420208a4b7735d5042c60 Mon Sep 17 00:00:00 2001 From: Sofia Stamouli <91951607+sofstam@users.noreply.github.com> Date: Tue, 20 Dec 2022 15:42:10 +0100 Subject: [PATCH 558/789] Apply review suggestion Co-authored-by: James A. Fellows Yates --- docs/output.md | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/docs/output.md b/docs/output.md index ef04736..c4b04fd 100644 --- a/docs/output.md +++ b/docs/output.md @@ -67,13 +67,26 @@ fastp can automatically detect adapter sequences for Illumina data. ### AdapterRemoval +[AdapterRemoval](https://adapterremoval.readthedocs.io/en/stable/) searches for and removes remnant adapter sequences from High-Throughput Sequencing (HTS) data and (optionally) trims low quality bases from the 3' end of reads following adapter removal. It is popular in the field of palaeogenomics. The output logs are stored in the results folder, and as a part of the MultiQC report. +
    Output files -- `adapterremoval` +- `adapterremoval/` + - `.settings`: AdapterRemoval log file containing general adapter removal, read trimming and merging statistics + - `.collapsed.fastq.gz` - read-pairs that merged and did not undergo trimming (only when `--shortread_qc_mergepairs` supplied) + - `.collapsed.truncated.fastq.gz` - read-pairs that merged underwent quality trimming (only when `--shortread_qc_mergepairs` supplied) + - `.pair1.truncated.fastq.gz` - read 1 of pairs that underwent quality trimming + - `.pair2.truncated.fastq.gz` - read 2 of pairs that underwent quality trimming (and could not merge if `--shortread_qc_mergepairs` supplied) + - `.singleton.truncated.fastq.gz` - orphaned read pairs where one of the pair was discarded + - `.discard.fastq.gz` - reads that were discarded due to length or quality filtering
    +By default nf-core/taxprofiler will only provide the `.settings` file if AdapterRemoval is selected. You will only find the FASTQ files in the results directory if you provide ` --save_preprocessed_reads` . If this is selected, you may recieve different combinations of FASTQ files for each sample depending on the input types - e.g. whether you have merged or not, or if you're supplying both single- and paired-end reads. + +Note that the FASTQ files may _not_ always be the 'final' reads that go into taxprofiling, if you also run other steps such as complexity filtering, host removal, run merging etc.. + ### Porechop
    From c6710db7a9f1c82cd8ab4d4a863b61ae97c5edd7 Mon Sep 17 00:00:00 2001 From: Sofia Stamouli <91951607+sofstam@users.noreply.github.com> Date: Tue, 20 Dec 2022 15:42:41 +0100 Subject: [PATCH 559/789] Apply review suggestion Co-authored-by: James A. Fellows Yates --- docs/output.md | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/docs/output.md b/docs/output.md index c4b04fd..372248a 100644 --- a/docs/output.md +++ b/docs/output.md @@ -99,15 +99,23 @@ Note that the FASTQ files may _not_ always be the 'final' reads that go into tax ### BBDuk +[BBDuk](https://jgi.doe.gov/data-and-tools/software-tools/bbtools/bb-tools-user-guide/bbduk-guide/) stands for Decontamination Using Kmers. BBDuk was developed to combine most common data-quality-related trimming, filtering, and masking operations into a single high-performance tool. + +It is used in nf-core/taxprofiler for complexity filtering using different algorithms. This means that it will remove reads with low sequence diversity (e.g. mono- or dinucleotide repeats). +
    Output files -- `bbduk` - - `.bbduk.log` - - `.fastq.gz` +- `bbduk/` + - `.bbduk.log`: log file containing filtering statistics + - `.fastq.gz`: resulting FASTQ file without low-complexity reads
    +By default nf-core/taxprofiler will only provide the `.log` file if BBDuk is selected as the complexity filtering tool. You will only find the complexity filtered reads in your results directory if you provide ` --save_complexityfiltered_reads` . + +Note that the FASTQ file(s) may _not_ always be the 'final' reads that go into taxprofiling, if you also run other steps such as host removal, run merging etc.. + ### PRINSEQ++
    From b0a6bdee5a58fc402af3874ee843a86b7ffa4feb Mon Sep 17 00:00:00 2001 From: Sofia Stamouli <91951607+sofstam@users.noreply.github.com> Date: Tue, 20 Dec 2022 15:43:45 +0100 Subject: [PATCH 560/789] Apply review suggestion Co-authored-by: James A. Fellows Yates --- docs/output.md | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/docs/output.md b/docs/output.md index 372248a..65b9316 100644 --- a/docs/output.md +++ b/docs/output.md @@ -118,13 +118,23 @@ Note that the FASTQ file(s) may _not_ always be the 'final' reads that go into t ### PRINSEQ++ +[PRINSEQ++](https://github.com/Adrian-Cantu/PRINSEQ-plus-plus) is a C++ implementation of the [prinseq-lite.pl](https://prinseq.sourceforge.net/) program. It can be used to filter, reformat or trim genomic and metagenomic sequence data. + +It is used in nf-core/taxprofiler for complexity filtering using different algorithms. This means that it will remove reads with low sequence diversity (e.g. mono- or dinucleotide repeats). +
    Output files -- `prinseq++` +- `prinseqplusplus/` + - `.log`: log file containing number of reads. Row IDs correspond to: `min_len, max_len, min_gc, max_gc, min_qual_score, min_qual_mean, ns_max_n, noiupac, derep, lc_entropy, lc_dust, trim_tail_left, trim_tail_right, trim_qual_left, trim_qual_right, trim_left, trim_right` + - `_good_out.fastq.gz`: resulting FASTQ file without low-complexity reads
    +By default nf-core/taxprofiler will only provide the `.log` file if PRINSEQ++ is selected as the complexity filtering tool. You will only find the complexity filtered FASTQ files in your results directory if you supply ` --save_complexityfiltered_reads` . + +Note that the FASTQ file(s) may _not_ always be the 'final' reads that go into taxprofiling, if you also run other steps such as host removal, run merging etc.. + ### Filtlong
    From af8fd18d973ea1505be5cb0ed01e64aa553f0949 Mon Sep 17 00:00:00 2001 From: Sofia Stamouli <91951607+sofstam@users.noreply.github.com> Date: Tue, 20 Dec 2022 15:44:35 +0100 Subject: [PATCH 561/789] Update docs/output.md Co-authored-by: James A. Fellows Yates --- docs/output.md | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/docs/output.md b/docs/output.md index 65b9316..58bad29 100644 --- a/docs/output.md +++ b/docs/output.md @@ -148,16 +148,24 @@ Note that the FASTQ file(s) may _not_ always be the 'final' reads that go into t ### Bowtie2 +[Bowtie 2](https://bowtie-bio.sourceforge.net/bowtie2/index.shtml) is an ultrafast and memory-efficient tool for aligning sequencing reads to long reference sequences. It is particularly good at aligning reads of about 50 up to 100s or 1,000s of characters, and particularly good at aligning to relatively long (e.g. mammalian) genomes. + +It is used with nf-core/taxprofiler to allow removal of 'host' (e.g. human) or other possible contaminant reads (e.g. Phi X) from the FASTQ files prior to profiling. +
    Output files -- `bowtie2` - - `.bam` - - `.bowtie2.log` - - `.unmapped.fastq.gz` +- `bowtie2/` + - `.bam`: reads that aligned against the user-supplied reference genome + - `.bowtie2.log`: log file about the mapped reads + - `.unmapped.fastq.gz`: the off-target reads from the mapping that is used in downstream steps.
    +By default nf-core/taxprofiler will only provide the `.log` file if host removal is turned on. You will only see the mapped (host) reads BAM file or the off-target reads in FASTQ format in your results directory if you provide `--save_hostremoval_mapped` and ` --save_hostremoval_unmapped` respectively. + +Note that the FASTQ file(s) may _not_ always be the 'final' reads that go into taxprofiling, if you also run other steps such as host removal, run merging etc.. + ### minimap2
    From 3c33ba66ca7085b3c73e787cf3bc608f6b2bb7bf Mon Sep 17 00:00:00 2001 From: Sofia Stamouli <91951607+sofstam@users.noreply.github.com> Date: Tue, 20 Dec 2022 17:32:13 +0100 Subject: [PATCH 562/789] Apply review suggestion Co-authored-by: James A. Fellows Yates --- docs/output.md | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/docs/output.md b/docs/output.md index 58bad29..b9a7a64 100644 --- a/docs/output.md +++ b/docs/output.md @@ -188,17 +188,25 @@ Note that the FASTQ file(s) may _not_ always be the 'final' reads that go into t ### Kraken2 +[Kraken](https://ccb.jhu.edu/software/kraken2/) is a taxonomic sequence classifier that assigns taxonomic labels to DNA sequences. Kraken examines the k-mers within a query sequence and uses the information within those k-mers to query a database. That database maps -mers to the lowest common ancestor (LCA) of all genomes known to contain a given k-mer. +
    Output files -- `kraken2` - - `.classified.fastq.gz` - - `.unclassified.fastq.gz` - - `.report.txt` - - `.classifiedreads.txt` +- `kraken2/` + - `_combined_reports.txt`: A combined profile of all samples aligned to a given database (as generated by `krakentools`) + - / + - `_.classified.fastq.gz`: FASTQ file containing all reads that had a hit against a reference in the database for a given sample + - `_.unclassified.fastq.gz`: FASTQ file containing all reads that did not have a hit in the database for a given sample + - `_.report.txt`: A Kraken2 report that summarises the fraction abundance, taxonomic ID, number of Kmers, taxonomic path of all the hits in the Kraken2 run for a given sample + - `_.classifiedreads.txt`: A list of read IDs and the hits each read had against each database for a given sample
    +The main taxonomic profiling file from Kraken2 is the `_combined_reports.txt` or `*report.txt` file. The former provides you the broadest over view of the taxonomic profiling results across all samples against a single databse, where you get two columns for each sample e.g. `2_all` and `2_lvl`, as well as a summarised column summing up across all samples `tot_all` and `tot_lvl`. The latter gives you the most information for a single sample. The report file is also used for the taxpasta step. + +You will only recieve the FASTQs and `*classifiedreads.txt` file if you supply `--kraken2_save_reads` and/or `--kraken2_save_readclassification` parameters to the pipeline. + ### KrakenUniq
    From 964771c5f22654413bd31d0fcddb5846d456b51f Mon Sep 17 00:00:00 2001 From: Sofia Stamouli <91951607+sofstam@users.noreply.github.com> Date: Tue, 20 Dec 2022 17:33:04 +0100 Subject: [PATCH 563/789] Update docs/output.md Co-authored-by: James A. Fellows Yates --- docs/output.md | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/docs/output.md b/docs/output.md index b9a7a64..12a4194 100644 --- a/docs/output.md +++ b/docs/output.md @@ -209,19 +209,26 @@ You will only recieve the FASTQs and `*classifiedreads.txt` file if you supply ` ### KrakenUniq +[KrakenUniq](https://github.com/fbreitwieser/krakenuniq) (formerly KrakenHLL) is an extenson to the fast k-mer-based classification [Kraken](https://github.com/DerrickWood/kraken) with an efficient algorithm for additionally assessing the coverage of unique k-mers found in each species in a dataset. +
    Output files -- `krakenuniq` +- `krakenuniq/` + - / + - `_.classified.fastq.gz`: FASTQ file containing all reads that had a hit against a reference in the database for a given sample + - `_.unclassified.fastq.gz`: FASTQ file containing all reads that did not have a hit in the database for a given sample + - `_.report.txt`: A Kraken2-style report that summarises the fraction abundance, taxonomic ID, number of Kmers, taxonomic path of all the hits, with an additional column for k-mer coverage, that allows for more accurate distinguishing between false-positive/true-postitive hits + - `_.classifiedreads.txt`: A list of read IDs and the hits each read had against each database for a given sample - - `.classified.fastq.gz` - - `.krakenuniq.classified.txt` - - `.krakenuniq.report.txt` - - `.unclassified.fastq.gz` +
    - ## interleaved? +The main taxonomic profiling file from KrakenUniq is the `*report.txt` file. This is an extension of the Kraken2 report with the additional k-mer coverage information that provides more information about the accuracy of hits. + +> ⚠️ The output system of KrakenUniq can result in other `stdout` or `stderr` logging information being saved in the report file, therefore you must check your report files before downstream use! + +You will only receive the FASTQs and `*classifiedreads.txt` file if you supply `--krakenuniq_save_reads` and/or `--krakenuniq_save_readclassification` parameters to the pipeline. -
    ### Centrifuge From af7468522ac1fa635c8a9d8a99fc1f4e8d705c95 Mon Sep 17 00:00:00 2001 From: Sofia Stamouli <91951607+sofstam@users.noreply.github.com> Date: Tue, 20 Dec 2022 17:33:18 +0100 Subject: [PATCH 564/789] Apply review suggestion Co-authored-by: James A. Fellows Yates --- docs/output.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/output.md b/docs/output.md index 12a4194..790c0e6 100644 --- a/docs/output.md +++ b/docs/output.md @@ -253,7 +253,7 @@ You will only receive the FASTQs and `*classifiedreads.txt` file if you supply `
    -### Diamond +### DIAMOND
    Output files From 0cbd0a80137389228d2c9ed6e96c82e7f7aa60c9 Mon Sep 17 00:00:00 2001 From: Sofia Stamouli <91951607+sofstam@users.noreply.github.com> Date: Tue, 20 Dec 2022 17:33:35 +0100 Subject: [PATCH 565/789] Apply review suggestion Co-authored-by: James A. Fellows Yates --- docs/output.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/output.md b/docs/output.md index 790c0e6..7249c62 100644 --- a/docs/output.md +++ b/docs/output.md @@ -23,6 +23,7 @@ The pipeline is built using [Nextflow](https://www.nextflow.io/) and processes d - [Bowtie2](#bowtie2) - Host removal for Illumina reads - [minimap2](#minimap2) - Host removal for Nanopore reads - [samtoolsstats](#samtoolsstats) - Statistics from host removal +- [Bracken](#bracken) - Taxonomic classifier using k-mers and abundance estimations - [Kraken2](#kraken2) - Taxonomic classifier using exact k-mer matches - [KrakenUniq](#krakenuniq) - Taxonomic classifier that combines the k-mer-based classification and the number of unique k-mers found in each species - [Bracken](#bracken) - From 2e08c873a0f0cc6011a134a7f34c28f6bf4c7e03 Mon Sep 17 00:00:00 2001 From: Sofia Stamouli <91951607+sofstam@users.noreply.github.com> Date: Tue, 20 Dec 2022 17:34:19 +0100 Subject: [PATCH 566/789] Apply review suggestion Co-authored-by: James A. Fellows Yates --- docs/output.md | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/docs/output.md b/docs/output.md index 7249c62..1a3ce7d 100644 --- a/docs/output.md +++ b/docs/output.md @@ -187,6 +187,24 @@ Note that the FASTQ file(s) may _not_ always be the 'final' reads that go into t
    +### Bracken + +[Bracken](https://ccb.jhu.edu/software/bracken/) (Bayesian Reestimation of Abundance with KrakEN) is a highly accurate statistical method that computes the abundance of species in DNA sequences from a metagenomics sample. Braken uses the taxonomy labels assigned by Kraken, a highly accurate metagenomics classification algorithm, to estimate the number of reads originating from each species present in a sample. + +> 🛈 The first step of using Bracken requires running Kraken2, therefore the initial results before abundance estimation will be found in `/kraken2/`. + +
    +Output files + +- `kraken2/` + - `bracken__combined_reports.txt`: combined bracken results as output from Bracken's `combine_bracken_outputs.py` script + - `/` + - `_.tsv: TSV file containing per-sample summary of Bracken results with abundance information + +
    + +The main taxonomic profiling file from KrakenUniq is the `*.tsv` file. This provides the basic results from Kraken2 but with the corrected abundance information. + ### Kraken2 [Kraken](https://ccb.jhu.edu/software/kraken2/) is a taxonomic sequence classifier that assigns taxonomic labels to DNA sequences. Kraken examines the k-mers within a query sequence and uses the information within those k-mers to query a database. That database maps -mers to the lowest common ancestor (LCA) of all genomes known to contain a given k-mer. From 24a8da2086151c21a1cdfeda9575b898fa9371ef Mon Sep 17 00:00:00 2001 From: Sofia Stamouli Date: Tue, 20 Dec 2022 19:59:55 +0100 Subject: [PATCH 567/789] Fix linting --- nextflow_schema.json | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/nextflow_schema.json b/nextflow_schema.json index 0c7ce3d..c608d90 100644 --- a/nextflow_schema.json +++ b/nextflow_schema.json @@ -712,6 +712,15 @@ "help_text": "If using a reference genome configured in the pipeline using iGenomes, use this parameter to give the ID for the reference. This is then used to build the full paths for all required reference genome files e.g. `--genome GRCh38`. \n\nSee the [nf-core website docs](https://nf-co.re/usage/reference_genomes) for more details.", "hidden": true }, + "fasta": { + "type": "string", + "description": "Path to FASTA genome file.", + "help_text": "This parameter is *mandatory* if `--genome` is not specified. If you don't have a BWA index available this will be generated for you automatically. Combine with `--save_reference` to save BWA index for future runs.", + "pattern": "^\\\\S+\\\\.fn?a(sta)?(\\\\.gz)?$", + "format": "file-path", + "mimetype": "text/plain", + "fa_icon": "far fa-file-code" + }, "igenomes_base": { "type": "string", "format": "directory-path", From 612f532fb24a52c46261c45151133928ee2939c6 Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Tue, 20 Dec 2022 20:08:12 +0100 Subject: [PATCH 568/789] Bump KrakenUniq version --- modules.json | 2 +- modules/nf-core/krakenuniq/preloadedkrakenuniq/main.nf | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/modules.json b/modules.json index 0a43696..134caa0 100644 --- a/modules.json +++ b/modules.json @@ -118,7 +118,7 @@ }, "krakenuniq/preloadedkrakenuniq": { "branch": "master", - "git_sha": "05649975c6611c6e007537a7984e186e12ae03af", + "git_sha": "a6eb17f65b3ee5761c25c075a6166c9f76733cee", "installed_by": ["modules"] }, "krona/ktimporttaxonomy": { diff --git a/modules/nf-core/krakenuniq/preloadedkrakenuniq/main.nf b/modules/nf-core/krakenuniq/preloadedkrakenuniq/main.nf index 0ecacee..0cb402f 100644 --- a/modules/nf-core/krakenuniq/preloadedkrakenuniq/main.nf +++ b/modules/nf-core/krakenuniq/preloadedkrakenuniq/main.nf @@ -2,10 +2,10 @@ process KRAKENUNIQ_PRELOADEDKRAKENUNIQ { tag "$meta.id" label 'process_high' - conda (params.enable_conda ? "bioconda::krakenuniq=1.0.0" : null) + conda "bioconda::krakenuniq=1.0.2" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/krakenuniq:1.0.0--pl5321h19e8d03_0': - 'quay.io/biocontainers/krakenuniq:1.0.0--pl5321h19e8d03_0' }" + 'https://depot.galaxyproject.org/singularity/krakenuniq:1.0.2--pl5321h19e8d03_0': + 'quay.io/biocontainers/krakenuniq:1.0.2--pl5321h19e8d03_0' }" input: tuple val(meta), path(fastqs) From 1706555eff392e5d4caf7a8fbe11a7fd317402e7 Mon Sep 17 00:00:00 2001 From: Sofia Stamouli Date: Tue, 20 Dec 2022 20:10:05 +0100 Subject: [PATCH 569/789] Prettier --- nextflow_schema.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/nextflow_schema.json b/nextflow_schema.json index c608d90..6d48671 100644 --- a/nextflow_schema.json +++ b/nextflow_schema.json @@ -719,7 +719,7 @@ "pattern": "^\\\\S+\\\\.fn?a(sta)?(\\\\.gz)?$", "format": "file-path", "mimetype": "text/plain", - "fa_icon": "far fa-file-code" + "fa_icon": "far fa-file-code" }, "igenomes_base": { "type": "string", From 8404c28d0857087b6f0084631e49a589a0e722ed Mon Sep 17 00:00:00 2001 From: Sofia Stamouli <91951607+sofstam@users.noreply.github.com> Date: Tue, 20 Dec 2022 20:23:26 +0100 Subject: [PATCH 570/789] Review suggestion Co-authored-by: James A. Fellows Yates --- docs/output.md | 1 - 1 file changed, 1 deletion(-) diff --git a/docs/output.md b/docs/output.md index 1a3ce7d..6b6c43a 100644 --- a/docs/output.md +++ b/docs/output.md @@ -26,7 +26,6 @@ The pipeline is built using [Nextflow](https://www.nextflow.io/) and processes d - [Bracken](#bracken) - Taxonomic classifier using k-mers and abundance estimations - [Kraken2](#kraken2) - Taxonomic classifier using exact k-mer matches - [KrakenUniq](#krakenuniq) - Taxonomic classifier that combines the k-mer-based classification and the number of unique k-mers found in each species -- [Bracken](#bracken) - - [Centrifuge](#centrifuge) - Taxonomic classifier that uses a novel indexing scheme based on the Burrows-Wheeler transform (BWT) and the Ferragina-Manzini (FM) index. - [Kaiju](#kaiju) - Taxonomic classifier that finds maximum (in-)exact matches on the protein-level. - [Diamond](#diamond) - Sequence aligner for protein and translated DNA searches. From fb9de1e2121f5ec3704709a23ed287620b9707fa Mon Sep 17 00:00:00 2001 From: Sofia Stamouli <91951607+sofstam@users.noreply.github.com> Date: Tue, 20 Dec 2022 20:23:32 +0100 Subject: [PATCH 571/789] Update docs/output.md Co-authored-by: James A. Fellows Yates --- docs/output.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/output.md b/docs/output.md index 6b6c43a..006231e 100644 --- a/docs/output.md +++ b/docs/output.md @@ -198,7 +198,7 @@ Note that the FASTQ file(s) may _not_ always be the 'final' reads that go into t - `kraken2/` - `bracken__combined_reports.txt`: combined bracken results as output from Bracken's `combine_bracken_outputs.py` script - `/` - - `_.tsv: TSV file containing per-sample summary of Bracken results with abundance information + - `_.tsv`: TSV file containing per-sample summary of Bracken results with abundance information
    From 18c15f8a789630944b4b6ff09279a12b33a579e0 Mon Sep 17 00:00:00 2001 From: Sofia Stamouli <91951607+sofstam@users.noreply.github.com> Date: Tue, 20 Dec 2022 20:23:38 +0100 Subject: [PATCH 572/789] Update docs/output.md Co-authored-by: James A. Fellows Yates --- docs/output.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/output.md b/docs/output.md index 006231e..f4ce4a2 100644 --- a/docs/output.md +++ b/docs/output.md @@ -213,7 +213,7 @@ The main taxonomic profiling file from KrakenUniq is the `*.tsv` file. This prov - `kraken2/` - `_combined_reports.txt`: A combined profile of all samples aligned to a given database (as generated by `krakentools`) - - / + - `/` - `_.classified.fastq.gz`: FASTQ file containing all reads that had a hit against a reference in the database for a given sample - `_.unclassified.fastq.gz`: FASTQ file containing all reads that did not have a hit in the database for a given sample - `_.report.txt`: A Kraken2 report that summarises the fraction abundance, taxonomic ID, number of Kmers, taxonomic path of all the hits in the Kraken2 run for a given sample From 1279437aa105f8fdf5feb73f57ccf66aa06b1702 Mon Sep 17 00:00:00 2001 From: "James A. Fellows Yates" Date: Tue, 20 Dec 2022 21:48:08 +0100 Subject: [PATCH 573/789] Apply suggestions from code review --- nextflow.config | 2 +- nextflow_schema.json | 9 --------- 2 files changed, 1 insertion(+), 10 deletions(-) diff --git a/nextflow.config b/nextflow.config index acfe2a0..f5ab538 100644 --- a/nextflow.config +++ b/nextflow.config @@ -38,7 +38,7 @@ params { version = false validate_params = true show_hidden_params = false - schema_ignore_params = 'genomes' + schema_ignore_params = 'genomes,fasta' // Config options diff --git a/nextflow_schema.json b/nextflow_schema.json index 6d48671..0c7ce3d 100644 --- a/nextflow_schema.json +++ b/nextflow_schema.json @@ -712,15 +712,6 @@ "help_text": "If using a reference genome configured in the pipeline using iGenomes, use this parameter to give the ID for the reference. This is then used to build the full paths for all required reference genome files e.g. `--genome GRCh38`. \n\nSee the [nf-core website docs](https://nf-co.re/usage/reference_genomes) for more details.", "hidden": true }, - "fasta": { - "type": "string", - "description": "Path to FASTA genome file.", - "help_text": "This parameter is *mandatory* if `--genome` is not specified. If you don't have a BWA index available this will be generated for you automatically. Combine with `--save_reference` to save BWA index for future runs.", - "pattern": "^\\\\S+\\\\.fn?a(sta)?(\\\\.gz)?$", - "format": "file-path", - "mimetype": "text/plain", - "fa_icon": "far fa-file-code" - }, "igenomes_base": { "type": "string", "format": "directory-path", From ba43b0daa450432ef3b492cfb34b2f9fbeaf2a17 Mon Sep 17 00:00:00 2001 From: Sofia Stamouli <91951607+sofstam@users.noreply.github.com> Date: Wed, 21 Dec 2022 09:26:38 +0100 Subject: [PATCH 574/789] Update docs/usage.md Co-authored-by: James A. Fellows Yates --- docs/usage.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/usage.md b/docs/usage.md index c61c580..c2dc6e9 100644 --- a/docs/usage.md +++ b/docs/usage.md @@ -617,6 +617,7 @@ Then make a directory (`/`), containing the `seqid2taxid.map` file mkdir -p /library mv `seqid2taxid.map` / mv *.fna /library +krakenuniq-download --db taxonomy krakenuniq-build --db --kmer-len 31 ``` From d6e0d404e38b0cb1ce25581a0db6c7ad52391686 Mon Sep 17 00:00:00 2001 From: Sofia Stamouli <91951607+sofstam@users.noreply.github.com> Date: Thu, 22 Dec 2022 09:18:00 +0100 Subject: [PATCH 575/789] Update docs/usage.md Co-authored-by: James A. Fellows Yates --- docs/usage.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/usage.md b/docs/usage.md index c2dc6e9..7b451e7 100644 --- a/docs/usage.md +++ b/docs/usage.md @@ -438,7 +438,7 @@ NXF_OPTS='-Xms1g -Xmx4g' ### Retrieving databases or building custom databases -Here we will give brief guidance on how to build databases for each supported taxonomic profiler. You should always consult the documentation of each toolfor more information, how we provide these as quick reference guides. +Here we will give brief guidance on how to build databases for each supported taxonomic profiler. You should always consult the documentation of each tool for more information, here we provide these as quick reference guides (with no guarantee they are up to date). The following tutorials assumes you already have the tool available (e.g. installed locally, or via conda, docker etc.), and you have already downloaded the FASTA files you wish to build into a database. #### Bracken custom database From 29978d83b9177942c00d89b175f39053c99aa39c Mon Sep 17 00:00:00 2001 From: Sofia Stamouli <91951607+sofstam@users.noreply.github.com> Date: Thu, 22 Dec 2022 11:03:49 +0100 Subject: [PATCH 576/789] Update centrifuge section --- docs/usage.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/docs/usage.md b/docs/usage.md index 7b451e7..e64726e 100644 --- a/docs/usage.md +++ b/docs/usage.md @@ -474,7 +474,9 @@ You can follow Bracken [tutorial](https://ccb.jhu.edu/software/bracken/index.sht #### Centrifuge custom database -Centrifuge allows the user to [build custom databases](https://ccb.jhu.edu/software/centrifuge/manual.shtml#custom-database). The user should download taxonomy files, make custom `seqid2taxid.map` and combine the fasta files together. +Centrifuge allows the user to [build custom databases](https://ccb.jhu.edu/software/centrifuge/manual.shtml#custom-database). You need four file: a tab-separated file mapping sequence IDs to taxonomy IDs (`--conversion-table`), a \t|\t-separated file mapping taxonomy IDs to their parents and rank, up to the root of the tree (`--taxonomy-tree`), a '|'-separated file mapping taxonomy IDs to a name (`--name-table`) and the reference sequences. + + The user should download taxonomy files, make custom `seqid2taxid.map` and combine the fasta files together. ```bash centrifuge-download -o taxonomy taxonomy From 1eeb3b337aaa557e3278e86cd4f47bcfd2bc4879 Mon Sep 17 00:00:00 2001 From: Sofia Stamouli <91951607+sofstam@users.noreply.github.com> Date: Thu, 22 Dec 2022 11:07:09 +0100 Subject: [PATCH 577/789] Update usage.md --- docs/usage.md | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/docs/usage.md b/docs/usage.md index e64726e..e51656d 100644 --- a/docs/usage.md +++ b/docs/usage.md @@ -474,19 +474,18 @@ You can follow Bracken [tutorial](https://ccb.jhu.edu/software/bracken/index.sht #### Centrifuge custom database -Centrifuge allows the user to [build custom databases](https://ccb.jhu.edu/software/centrifuge/manual.shtml#custom-database). You need four file: a tab-separated file mapping sequence IDs to taxonomy IDs (`--conversion-table`), a \t|\t-separated file mapping taxonomy IDs to their parents and rank, up to the root of the tree (`--taxonomy-tree`), a '|'-separated file mapping taxonomy IDs to a name (`--name-table`) and the reference sequences. +Centrifuge allows the user to [build custom databases](https://ccb.jhu.edu/software/centrifuge/manual.shtml#custom-database). The user should download taxonomy files, make custom `seqid2taxid.map` and combine the fasta files together. You need four components: a tab-separated file mapping sequence IDs to taxonomy IDs (`--conversion-table`), a \t|\t-separated file mapping taxonomy IDs to their parents and rank, up to the root of the tree (`--taxonomy-tree`), a '|'-separated file mapping taxonomy IDs to a name (`--name-table`) and the reference sequences. - The user should download taxonomy files, make custom `seqid2taxid.map` and combine the fasta files together. +An example of custom `seqid2taxid.map`: -```bash -centrifuge-download -o taxonomy taxonomy - -## custom seqid2taxid.map NC_001133.9 4392 NC_012920.1 9606 NC_001134.8 4392 NC_001135.5 4392 +```bash +centrifuge-download -o taxonomy taxonomy + cat *.{fa,fna} > input-sequences.fna centrifuge-build -p 4 --conversion-table seqid2taxid.map --taxonomy-tree taxonomy/nodes.dmp --name-table taxonomy/names.dmp input-sequences.fna taxprofiler_cf ``` From ec9c7cfedc7bf3b16acc27827e8bc992f2f08840 Mon Sep 17 00:00:00 2001 From: Sofia Stamouli Date: Thu, 22 Dec 2022 11:10:54 +0100 Subject: [PATCH 578/789] Prettier --- docs/usage.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/usage.md b/docs/usage.md index d4eb5db..9539a5a 100644 --- a/docs/usage.md +++ b/docs/usage.md @@ -471,10 +471,10 @@ Centrifuge allows the user to [build custom databases](https://ccb.jhu.edu/softw An example of custom `seqid2taxid.map`: -NC_001133.9 4392 -NC_012920.1 9606 -NC_001134.8 4392 -NC_001135.5 4392 +NC_001133.9 4392 +NC_012920.1 9606 +NC_001134.8 4392 +NC_001135.5 4392 ```bash centrifuge-download -o taxonomy taxonomy From 85906ab1cb2d82a8deff4b4775ea749fa654113c Mon Sep 17 00:00:00 2001 From: sofstam Date: Fri, 23 Dec 2022 11:25:57 +0100 Subject: [PATCH 579/789] Optional untar on dbs --- subworkflows/local/db_check.nf | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/subworkflows/local/db_check.nf b/subworkflows/local/db_check.nf index 14078d9..fdab7ae 100644 --- a/subworkflows/local/db_check.nf +++ b/subworkflows/local/db_check.nf @@ -2,7 +2,7 @@ // Check input samplesheet and get read channels // -include { UNTAR } from '../../modules/nf-core/untar/main' +include { UNTAR } from '../../modules/nf-core/untar/main' workflow DB_CHECK { take: @@ -10,6 +10,8 @@ workflow DB_CHECK { main: ch_versions = Channel.empty() + ch_dbs_for_untar = Channel.empty() + ch_final_dbs = Channel.empty() // special check to check _between_ rows, for which we must group rows together // note: this will run in parallel to within-row validity, but we can assume this will run faster thus will fail first @@ -37,11 +39,11 @@ workflow DB_CHECK { skip: true } - // TODO Filter to only run UNTAR on DBs of tools actually using? - // TODO make optional whether to save - UNTAR ( ch_dbs_for_untar.untar ) + //Filter the channel to run untar on DBs of tools actually using + ch_input_untar = ch_dbs_for_untar.untar.dump() + .filter { params.run_kraken2 && it[0]['tool'] == 'kraken2' || params.run_centrifuge && it[0]['tool'] == 'centrifuge' || params.run_bracken && it[0]['tool'] == 'bracken' || params.run_kaiju && it[0]['tool'] == 'kaiju' || params.run_krakenuniq && it [0]['tool'] == 'krakenuniq' || params.run_malt && it[0]['tool'] == 'malt' || params.run_metaphlan3 && it[0]['tool'] == 'metaphlan3' } + UNTAR (ch_input_untar) ch_versions = ch_versions.mix(UNTAR.out.versions.first()) - ch_final_dbs = ch_dbs_for_untar.skip.mix( UNTAR.out.untar ) emit: From 41c1ae9d1a900b40c8e185bd75c66567a81ccf2c Mon Sep 17 00:00:00 2001 From: Sofia Stamouli <91951607+sofstam@users.noreply.github.com> Date: Fri, 23 Dec 2022 12:20:37 +0100 Subject: [PATCH 580/789] Commit suggestion Co-authored-by: James A. Fellows Yates --- subworkflows/local/db_check.nf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/subworkflows/local/db_check.nf b/subworkflows/local/db_check.nf index fdab7ae..a89b519 100644 --- a/subworkflows/local/db_check.nf +++ b/subworkflows/local/db_check.nf @@ -2,7 +2,7 @@ // Check input samplesheet and get read channels // -include { UNTAR } from '../../modules/nf-core/untar/main' +include { UNTAR } from '../../modules/nf-core/untar/main' workflow DB_CHECK { take: From 6ebfdcd017847a37512259faeecb00fc9cf37cb3 Mon Sep 17 00:00:00 2001 From: sofstam Date: Fri, 23 Dec 2022 13:40:22 +0100 Subject: [PATCH 581/789] Add path parameters --- workflows/taxprofiler.nf | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/workflows/taxprofiler.nf b/workflows/taxprofiler.nf index e398f6e..aa83a24 100644 --- a/workflows/taxprofiler.nf +++ b/workflows/taxprofiler.nf @@ -11,9 +11,11 @@ WorkflowTaxprofiler.initialise(params, log) // TODO nf-core: Add all file path parameters for the pipeline to the list below // Check input path parameters to see if they exist -def checkPathParamList = [ params.input, params.databases, params.hostremoval_reference, - params.shortread_hostremoval_index, params.multiqc_config, - params.shortread_qc_adapterlist +def checkPathParamList = [ params.input, params.genome, params.databases, + params.outdir, params.longread_hostremoval_index + params.hostremoval_reference, params.shortread_hostremoval_index, + params.multiqc_config, params.shortread_qc_adapterlist, + params.krona_taxonomy_directory ] for (param in checkPathParamList) { if (param) { file(param, checkIfExists: true) } } From e5867476802303b08b0ad6a367195f5459259c9a Mon Sep 17 00:00:00 2001 From: "James A. Fellows Yates" Date: Fri, 23 Dec 2022 15:06:26 +0100 Subject: [PATCH 582/789] Add missing comma to list --- workflows/taxprofiler.nf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/workflows/taxprofiler.nf b/workflows/taxprofiler.nf index aa83a24..c00c609 100644 --- a/workflows/taxprofiler.nf +++ b/workflows/taxprofiler.nf @@ -12,7 +12,7 @@ WorkflowTaxprofiler.initialise(params, log) // TODO nf-core: Add all file path parameters for the pipeline to the list below // Check input path parameters to see if they exist def checkPathParamList = [ params.input, params.genome, params.databases, - params.outdir, params.longread_hostremoval_index + params.outdir, params.longread_hostremoval_index, params.hostremoval_reference, params.shortread_hostremoval_index, params.multiqc_config, params.shortread_qc_adapterlist, params.krona_taxonomy_directory From acba31a8d67c98f16d0241ebc45d9a55282bb8d2 Mon Sep 17 00:00:00 2001 From: "James A. Fellows Yates" Date: Fri, 23 Dec 2022 15:08:01 +0100 Subject: [PATCH 583/789] Update taxprofiler.nf --- workflows/taxprofiler.nf | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/workflows/taxprofiler.nf b/workflows/taxprofiler.nf index c00c609..07798ea 100644 --- a/workflows/taxprofiler.nf +++ b/workflows/taxprofiler.nf @@ -15,7 +15,8 @@ def checkPathParamList = [ params.input, params.genome, params.databases, params.outdir, params.longread_hostremoval_index, params.hostremoval_reference, params.shortread_hostremoval_index, params.multiqc_config, params.shortread_qc_adapterlist, - params.krona_taxonomy_directory + params.krona_taxonomy_directory, + params.multiqc_logo, params.multiqc_methods_description ] for (param in checkPathParamList) { if (param) { file(param, checkIfExists: true) } } From ab0c62bdc152f9ed7d1642305979ecaa3f95069b Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Fri, 23 Dec 2022 16:23:29 +0100 Subject: [PATCH 584/789] Post-release tweaks to usage.md --- docs/usage.md | 216 +++++++++++++++++++++++++-------------- workflows/taxprofiler.nf | 2 +- 2 files changed, 138 insertions(+), 80 deletions(-) diff --git a/docs/usage.md b/docs/usage.md index 9539a5a..55ed43c 100644 --- a/docs/usage.md +++ b/docs/usage.md @@ -6,14 +6,25 @@ ## Introduction - +nf-core/taxprofiler is a pipeline for highly-parallelised taxonomic profiling of shotgun metagenomic data across multiple tools simultaneously. In addition to multiple profiling tools, at the same time it allows you to performing profiling across multiple databases and settings per tool, as well as produces standardised output tables to allow immediate cross comparison of results between tools. + +To run nf-core/taxprofiler, at a minimum two you require two inputs: + +- an sequenceing read samplesheet +- a database samplesheet + +Both contain metadata and paths to the data of your input samples and database. + +When running nf-core/taxprofiler, every step and tool is 'opt in'. To run a given profiler you must make sure to supply both a database in your `.csv` and supply `--run_` flag to your command. Omitting either will result in the profiling tool not executing. + +nf-core/profiler also includes optional pre-processing (adapter clipping, merge running etc.) or post-processing (visualisation) steps. These are also opt in with a `--perform_` flag. In some cases, the pre- and post-processing steps may also require additional files. Please check the parameters tab of this documentation for more information. + +Please see the rest of this page for information about how to prepare input samplesheets and databases and how to run Nextflow pipelines. See the [parameters](https://nf-co.re/taxprofiler/parameters) documentation for more information about specific options the pipeline also offers. ## Samplesheet inputs nf-core/taxprofiler can accept as input raw or preprocessed single- or paired-end short-read (e.g. Illumina) FASTQ files, long-read FASTQ files (e.g. Oxford Nanopore), or FASTA sequences (available for a subset of profilers). -> ⚠️ Input FASTQ and FASTA files _must_ be gzipped - You will need to create a samplesheet with information about the samples you would like to analyse before running the pipeline. Use this parameter to specify its location. It has to be a comma-separated file with 6 columns, and a header row as shown in the examples below. Furthermother, nf-core/taxprofiler also requires a second comma-separated file of 3 columns with a header row as in the examples below. This samplesheet is then specified on the command line as follows: @@ -51,6 +62,8 @@ sample,run_accession,instrument_platform,fastq_1,fastq_2,fasta ERR3201952,ERR3201952,OXFORD_NANOPORE,///fastq/ERR3201952.fastq.gz,, ``` +> ⚠️ Input FASTQ and FASTA files _must_ be gzipped + | Column | Description | | --------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `sample` | Unique sample name [required]. | @@ -97,18 +110,19 @@ Column specifications are as follows: nf-core/taxprofiler will automatically decompress and extract any compressed archives for you. -Expected (uncompressed) database files for each tool are as follows: +The (uncompressed) database paths (`db_path`) for each tool are expected to contain the contents of: -- [**Bracken** output](#bracken-custom-database) of a combined `kraken2-` and `bracken-build` process. -- [**Centrifuge** output](#centrifuge-custom-database) of `centrifuge-build`. -- [**DIAMOND** output](#diamond-custom-database) of `diamond makedb`. - to generate taxonomic profile. See [DIAMOND documentation](https://github.com/bbuchfink/diamond/wiki/3.-Command-line-options#makedb-options). -- [**Kaiju** output](#kaiju-custom-database) of `kaiju-makedb`. -- [**Kraken2** output](#kraken2-custom-database) of `kraken2-build` command(s). -- [**KrakenUniq** output](#krakenuniq-custom-database) of `krakenuniq-build` command(s). -- [**MALT** output](#malt-custom-database) of `malt-build`. -- [**MetaPhlAn3**](#metaphlan3-custom-database) generated with `metaphlan --install` or downloaded from links on the [MetaPhlAn3 wiki](https://github.com/biobakery/MetaPhlAn/wiki/MetaPhlAn-3.0#customizing-the-database). -- [**mOTUs**](#motus-custom-database) is composed of code and database together. +- [**Bracken**:](#bracken-custom-database) output of the combined `kraken2-build` and `bracken-build` process. +- [**Centrifuge**:](#centrifuge-custom-database) output of `centrifuge-build`. +- [**DIAMOND**:](#diamond-custom-database) output of `diamond makedb`. +- [**Kaiju**:](#kaiju-custom-database) output of `kaiju-makedb`. +- [**Kraken2**:](#kraken2-custom-database) output of `kraken2-build` command(s). +- [**KrakenUniq**:](#krakenuniq-custom-database) output of `krakenuniq-build` command(s). +- [**MALT**](#malt-custom-database) output of `malt-build`. +- [**MetaPhlAn3**:](#metaphlan3-custom-database) output of with `metaphlan --install` or downloaded from links on the [MetaPhlAn3 wiki](https://github.com/biobakery/MetaPhlAn/wiki/MetaPhlAn-3.0#customizing-the-database). +- [**mOTUs**:](#motus-custom-database) is composed of code and database together. + +Click the links in the list above for short quick-reference tutorials how to generate custom databases for each tool. ## Running the pipeline @@ -120,8 +134,6 @@ nextflow run nf-core/taxprofiler --input samplesheet.csv --databases databases.c This will launch the pipeline with the `docker` configuration profile. See below for more information about profiles. -When running nf-core/taxprofiler, every step and tool is 'opt in'. To run a given profiler you must make sure to supply both a database in your `.csv` and supply `--run_` flag to your command. Omitting either will result in the profiling tool not executing. If you wish to perform pre-processing (adapter clipping, merge running etc.) or post-processing (visualisation) steps, these are also opt in with a `--perform_` flag. In some cases, the pre- and post-processing steps may also require additional files. Please check the parameters tab of this documentation for more information. - Note that the pipeline will create the following files in your working directory: ```bash @@ -137,18 +149,18 @@ work # Directory containing the nextflow working files ### Preprocessing Steps -nf-core/taxprofiler offers four main preprocessing steps +nf-core/taxprofiler offers four main preprocessing steps for preprocessing raw sequencing reads: -- Read processing: adapter clipping and pair-merging. -- Complexity filtering: removal of low-sequence complexity reads. -- Host read-removal: removal of reads aligning to reference genome(s) of a host. -- Run merging: concatenation of multiple FASTQ chunks/sequencing runs/libraries of a sample. +- [**Read processing**](#read-processing): adapter clipping and pair-merging. +- [**Complexity filtering**](#complexity-filtering): removal of low-sequence complexity reads. +- [**Host read-removal**](#host-read-removal): removal of reads aligning to reference genome(s) of a host. +- [**Run merging**](#run-merging): concatenation of multiple FASTQ chunks/sequencing runs/libraries of a sample. #### Read Processing Raw sequencing read processing in the form of adapter clipping and paired-end read merging can be activated via the `--perform_shortread_qc` or `--perform_longread_qc` flags. -It is highly recommended to run this on raw reads to remove artifacts from sequencing that can cause false positive identification of taxa (e.g. contaminated reference genomes) and/or skews in taxonomic abundance profiles. If you have public data, normally these should have been corrected for however you should still check this is the case. +It is highly recommended to run this on raw reads to remove artifacts from sequencing that can cause false positive identification of taxa (e.g. contaminated reference genomes) and/or skews in taxonomic abundance profiles. If you have public data, normally these should have been corrected for, however you should still check these steps have indeed been already performed. There are currently two options for short-read preprocessing: [`fastp`](https://github.com/OpenGene/fastp) or [`adapterremoval`](https://github.com/MikkelSchubert/adapterremoval). @@ -201,34 +213,86 @@ You can optionally save the FASTQ output of the run merging with the `--save_run #### Profiling -The following suggestion gives you some tips and suggestions regarding running some of the different tools specifically _within the pipeline_. For advice as to which tool to run in your context, please see the documentation of each tool. +The following sections provides tips and suggestions for running the different metagenomic taxonomic profiling tools _within the pipeline_. For advice and/or guidance whether you should run a particular tool on your specific data, please see the documentation of each tool! + +Not all tools currently have dedicated tips, suggestions and/or recommendations, however we welcome further contributions for existing and additional tools via pull requests to the [nf-core/taxprofiler repository](https://github.com/nf-core/taxprofiler)! + +##### Bracken + +It is unclear whether Bracken is suitable for running long reads, as it makes certain assumptions about read lengths. Furthemore, during testing we found issues where Bracken would fail on the long-read test data. + +Therefore currently nf-core/taxprofiler does not run Bracken on data specified as being sequenced with `OXFORD_NANOPORE` in the input samplesheet. -###### Bracken +> 🖊️ If you would like to change this behaviour, please contact us on the [nf-core slack](https://nf-co.re/join) and we can discuss this. -It is unclear whether Bracken is suitable for running long reads, as it makes certain assumptions about read lengths. Furthemore, during testing we found issues where Bracken would fail on the long-read test data. Therefore nf-core/taxprofiler does not run Bracken on data specified as being sequenced with `OXFORD_NANOPORE` in the input samplesheet. If you would like to change this behaviour, please contact us on the nf-core slack and we can discuss this. +##### Bracken -###### Centrifuge +You must make sure to also activate Kraken2 to run Bracken in the pipeline. + +##### Centrifuge Centrifuge currently does not accept FASTA files as input, therefore no output will be produced for these input files. -###### DIAMOND +##### DIAMOND + +DIAMOND only allows output of a single file format at a time, therefore parameters such `--diamond_save_reads` supplied will result in only aligned reads in SAM format will be produced, no taxonomic profiles will be available. Be aware of this when setting up your pipeline runs, depending on your particular use case. + +##### Kaiju + +Currently, no specific tips or suggestions. -DIAMOND only allows output of a single format at a time, therefore parameters such --diamond_save_reads supplied will result in only aligned reads in SAM format will be produced, no taxonomic profiles will be available. Be aware of this when setting up your pipeline runs, depending on your particular use case. +##### Kraken2 -###### MALT +Currently, no specific tips or suggestions. + +##### KrakenUniq + +Currently, no specific tips or suggestions. + +##### MALT MALT does not support paired-end reads alignment (unlike other tools), therefore nf-core/taxprofiler aligns these as indepenent files if read-merging is skipped. If you skip merging, you can sum or average the results of the counts of the pairs. Krona can only be run on MALT output if path to Krona taxonomy database supplied to `--krona_taxonomy_directory`. Therefore if you do not supply the a Krona directory, Krona plots will not be produced for MALT. -###### MetaPhlAn3 +##### MetaPhlAn3 MetaPhlAn3 currently does not accept FASTA files as input, therefore no output will be produced for these input files. -###### mOTUs +##### mOTUs mOTUs currently does not accept FASTA files as input, therefore no output will be produced for these input files. +#### Post Processing + +##### Visualisation + +nf-core/taxprofiler supports generation of Krona interactive piechart plots for the following compatible tools. + +- Kraken2 +- Centrifuge +- Kaiju +- MALT + +> ⚠️ MALT KRONA plots cannot be generated automatically, you must also specify a Krona taxonomy directory with `--krona_taxonomy_directory` if you wish to generate these. + +##### Multi-Table Generation + +In addition to per-sample profiles, the pipeline also supports generation of 'native' multi-sample taxonomic profiles (i.e., those generated by the taxonomic profiling tools themselves or additional utility scripts provided by the tool authors). + +This are executed on a per-database level. I.e., you will get a multi-sample taxon table for each database you provide for each tool and will be placed in the same directory as the directories containing the per-sample profiles. + +The following tools will produce multi-sample taxon tables: + +- **Bracken** (via bracken's `combine_bracken_outputs.py` script) +- **Centrifuge** (via KrakenTools' `combine_kreports.py` script) +- **Kaiju** (via Kaiju's `kaiju2table` tool) +- **Kraken2** (via KrakenTools' `combine_kreports.py` script) +- **MetaPhlAn3** (via MetaPhlAn's `merge_metaphlan_tables.py` script) +- **mOTUs** (via the `motus merge` command) + +Note that the multi-sample tables from these folders are not inter-operable with each other as they can have different formats. + ### Updating the pipeline When you run the above command, Nextflow automatically pulls the pipeline code from GitHub and stores it as a cached version. When running the pipeline after this, it will always use the cached version if available - even if the pipeline has been updated since. To make sure that you're running the latest version of the pipeline, make sure that you regularly update the cached version of the pipeline: @@ -431,12 +495,15 @@ NXF_OPTS='-Xms1g -Xmx4g' ### Retrieving databases or building custom databases -Here we will give brief guidance on how to build databases for each supported taxonomic profiler. You should always consult the documentation of each tool for more information, here we provide these as quick reference guides (with no guarantee they are up to date). +Not all taxonomic profilers provide ready-made or default databases. Here we will give brief guidance on how to build custom databases for each supported taxonomic profiler. + +You should always consult the documentation of each tool for more information, as here we only provide short minimal-tutorials as quick reference guides (with no guarantee they are up to date). + The following tutorials assumes you already have the tool available (e.g. installed locally, or via conda, docker etc.), and you have already downloaded the FASTA files you wish to build into a database. #### Bracken custom database -Bracken does not provide any default databases for profiling, but rather building upon Kraken2 databases. See [Kraken2](#kraken2-custom-database) for more information on how to build these. +Bracken does not require an indepndent database construction, but rather builds upon Kraken2 databases. See [Kraken2](#kraken2-custom-database) for more information on how to build these. In addition to a Kraken2 database, you also need to have the (average) read lengths (in bp) of your sequencing experiment, the K-mer size used to build the Kraken2 database, and Kraken2 available on your machine. @@ -463,11 +530,13 @@ bracken-build -d -k -l
    -You can follow Bracken [tutorial](https://ccb.jhu.edu/software/bracken/index.shtml?t=manual) for more information. Alternatively, you can use one of the indexes that can be found [here](https://benlangmead.github.io/aws-indexes/k2). +You can follow Bracken [tutorial](https://ccb.jhu.edu/software/bracken/index.shtml?t=manual) for more information. #### Centrifuge custom database -Centrifuge allows the user to [build custom databases](https://ccb.jhu.edu/software/centrifuge/manual.shtml#custom-database). The user should download taxonomy files, make custom `seqid2taxid.map` and combine the fasta files together. You need four components: a tab-separated file mapping sequence IDs to taxonomy IDs (`--conversion-table`), a \t|\t-separated file mapping taxonomy IDs to their parents and rank, up to the root of the tree (`--taxonomy-tree`), a '|'-separated file mapping taxonomy IDs to a name (`--name-table`) and the reference sequences. +To build a custom Centrifuge database, a user needs to download taxonomy files, make a custom `seqid2taxid.map` and combine the fasta files together. + +In total You need four components: a tab-separated file mapping sequence IDs to taxonomy IDs (`--conversion-table`), a tab-separated file mapping taxonomy IDs to their parents and rank, up to the root of the tree (`--taxonomy-tree`), a pipe-separated file mapping taxonomy IDs to a name (`--name-table`), and the reference sequences. An example of custom `seqid2taxid.map`: @@ -478,7 +547,6 @@ NC_001135.5 4392 ```bash centrifuge-download -o taxonomy taxonomy - cat *.{fa,fna} > input-sequences.fna centrifuge-build -p 4 --conversion-table seqid2taxid.map --taxonomy-tree taxonomy/nodes.dmp --name-table taxonomy/names.dmp input-sequences.fna taxprofiler_cf ``` @@ -494,9 +562,13 @@ centrifuge-build -p 4 --conversion-table seqid2taxid.map --taxonomy-tree taxonom
    +For the Centrifuge custom database documentation, see [here](https://ccb.jhu.edu/software/centrifuge/manual.shtml#custom-database). + #### DIAMOND custom database -To create a custom database for DIAMOND, the user should download and unzip the NCBI's taxonomy files. The `makedb` needs to be executed afterwards. A detailed description can be found [here](https://github.com/bbuchfink/diamond/wiki/1.-Tutorial) +To create a custom database for DIAMOND, the user should download and unzip the NCBI's taxonomy files and the input FASTA files. + +The download and build steps are as follows: ```bash wget ftp://ftp.ncbi.nlm.nih.gov/pub/taxonomy/taxdmp.zip @@ -508,6 +580,7 @@ wget ftp://ftp.ncbi.nlm.nih.gov/pub/taxonomy/accession2taxid/prot.accession2taxi ## warning: takes a long time! cat ../raw/*.faa | diamond makedb -d testdb-diamond --taxonmap prot.accession2taxid.FULL.gz --taxonnodes nodes.dmp --taxonnames names.dmp +## clean up rm *dmp *txt *gz *prt *zip ``` @@ -519,15 +592,19 @@ rm *dmp *txt *gz *prt *zip
    +A detailed description can be found [here](https://github.com/bbuchfink/diamond/wiki/1.-Tutorial) + #### Kaiju custom database -It is possible to [create custom databases](https://github.com/bioinformatics-centre/kaiju#custom-database) with Kaiju. To build a kaiju database, you need three components: a FASTA file with the protein sequences (the headers are the numeric NCBI taxon identifiers of the protein sequences), number of threads and you need to define the uppercase characters of the standard 20 amino acids. +To build a kaiju database, you need three components: a FASTA file with the protein sequences (the headers are the numeric NCBI taxon identifiers of the protein sequences), and you need to define the uppercase characters of the standard 20 amino acids you wish to include. ```bash -kaiju-mkbwt -n 5 -a ACDEFGHIKLMNPQRSTVWY -o proteins proteins.faa +kaiju-mkbwt -a ACDEFGHIKLMNPQRSTVWY -o proteins proteins.faa kaiju-mkfmi proteins ``` +> 🛈 You can speed up database construction by supplying the threads parameter (`-t`). +
    Expected files in database directory @@ -538,11 +615,13 @@ kaiju-mkfmi proteins
    +For the Kaiju database construction documentation, see [here](https://github.com/bioinformatics-centre/kaiju#custom-database). + #### Kraken2 custom database To build a Kraken2 database you need two components: a taxonomy (consisting of `names.dmp`, `nodes.dmp`, and `*accession2taxid`) files, and the FASTA files you wish to include. -To install pulling the NCBI taxonomy, you can run the following: +To pull the NCBI taxonomy, you can run the following: ```bash kraken2-build --download-taxonomy --db @@ -556,20 +635,14 @@ kraken2-build --add-to-library *.fna --db You can repeat this step multiple times to iteratively add more genomes prior building. -You can also automatical download and add 'standard' libraries provided by Kraken2 (e.g. bacteria on RefSeq) - -```bash -kraken2-build --download-library bacteria --db -``` - Once all genomes are added to the library, you can build the database (and optionally clean it up): ```bash kraken2-build --build --db -kraken2-build --clean--db +kraken2-build --clean --db ``` -You can then add the / path to your nf-core/taxprofiler database input sheet. +You can then add the `/` path to your nf-core/taxprofiler database input sheet.
    Expected files in database directory @@ -585,29 +658,17 @@ You can follow the Kraken2 [tutorial](https://github.com/DerrickWood/kraken2/blo #### KrakenUniq custom database -KrakenUniq allows to re-use Kraken(2) databases ([see above](#kraken2)) however with some restrictions. KrakenUniq also provides you with the ability to auto-download and build 'standard' NCBI reference datasets. - -For any KrakenUniq databases, you require: taxonomy files, the FASTA files you wish to include, a `seqid2mapid` file, and a k-mer length. - -To auto-download and build a 'standard' database of Bacteria and Archaea genomes from RefSeq, you can run something like: - -```bash -krakenuniq-download --db taxonomy -krakenuniq-download --db --threads 10 --dust refseq/bacteria refseq/archaea -krakenuniq-build --db --kmer-len 31 --threads 10 --taxids-for-genomes --taxids-for-sequences -``` +For any KrakenUniq database, you require: taxonomy files, the FASTA files you wish to include, a `seqid2mapid` file, and a k-mer length. -This will download all the required files for you and build the database. - -Alternatively, if you want to build your own you first must make a `seqid2taxid.map` file which is a two column text file containing the FASTA sequence header and the NCBI taxonomy ID for each sequence: +First you must make a `seqid2taxid.map` file which is a two column text file containing the FASTA sequence header and the NCBI taxonomy ID for each sequence: ``` MT192765.1 2697049 ``` -Then make a directory (`/`), containing the `seqid2taxid.map` file and your FASTA files in a subdirectory called `library/`. You must then run the `taxonomy` command on the `/` directory, and then build it. +Then make a directory (`/`), containing the `seqid2taxid.map` file, and your FASTA files in a subdirectory called `library/` (these FASTA files can be symlinked). You must then run the `taxonomy` command on the `/` directory, and then build it. -``` +```bash mkdir -p /library mv `seqid2taxid.map` / mv *.fna /library @@ -615,7 +676,7 @@ krakenuniq-download --db taxonomy krakenuniq-build --db --kmer-len 31 ``` -> 🛈 You can speed up database construction by supplying the threads parameter (`--threads`). +> 🛈 You can speed up database construction by supplying the threads parameter (`--threads`) to `krakenuniq-build`.
    Expected files in database directory @@ -631,19 +692,15 @@ krakenuniq-build --db --kmer-len 31 Please see the [KrakenUniq documentation](https://github.com/fbreitwieser/krakenuniq#database-building) for more information. -```` - #### MALT custom database -MALT does not provide any default databases for profiling, therefore you must build your own. -You need FASTA files to include, and an (unzipped) [MEGAN mapping 'db' file](https://software-ab.informatik.uni-tuebingen.de/download/megan6/) for your FASTA type. -In addition to the input directory, output directory, and the mapping file database, you also need to specify the sequence type (DNA or Protein) with the `-s` flag. +To build a MALT database, you need the FASTA files to include, and an (unzipped) [MEGAN mapping 'db' file](https://software-ab.informatik.uni-tuebingen.de/download/megan6/) for your FASTA type. In addition to the input directory, output directory, and the mapping file database, you also need to specify the sequence type (DNA or Protein) with the `-s` flag. ```bash malt-build -i ///*.{fna,fa,fasta} -a2t //.db -d / -s DNA -```` +``` -You can then add the / path to your nf-core/taxprofiler database input sheet. +You can then add the `/` path to your nf-core/taxprofiler database input sheet. ⚠️ MALT generates very large database files and requires large amounts of RAM. You can reduce both by increasing the step size `-st` (with a reduction in sensitivity). @@ -669,8 +726,9 @@ See the [MALT manual](https://software-ab.informatik.uni-tuebingen.de/download/m #### MetaPhlAn3 custom database -MetaPhlAn3 provides a prebuilt database of marker genes. -This must be downloaded by the user. To do this you need to have `MetaPhlAn3` installed on your machine. +MetaPhlAn3 does not allow (easy) construction of custom databases. Therefore we recommend to use the prebuilt database of marker genes that is provided by the developers. + +To do this you need to have `MetaPhlAn3` installed on your machine. ```bash metaphlan --install --bowtie2db / @@ -678,7 +736,9 @@ metaphlan --install --bowtie2db / You can then add the `/` path to your nf-core/taxprofiler database input sheet. -> 🛈 It is generally not recommended to modify this database yourself, thus this is currently not supported in the pipeline. However, it is possible to customise the existing database by adding your own marker genomes following the instructions [here](https://github.com/biobakery/MetaPhlAn/wiki/MetaPhlAn-3.1#customizing-the-database). If using your own database is relevant for you, please contact the nf-core/taxprofiler developers on the [nf-core slack](https://nf-co.re/join) and we will investigate supporting this. +> 🛈 It is generally not recommended to modify this database yourself, thus this is currently not supported in the pipeline. However, it is possible to customise the existing database by adding your own marker genomes following the instructions [here](https://github.com/biobakery/MetaPhlAn/wiki/MetaPhlAn-3.1#customizing-the-database). + +> 🖊️ If using your own database is relevant for you, please contact the nf-core/taxprofiler developers on the [nf-core slack](https://nf-co.re/join) and we will investigate supporting this.
    Expected files in database directory @@ -701,9 +761,9 @@ More information on the MetaPhlAn3 database can be found [here](https://github.c #### mOTUs custom database -mOTUs provides a prebuilt database of marker genes. +mOTUs does not provide the ability to construct custom databases. Therefore we recommend to use the the prebuilt database of marker genes provided by the developers. -This must be downloaded by the user. To do this you need to have `mOTUs` installed on your machine. +To do this you need to have `mOTUs` installed on your machine. ```bash motus downloadDB @@ -713,8 +773,6 @@ Then supply the `db_mOTU/` path to your nf-core/taxprofiler database input sheet > ⚠️ The `db_mOTU/` directory may be downloaded to somewhere in your Python's `site-package` directory. You will have to find this yourself as the exact location varies depends on installation method. -It is not possible to create a custom mOTUs database. - More information on the mOTUs database can be found [here](https://motu-tool.org/installation.html). ## Troubleshooting and FAQs diff --git a/workflows/taxprofiler.nf b/workflows/taxprofiler.nf index 07798ea..d1693be 100644 --- a/workflows/taxprofiler.nf +++ b/workflows/taxprofiler.nf @@ -291,7 +291,7 @@ workflow TAXPROFILER { ch_multiqc_files = ch_multiqc_files.mix(SHORTREAD_HOSTREMOVAL.out.mqc.collect{it[1]}.ifEmpty([])) } - if (params.perform_longread_hostremoval) { + if (params.perform_longread_hostremoval) { ch_multiqc_files = ch_multiqc_files.mix(LONGREAD_HOSTREMOVAL.out.mqc.collect{it[1]}.ifEmpty([])) } From e5c6db96c89b2c2862aab8ee403949c9b1ce635d Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Fri, 23 Dec 2022 17:23:05 +0100 Subject: [PATCH 585/789] update all modules to make templaite compatible --- modules.json | 74 +++++++++---------- modules/nf-core/adapterremoval/main.nf | 2 +- modules/nf-core/bbmap/bbduk/main.nf | 8 +- modules/nf-core/bowtie2/align/main.nf | 16 ++-- modules/nf-core/bowtie2/align/meta.yml | 5 ++ modules/nf-core/bowtie2/build/main.nf | 8 +- modules/nf-core/bowtie2/build/meta.yml | 10 +++ modules/nf-core/bracken/bracken/main.nf | 2 +- .../bracken/combinebrackenoutputs/main.nf | 2 +- modules/nf-core/cat/fastq/main.nf | 2 +- modules/nf-core/centrifuge/centrifuge/main.nf | 4 +- modules/nf-core/centrifuge/kreport/main.nf | 4 +- modules/nf-core/diamond/blastx/main.nf | 4 +- modules/nf-core/falco/main.nf | 2 +- modules/nf-core/fastp/main.nf | 2 +- modules/nf-core/filtlong/main.nf | 2 +- modules/nf-core/gunzip/main.nf | 2 +- modules/nf-core/kaiju/kaiju/main.nf | 2 +- modules/nf-core/kaiju/kaiju2krona/main.nf | 2 +- modules/nf-core/kaiju/kaiju2table/main.nf | 2 +- modules/nf-core/kraken2/kraken2/main.nf | 2 +- .../krakentools/combinekreports/main.nf | 2 +- .../nf-core/krakentools/kreport2krona/main.nf | 2 +- .../nf-core/krona/ktimporttaxonomy/main.nf | 2 +- modules/nf-core/krona/ktimporttext/main.nf | 2 +- modules/nf-core/malt/run/main.nf | 2 +- modules/nf-core/megan/rma2info/main.nf | 2 +- .../metaphlan3/mergemetaphlantables/main.nf | 2 +- modules/nf-core/metaphlan3/metaphlan3/main.nf | 2 +- modules/nf-core/minimap2/align/main.nf | 8 +- modules/nf-core/minimap2/index/main.nf | 7 +- modules/nf-core/minimap2/index/meta.yml | 2 +- modules/nf-core/motus/merge/main.nf | 2 +- modules/nf-core/motus/profile/main.nf | 2 +- modules/nf-core/porechop/porechop/main.nf | 2 +- modules/nf-core/prinseqplusplus/main.nf | 2 +- modules/nf-core/samtools/bam2fq/main.nf | 6 +- modules/nf-core/samtools/index/main.nf | 6 +- modules/nf-core/samtools/stats/main.nf | 6 +- modules/nf-core/samtools/view/main.nf | 10 ++- modules/nf-core/untar/main.nf | 2 +- subworkflows/local/shortread_hostremoval.nf | 2 +- 42 files changed, 124 insertions(+), 106 deletions(-) diff --git a/modules.json b/modules.json index ab944fa..0ce4614 100644 --- a/modules.json +++ b/modules.json @@ -7,47 +7,47 @@ "nf-core": { "adapterremoval": { "branch": "master", - "git_sha": "ce7cf27e377fdacf7ebe8e75903ec70405ea1659", + "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", "installed_by": ["modules"] }, "bbmap/bbduk": { "branch": "master", - "git_sha": "5e34754d42cd2d5d248ca8673c0a53cdf5624905", + "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", "installed_by": ["modules"] }, "bowtie2/align": { "branch": "master", - "git_sha": "5e34754d42cd2d5d248ca8673c0a53cdf5624905", + "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", "installed_by": ["modules"] }, "bowtie2/build": { "branch": "master", - "git_sha": "5e34754d42cd2d5d248ca8673c0a53cdf5624905", + "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", "installed_by": ["modules"] }, "bracken/bracken": { "branch": "master", - "git_sha": "8cab56516076b23c6f8eb1ac20ba4ce9692c85e1", + "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", "installed_by": ["modules"] }, "bracken/combinebrackenoutputs": { "branch": "master", - "git_sha": "9c87d5fdad182590a370ea43a4ecebd200a6f6fb", + "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", "installed_by": ["modules"] }, "cat/fastq": { "branch": "master", - "git_sha": "5e34754d42cd2d5d248ca8673c0a53cdf5624905", + "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", "installed_by": ["modules"] }, "centrifuge/centrifuge": { "branch": "master", - "git_sha": "5e34754d42cd2d5d248ca8673c0a53cdf5624905", + "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", "installed_by": ["modules"] }, "centrifuge/kreport": { "branch": "master", - "git_sha": "5e34754d42cd2d5d248ca8673c0a53cdf5624905", + "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", "installed_by": ["modules"] }, "custom/dumpsoftwareversions": { @@ -57,18 +57,18 @@ }, "diamond/blastx": { "branch": "master", - "git_sha": "5e34754d42cd2d5d248ca8673c0a53cdf5624905", + "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", "installed_by": ["modules"] }, "falco": { "branch": "master", - "git_sha": "fc959214036403ad83efe7a41d43d0606c445cda", + "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", "installed_by": ["modules"], "patch": "modules/nf-core/falco/falco.diff" }, "fastp": { "branch": "master", - "git_sha": "1e49f31e93c56a3832833eef90a02d3cde5a3f7e", + "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", "installed_by": ["modules"] }, "fastqc": { @@ -78,42 +78,42 @@ }, "filtlong": { "branch": "master", - "git_sha": "5e34754d42cd2d5d248ca8673c0a53cdf5624905", + "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", "installed_by": ["modules"] }, "gunzip": { "branch": "master", - "git_sha": "5e34754d42cd2d5d248ca8673c0a53cdf5624905", + "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", "installed_by": ["modules"] }, "kaiju/kaiju": { "branch": "master", - "git_sha": "5e34754d42cd2d5d248ca8673c0a53cdf5624905", + "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", "installed_by": ["modules"] }, "kaiju/kaiju2krona": { "branch": "master", - "git_sha": "5e34754d42cd2d5d248ca8673c0a53cdf5624905", + "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", "installed_by": ["modules"] }, "kaiju/kaiju2table": { "branch": "master", - "git_sha": "5e34754d42cd2d5d248ca8673c0a53cdf5624905", + "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", "installed_by": ["modules"] }, "kraken2/kraken2": { "branch": "master", - "git_sha": "5e34754d42cd2d5d248ca8673c0a53cdf5624905", + "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", "installed_by": ["modules"] }, "krakentools/combinekreports": { "branch": "master", - "git_sha": "5e34754d42cd2d5d248ca8673c0a53cdf5624905", + "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", "installed_by": ["modules"] }, "krakentools/kreport2krona": { "branch": "master", - "git_sha": "5e34754d42cd2d5d248ca8673c0a53cdf5624905", + "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", "installed_by": ["modules"] }, "krakenuniq/preloadedkrakenuniq": { @@ -123,52 +123,52 @@ }, "krona/ktimporttaxonomy": { "branch": "master", - "git_sha": "5e34754d42cd2d5d248ca8673c0a53cdf5624905", + "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", "installed_by": ["modules"] }, "krona/ktimporttext": { "branch": "master", - "git_sha": "5e34754d42cd2d5d248ca8673c0a53cdf5624905", + "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", "installed_by": ["modules"] }, "malt/run": { "branch": "master", - "git_sha": "6d9712f03ec2de8264a50ee4541a617e1e063b51", + "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", "installed_by": ["modules"] }, "megan/rma2info": { "branch": "master", - "git_sha": "5e34754d42cd2d5d248ca8673c0a53cdf5624905", + "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", "installed_by": ["modules"] }, "metaphlan3/mergemetaphlantables": { "branch": "master", - "git_sha": "5e34754d42cd2d5d248ca8673c0a53cdf5624905", + "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", "installed_by": ["modules"] }, "metaphlan3/metaphlan3": { "branch": "master", - "git_sha": "5e34754d42cd2d5d248ca8673c0a53cdf5624905", + "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", "installed_by": ["modules"] }, "minimap2/align": { "branch": "master", - "git_sha": "5e34754d42cd2d5d248ca8673c0a53cdf5624905", + "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", "installed_by": ["modules"] }, "minimap2/index": { "branch": "master", - "git_sha": "5e34754d42cd2d5d248ca8673c0a53cdf5624905", + "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", "installed_by": ["modules"] }, "motus/merge": { "branch": "master", - "git_sha": "3fce766123e71e82fb384db7d07b59180baa9ee9", + "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", "installed_by": ["modules"] }, "motus/profile": { "branch": "master", - "git_sha": "3fce766123e71e82fb384db7d07b59180baa9ee9", + "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", "installed_by": ["modules"] }, "multiqc": { @@ -178,37 +178,37 @@ }, "porechop/porechop": { "branch": "master", - "git_sha": "2a4e85eb81875a572bb58133e37f84ba3cc484d7", + "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", "installed_by": ["modules"] }, "prinseqplusplus": { "branch": "master", - "git_sha": "5e34754d42cd2d5d248ca8673c0a53cdf5624905", + "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", "installed_by": ["modules"] }, "samtools/bam2fq": { "branch": "master", - "git_sha": "5e34754d42cd2d5d248ca8673c0a53cdf5624905", + "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", "installed_by": ["modules"] }, "samtools/index": { "branch": "master", - "git_sha": "5e34754d42cd2d5d248ca8673c0a53cdf5624905", + "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", "installed_by": ["modules"] }, "samtools/stats": { "branch": "master", - "git_sha": "5e34754d42cd2d5d248ca8673c0a53cdf5624905", + "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", "installed_by": ["modules"] }, "samtools/view": { "branch": "master", - "git_sha": "5e34754d42cd2d5d248ca8673c0a53cdf5624905", + "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", "installed_by": ["modules"] }, "untar": { "branch": "master", - "git_sha": "5e34754d42cd2d5d248ca8673c0a53cdf5624905", + "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", "installed_by": ["modules"] } } diff --git a/modules/nf-core/adapterremoval/main.nf b/modules/nf-core/adapterremoval/main.nf index 643c141..324b4b0 100644 --- a/modules/nf-core/adapterremoval/main.nf +++ b/modules/nf-core/adapterremoval/main.nf @@ -2,7 +2,7 @@ process ADAPTERREMOVAL { tag "$meta.id" label 'process_medium' - conda (params.enable_conda ? "bioconda::adapterremoval=2.3.2" : null) + conda "bioconda::adapterremoval=2.3.2" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? 'https://depot.galaxyproject.org/singularity/adapterremoval:2.3.2--hb7ba0dd_0' : 'quay.io/biocontainers/adapterremoval:2.3.2--hb7ba0dd_0' }" diff --git a/modules/nf-core/bbmap/bbduk/main.nf b/modules/nf-core/bbmap/bbduk/main.nf index 0ae005e..f33d937 100644 --- a/modules/nf-core/bbmap/bbduk/main.nf +++ b/modules/nf-core/bbmap/bbduk/main.nf @@ -2,10 +2,10 @@ process BBMAP_BBDUK { tag "$meta.id" label 'process_medium' - conda (params.enable_conda ? "bioconda::bbmap=38.90" : null) + conda "bioconda::bbmap=39.01" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/bbmap:38.90--he522d1c_1' : - 'quay.io/biocontainers/bbmap:38.90--he522d1c_1' }" + 'https://depot.galaxyproject.org/singularity/bbmap:39.01--h5c4e2a8_0': + 'quay.io/biocontainers/bbmap:39.01--h5c4e2a8_0' }" input: tuple val(meta), path(reads) @@ -37,7 +37,7 @@ process BBMAP_BBDUK { &> ${prefix}.bbduk.log cat <<-END_VERSIONS > versions.yml "${task.process}": - bbmap: \$(bbversion.sh) + bbmap: \$(bbversion.sh | grep -v "Duplicate cpuset") END_VERSIONS """ } diff --git a/modules/nf-core/bowtie2/align/main.nf b/modules/nf-core/bowtie2/align/main.nf index c74e376..3d85186 100644 --- a/modules/nf-core/bowtie2/align/main.nf +++ b/modules/nf-core/bowtie2/align/main.nf @@ -2,14 +2,14 @@ process BOWTIE2_ALIGN { tag "$meta.id" label "process_high" - conda (params.enable_conda ? "bioconda::bowtie2=2.4.4 bioconda::samtools=1.15.1 conda-forge::pigz=2.6" : null) - container "${ workflow.containerEngine == "singularity" && !task.ext.singularity_pull_docker_container ? - "https://depot.galaxyproject.org/singularity/mulled-v2-ac74a7f02cebcfcc07d8e8d1d750af9c83b4d45a:1744f68fe955578c63054b55309e05b41c37a80d-0" : - "quay.io/biocontainers/mulled-v2-ac74a7f02cebcfcc07d8e8d1d750af9c83b4d45a:1744f68fe955578c63054b55309e05b41c37a80d-0" }" + conda "bioconda::bowtie2=2.4.4 bioconda::samtools=1.16.1 conda-forge::pigz=2.6" + container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? + 'https://depot.galaxyproject.org/singularity/mulled-v2-ac74a7f02cebcfcc07d8e8d1d750af9c83b4d45a:a0ffedb52808e102887f6ce600d092675bf3528a-0' : + 'quay.io/biocontainers/mulled-v2-ac74a7f02cebcfcc07d8e8d1d750af9c83b4d45a:a0ffedb52808e102887f6ce600d092675bf3528a-0' }" input: - tuple val(meta), path(reads) - path index + tuple val(meta) , path(reads) + tuple val(meta2), path(index) val save_unaligned val sort_bam @@ -40,8 +40,8 @@ process BOWTIE2_ALIGN { def samtools_command = sort_bam ? 'sort' : 'view' """ - INDEX=`find -L ./ -name "*.rev.1.bt2" | sed "s/.rev.1.bt2//"` - [ -z "\$INDEX" ] && INDEX=`find -L ./ -name "*.rev.1.bt2l" | sed "s/.rev.1.bt2l//"` + INDEX=`find -L ./ -name "*.rev.1.bt2" | sed "s/\\.rev.1.bt2\$//"` + [ -z "\$INDEX" ] && INDEX=`find -L ./ -name "*.rev.1.bt2l" | sed "s/\\.rev.1.bt2l\$//"` [ -z "\$INDEX" ] && echo "Bowtie2 index files not found" 1>&2 && exit 1 bowtie2 \\ diff --git a/modules/nf-core/bowtie2/align/meta.yml b/modules/nf-core/bowtie2/align/meta.yml index 42ba0f9..c8e9a00 100644 --- a/modules/nf-core/bowtie2/align/meta.yml +++ b/modules/nf-core/bowtie2/align/meta.yml @@ -27,6 +27,11 @@ input: description: | List of input FastQ files of size 1 and 2 for single-end and paired-end data, respectively. + - meta2: + type: map + description: | + Groovy Map containing reference information + e.g. [ id:'test', single_end:false ] - index: type: file description: Bowtie2 genome index files diff --git a/modules/nf-core/bowtie2/build/main.nf b/modules/nf-core/bowtie2/build/main.nf index a4da62d..551893a 100644 --- a/modules/nf-core/bowtie2/build/main.nf +++ b/modules/nf-core/bowtie2/build/main.nf @@ -2,17 +2,17 @@ process BOWTIE2_BUILD { tag "$fasta" label 'process_high' - conda (params.enable_conda ? 'bioconda::bowtie2=2.4.4' : null) + conda "bioconda::bowtie2=2.4.4" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? 'https://depot.galaxyproject.org/singularity/bowtie2:2.4.4--py39hbb4e92a_0' : 'quay.io/biocontainers/bowtie2:2.4.4--py39hbb4e92a_0' }" input: - path fasta + tuple val(meta), path(fasta) output: - path 'bowtie2' , emit: index - path "versions.yml" , emit: versions + tuple val(meta), path('bowtie2') , emit: index + path "versions.yml" , emit: versions when: task.ext.when == null || task.ext.when diff --git a/modules/nf-core/bowtie2/build/meta.yml b/modules/nf-core/bowtie2/build/meta.yml index 2da9a21..0240224 100644 --- a/modules/nf-core/bowtie2/build/meta.yml +++ b/modules/nf-core/bowtie2/build/meta.yml @@ -16,10 +16,20 @@ tools: doi: 10.1038/nmeth.1923 licence: ["GPL-3.0-or-later"] input: + - meta: + type: map + description: | + Groovy Map containing reference information + e.g. [ id:'test', single_end:false ] - fasta: type: file description: Input genome fasta file output: + - meta: + type: map + description: | + Groovy Map containing reference information + e.g. [ id:'test', single_end:false ] - index: type: file description: Bowtie2 genome index files diff --git a/modules/nf-core/bracken/bracken/main.nf b/modules/nf-core/bracken/bracken/main.nf index ac7d1af..ddb2d6f 100644 --- a/modules/nf-core/bracken/bracken/main.nf +++ b/modules/nf-core/bracken/bracken/main.nf @@ -4,7 +4,7 @@ process BRACKEN_BRACKEN { // WARN: Version information not provided by tool on CLI. // Please update version string below when bumping container versions. - conda (params.enable_conda ? "bioconda::bracken=2.7" : null) + conda "bioconda::bracken=2.7" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? 'https://depot.galaxyproject.org/singularity/bracken:2.7--py39hc16433a_0': 'quay.io/biocontainers/bracken:2.7--py39hc16433a_0' }" diff --git a/modules/nf-core/bracken/combinebrackenoutputs/main.nf b/modules/nf-core/bracken/combinebrackenoutputs/main.nf index 977030c..c57e6a8 100644 --- a/modules/nf-core/bracken/combinebrackenoutputs/main.nf +++ b/modules/nf-core/bracken/combinebrackenoutputs/main.nf @@ -2,7 +2,7 @@ process BRACKEN_COMBINEBRACKENOUTPUTS { tag "$meta.id" label 'process_low' - conda (params.enable_conda ? "bioconda::bracken=2.7" : null) + conda "bioconda::bracken=2.7" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? 'https://depot.galaxyproject.org/singularity/bracken:2.7--py39hc16433a_0': 'quay.io/biocontainers/bracken:2.7--py39hc16433a_0' }" diff --git a/modules/nf-core/cat/fastq/main.nf b/modules/nf-core/cat/fastq/main.nf index 4fa365d..8a0b560 100644 --- a/modules/nf-core/cat/fastq/main.nf +++ b/modules/nf-core/cat/fastq/main.nf @@ -2,7 +2,7 @@ process CAT_FASTQ { tag "$meta.id" label 'process_single' - conda (params.enable_conda ? "conda-forge::sed=4.7" : null) + conda "conda-forge::sed=4.7" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? 'https://depot.galaxyproject.org/singularity/ubuntu:20.04' : 'ubuntu:20.04' }" diff --git a/modules/nf-core/centrifuge/centrifuge/main.nf b/modules/nf-core/centrifuge/centrifuge/main.nf index 3d23fc9..26c91ee 100644 --- a/modules/nf-core/centrifuge/centrifuge/main.nf +++ b/modules/nf-core/centrifuge/centrifuge/main.nf @@ -2,7 +2,7 @@ process CENTRIFUGE_CENTRIFUGE { tag "$meta.id" label 'process_high' - conda (params.enable_conda ? "bioconda::centrifuge=1.0.4_beta" : null) + conda "bioconda::centrifuge=1.0.4_beta" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? 'https://depot.galaxyproject.org/singularity/centrifuge:1.0.4_beta--h9a82719_6' : 'quay.io/biocontainers/centrifuge:1.0.4_beta--h9a82719_6' }" @@ -41,7 +41,7 @@ process CENTRIFUGE_CENTRIFUGE { def sam_output = sam_format ? "--out-fmt 'sam'" : '' """ ## we add "-no-name ._" to ensure silly Mac OSX metafiles files aren't included - db_name=`find -L ${db} -name "*.1.cf" -not -name "._*" | sed 's/.1.cf//'` + db_name=`find -L ${db} -name "*.1.cf" -not -name "._*" | sed 's/\\.1.cf\$//'` centrifuge \\ -x \$db_name \\ -p $task.cpus \\ diff --git a/modules/nf-core/centrifuge/kreport/main.nf b/modules/nf-core/centrifuge/kreport/main.nf index 8e5b741..6fcee55 100644 --- a/modules/nf-core/centrifuge/kreport/main.nf +++ b/modules/nf-core/centrifuge/kreport/main.nf @@ -2,7 +2,7 @@ process CENTRIFUGE_KREPORT { tag "$meta.id" label 'process_single' - conda (params.enable_conda ? "bioconda::centrifuge=1.0.4_beta" : null) + conda "bioconda::centrifuge=1.0.4_beta" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? 'https://depot.galaxyproject.org/singularity/centrifuge:1.0.4_beta--h9a82719_6': 'quay.io/biocontainers/centrifuge:1.0.4_beta--h9a82719_6' }" @@ -22,7 +22,7 @@ process CENTRIFUGE_KREPORT { def args = task.ext.args ?: '' def prefix = task.ext.prefix ?: "${meta.id}" """ - db_name=`find -L ${db} -name "*.1.cf" -not -name "._*" | sed 's/.1.cf//'` + db_name=`find -L ${db} -name "*.1.cf" -not -name "._*" | sed 's/\\.1.cf\$//'` centrifuge-kreport -x \$db_name ${report} > ${prefix}.txt cat <<-END_VERSIONS > versions.yml diff --git a/modules/nf-core/diamond/blastx/main.nf b/modules/nf-core/diamond/blastx/main.nf index 1f4ff25..e305b57 100644 --- a/modules/nf-core/diamond/blastx/main.nf +++ b/modules/nf-core/diamond/blastx/main.nf @@ -2,7 +2,7 @@ process DIAMOND_BLASTX { tag "$meta.id" label 'process_medium' - conda (params.enable_conda ? "bioconda::diamond=2.0.15" : null) + conda "bioconda::diamond=2.0.15" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? 'https://depot.galaxyproject.org/singularity/diamond:2.0.15--hb97b32f_0' : 'quay.io/biocontainers/diamond:2.0.15--hb97b32f_0' }" @@ -46,7 +46,7 @@ process DIAMOND_BLASTX { break } """ - DB=`find -L ./ -name "*.dmnd" | sed 's/.dmnd//'` + DB=`find -L ./ -name "*.dmnd" | sed 's/\\.dmnd\$//'` diamond \\ blastx \\ diff --git a/modules/nf-core/falco/main.nf b/modules/nf-core/falco/main.nf index b279c57..f0f131e 100644 --- a/modules/nf-core/falco/main.nf +++ b/modules/nf-core/falco/main.nf @@ -3,7 +3,7 @@ process FALCO { label 'process_single' - conda (params.enable_conda ? "bioconda::falco=1.2.1" : null) + conda "bioconda::falco=1.2.1" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? 'https://depot.galaxyproject.org/singularity/falco:1.2.1--h867801b_3': 'quay.io/biocontainers/falco:1.2.1--h867801b_3' }" diff --git a/modules/nf-core/fastp/main.nf b/modules/nf-core/fastp/main.nf index 207258a..e1ed928 100644 --- a/modules/nf-core/fastp/main.nf +++ b/modules/nf-core/fastp/main.nf @@ -2,7 +2,7 @@ process FASTP { tag "$meta.id" label 'process_medium' - conda (params.enable_conda ? 'bioconda::fastp=0.23.2' : null) + conda "bioconda::fastp=0.23.2" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? 'https://depot.galaxyproject.org/singularity/fastp:0.23.2--h79da9fb_0' : 'quay.io/biocontainers/fastp:0.23.2--h79da9fb_0' }" diff --git a/modules/nf-core/filtlong/main.nf b/modules/nf-core/filtlong/main.nf index afaa938..e920fef 100644 --- a/modules/nf-core/filtlong/main.nf +++ b/modules/nf-core/filtlong/main.nf @@ -2,7 +2,7 @@ process FILTLONG { tag "$meta.id" label 'process_low' - conda (params.enable_conda ? "bioconda::filtlong=0.2.1" : null) + conda "bioconda::filtlong=0.2.1" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? 'https://depot.galaxyproject.org/singularity/filtlong:0.2.1--h9a82719_0' : 'quay.io/biocontainers/filtlong:0.2.1--h9a82719_0' }" diff --git a/modules/nf-core/gunzip/main.nf b/modules/nf-core/gunzip/main.nf index fa6ba26..d906034 100644 --- a/modules/nf-core/gunzip/main.nf +++ b/modules/nf-core/gunzip/main.nf @@ -2,7 +2,7 @@ process GUNZIP { tag "$archive" label 'process_single' - conda (params.enable_conda ? "conda-forge::sed=4.7" : null) + conda "conda-forge::sed=4.7" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? 'https://depot.galaxyproject.org/singularity/ubuntu:20.04' : 'ubuntu:20.04' }" diff --git a/modules/nf-core/kaiju/kaiju/main.nf b/modules/nf-core/kaiju/kaiju/main.nf index ae8f99e..1d24e64 100644 --- a/modules/nf-core/kaiju/kaiju/main.nf +++ b/modules/nf-core/kaiju/kaiju/main.nf @@ -2,7 +2,7 @@ process KAIJU_KAIJU { tag "$meta.id" label 'process_high' - conda (params.enable_conda ? "bioconda::kaiju=1.8.2" : null) + conda "bioconda::kaiju=1.8.2" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? 'https://depot.galaxyproject.org/singularity/kaiju:1.8.2--h5b5514e_1': 'quay.io/biocontainers/kaiju:1.8.2--h5b5514e_1' }" diff --git a/modules/nf-core/kaiju/kaiju2krona/main.nf b/modules/nf-core/kaiju/kaiju2krona/main.nf index 3f35ce7..fb8da1e 100644 --- a/modules/nf-core/kaiju/kaiju2krona/main.nf +++ b/modules/nf-core/kaiju/kaiju2krona/main.nf @@ -2,7 +2,7 @@ process KAIJU_KAIJU2KRONA { tag "$meta.id" label 'process_single' - conda (params.enable_conda ? "bioconda::kaiju=1.8.2" : null) + conda "bioconda::kaiju=1.8.2" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? 'https://depot.galaxyproject.org/singularity/kaiju:1.8.2--h5b5514e_1': 'quay.io/biocontainers/kaiju:1.8.2--h5b5514e_1' }" diff --git a/modules/nf-core/kaiju/kaiju2table/main.nf b/modules/nf-core/kaiju/kaiju2table/main.nf index 8648d56..52bd643 100644 --- a/modules/nf-core/kaiju/kaiju2table/main.nf +++ b/modules/nf-core/kaiju/kaiju2table/main.nf @@ -2,7 +2,7 @@ process KAIJU_KAIJU2TABLE { tag "$meta.id" label 'process_single' - conda (params.enable_conda ? "bioconda::kaiju=1.8.2" : null) + conda "bioconda::kaiju=1.8.2" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? 'https://depot.galaxyproject.org/singularity/kaiju:1.8.2--h5b5514e_1': 'quay.io/biocontainers/kaiju:1.8.2--h2e03b76_0' }" diff --git a/modules/nf-core/kraken2/kraken2/main.nf b/modules/nf-core/kraken2/kraken2/main.nf index 43a1679..1b9e760 100644 --- a/modules/nf-core/kraken2/kraken2/main.nf +++ b/modules/nf-core/kraken2/kraken2/main.nf @@ -2,7 +2,7 @@ process KRAKEN2_KRAKEN2 { tag "$meta.id" label 'process_high' - conda (params.enable_conda ? 'bioconda::kraken2=2.1.2 conda-forge::pigz=2.6' : null) + conda "bioconda::kraken2=2.1.2 conda-forge::pigz=2.6" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? 'https://depot.galaxyproject.org/singularity/mulled-v2-5799ab18b5fc681e75923b2450abaa969907ec98:87fc08d11968d081f3e8a37131c1f1f6715b6542-0' : 'quay.io/biocontainers/mulled-v2-5799ab18b5fc681e75923b2450abaa969907ec98:87fc08d11968d081f3e8a37131c1f1f6715b6542-0' }" diff --git a/modules/nf-core/krakentools/combinekreports/main.nf b/modules/nf-core/krakentools/combinekreports/main.nf index fdcc245..b4ea504 100644 --- a/modules/nf-core/krakentools/combinekreports/main.nf +++ b/modules/nf-core/krakentools/combinekreports/main.nf @@ -1,7 +1,7 @@ process KRAKENTOOLS_COMBINEKREPORTS { label 'process_single' - conda (params.enable_conda ? "bioconda::krakentools=1.2" : null) + conda "bioconda::krakentools=1.2" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? 'https://depot.galaxyproject.org/singularity/krakentools:1.2--pyh5e36f6f_0': 'quay.io/biocontainers/krakentools:1.2--pyh5e36f6f_0' }" diff --git a/modules/nf-core/krakentools/kreport2krona/main.nf b/modules/nf-core/krakentools/kreport2krona/main.nf index 8ed46f1..df439ac 100644 --- a/modules/nf-core/krakentools/kreport2krona/main.nf +++ b/modules/nf-core/krakentools/kreport2krona/main.nf @@ -3,7 +3,7 @@ process KRAKENTOOLS_KREPORT2KRONA { label 'process_single' // WARN: Version information not provided by tool on CLI. Please update version string below when bumping container versions. - conda (params.enable_conda ? "bioconda::krakentools=1.2" : null) + conda "bioconda::krakentools=1.2" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? 'https://depot.galaxyproject.org/singularity/krakentools:1.2--pyh5e36f6f_0': 'quay.io/biocontainers/krakentools:1.2--pyh5e36f6f_0' }" diff --git a/modules/nf-core/krona/ktimporttaxonomy/main.nf b/modules/nf-core/krona/ktimporttaxonomy/main.nf index 79c01d7..3a76f66 100644 --- a/modules/nf-core/krona/ktimporttaxonomy/main.nf +++ b/modules/nf-core/krona/ktimporttaxonomy/main.nf @@ -3,7 +3,7 @@ process KRONA_KTIMPORTTAXONOMY { label 'process_single' // WARN: Version information not provided by tool on CLI. Please update version string below when bumping container versions. - conda (params.enable_conda ? "bioconda::krona=2.8" : null) + conda "bioconda::krona=2.8" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? 'https://depot.galaxyproject.org/singularity/krona:2.8--pl5262hdfd78af_2' : 'quay.io/biocontainers/krona:2.8--pl5262hdfd78af_2' }" diff --git a/modules/nf-core/krona/ktimporttext/main.nf b/modules/nf-core/krona/ktimporttext/main.nf index edf7aab..53f3026 100644 --- a/modules/nf-core/krona/ktimporttext/main.nf +++ b/modules/nf-core/krona/ktimporttext/main.nf @@ -2,7 +2,7 @@ process KRONA_KTIMPORTTEXT { tag "$meta.id" label 'process_single' - conda (params.enable_conda ? "bioconda::krona=2.8.1" : null) + conda "bioconda::krona=2.8.1" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? 'https://depot.galaxyproject.org/singularity/krona:2.8.1--pl5321hdfd78af_1': 'quay.io/biocontainers/krona:2.8.1--pl5321hdfd78af_1' }" diff --git a/modules/nf-core/malt/run/main.nf b/modules/nf-core/malt/run/main.nf index 2e75b4c..83987d9 100644 --- a/modules/nf-core/malt/run/main.nf +++ b/modules/nf-core/malt/run/main.nf @@ -2,7 +2,7 @@ process MALT_RUN { tag "$meta.id" label 'process_high' - conda (params.enable_conda ? "bioconda::malt=0.61" : null) + conda "bioconda::malt=0.61" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? 'https://depot.galaxyproject.org/singularity/malt:0.61--hdfd78af_0' : 'quay.io/biocontainers/malt:0.61--hdfd78af_0' }" diff --git a/modules/nf-core/megan/rma2info/main.nf b/modules/nf-core/megan/rma2info/main.nf index 9c6a094..a37a4d6 100644 --- a/modules/nf-core/megan/rma2info/main.nf +++ b/modules/nf-core/megan/rma2info/main.nf @@ -2,7 +2,7 @@ process MEGAN_RMA2INFO { tag "$meta.id" label 'process_single' - conda (params.enable_conda ? "bioconda::megan=6.21.7" : null) + conda "bioconda::megan=6.21.7" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? 'https://depot.galaxyproject.org/singularity/megan:6.21.7--h9ee0642_0': 'quay.io/biocontainers/megan:6.21.7--h9ee0642_0' }" diff --git a/modules/nf-core/metaphlan3/mergemetaphlantables/main.nf b/modules/nf-core/metaphlan3/mergemetaphlantables/main.nf index 7c37eca..5be6e4f 100644 --- a/modules/nf-core/metaphlan3/mergemetaphlantables/main.nf +++ b/modules/nf-core/metaphlan3/mergemetaphlantables/main.nf @@ -1,7 +1,7 @@ process METAPHLAN3_MERGEMETAPHLANTABLES { label 'process_single' - conda (params.enable_conda ? 'bioconda::metaphlan=3.0.12' : null) + conda "bioconda::metaphlan=3.0.12" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? 'https://depot.galaxyproject.org/singularity/metaphlan:3.0.12--pyhb7b1952_0' : 'quay.io/biocontainers/metaphlan:3.0.12--pyhb7b1952_0' }" diff --git a/modules/nf-core/metaphlan3/metaphlan3/main.nf b/modules/nf-core/metaphlan3/metaphlan3/main.nf index 1453466..34f8705 100644 --- a/modules/nf-core/metaphlan3/metaphlan3/main.nf +++ b/modules/nf-core/metaphlan3/metaphlan3/main.nf @@ -2,7 +2,7 @@ process METAPHLAN3_METAPHLAN3 { tag "$meta.id" label 'process_high' - conda (params.enable_conda ? 'bioconda::metaphlan=3.0.12' : null) + conda "bioconda::metaphlan=3.0.12" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? 'https://depot.galaxyproject.org/singularity/metaphlan:3.0.12--pyhb7b1952_0' : 'quay.io/biocontainers/metaphlan:3.0.12--pyhb7b1952_0' }" diff --git a/modules/nf-core/minimap2/align/main.nf b/modules/nf-core/minimap2/align/main.nf index 08ac6ee..430dbab 100644 --- a/modules/nf-core/minimap2/align/main.nf +++ b/modules/nf-core/minimap2/align/main.nf @@ -2,7 +2,8 @@ process MINIMAP2_ALIGN { tag "$meta.id" label 'process_medium' - conda (params.enable_conda ? 'bioconda::minimap2=2.21 bioconda::samtools=1.12' : null) + // Note: the versions here need to match the versions used in the mulled container below and minimap2/index + conda "bioconda::minimap2=2.24 bioconda::samtools=1.14" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? 'https://depot.galaxyproject.org/singularity/mulled-v2-66534bcbb7031a148b13e2ad42583020b9cd25c4:1679e915ddb9d6b4abda91880c4b48857d471bd8-0' : 'quay.io/biocontainers/mulled-v2-66534bcbb7031a148b13e2ad42583020b9cd25c4:1679e915ddb9d6b4abda91880c4b48857d471bd8-0' }" @@ -25,7 +26,6 @@ process MINIMAP2_ALIGN { script: def args = task.ext.args ?: '' def prefix = task.ext.prefix ?: "${meta.id}" - def input_reads = meta.single_end ? "$reads" : "${reads[0]} ${reads[1]}" def bam_output = bam_format ? "-a | samtools sort | samtools view -@ ${task.cpus} -b -h -o ${prefix}.bam" : "-o ${prefix}.paf" def cigar_paf = cigar_paf_format && !bam_format ? "-c" : '' def set_cigar_bam = cigar_bam && bam_format ? "-L" : '' @@ -33,8 +33,8 @@ process MINIMAP2_ALIGN { minimap2 \\ $args \\ -t $task.cpus \\ - $reference \\ - $input_reads \\ + "${reference ?: reads}" \\ + "$reads" \\ $cigar_paf \\ $set_cigar_bam \\ $bam_output diff --git a/modules/nf-core/minimap2/index/main.nf b/modules/nf-core/minimap2/index/main.nf index 25e9429..73dd4ee 100644 --- a/modules/nf-core/minimap2/index/main.nf +++ b/modules/nf-core/minimap2/index/main.nf @@ -1,10 +1,11 @@ process MINIMAP2_INDEX { label 'process_medium' - conda (params.enable_conda ? 'bioconda::minimap2=2.21' : null) + // Note: the versions here need to match the versions used in minimap2/align + conda "bioconda::minimap2=2.24" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/minimap2:2.21--h5bf99c6_0' : - 'quay.io/biocontainers/minimap2:2.21--h5bf99c6_0' }" + 'https://depot.galaxyproject.org/singularity/minimap2:2.24--h7132678_1' : + 'quay.io/biocontainers/minimap2:2.24--h7132678_1' }" input: tuple val(meta), path(fasta) diff --git a/modules/nf-core/minimap2/index/meta.yml b/modules/nf-core/minimap2/index/meta.yml index 603c651..b58f35c 100644 --- a/modules/nf-core/minimap2/index/meta.yml +++ b/modules/nf-core/minimap2/index/meta.yml @@ -27,7 +27,7 @@ output: description: | Groovy Map containing sample information e.g. [ id:'test', single_end:false ] - - mmi: + - index: type: file description: Minimap2 fasta index. pattern: "*.mmi" diff --git a/modules/nf-core/motus/merge/main.nf b/modules/nf-core/motus/merge/main.nf index 5041cf0..23d2a49 100644 --- a/modules/nf-core/motus/merge/main.nf +++ b/modules/nf-core/motus/merge/main.nf @@ -2,7 +2,7 @@ process MOTUS_MERGE { tag "$meta.id" label 'process_single' - conda (params.enable_conda ? "bioconda::motus=3.0.3" : null) + conda "bioconda::motus=3.0.3" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? 'https://depot.galaxyproject.org/singularity/motus:3.0.3--pyhdfd78af_0': 'quay.io/biocontainers/motus:3.0.3--pyhdfd78af_0' }" diff --git a/modules/nf-core/motus/profile/main.nf b/modules/nf-core/motus/profile/main.nf index 8a76250..1491c46 100644 --- a/modules/nf-core/motus/profile/main.nf +++ b/modules/nf-core/motus/profile/main.nf @@ -2,7 +2,7 @@ process MOTUS_PROFILE { tag "$meta.id" label 'process_medium' - conda (params.enable_conda ? "bioconda::motus=3.0.3" : null) + conda "bioconda::motus=3.0.3" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? 'https://depot.galaxyproject.org/singularity/motus:3.0.3--pyhdfd78af_0': 'quay.io/biocontainers/motus:3.0.3--pyhdfd78af_0' }" diff --git a/modules/nf-core/porechop/porechop/main.nf b/modules/nf-core/porechop/porechop/main.nf index f946417..5267910 100644 --- a/modules/nf-core/porechop/porechop/main.nf +++ b/modules/nf-core/porechop/porechop/main.nf @@ -2,7 +2,7 @@ process PORECHOP_PORECHOP { tag "$meta.id" label 'process_medium' - conda (params.enable_conda ? "bioconda::porechop=0.2.4" : null) + conda "bioconda::porechop=0.2.4" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? 'https://depot.galaxyproject.org/singularity/porechop:0.2.4--py39h7cff6ad_2' : 'quay.io/biocontainers/porechop:0.2.4--py39h7cff6ad_2' }" diff --git a/modules/nf-core/prinseqplusplus/main.nf b/modules/nf-core/prinseqplusplus/main.nf index ebd8c58..f6c1c5b 100644 --- a/modules/nf-core/prinseqplusplus/main.nf +++ b/modules/nf-core/prinseqplusplus/main.nf @@ -2,7 +2,7 @@ process PRINSEQPLUSPLUS { tag "$meta.id" label 'process_low' - conda (params.enable_conda ? "bioconda::prinseq-plus-plus=1.2.3" : null) + conda "bioconda::prinseq-plus-plus=1.2.3" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? 'https://depot.galaxyproject.org/singularity/prinseq-plus-plus:1.2.3--hc90279e_1': 'quay.io/biocontainers/prinseq-plus-plus:1.2.3--hc90279e_1' }" diff --git a/modules/nf-core/samtools/bam2fq/main.nf b/modules/nf-core/samtools/bam2fq/main.nf index 9301d1d..0b06352 100644 --- a/modules/nf-core/samtools/bam2fq/main.nf +++ b/modules/nf-core/samtools/bam2fq/main.nf @@ -2,10 +2,10 @@ process SAMTOOLS_BAM2FQ { tag "$meta.id" label 'process_low' - conda (params.enable_conda ? "bioconda::samtools=1.15.1" : null) + conda "bioconda::samtools=1.16.1" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/samtools:1.15.1--h1170115_0' : - 'quay.io/biocontainers/samtools:1.15.1--h1170115_0' }" + 'https://depot.galaxyproject.org/singularity/samtools:1.16.1--h6899075_1' : + 'quay.io/biocontainers/samtools:1.16.1--h6899075_1' }" input: tuple val(meta), path(inputbam) diff --git a/modules/nf-core/samtools/index/main.nf b/modules/nf-core/samtools/index/main.nf index e04e63e..8b95687 100644 --- a/modules/nf-core/samtools/index/main.nf +++ b/modules/nf-core/samtools/index/main.nf @@ -2,10 +2,10 @@ process SAMTOOLS_INDEX { tag "$meta.id" label 'process_low' - conda (params.enable_conda ? "bioconda::samtools=1.15.1" : null) + conda "bioconda::samtools=1.16.1" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/samtools:1.15.1--h1170115_0' : - 'quay.io/biocontainers/samtools:1.15.1--h1170115_0' }" + 'https://depot.galaxyproject.org/singularity/samtools:1.16.1--h6899075_1' : + 'quay.io/biocontainers/samtools:1.16.1--h6899075_1' }" input: tuple val(meta), path(input) diff --git a/modules/nf-core/samtools/stats/main.nf b/modules/nf-core/samtools/stats/main.nf index 9b0c386..0a2a364 100644 --- a/modules/nf-core/samtools/stats/main.nf +++ b/modules/nf-core/samtools/stats/main.nf @@ -2,10 +2,10 @@ process SAMTOOLS_STATS { tag "$meta.id" label 'process_single' - conda (params.enable_conda ? "bioconda::samtools=1.15.1" : null) + conda "bioconda::samtools=1.16.1" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/samtools:1.15.1--h1170115_0' : - 'quay.io/biocontainers/samtools:1.15.1--h1170115_0' }" + 'https://depot.galaxyproject.org/singularity/samtools:1.16.1--h6899075_1' : + 'quay.io/biocontainers/samtools:1.16.1--h6899075_1' }" input: tuple val(meta), path(input), path(input_index) diff --git a/modules/nf-core/samtools/view/main.nf b/modules/nf-core/samtools/view/main.nf index 94da5d6..729c85e 100644 --- a/modules/nf-core/samtools/view/main.nf +++ b/modules/nf-core/samtools/view/main.nf @@ -2,10 +2,10 @@ process SAMTOOLS_VIEW { tag "$meta.id" label 'process_low' - conda (params.enable_conda ? "bioconda::samtools=1.15.1" : null) + conda "bioconda::samtools=1.16.1" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/samtools:1.15.1--h1170115_0' : - 'quay.io/biocontainers/samtools:1.15.1--h1170115_0' }" + 'https://depot.galaxyproject.org/singularity/samtools:1.16.1--h6899075_1' : + 'quay.io/biocontainers/samtools:1.16.1--h6899075_1' }" input: tuple val(meta), path(input), path(index) @@ -26,6 +26,7 @@ process SAMTOOLS_VIEW { script: def args = task.ext.args ?: '' + def args2 = task.ext.args2 ?: '' def prefix = task.ext.prefix ?: "${meta.id}" def reference = fasta ? "--reference ${fasta}" : "" def readnames = qname ? "--qname-file ${qname}": "" @@ -42,7 +43,8 @@ process SAMTOOLS_VIEW { ${readnames} \\ $args \\ -o ${prefix}.${file_type} \\ - $input + $input \\ + $args2 cat <<-END_VERSIONS > versions.yml "${task.process}": diff --git a/modules/nf-core/untar/main.nf b/modules/nf-core/untar/main.nf index 71eea7b..16bccc9 100644 --- a/modules/nf-core/untar/main.nf +++ b/modules/nf-core/untar/main.nf @@ -2,7 +2,7 @@ process UNTAR { tag "$archive" label 'process_single' - conda (params.enable_conda ? "conda-forge::sed=4.7" : null) + conda "conda-forge::sed=4.7" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? 'https://depot.galaxyproject.org/singularity/ubuntu:20.04' : 'ubuntu:20.04' }" diff --git a/subworkflows/local/shortread_hostremoval.nf b/subworkflows/local/shortread_hostremoval.nf index 04c8556..71ebb08 100644 --- a/subworkflows/local/shortread_hostremoval.nf +++ b/subworkflows/local/shortread_hostremoval.nf @@ -19,7 +19,7 @@ workflow SHORTREAD_HOSTREMOVAL { ch_multiqc_files = Channel.empty() if ( !params.shortread_hostremoval_index ) { - ch_bowtie2_index = BOWTIE2_BUILD ( reference ).index + ch_bowtie2_index = BOWTIE2_BUILD ( [ [], reference ] ).index ch_versions = ch_versions.mix( BOWTIE2_BUILD.out.versions ) } else { ch_bowtie2_index = index.first() From 719fc3cf5d322c44c6c2e41ff7b2f1ab4ebfdd64 Mon Sep 17 00:00:00 2001 From: Sofia Stamouli <91951607+sofstam@users.noreply.github.com> Date: Wed, 11 Jan 2023 16:46:30 +0100 Subject: [PATCH 586/789] Update docs/output.md Co-authored-by: James A. Fellows Yates --- docs/output.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/output.md b/docs/output.md index f4ce4a2..c0f24b5 100644 --- a/docs/output.md +++ b/docs/output.md @@ -29,6 +29,8 @@ The pipeline is built using [Nextflow](https://www.nextflow.io/) and processes d - [Centrifuge](#centrifuge) - Taxonomic classifier that uses a novel indexing scheme based on the Burrows-Wheeler transform (BWT) and the Ferragina-Manzini (FM) index. - [Kaiju](#kaiju) - Taxonomic classifier that finds maximum (in-)exact matches on the protein-level. - [Diamond](#diamond) - Sequence aligner for protein and translated DNA searches. +- [MALT](#malt) - Sequence alignment and analysis tool designed for processing high-throughput sequencing data, especially in the context of metagenomics +- [MetaPhlAn3](#metaphlan3) - Genome-level marker gene based taxonomic classifier - [mOTUs](#motus) - Tool for marker gene-based OTU (mOTU) profiling. - [MultiQC](#multiqc) - Aggregate report describing results and QC from the whole pipeline - [Pipeline information](#pipeline-information) - Report metrics generated during the workflow execution From 953f9585c9404cb38c3d7a13649e521b4742da3c Mon Sep 17 00:00:00 2001 From: Sofia Stamouli <91951607+sofstam@users.noreply.github.com> Date: Wed, 11 Jan 2023 16:47:18 +0100 Subject: [PATCH 587/789] Update docs/output.md Co-authored-by: James A. Fellows Yates --- docs/output.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/output.md b/docs/output.md index c0f24b5..44ec0e3 100644 --- a/docs/output.md +++ b/docs/output.md @@ -235,7 +235,7 @@ You will only recieve the FASTQs and `*classifiedreads.txt` file if you supply ` Output files - `krakenuniq/` - - / + - `/` - `_.classified.fastq.gz`: FASTQ file containing all reads that had a hit against a reference in the database for a given sample - `_.unclassified.fastq.gz`: FASTQ file containing all reads that did not have a hit in the database for a given sample - `_.report.txt`: A Kraken2-style report that summarises the fraction abundance, taxonomic ID, number of Kmers, taxonomic path of all the hits, with an additional column for k-mer coverage, that allows for more accurate distinguishing between false-positive/true-postitive hits From a49a907ad195b81b3d0e2cee49f5154d51ebc74b Mon Sep 17 00:00:00 2001 From: Sofia Stamouli <91951607+sofstam@users.noreply.github.com> Date: Wed, 11 Jan 2023 16:47:44 +0100 Subject: [PATCH 588/789] Update docs/output.md Co-authored-by: James A. Fellows Yates --- docs/output.md | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) diff --git a/docs/output.md b/docs/output.md index 44ec0e3..c410fc0 100644 --- a/docs/output.md +++ b/docs/output.md @@ -284,6 +284,44 @@ You will only receive the FASTQs and `*classifiedreads.txt` file if you supply `
    +### MALT + +[MALT](https://software-ab.cs.uni-tuebingen.de/download/malt) is a fast replacement for BLASTX, BLASTP and BLASTN, and provides both local and semi-global alignment capabilities. + +
    +Output files + +- `malt/` + - `/` + - `.blastn.sam`: sparse SAM file containing alignments of each hit + - `.megan`: summary file that can be loaded into the [MEGAN6](https://uni-tuebingen.de/fakultaeten/mathematisch-naturwissenschaftliche-fakultaet/fachbereiche/informatik/lehrstuehle/algorithms-in-bioinformatics/software/megan6/) interactive viewer. Generated by MEGAN6 companion tool `rma2info` + - `.rma6`: binary file containing all alignments and taxonomic information of hits that can be loaded into the [MEGAN6](https://uni-tuebingen.de/fakultaeten/mathematisch-naturwissenschaftliche-fakultaet/fachbereiche/informatik/lehrstuehle/algorithms-in-bioinformatics/software/megan6/) interactive viewer + - `.txt.gz`: text file containing taxonomic IDs and read counts against each taxon. Generated by MEGAN6 companion tool `rma2info` + +
    + +The main output of MALT is the `.rma6` file format, which can be only loaded into MEGAN and it's related tools. We provide the `rma2info` text files for improved compatibility with spreadsheet programs and other programmtic data manipulation tools, however this has only limited information compared to the 'binary' RMA6 file format (the `txt` file only contains taxonomic ID and count, whereas RMA6 has taxonomic lineage information). + +You will only recieve the `.sam` and `.megan` files if you supply `--malt_save_reads` and/or `--malt_generate_megansummary` parameters to the pipeline. + + +### MetaPhlAn3 + +[MetaPhlAn3](https://github.com/biobakery/metaphlan) is a computational tool for profiling the composition of microbial communities (Bacteria, Archaea and Eukaryotes) from metagenomic shotgun sequencing data (i.e. not 16S) with species-level resolution via marker genes. + +
    +Output files + +- `metaphlan3/` + - `metaphlan3__combined_reports.txt`: A combined profile of all samples aligned to a given database (as generated by `metaphlan_merge_tables`) + - `/` + - `.biom`: taxonomic profile in BIOM format + - `.bowtie2out.txt`: BowTie2 alignment information (can be re-used for skipping alignment when re-running MetaPhlAn3 with different parameters) + - `_profile.txt`: MetaPhlAn3 taxonomic profile including abundance estimates + +
    + +The main taxonomic profiling file from MetaPhlAn3 is the `*_profile.txt` file. This provides the abundance estimates from MetaPhlAn3 however does not include raw counts by default. ### mOTUs
    From 33bce738f502b2fdfc8c77d14abc4a973dde4b26 Mon Sep 17 00:00:00 2001 From: Sofia Stamouli <91951607+sofstam@users.noreply.github.com> Date: Wed, 11 Jan 2023 16:50:06 +0100 Subject: [PATCH 589/789] Update docs/output.md Co-authored-by: James A. Fellows Yates --- docs/output.md | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/docs/output.md b/docs/output.md index c410fc0..2fae37a 100644 --- a/docs/output.md +++ b/docs/output.md @@ -332,6 +332,21 @@ The main taxonomic profiling file from MetaPhlAn3 is the `*_profile.txt` file. T - `.out`
    +### Krona + +[Krona](https://github.com/marbl/Krona) is Krona allows the exploration of (metagenomic) hierarchical data with interactive zooming, multi-layered pie charts. + +Krona charts will be generated by the pipeline for supported tools (Kraken2, Centrifuge, Kaiju, and MALT) + +
    +Output files + +- `krona/` + - `_.html`: per-tool/per-database interactive HTML file containing hierarchical piecharts + +
    + +The resulting HTML files can be loaded into your web browser for exploration. Each file will have a dropdown to allow you to switch between each sample aligned against the given database of the tool. ### MultiQC From 9f2118197232aa8b3e9bd847c08ea7ebe5cca608 Mon Sep 17 00:00:00 2001 From: sofstam Date: Thu, 12 Jan 2023 15:47:29 +0100 Subject: [PATCH 590/789] Add documentation for output docs --- docs/output.md | 39 ++++++++++++++++++++++----------------- 1 file changed, 22 insertions(+), 17 deletions(-) diff --git a/docs/output.md b/docs/output.md index 2fae37a..ef791e1 100644 --- a/docs/output.md +++ b/docs/output.md @@ -64,6 +64,8 @@ fastp can automatically detect adapter sequences for Illumina data. Output files - `fastp` + - `.fastp.fastq.gz`: File with the trimmed unmerged fastq reads. + - `.merged.fastq.gz`: File with the reads that were successfully merged.
    @@ -95,7 +97,7 @@ Note that the FASTQ files may _not_ always be the 'final' reads that go into tax Output files - `porechop` - - `.fastq.gz` + - `.fastq.gz`: Adapter-trimmed file
    @@ -143,8 +145,8 @@ Note that the FASTQ file(s) may _not_ always be the 'final' reads that go into t Output files - `filtlong` - - `_filtered.fastq.g` - - `_filtered.log` + - `_filtered.fastq.gz`: Quality or short read data filtered file + - `_filtered.log`: log file containing summary statistics
    @@ -174,7 +176,7 @@ Note that the FASTQ file(s) may _not_ always be the 'final' reads that go into t Output files - `minimap2` - - `.bam` + - `.bam`: Alignment file in bam format
    @@ -184,7 +186,7 @@ Note that the FASTQ file(s) may _not_ always be the 'final' reads that go into t Output files - `samtoolsstats` - - `.stats` + - `.stats`: File containing samtools stats output
    @@ -204,7 +206,7 @@ Note that the FASTQ file(s) may _not_ always be the 'final' reads that go into t
    -The main taxonomic profiling file from KrakenUniq is the `*.tsv` file. This provides the basic results from Kraken2 but with the corrected abundance information. +The main taxonomic profiling file from KrakenUniq is the `*.tsv` file. This provides the basic results from Kraken2 but with the corrected abundance information. ### Kraken2 @@ -256,10 +258,11 @@ You will only receive the FASTQs and `*classifiedreads.txt` file if you supply ` Output files - `centrifuge` - - `.centrifuge.mapped.fastq.gz` - - `.centrifuge.report.txt` - - `.centrifuge.results.txt` - - `.centrifuge.unmapped.fastq.gz` + - `.centrifuge.mapped.fastq.gz`: Fastq files containing all mapped reads + - `.centrifuge.report.txt`: A classification report that summarises the taxonomic ID, the taxonomic rank, length of genome sequence, number of classified and uniquely classified reads + - `.centrifuge.results.txt`: A file that summarises the classification assignment for a read, i.e read ID, sequence ID, score for the classification, score for the next best classification, number of classifications for this read + - `.centrifuge.txt`: A Kraken2-style report that summarises the fraction abundance, taxonomic ID, number of k-mers, taxonomic path of all the hits in the centrifuge run for a given sample + - `.centrifuge.unmapped.fastq.gz`: Fastq file containing all unmapped reads
    @@ -269,7 +272,8 @@ You will only receive the FASTQs and `*classifiedreads.txt` file if you supply ` Output files - `kaiju` - - `.tsv` + - `.tsv`: A file that summarises the fraction abundance, taxonomic ID, number of reads and taxonomic names + - `kaiju__combined_reports.txt`: A combined profile of all samples aligned to a given database (as generated by `kaiju2table`)
    @@ -279,8 +283,8 @@ You will only receive the FASTQs and `*classifiedreads.txt` file if you supply ` Output files - `diamond` - - `.log` - - `.sam` + - `.log`: A log file containing stdout information + - `.sam`: A file in SAM format that contains the aligned reads
    @@ -321,22 +325,23 @@ You will only recieve the `.sam` and `.megan` files if you supply `--malt_save_r
    -The main taxonomic profiling file from MetaPhlAn3 is the `*_profile.txt` file. This provides the abundance estimates from MetaPhlAn3 however does not include raw counts by default. +The main taxonomic profiling file from MetaPhlAn3 is the `*_profile.txt` file. This provides the abundance estimates from MetaPhlAn3 however does not include raw counts by default. ### mOTUs
    Output files - `motus` - - `.log` - - `.out` + - `.log`: A log file that contains summary statistics + - `.out`: A classification file that summarises taxonomic identifiers, by default at the rank of mOTUs (i.e., species level), and their relative abundances in the profiled sample. + - `motus__combined_reports.txt`: A combined profile of all samples aligned to a given database (as generated by `motus_merge`)
    ### Krona [Krona](https://github.com/marbl/Krona) is Krona allows the exploration of (metagenomic) hierarchical data with interactive zooming, multi-layered pie charts. -Krona charts will be generated by the pipeline for supported tools (Kraken2, Centrifuge, Kaiju, and MALT) +Krona charts will be generated by the pipeline for supported tools (Kraken2, Centrifuge, Kaiju, and MALT)
    Output files From 0e3f9f0b9abbc56f7e6f6cd91442c3886f6258aa Mon Sep 17 00:00:00 2001 From: Sofia Stamouli <91951607+sofstam@users.noreply.github.com> Date: Mon, 16 Jan 2023 12:59:13 +0100 Subject: [PATCH 591/789] Update docs/output.md Co-authored-by: James A. Fellows Yates --- docs/output.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/output.md b/docs/output.md index ef791e1..1c33790 100644 --- a/docs/output.md +++ b/docs/output.md @@ -199,7 +199,7 @@ Note that the FASTQ file(s) may _not_ always be the 'final' reads that go into t
    Output files -- `kraken2/` +- `bracken/` - `bracken__combined_reports.txt`: combined bracken results as output from Bracken's `combine_bracken_outputs.py` script - `/` - `_.tsv`: TSV file containing per-sample summary of Bracken results with abundance information From 06575b537d3f98b93be6ba656baed1a1e59568dd Mon Sep 17 00:00:00 2001 From: Sofia Stamouli <91951607+sofstam@users.noreply.github.com> Date: Mon, 16 Jan 2023 12:59:23 +0100 Subject: [PATCH 592/789] Update docs/output.md Co-authored-by: James A. Fellows Yates --- docs/output.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/output.md b/docs/output.md index 1c33790..ca15138 100644 --- a/docs/output.md +++ b/docs/output.md @@ -206,7 +206,7 @@ Note that the FASTQ file(s) may _not_ always be the 'final' reads that go into t
    -The main taxonomic profiling file from KrakenUniq is the `*.tsv` file. This provides the basic results from Kraken2 but with the corrected abundance information. +The main taxonomic profiling file from Bracken is the `*.tsv` file. This provides the basic results from Kraken2 but with the corrected abundance information. ### Kraken2 From d6fa45b500af1944b9ea44ff4e74730cd5603cd3 Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Mon, 16 Jan 2023 14:39:52 +0100 Subject: [PATCH 593/789] update MultiQC and include latest modules --- assets/multiqc_config.yml | 128 ++++++++++++++++++++++---------- conf/modules.config | 1 - modules.json | 2 +- modules/nf-core/multiqc/main.nf | 6 +- 4 files changed, 93 insertions(+), 44 deletions(-) diff --git a/assets/multiqc_config.yml b/assets/multiqc_config.yml index 6bc13c2..ba615df 100644 --- a/assets/multiqc_config.yml +++ b/assets/multiqc_config.yml @@ -19,9 +19,10 @@ custom_logo_title: "nf-core/taxprofiler" run_modules: - fastqc - adapterRemoval + - fastp - bbduk - prinseqplusplus - - fastp + - porechop - filtlong - bowtie2 - minimap2 @@ -32,9 +33,13 @@ run_modules: - diamond - malt - motus - - porechop - custom_content +sp: + diamond: + contents: "diamond v" + num_lines: 10 + #extra_fn_clean_exts: # - '_fastp' # - '.pe.settings' @@ -102,9 +107,10 @@ table_columns_placement: FastQC (pre-Trimming): total_sequences: 100 avg_sequence_length: 110 - percent_duplicates: 120 - percent_gc: 130 - percent_fails: 140 + median_sequence_length: 120 + percent_duplicates: 130 + percent_gc: 140 + percent_fails: 150 Falco (pre-Trimming): total_sequences: 200 avg_sequence_length: 210 @@ -118,43 +124,63 @@ table_columns_placement: after_filtering_gc_content: 330 after_filtering_q30_rate: 340 after_filtering_q30_bases: 350 + filtering_result_passed_filter_reads: 360 Adapter Removal: aligned_total: 360 percent_aligned: 370 percent_collapsed: 380 percent_discarded: 390 + Porechop: + Input Reads: 400 + Start Trimmed: 410 + Start Trimmed Percent: 420 + End Trimmed: 430 + End Trimmed Percent: 440 + Middle Split: 450 + Middle Split Percent: 460 + Filtlong: + Target bases: 500 FastQC (post-Trimming): - total_sequences: 400 - avg_sequence_length: 410 - percent_duplicates: 420 - percent_gc: 430 - percent_fails: 440 + total_sequences: 600 + avg_sequence_length: 610 + median_sequence_length: 620 + percent_duplicates: 630 + percent_gc: 640 + percent_fails: 650 Falco (post-Trimming): - total_sequences: 500 - avg_sequence_length: 510 - percent_duplicates: 520 - percent_gc: 530 - percent_fails: 540 + total_sequences: 700 + avg_sequence_length: 710 + percent_duplicates: 720 + percent_gc: 730 + percent_fails: 740 + BBDuk: + Input reads: 800 + Total Removed bases percent: 810 + Total Removed bases: 820 + Total Removed reads percent: 830 + Total Removed reads: 840 + PRINSEQ++: + prinseqplusplus_total: 900 bowtie2: - overall_alignment_rate: 600 + overall_alignment_rate: 1000 Samtools Stats: - raw_total_sequences: 700 - reads_mapped: 710 - reads_mapped_percent: 720 - reads_properly_paired_percent: 730 - non-primary_alignments: 740 - reads_MQ0_percent: 750 - error_rate: 760 + raw_total_sequences: 1100 + reads_mapped: 1110 + reads_mapped_percent: 1120 + reads_properly_paired_percent: 1130 + non-primary_alignments: 1140 + reads_MQ0_percent: 1150 + error_rate: 1160 MALT: - Num. of queries: 1000 - Total reads: 1100 - Mappability: 1200 - Assig. Taxonomy: 1300 - Taxonomic assignment success: 1400 + "Num. of queries": 1200 + Total reads: 1210 + Mappability: 1220 + Assig. Taxonomy: 1230 + Taxonomic assignment success: 1240 Kaiju: - assigned: 2000 - "% Assigned": 2100 - "% Unclassified": 2200 + assigned: 1300 + "% Assigned": 1310 + "% Unclassified": 1320 table_columns_visible: FastQC (pre-Trimming): @@ -176,6 +202,16 @@ table_columns_visible: after_filtering_gc_content: False after_filtering_q30_rate: False after_filtering_q30_bases: False + porechop: + Input reads: False + Start Trimmed: + Start Trimmed Percent: True + End Trimmed: False + End Trimmed Percent: True + Middle Split: False + Middle Split Percent: True + Filtlong: + Target bases: True Adapter Removal: aligned_total: True percent_aligned: True @@ -193,6 +229,14 @@ table_columns_visible: percent_duplicates: False percent_gc: False percent_fails: False + BBDuk: + Input reads: False + Total Removed bases Percent: False + Total Removed bases: False + Total Removed reads percent: True + Total Removed reads: False + "PRINSEQ++": + prinseqplusplus_total: True bowtie2: overall_alignment_rate: True Samtools Stats: @@ -212,16 +256,19 @@ table_columns_visible: Centrifuge: "% Unclassified": True "% Top 5": False + DIAMOND: + queries_aligned: True + Kaiju: + assigned: False + "% Assigned": False + "% Unclassified": True MALT: - Num. of queries: True + "Num. of queries": True Total reads: True Mappability: True Assig. Taxonomy: False Taxonomic assignment success: True - Kaiju: - assigned: False - "% Assigned": False - "% Unclassified": True + table_columns_name: FastQC (pre-Trimming): total_sequences: "Nr. Input Reads" @@ -253,7 +300,10 @@ table_columns_name: reads_mapped_percent: "% Mapped Reads" extra_fn_clean_exts: - - ".kraken2.kraken2.report.txt" - - ".centrifuge.txt" - - ".bracken.kraken2.report.txt" + - "kraken2.report.txt" + - ".txt" - ".settings" + - ".bbduk" + - ".unmapped" + - "_filtered" + - "_processed" diff --git a/conf/modules.config b/conf/modules.config index b31383a..5920a58 100644 --- a/conf/modules.config +++ b/conf/modules.config @@ -300,7 +300,6 @@ process { ext.args = [ params.shortread_complexityfilter_prinseqplusplus_mode == 'dust' ? "-lc_dust=${params.shortread_complexityfilter_prinseqplusplus_dustscore}" : "-lc_entropy=${params.shortread_complexityfilter_entropy}", "-trim_qual_left=0 -trim_qual_left=0 -trim_qual_window=0 -trim_qual_step=0", - "-VERBOSE 2" ].join(' ').trim() ext.prefix = { "${meta.id}-${meta.run_accession}" } publishDir = [ diff --git a/modules.json b/modules.json index 0ce4614..3d54d9d 100644 --- a/modules.json +++ b/modules.json @@ -173,7 +173,7 @@ }, "multiqc": { "branch": "master", - "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", + "git_sha": "ee80d14721e76e2e079103b8dcd5d57129e584ba", "installed_by": ["modules"] }, "porechop/porechop": { diff --git a/modules/nf-core/multiqc/main.nf b/modules/nf-core/multiqc/main.nf index 68f66be..4b60474 100644 --- a/modules/nf-core/multiqc/main.nf +++ b/modules/nf-core/multiqc/main.nf @@ -1,10 +1,10 @@ process MULTIQC { label 'process_single' - conda "bioconda::multiqc=1.13" + conda "bioconda::multiqc=1.14" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/multiqc:1.13--pyhdfd78af_0' : - 'quay.io/biocontainers/multiqc:1.13--pyhdfd78af_0' }" + 'https://depot.galaxyproject.org/singularity/multiqc:1.14--pyhdfd78af_0' : + 'quay.io/biocontainers/multiqc:1.14--pyhdfd78af_0' }" input: path multiqc_files, stageAs: "?/*" From b34a021db73f6fa1bb27a444d3f16959fa7f6eae Mon Sep 17 00:00:00 2001 From: "James A. Fellows Yates" Date: Mon, 16 Jan 2023 14:43:46 +0100 Subject: [PATCH 594/789] Specify the difference between classification/profiling --- README.md | 4 ++-- docs/usage.md | 30 +++++++++++++++--------------- 2 files changed, 17 insertions(+), 17 deletions(-) diff --git a/README.md b/README.md index ba4022f..080a75b 100644 --- a/README.md +++ b/README.md @@ -16,7 +16,7 @@ -**nf-core/taxprofiler** is a bioinformatics best-practice analysis pipeline for taxonomic profiling of shotgun metagenomic data. It allows for in-parallel profiling with multiple profiling tools against multiple databases, produces standardised output tables. +**nf-core/taxprofiler** is a bioinformatics best-practice analysis pipeline for taxonomic classification and profiling of shotgun metagenomic data. It allows for in-parallel taxonomic identification of reads or taxonomic abundance estimation with multiple classification and profiling tools against multiple databases, produces standardised output tables. The pipeline is built using [Nextflow](https://www.nextflow.io), a workflow tool to run tasks across multiple compute infrastructures in a very portable manner. It uses Docker/Singularity containers making installation trivial and results highly reproducible. The [Nextflow DSL2](https://www.nextflow.io/docs/latest/dsl2.html) implementation of this pipeline uses one container per process which makes it much easier to maintain and update software dependencies. Where possible, these processes have been submitted to and installed from [nf-core/modules](https://github.com/nf-core/modules) in order to make them available to all nf-core pipelines, and to everyone within the Nextflow community! @@ -37,7 +37,7 @@ On release, automated continuous integration tests run the pipeline on a full-si - Host-read removal (short-read: [BowTie2](http://bowtie-bio.sourceforge.net/bowtie2/); long-read: [Minimap2](https://github.com/lh3/minimap2)) - Run merging 3. Supports statistics for host-read removal ([Samtools](http://www.htslib.org/)) -4. Performs taxonomic profiling using one or more of: +4. Performs taxonomic classification and/or profiling using one or more of: - [Kraken2](https://ccb.jhu.edu/software/kraken2/) - [MetaPhlAn3](https://huttenhower.sph.harvard.edu/metaphlan/) - [MALT](https://uni-tuebingen.de/fakultaeten/mathematisch-naturwissenschaftliche-fakultaet/fachbereiche/informatik/lehrstuehle/algorithms-in-bioinformatics/software/malt/) diff --git a/docs/usage.md b/docs/usage.md index 9539a5a..d14198a 100644 --- a/docs/usage.md +++ b/docs/usage.md @@ -64,9 +64,9 @@ An [example samplesheet](../assets/samplesheet.csv) has been provided with the p ### Full database sheet -nf-core/taxprofiler supports multiple databases being profiled in parallel for each tool. +nf-core/taxprofiler supports multiple databases being classified/profiled against in parallel for each tool. Databases can be supplied either in the form of a compressed `.tar.gz` archive of a directory containing all relevant database files or the path to a directory on the filesystem. -The pipeline takes the locations and specific profiling parameters of the tool of these databases as input via a four column comma-separated sheet. +The pipeline takes the locations and specific classification/profiling parameters of the tool of these databases as input via a four column comma-separated sheet. > ⚠️ nf-core/taxprofiler does not provide any databases by default, nor does it currently generate them for you. This must be performed manually by the user. See below for more information of the expected database files. @@ -90,10 +90,10 @@ Column specifications are as follows: | ----------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `tool` | Taxonomic profiling tool (supported by nf-core/taxprofiler) that the database has been indexed for [required]. Please note that `bracken` also implies running `kraken2` on the same database. | | `db_name` | A unique name per tool for the particular database [required]. Please note that names need to be unique across both `kraken2` and `bracken` as well, even if re-using the same database. | -| `db_params` | Any parameters of the given taxonomic profiler that you wish to specify that the taxonomic profiling tool should use when profiling against this specific. Can be empty to use taxonomic profiler defaults. Must not be surrounded by quotes [required]. We generally do not recommend specifying parameters here that turn on/off saving of output files or specifying particular file extensions - this should be already addressed via pipeline parameters. | +| `db_params` | Any parameters of the given taxonomic classifier/profiler that you wish to specify that the taxonomic classifier/profiling tool should use when profiling against this specific database. Can be empty to use taxonomic classifier/profiler defaults. Must not be surrounded by quotes [required]. We generally do not recommend specifying parameters here that turn on/off saving of output files or specifying particular file extensions - this should be already addressed via pipeline parameters. | | `db_path` | Path to the database. Can either be a path to a directory containing the database index files or a `.tar.gz` file which contains the compressed database directory with the same name as the tar archive, minus `.tar.gz` [required]. | -> 💡 You can also specify the same database directory/file twice (ensuring unique `db_name`s) and specify different parameters for each database to compare the effect of different parameters during profiling. +> 💡 You can also specify the same database directory/file twice (ensuring unique `db_name`s) and specify different parameters for each database to compare the effect of different parameters during classification/profiling. nf-core/taxprofiler will automatically decompress and extract any compressed archives for you. @@ -120,7 +120,7 @@ nextflow run nf-core/taxprofiler --input samplesheet.csv --databases databases.c This will launch the pipeline with the `docker` configuration profile. See below for more information about profiles. -When running nf-core/taxprofiler, every step and tool is 'opt in'. To run a given profiler you must make sure to supply both a database in your `.csv` and supply `--run_` flag to your command. Omitting either will result in the profiling tool not executing. If you wish to perform pre-processing (adapter clipping, merge running etc.) or post-processing (visualisation) steps, these are also opt in with a `--perform_` flag. In some cases, the pre- and post-processing steps may also require additional files. Please check the parameters tab of this documentation for more information. +When running nf-core/taxprofiler, every step and tool is 'opt in'. To run a given classifier/profiler you must make sure to supply both a database in your `.csv` and supply `--run_` flag to your command. Omitting either will result in the classification/profiling tool not executing. If you wish to perform pre-processing (adapter clipping, merge running etc.) or post-processing (visualisation) steps, these are also opt in with a `--perform_` flag. In some cases, the pre- and post-processing steps may also require additional files. Please check the parameters tab of this documentation for more information. Note that the pipeline will create the following files in your working directory: @@ -153,9 +153,9 @@ It is highly recommended to run this on raw reads to remove artifacts from seque There are currently two options for short-read preprocessing: [`fastp`](https://github.com/OpenGene/fastp) or [`adapterremoval`](https://github.com/MikkelSchubert/adapterremoval). For adapter clipping, you can either rely on the tool's default adapter sequences, or supply your own adapters (`--shortread_qc_adapter1` and `--shortread_qc_adapter2`) -By default, paired-end merging is not activated. In this case paired-end 'alignment' against the reference databases is performed where supported, and if not, supported pairs will be independently profiled. If paired-end merging is activated you can also specify whether to include unmerged reads in the reads sent for profiling (`--shortread_qc_mergepairs` and `--shortread_qc_includeunmerged`). +By default, paired-end merging is not activated. In this case paired-end 'alignment' against the reference databases is performed where supported, and if not, supported pairs will be independently classified/profiled. If paired-end merging is activated you can also specify whether to include unmerged reads in the reads sent for classification/profiling (`--shortread_qc_mergepairs` and `--shortread_qc_includeunmerged`). You can also turn off clipping and only perform paired-end merging, if requested. This can be useful when processing data downloaded from the ENA, SRA, or DDBJ (`--shortread_qc_skipadaptertrim`). -Both tools support length filtering of reads and can be tuned with `--shortread_qc_minlength`. Performing length filtering can be useful to remove short (often low sequencing complexity) sequences that result in unspecific classification and therefore slow down runtime during profiling, with minimal gain. +Both tools support length filtering of reads and can be tuned with `--shortread_qc_minlength`. Performing length filtering can be useful to remove short (often low sequencing complexity) sequences that result in unspecific classification and therefore slow down runtime during classificationprofiling, with minimal gain. There is currently one option for long-read Oxford Nanopore processing: [`porechop`](https://github.com/rrwick/Porechop). @@ -165,7 +165,7 @@ For both short-read and long-read preprocessing, you can optionally save the res Complexity filtering can be activated via the `--perform_shortread_complexityfilter` flag. -Complexity filtering is primarily a run-time optimisation step. It is not necessary for accurate taxonomic profiling, however it can speed up run-time of each tool by removing reads with low-diversity of nucleotides (e.g. with mono-nucleotide - `AAAAAAAA`, or di-nucleotide repeats `GAGAGAGAGAGAGAG`) that have a low-chance of giving an informative taxonomic ID as they can be associated with many different taxa. Removing these reads therefore saves computational time and resources. +Complexity filtering is primarily a run-time optimisation step. It is not necessary for accurate taxonomic classification/profiling, however it can speed up run-time of each tool by removing reads with low-diversity of nucleotides (e.g. with mono-nucleotide - `AAAAAAAA`, or di-nucleotide repeats `GAGAGAGAGAGAGAG`) that have a low-chance of giving an informative taxonomic ID as they can be associated with many different taxa. Removing these reads therefore saves computational time and resources. There are currently three options for short-read complexity filtering: [`bbduk`](https://jgi.doe.gov/data-and-tools/software-tools/bbtools/bb-tools-user-guide/bbduk-guide/), [`prinseq++`](https://github.com/Adrian-Cantu/PRINSEQ-plus-plus), and [`fastp`](https://github.com/OpenGene/fastp#low-complexity-filter). @@ -179,11 +179,11 @@ You can optionally save the FASTQ output of the run merging with the `--save_com #### Host Removal -Removal of possible-host reads from FASTQ files prior profiling can be activated with `--perform_shortread_hostremoval` or `--perform_longread_hostremoval`. +Removal of possible-host reads from FASTQ files prior classification/profiling can be activated with `--perform_shortread_hostremoval` or `--perform_longread_hostremoval`. -Similarly to complexity filtering, host-removal can be useful for runtime optimisation and reduction in misclassified reads. It is not always necessary to report classification of reads from a host when you already know the host of the sample, therefore you can gain a run-time and computational advantage by removing these prior typically resource-heavy profiling with more efficient methods. Furthermore, particularly with human samples, you can reduce the number of false positives during profiling that occur due to host-sequence contamination in reference genomes on public databases. +Similarly to complexity filtering, host-removal can be useful for runtime optimisation and reduction in misclassified reads. It is not always necessary to report classification of reads from a host when you already know the host of the sample, therefore you can gain a run-time and computational advantage by removing these prior typically resource-heavy classification/profiling with more efficient methods. Furthermore, particularly with human samples, you can reduce the number of false positives during classification/profiling that occur due to host-sequence contamination in reference genomes on public databases. -nf-core/taxprofiler currently offers host-removal via alignment against a reference genome with Bowtie2, and the use of the unaligned reads for downstream profiling. +nf-core/taxprofiler currently offers host-removal via alignment against a reference genome with Bowtie2, and the use of the unaligned reads for downstream classification/profiling. You can supply your reference genome in FASTA format with `--hostremoval_reference`. You can also optionally supply a directory containing pre-indexed Bowtie2 index files with `--shortread_hostremoval_index` or a minimap2 `.mmi` file for `--longread_hostremoval_index`, however nf-core/taxprofiler will generate these for you if necessary. Pre-supplying the index directory or files can greatly speed up the process, and these can be re-used. @@ -195,11 +195,11 @@ For samples that may have been sequenced over multiple runs, or for FASTQ files For more information how to set up your input samplesheet, see [Multiple runs of the same sample](#multiple-runs-of-the-same-sample). -Activating this functionality will concatenate the FASTQ files with the same sample name _after_ the optional preprocessing steps and _before_ profiling. Note that libraries with runs of different pairing types will **not** be merged and this will be indicated on output files with a `_se` or `_pe` suffix to the sample name accordingly. +Activating this functionality will concatenate the FASTQ files with the same sample name _after_ the optional preprocessing steps and _before_ classification/profiling. Note that libraries with runs of different pairing types will **not** be merged and this will be indicated on output files with a `_se` or `_pe` suffix to the sample name accordingly. You can optionally save the FASTQ output of the run merging with the `--save_runmerged_reads`. -#### Profiling +#### Classification and Profiling The following suggestion gives you some tips and suggestions regarding running some of the different tools specifically _within the pipeline_. For advice as to which tool to run in your context, please see the documentation of each tool. @@ -436,7 +436,7 @@ The following tutorials assumes you already have the tool available (e.g. instal #### Bracken custom database -Bracken does not provide any default databases for profiling, but rather building upon Kraken2 databases. See [Kraken2](#kraken2-custom-database) for more information on how to build these. +Bracken does not provide any default databases for classification/profiling, but rather building upon Kraken2 databases. See [Kraken2](#kraken2-custom-database) for more information on how to build these. In addition to a Kraken2 database, you also need to have the (average) read lengths (in bp) of your sequencing experiment, the K-mer size used to build the Kraken2 database, and Kraken2 available on your machine. @@ -635,7 +635,7 @@ Please see the [KrakenUniq documentation](https://github.com/fbreitwieser/kraken #### MALT custom database -MALT does not provide any default databases for profiling, therefore you must build your own. +MALT does not provide any default databases for classification/profiling, therefore you must build your own. You need FASTA files to include, and an (unzipped) [MEGAN mapping 'db' file](https://software-ab.informatik.uni-tuebingen.de/download/megan6/) for your FASTA type. In addition to the input directory, output directory, and the mapping file database, you also need to specify the sequence type (DNA or Protein) with the `-s` flag. From c8f6d713a34ab90db60210972020b5be53e82d45 Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Mon, 16 Jan 2023 14:49:44 +0100 Subject: [PATCH 595/789] Add tool names to end of prefix files for easier distinguishing in general stats --- conf/modules.config | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/conf/modules.config b/conf/modules.config index 5920a58..ca4d9b3 100644 --- a/conf/modules.config +++ b/conf/modules.config @@ -350,7 +350,7 @@ process { withName: KRAKEN2_KRAKEN2 { ext.args = params.kraken2_save_minimizers ? { "${meta.db_params} --report-minimizer-data" } : { "${meta.db_params}" } - ext.prefix = params.perform_runmerging ? { meta.tool == "bracken" ? "${meta.id}-${meta.db_name}.bracken" : "${meta.id}-${meta.db_name}" } : { meta.tool == "bracken" ? "${meta.id}-${meta.run_accession}-${meta.db_name}.bracken" : "${meta.id}-${meta.run_accession}-${meta.db_name}" } + ext.prefix = params.perform_runmerging ? { meta.tool == "bracken" ? "${meta.id}-${meta.db_name}.bracken" : "${meta.id}-${meta.db_name}.kraken" } : { meta.tool == "bracken" ? "${meta.id}-${meta.run_accession}-${meta.db_name}.bracken" : "${meta.id}-${meta.run_accession}-${meta.db_name}.kraken" } publishDir = [ path: { "${params.outdir}/kraken2/${meta.db_name}/" }, mode: params.publish_dir_mode, @@ -389,7 +389,7 @@ process { withName: KRAKENUNIQ_PRELOADEDKRAKENUNIQ { ext.args = { "${meta.db_params}" } // one run with multiple samples, so fix ID to just db name to ensure clean log name - ext.prefix = { "${meta.db_name}" } + ext.prefix = { "${meta.db_name}.krakenuniq" } publishDir = [ path: { "${params.outdir}/krakenuniq/${meta.db_name}/" }, mode: params.publish_dir_mode, @@ -432,7 +432,7 @@ process { withName: METAPHLAN3_METAPHLAN3 { ext.args = { "${meta.db_params}" } - ext.prefix = params.perform_runmerging ? { "${meta.id}-${meta.db_name}" } : { "${meta.id}-${meta.run_accession}-${meta.db_name}" } + ext.prefix = params.perform_runmerging ? { "${meta.id}-${meta.db_name}.metaphlan3" } : { "${meta.id}-${meta.run_accession}-${meta.db_name}.metaphlan3" } publishDir = [ path: { "${params.outdir}/metaphlan3/${meta.db_name}/" }, mode: params.publish_dir_mode, @@ -480,7 +480,7 @@ process { } withName: KAIJU_KAIJU { - ext.prefix = params.perform_runmerging ? { "${meta.id}-${meta.db_name}" } : { "${meta.id}-${meta.run_accession}-${meta.db_name}" } + ext.prefix = params.perform_runmerging ? { "${meta.id}-${meta.db_name}.kaiju" } : { "${meta.id}-${meta.run_accession}-${meta.db_name}.kaiju" } publishDir = [ path: { "${params.outdir}/kaiju/${meta.db_name}/" }, mode: params.publish_dir_mode, @@ -504,7 +504,7 @@ process { withName: DIAMOND_BLASTX { ext.args = { "${meta.db_params}" } - ext.prefix = params.perform_runmerging ? { "${meta.id}-${meta.db_name}" } : { "${meta.id}-${meta.run_accession}-${meta.db_name}" } + ext.prefix = params.perform_runmerging ? { "${meta.id}-${meta.db_name}.diamond" } : { "${meta.id}-${meta.run_accession}-${meta.db_name}.diamond" } publishDir = [ path: { "${params.outdir}/diamond/${meta.db_name}/" }, mode: params.publish_dir_mode, From 0947e9b8ca8ca52930e4e521f23e4d2b8f04f8c6 Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Mon, 16 Jan 2023 15:09:30 +0100 Subject: [PATCH 596/789] Fix mOTUs issues --- assets/multiqc_config.yml | 51 +++++++++++++++++++++++++++++++-------- 1 file changed, 41 insertions(+), 10 deletions(-) diff --git a/assets/multiqc_config.yml b/assets/multiqc_config.yml index ba615df..ea36d43 100644 --- a/assets/multiqc_config.yml +++ b/assets/multiqc_config.yml @@ -171,16 +171,37 @@ table_columns_placement: non-primary_alignments: 1140 reads_MQ0_percent: 1150 error_rate: 1160 - MALT: - "Num. of queries": 1200 - Total reads: 1210 - Mappability: 1220 - Assig. Taxonomy: 1230 - Taxonomic assignment success: 1240 + Bracken: + "% Unclassified": 1200 + "% Top 5": 1210 + Centrifuge: + "% Unclassified": 1300 + "% Top 5": 1310 + diamond: + queries_aligned: 1400 Kaiju: - assigned: 1300 - "% Assigned": 1310 - "% Unclassified": 1320 + assigned: 1500 + "% Assigned": 1510 + "% Unclassified": 1520 + Kraken: + "% Unclassified": 1600 + "% Top 5": 1610 + MALT: + "Num. of queries": 1700 + Total reads: 1710 + Mappability: 1720 + Assig. Taxonomy: 1730 + Taxonomic assignment success: 1740 + motus: + Total number of reads: 1800 + Number of reads after filtering: 1810 + Total number of inserts: 1820 + Unique mappers: 1830 + Multiple mappers: 1840 + Ignored multiple mapper without unique hit: 1850 + "Number of ref-mOTUs": 1860 + "Number of meta-mOTUs": 1870 + "Number of ext-mOTUs": 1880 table_columns_visible: FastQC (pre-Trimming): @@ -256,7 +277,7 @@ table_columns_visible: Centrifuge: "% Unclassified": True "% Top 5": False - DIAMOND: + diamond: queries_aligned: True Kaiju: assigned: False @@ -268,6 +289,16 @@ table_columns_visible: Mappability: True Assig. Taxonomy: False Taxonomic assignment success: True + motus: + Total number of reads: False + Number of reads after filtering: True + Total number of inserts: False + Unique mappers: True + Multiple mappers: True + Ignored multiple mapper without unique hit: False + "Number of ref-mOTUs": False + "Number of meta-mOTUs": False + "Number of ext-mOTUs": False table_columns_name: FastQC (pre-Trimming): From 11400b016cbbda47e3082a6be244cd5e33af8fa4 Mon Sep 17 00:00:00 2001 From: nf-core-bot Date: Mon, 16 Jan 2023 14:11:18 +0000 Subject: [PATCH 597/789] [automated] Fix linting with Prettier --- docs/usage.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/docs/usage.md b/docs/usage.md index d14198a..c8fda1b 100644 --- a/docs/usage.md +++ b/docs/usage.md @@ -86,12 +86,12 @@ motus,db_mOTU,,///motus/motus_database/ Column specifications are as follows: -| Column | Description | -| ----------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `tool` | Taxonomic profiling tool (supported by nf-core/taxprofiler) that the database has been indexed for [required]. Please note that `bracken` also implies running `kraken2` on the same database. | -| `db_name` | A unique name per tool for the particular database [required]. Please note that names need to be unique across both `kraken2` and `bracken` as well, even if re-using the same database. | +| Column | Description | +| ----------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `tool` | Taxonomic profiling tool (supported by nf-core/taxprofiler) that the database has been indexed for [required]. Please note that `bracken` also implies running `kraken2` on the same database. | +| `db_name` | A unique name per tool for the particular database [required]. Please note that names need to be unique across both `kraken2` and `bracken` as well, even if re-using the same database. | | `db_params` | Any parameters of the given taxonomic classifier/profiler that you wish to specify that the taxonomic classifier/profiling tool should use when profiling against this specific database. Can be empty to use taxonomic classifier/profiler defaults. Must not be surrounded by quotes [required]. We generally do not recommend specifying parameters here that turn on/off saving of output files or specifying particular file extensions - this should be already addressed via pipeline parameters. | -| `db_path` | Path to the database. Can either be a path to a directory containing the database index files or a `.tar.gz` file which contains the compressed database directory with the same name as the tar archive, minus `.tar.gz` [required]. | +| `db_path` | Path to the database. Can either be a path to a directory containing the database index files or a `.tar.gz` file which contains the compressed database directory with the same name as the tar archive, minus `.tar.gz` [required]. | > 💡 You can also specify the same database directory/file twice (ensuring unique `db_name`s) and specify different parameters for each database to compare the effect of different parameters during classification/profiling. From 480248bcfd4545f74ace209ff1bd51d94d292ecd Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Tue, 17 Jan 2023 10:33:35 +0100 Subject: [PATCH 598/789] Deactivate all classifer columns from general stats --- assets/multiqc_config.yml | 30 ++++++++++++++---------------- 1 file changed, 14 insertions(+), 16 deletions(-) diff --git a/assets/multiqc_config.yml b/assets/multiqc_config.yml index ea36d43..fbf61b6 100644 --- a/assets/multiqc_config.yml +++ b/assets/multiqc_config.yml @@ -177,7 +177,7 @@ table_columns_placement: Centrifuge: "% Unclassified": 1300 "% Top 5": 1310 - diamond: + DIAMOND: queries_aligned: 1400 Kaiju: assigned: 1500 @@ -269,32 +269,30 @@ table_columns_visible: reads_MQ0_percent: False error_rate: False Kraken: - "% Unclassified": True + "% Unclassified": False "% Top 5": False Bracken: - "% Unclassified": True - "% Top 5": False - Centrifuge: - "% Unclassified": True + "% Unclassified": False "% Top 5": False - diamond: - queries_aligned: True + Centrifuge: False + DIAMOND: + queries_aligned: False Kaiju: assigned: False "% Assigned": False - "% Unclassified": True + "% Unclassified": False MALT: - "Num. of queries": True - Total reads: True - Mappability: True + "Num. of queries": False + Total reads: False + Mappability: False Assig. Taxonomy: False - Taxonomic assignment success: True + Taxonomic assignment success: False motus: Total number of reads: False - Number of reads after filtering: True + Number of reads after filtering: False Total number of inserts: False - Unique mappers: True - Multiple mappers: True + Unique mappers: False + Multiple mappers: False Ignored multiple mapper without unique hit: False "Number of ref-mOTUs": False "Number of meta-mOTUs": False From 92dff9b4531adb96b4c8dd17739fa5c61c982d24 Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Tue, 17 Jan 2023 10:58:30 +0100 Subject: [PATCH 599/789] Standardise file names using only underscore --- assets/multiqc_config.yml | 3 +++ conf/modules.config | 28 ++++++++++++++-------------- 2 files changed, 17 insertions(+), 14 deletions(-) diff --git a/assets/multiqc_config.yml b/assets/multiqc_config.yml index fbf61b6..c35adfa 100644 --- a/assets/multiqc_config.yml +++ b/assets/multiqc_config.yml @@ -336,3 +336,6 @@ extra_fn_clean_exts: - ".unmapped" - "_filtered" - "_processed" + +section_comments: + general_stats: "By default, all read count columns are displayed as millions (M) of reads." diff --git a/conf/modules.config b/conf/modules.config index ca4d9b3..28ede9d 100644 --- a/conf/modules.config +++ b/conf/modules.config @@ -280,7 +280,7 @@ process { "entropywindow=${params.shortread_complexityfilter_bbduk_windowsize}", params.shortread_complexityfilter_bbduk_mask ? "entropymask=t" : "entropymask=f" ].join(' ').trim() - ext.prefix = { "${meta.id}-${meta.run_accession}" } + ext.prefix = { "${meta.id}_${meta.run_accession}" } publishDir = [ [ path: { "${params.outdir}/bbduk/" }, @@ -301,7 +301,7 @@ process { params.shortread_complexityfilter_prinseqplusplus_mode == 'dust' ? "-lc_dust=${params.shortread_complexityfilter_prinseqplusplus_dustscore}" : "-lc_entropy=${params.shortread_complexityfilter_entropy}", "-trim_qual_left=0 -trim_qual_left=0 -trim_qual_window=0 -trim_qual_step=0", ].join(' ').trim() - ext.prefix = { "${meta.id}-${meta.run_accession}" } + ext.prefix = { "${meta.id}_${meta.run_accession}" } publishDir = [ [ path: { "${params.outdir}/prinseqplusplus/" }, @@ -350,7 +350,7 @@ process { withName: KRAKEN2_KRAKEN2 { ext.args = params.kraken2_save_minimizers ? { "${meta.db_params} --report-minimizer-data" } : { "${meta.db_params}" } - ext.prefix = params.perform_runmerging ? { meta.tool == "bracken" ? "${meta.id}-${meta.db_name}.bracken" : "${meta.id}-${meta.db_name}.kraken" } : { meta.tool == "bracken" ? "${meta.id}-${meta.run_accession}-${meta.db_name}.bracken" : "${meta.id}-${meta.run_accession}-${meta.db_name}.kraken" } + ext.prefix = params.perform_runmerging ? { meta.tool == "bracken" ? "${meta.id}_${meta.db_name}.bracken" : "${meta.id}_${meta.db_name}.kraken" } : { meta.tool == "bracken" ? "${meta.id}_${meta.run_accession}_${meta.db_name}.bracken" : "${meta.id}_${meta.run_accession}_${meta.db_name}.kraken" } publishDir = [ path: { "${params.outdir}/kraken2/${meta.db_name}/" }, mode: params.publish_dir_mode, @@ -360,7 +360,7 @@ process { withName: BRACKEN_BRACKEN { errorStrategy = 'ignore' - ext.prefix = params.perform_runmerging ? { "${meta.id}-${meta.db_name}.bracken" } : { "${meta.id}-${meta.run_accession}-${meta.db_name}.bracken" } + ext.prefix = params.perform_runmerging ? { "${meta.id}_${meta.db_name}.bracken" } : { "${meta.id}_${meta.run_accession}_${meta.db_name}.bracken" } publishDir = [ path: { "${params.outdir}/bracken/${meta.db_name}/" }, mode: params.publish_dir_mode, @@ -398,7 +398,7 @@ process { } withName: KRONA_CLEANUP { - ext.prefix = params.perform_runmerging ? { "${meta.id}-${meta.db_name}" } : { "${meta.id}-${meta.run_accession}-${meta.db_name}" } + ext.prefix = params.perform_runmerging ? { "${meta.id}_${meta.db_name}" } : { "${meta.id}_${meta.run_accession}_${meta.db_name}" } publishDir = [ path: { "${params.outdir}/krona/" }, mode: params.publish_dir_mode, @@ -407,7 +407,7 @@ process { } withName: KRONA_KTIMPORTTEXT { - ext.prefix = { "${meta.tool}-${meta.id}" } + ext.prefix = { "${meta.tool}_${meta.id}" } publishDir = [ path: { "${params.outdir}/krona/" }, mode: params.publish_dir_mode, @@ -417,12 +417,12 @@ process { withName: 'MEGAN_RMA2INFO_KRONA' { ext.args = { "--read2class Taxonomy" } - ext.prefix = { "${meta.id}-${meta.db_name}" } + ext.prefix = { "${meta.id}_${meta.db_name}" } } withName: KRONA_KTIMPORTTAXONOMY { ext.args = "-i" - ext.prefix = { "${meta.tool}-${meta.id}" } + ext.prefix = { "${meta.tool}_${meta.id}" } publishDir = [ path: { "${params.outdir}/krona/" }, mode: params.publish_dir_mode, @@ -432,7 +432,7 @@ process { withName: METAPHLAN3_METAPHLAN3 { ext.args = { "${meta.db_params}" } - ext.prefix = params.perform_runmerging ? { "${meta.id}-${meta.db_name}.metaphlan3" } : { "${meta.id}-${meta.run_accession}-${meta.db_name}.metaphlan3" } + ext.prefix = params.perform_runmerging ? { "${meta.id}_${meta.db_name}.metaphlan3" } : { "${meta.id}_${meta.run_accession}_${meta.db_name}.metaphlan3" } publishDir = [ path: { "${params.outdir}/metaphlan3/${meta.db_name}/" }, mode: params.publish_dir_mode, @@ -456,13 +456,13 @@ process { pattern: '*.{txt,sam,gz}' ] ext.args = { "${meta.db_params}" } - ext.prefix = params.perform_runmerging ? { "${meta.id}-${meta.db_name}.centrifuge" } : { "${meta.id}-${meta.run_accession}-${meta.db_name}.centrifuge" } + ext.prefix = params.perform_runmerging ? { "${meta.id}_${meta.db_name}.centrifuge" } : { "${meta.id}_${meta.run_accession}_${meta.db_name}.centrifuge" } } withName: CENTRIFUGE_KREPORT { errorStrategy = {task.exitStatus == 255 ? 'ignore' : 'retry'} ext.args = { "${meta.db_params}" } - ext.prefix = params.perform_runmerging ? { "${meta.id}-${meta.db_name}.centrifuge" } : { "${meta.id}-${meta.run_accession}-${meta.db_name}.centrifuge" } + ext.prefix = params.perform_runmerging ? { "${meta.id}_${meta.db_name}.centrifuge" } : { "${meta.id}_${meta.run_accession}_${meta.db_name}.centrifuge" } publishDir = [ path: { "${params.outdir}/centrifuge/${meta.db_name}/" }, mode: params.publish_dir_mode, @@ -480,7 +480,7 @@ process { } withName: KAIJU_KAIJU { - ext.prefix = params.perform_runmerging ? { "${meta.id}-${meta.db_name}.kaiju" } : { "${meta.id}-${meta.run_accession}-${meta.db_name}.kaiju" } + ext.prefix = params.perform_runmerging ? { "${meta.id}_${meta.db_name}.kaiju" } : { "${meta.id}_${meta.run_accession}_${meta.db_name}.kaiju" } publishDir = [ path: { "${params.outdir}/kaiju/${meta.db_name}/" }, mode: params.publish_dir_mode, @@ -504,7 +504,7 @@ process { withName: DIAMOND_BLASTX { ext.args = { "${meta.db_params}" } - ext.prefix = params.perform_runmerging ? { "${meta.id}-${meta.db_name}.diamond" } : { "${meta.id}-${meta.run_accession}-${meta.db_name}.diamond" } + ext.prefix = params.perform_runmerging ? { "${meta.id}_${meta.db_name}.diamond" } : { "${meta.id}_${meta.run_accession}_${meta.db_name}.diamond" } publishDir = [ path: { "${params.outdir}/diamond/${meta.db_name}/" }, mode: params.publish_dir_mode, @@ -520,7 +520,7 @@ process { params.motus_save_mgc_read_counts ? "-M ${task.ext.prefix}.mgc" : "" ].join(',').replaceAll(','," ") } - ext.prefix = params.perform_runmerging ? { "${meta.id}-${meta.db_name}" } : { "${meta.id}-${meta.run_accession}-${meta.db_name}" } + ext.prefix = params.perform_runmerging ? { "${meta.id}_${meta.db_name}" } : { "${meta.id}_${meta.run_accession}_${meta.db_name}" } publishDir = [ path: { "${params.outdir}/motus/${meta.db_name}/" }, mode: params.publish_dir_mode From 33d4a84237596da6a76c04c682b0f29f1ec58d25 Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Tue, 17 Jan 2023 15:23:59 +0100 Subject: [PATCH 600/789] Add explicit sentnece about classification/profiling --- docs/usage.md | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/docs/usage.md b/docs/usage.md index c8fda1b..51ce004 100644 --- a/docs/usage.md +++ b/docs/usage.md @@ -201,7 +201,13 @@ You can optionally save the FASTQ output of the run merging with the `--save_run #### Classification and Profiling -The following suggestion gives you some tips and suggestions regarding running some of the different tools specifically _within the pipeline_. For advice as to which tool to run in your context, please see the documentation of each tool. +The following suggestion gives you some tips and suggestions regarding running some of the different tools specifically _within the pipeline_. + +An important distinction between the different tools in included in the pipeline is classification versus profiling. Taxonomic _classification_ is concerned with simply detecting the presence of species in a given sample. Taxonomic _profiling_ involves additionally estimating the _abundance_ of each species. + +Note that not all taxonomic classification tools (e.g. Kraken, MALT, Kaiju) performs _profiling_, but all taxonomic profilers (e.g. MetaPhlAn, mOTUs, Bracken) must perform some form of _classification_ prior to profiling. + +For advice as to which tool to run in your context, please see the documentation of each tool. ###### Bracken From 024b6836717c8fcd6efd9582d56429fba18797f8 Mon Sep 17 00:00:00 2001 From: sofstam Date: Tue, 17 Jan 2023 15:38:56 +0100 Subject: [PATCH 601/789] Update output and usage --- docs/output.md | 18 +++++++++++++++++- docs/usage.md | 1 - 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/docs/output.md b/docs/output.md index ca15138..3257860 100644 --- a/docs/output.md +++ b/docs/output.md @@ -58,7 +58,9 @@ The pipeline is built using [Nextflow](https://www.nextflow.io/) and processes d ### fastp -fastp can automatically detect adapter sequences for Illumina data. +[fastp](https://github.com/OpenGene/fastp) is a FASTQ pre-processing tool for quality control, trimmming of adapters, quality filtering and other features. + +It is used in nf-core/taxprofiler for adapter trimming of short-reads.
    Output files @@ -141,6 +143,8 @@ Note that the FASTQ file(s) may _not_ always be the 'final' reads that go into t ### Filtlong +[Filtlong](https://github.com/rrwick/Filtlong) is a quality filtering tool for long reads. +
    Output files @@ -172,6 +176,10 @@ Note that the FASTQ file(s) may _not_ always be the 'final' reads that go into t ### minimap2 +[minimap2](https://github.com/lh3/minimap2) is an alignment tool suited to mapping long reads to reference sequences. + +It is used with nf-core/taxprofiler to allow removal of 'host' (e.g. human) or other possible contaminant reads from the FASTQ files prior to taxonomic classification/profiling. +
    Output files @@ -182,6 +190,8 @@ Note that the FASTQ file(s) may _not_ always be the 'final' reads that go into t ### Samtools stats +[Samtools stats](http://www.htslib.org/doc/samtools-stats.html) collects statistics from an alignment file and outputs in a text format. +
    Output files @@ -254,6 +264,8 @@ You will only receive the FASTQs and `*classifiedreads.txt` file if you supply ` ### Centrifuge +[Centrifuge](https://github.com/DaehwanKimLab/centrifuge) is a taxonomic sequence classifier that uses a Burrows-Wheeler transform and Ferragina-Manzina index for storing and mapping sequences. +
    Output files @@ -279,6 +291,8 @@ You will only receive the FASTQs and `*classifiedreads.txt` file if you supply ` ### DIAMOND +[DIAMOND](https://github.com/bbuchfink/diamond) is a sequence aligner for translated DNA searches or protein sequences against a protein reference database such as NR. It is a replacement for the NCBI BLAST software tools.It has many key features and it is used as taxonomic classifier in nf-core/taxprofiler. +
    Output files @@ -328,6 +342,8 @@ You will only recieve the `.sam` and `.megan` files if you supply `--malt_save_r The main taxonomic profiling file from MetaPhlAn3 is the `*_profile.txt` file. This provides the abundance estimates from MetaPhlAn3 however does not include raw counts by default. ### mOTUs +[mOTUS](https://github.com/motu-tool/mOTUs) maps reads to a unique marker specific database and estimates the relative abundance of known and unknown species. +
    Output files diff --git a/docs/usage.md b/docs/usage.md index 9539a5a..0edd065 100644 --- a/docs/usage.md +++ b/docs/usage.md @@ -631,7 +631,6 @@ krakenuniq-build --db --kmer-len 31 Please see the [KrakenUniq documentation](https://github.com/fbreitwieser/krakenuniq#database-building) for more information. -```` #### MALT custom database From 4dcf8c0b022b8cd82e571c1181ff8808d6383f5b Mon Sep 17 00:00:00 2001 From: Sofia Stamouli Date: Tue, 17 Jan 2023 15:50:10 +0100 Subject: [PATCH 602/789] Prettier --- docs/output.md | 23 +++++++++++------------ docs/usage.md | 3 +-- 2 files changed, 12 insertions(+), 14 deletions(-) diff --git a/docs/output.md b/docs/output.md index 3257860..17d37b5 100644 --- a/docs/output.md +++ b/docs/output.md @@ -29,7 +29,7 @@ The pipeline is built using [Nextflow](https://www.nextflow.io/) and processes d - [Centrifuge](#centrifuge) - Taxonomic classifier that uses a novel indexing scheme based on the Burrows-Wheeler transform (BWT) and the Ferragina-Manzini (FM) index. - [Kaiju](#kaiju) - Taxonomic classifier that finds maximum (in-)exact matches on the protein-level. - [Diamond](#diamond) - Sequence aligner for protein and translated DNA searches. -- [MALT](#malt) - Sequence alignment and analysis tool designed for processing high-throughput sequencing data, especially in the context of metagenomics +- [MALT](#malt) - Sequence alignment and analysis tool designed for processing high-throughput sequencing data, especially in the context of metagenomics - [MetaPhlAn3](#metaphlan3) - Genome-level marker gene based taxonomic classifier - [mOTUs](#motus) - Tool for marker gene-based OTU (mOTU) profiling. - [MultiQC](#multiqc) - Aggregate report describing results and QC from the whole pipeline @@ -80,10 +80,10 @@ It is used in nf-core/taxprofiler for adapter trimming of short-reads. - `adapterremoval/` - `.settings`: AdapterRemoval log file containing general adapter removal, read trimming and merging statistics - - `.collapsed.fastq.gz` - read-pairs that merged and did not undergo trimming (only when `--shortread_qc_mergepairs` supplied) - - `.collapsed.truncated.fastq.gz` - read-pairs that merged underwent quality trimming (only when `--shortread_qc_mergepairs` supplied) - - `.pair1.truncated.fastq.gz` - read 1 of pairs that underwent quality trimming - - `.pair2.truncated.fastq.gz` - read 2 of pairs that underwent quality trimming (and could not merge if `--shortread_qc_mergepairs` supplied) + - `.collapsed.fastq.gz` - read-pairs that merged and did not undergo trimming (only when `--shortread_qc_mergepairs` supplied) + - `.collapsed.truncated.fastq.gz` - read-pairs that merged underwent quality trimming (only when `--shortread_qc_mergepairs` supplied) + - `.pair1.truncated.fastq.gz` - read 1 of pairs that underwent quality trimming + - `.pair2.truncated.fastq.gz` - read 2 of pairs that underwent quality trimming (and could not merge if `--shortread_qc_mergepairs` supplied) - `.singleton.truncated.fastq.gz` - orphaned read pairs where one of the pair was discarded - `.discard.fastq.gz` - reads that were discarded due to length or quality filtering @@ -133,7 +133,7 @@ It is used in nf-core/taxprofiler for complexity filtering using different algor - `prinseqplusplus/` - `.log`: log file containing number of reads. Row IDs correspond to: `min_len, max_len, min_gc, max_gc, min_qual_score, min_qual_mean, ns_max_n, noiupac, derep, lc_entropy, lc_dust, trim_tail_left, trim_tail_right, trim_qual_left, trim_qual_right, trim_left, trim_right` - - `_good_out.fastq.gz`: resulting FASTQ file without low-complexity reads + - `_good_out.fastq.gz`: resulting FASTQ file without low-complexity reads
    @@ -170,7 +170,7 @@ It is used with nf-core/taxprofiler to allow removal of 'host' (e.g. human) or o
    -By default nf-core/taxprofiler will only provide the `.log` file if host removal is turned on. You will only see the mapped (host) reads BAM file or the off-target reads in FASTQ format in your results directory if you provide `--save_hostremoval_mapped` and ` --save_hostremoval_unmapped` respectively. +By default nf-core/taxprofiler will only provide the `.log` file if host removal is turned on. You will only see the mapped (host) reads BAM file or the off-target reads in FASTQ format in your results directory if you provide `--save_hostremoval_mapped` and ` --save_hostremoval_unmapped` respectively. Note that the FASTQ file(s) may _not_ always be the 'final' reads that go into taxprofiling, if you also run other steps such as host removal, run merging etc.. @@ -235,7 +235,7 @@ The main taxonomic profiling file from Bracken is the `*.tsv` file. This provide
    -The main taxonomic profiling file from Kraken2 is the `_combined_reports.txt` or `*report.txt` file. The former provides you the broadest over view of the taxonomic profiling results across all samples against a single databse, where you get two columns for each sample e.g. `2_all` and `2_lvl`, as well as a summarised column summing up across all samples `tot_all` and `tot_lvl`. The latter gives you the most information for a single sample. The report file is also used for the taxpasta step. +The main taxonomic profiling file from Kraken2 is the `_combined_reports.txt` or `*report.txt` file. The former provides you the broadest over view of the taxonomic profiling results across all samples against a single databse, where you get two columns for each sample e.g. `2_all` and `2_lvl`, as well as a summarised column summing up across all samples `tot_all` and `tot_lvl`. The latter gives you the most information for a single sample. The report file is also used for the taxpasta step. You will only recieve the FASTQs and `*classifiedreads.txt` file if you supply `--kraken2_save_reads` and/or `--kraken2_save_readclassification` parameters to the pipeline. @@ -261,7 +261,6 @@ The main taxonomic profiling file from KrakenUniq is the `*report.txt` file. Thi You will only receive the FASTQs and `*classifiedreads.txt` file if you supply `--krakenuniq_save_reads` and/or `--krakenuniq_save_readclassification` parameters to the pipeline. - ### Centrifuge [Centrifuge](https://github.com/DaehwanKimLab/centrifuge) is a taxonomic sequence classifier that uses a Burrows-Wheeler transform and Ferragina-Manzina index for storing and mapping sequences. @@ -312,7 +311,7 @@ You will only receive the FASTQs and `*classifiedreads.txt` file if you supply ` - `malt/` - `/` - `.blastn.sam`: sparse SAM file containing alignments of each hit - - `.megan`: summary file that can be loaded into the [MEGAN6](https://uni-tuebingen.de/fakultaeten/mathematisch-naturwissenschaftliche-fakultaet/fachbereiche/informatik/lehrstuehle/algorithms-in-bioinformatics/software/megan6/) interactive viewer. Generated by MEGAN6 companion tool `rma2info` + - `.megan`: summary file that can be loaded into the [MEGAN6](https://uni-tuebingen.de/fakultaeten/mathematisch-naturwissenschaftliche-fakultaet/fachbereiche/informatik/lehrstuehle/algorithms-in-bioinformatics/software/megan6/) interactive viewer. Generated by MEGAN6 companion tool `rma2info` - `.rma6`: binary file containing all alignments and taxonomic information of hits that can be loaded into the [MEGAN6](https://uni-tuebingen.de/fakultaeten/mathematisch-naturwissenschaftliche-fakultaet/fachbereiche/informatik/lehrstuehle/algorithms-in-bioinformatics/software/megan6/) interactive viewer - `.txt.gz`: text file containing taxonomic IDs and read counts against each taxon. Generated by MEGAN6 companion tool `rma2info` @@ -322,7 +321,6 @@ The main output of MALT is the `.rma6` file format, which can be only loaded int You will only recieve the `.sam` and `.megan` files if you supply `--malt_save_reads` and/or `--malt_generate_megansummary` parameters to the pipeline. - ### MetaPhlAn3 [MetaPhlAn3](https://github.com/biobakery/metaphlan) is a computational tool for profiling the composition of microbial communities (Bacteria, Archaea and Eukaryotes) from metagenomic shotgun sequencing data (i.e. not 16S) with species-level resolution via marker genes. @@ -334,12 +332,13 @@ You will only recieve the `.sam` and `.megan` files if you supply `--malt_save_r - `metaphlan3__combined_reports.txt`: A combined profile of all samples aligned to a given database (as generated by `metaphlan_merge_tables`) - `/` - `.biom`: taxonomic profile in BIOM format - - `.bowtie2out.txt`: BowTie2 alignment information (can be re-used for skipping alignment when re-running MetaPhlAn3 with different parameters) + - `.bowtie2out.txt`: BowTie2 alignment information (can be re-used for skipping alignment when re-running MetaPhlAn3 with different parameters) - `_profile.txt`: MetaPhlAn3 taxonomic profile including abundance estimates
    The main taxonomic profiling file from MetaPhlAn3 is the `*_profile.txt` file. This provides the abundance estimates from MetaPhlAn3 however does not include raw counts by default. + ### mOTUs [mOTUS](https://github.com/motu-tool/mOTUs) maps reads to a unique marker specific database and estimates the relative abundance of known and unknown species. diff --git a/docs/usage.md b/docs/usage.md index 0edd065..ccf2d85 100644 --- a/docs/usage.md +++ b/docs/usage.md @@ -631,7 +631,6 @@ krakenuniq-build --db --kmer-len 31 Please see the [KrakenUniq documentation](https://github.com/fbreitwieser/krakenuniq#database-building) for more information. - #### MALT custom database MALT does not provide any default databases for profiling, therefore you must build your own. @@ -640,7 +639,7 @@ In addition to the input directory, output directory, and the mapping file datab ```bash malt-build -i ///*.{fna,fa,fasta} -a2t //.db -d / -s DNA -```` +``` You can then add the / path to your nf-core/taxprofiler database input sheet. From 6d380fbbff4751365efcc075708bd4f95adebc4f Mon Sep 17 00:00:00 2001 From: "James A. Fellows Yates" Date: Thu, 19 Jan 2023 08:49:55 +0100 Subject: [PATCH 603/789] Apply suggestions from code review Co-authored-by: Sofia Stamouli <91951607+sofstam@users.noreply.github.com> --- docs/usage.md | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/docs/usage.md b/docs/usage.md index 55ed43c..b1adfa6 100644 --- a/docs/usage.md +++ b/docs/usage.md @@ -6,16 +6,16 @@ ## Introduction -nf-core/taxprofiler is a pipeline for highly-parallelised taxonomic profiling of shotgun metagenomic data across multiple tools simultaneously. In addition to multiple profiling tools, at the same time it allows you to performing profiling across multiple databases and settings per tool, as well as produces standardised output tables to allow immediate cross comparison of results between tools. +nf-core/taxprofiler is a pipeline for highly-parallelised taxonomic classification and profiling of shotgun metagenomic data across multiple tools simultaneously. In addition to multiple classification and profiling tools, at the same time it allows you to performing taxonomic classification and profiling across multiple databases and settings per tool, as well as produces standardised output tables to allow immediate cross comparison of results between tools. To run nf-core/taxprofiler, at a minimum two you require two inputs: -- an sequenceing read samplesheet +- a sequencing read samplesheet - a database samplesheet -Both contain metadata and paths to the data of your input samples and database. +Both contain metadata and paths to the data of your input samples and databases. -When running nf-core/taxprofiler, every step and tool is 'opt in'. To run a given profiler you must make sure to supply both a database in your `.csv` and supply `--run_` flag to your command. Omitting either will result in the profiling tool not executing. +When running nf-core/taxprofiler, every step and tool is 'opt in'. To run a given classifier or profiler you must make sure to supply both a database in your `.csv` and supply `--run_` flag to your command. Omitting either will result in the profiling tool not executing. nf-core/profiler also includes optional pre-processing (adapter clipping, merge running etc.) or post-processing (visualisation) steps. These are also opt in with a `--perform_` flag. In some cases, the pre- and post-processing steps may also require additional files. Please check the parameters tab of this documentation for more information. @@ -160,7 +160,7 @@ nf-core/taxprofiler offers four main preprocessing steps for preprocessing raw s Raw sequencing read processing in the form of adapter clipping and paired-end read merging can be activated via the `--perform_shortread_qc` or `--perform_longread_qc` flags. -It is highly recommended to run this on raw reads to remove artifacts from sequencing that can cause false positive identification of taxa (e.g. contaminated reference genomes) and/or skews in taxonomic abundance profiles. If you have public data, normally these should have been corrected for, however you should still check these steps have indeed been already performed. +It is highly recommended to run this on raw reads to remove artifacts from sequencing that can cause false positive identification of taxa (e.g. contaminated reference genomes) and/or skews in taxonomic abundance profiles. If you have public data, normally these should have been corrected for, however you should still check that these steps have indeed been already performed. There are currently two options for short-read preprocessing: [`fastp`](https://github.com/OpenGene/fastp) or [`adapterremoval`](https://github.com/MikkelSchubert/adapterremoval). @@ -213,7 +213,7 @@ You can optionally save the FASTQ output of the run merging with the `--save_run #### Profiling -The following sections provides tips and suggestions for running the different metagenomic taxonomic profiling tools _within the pipeline_. For advice and/or guidance whether you should run a particular tool on your specific data, please see the documentation of each tool! +The following sections provide tips and suggestions for running the different taxonomic classification and profiling tools _within the pipeline_. For advice and/or guidance whether you should run a particular tool on your specific data, please see the documentation of each tool! Not all tools currently have dedicated tips, suggestions and/or recommendations, however we welcome further contributions for existing and additional tools via pull requests to the [nf-core/taxprofiler repository](https://github.com/nf-core/taxprofiler)! @@ -267,7 +267,7 @@ mOTUs currently does not accept FASTA files as input, therefore no output will b ##### Visualisation -nf-core/taxprofiler supports generation of Krona interactive piechart plots for the following compatible tools. +nf-core/taxprofiler supports generation of Krona interactive pie chart plots for the following compatible tools. - Kraken2 - Centrifuge @@ -280,7 +280,7 @@ nf-core/taxprofiler supports generation of Krona interactive piechart plots for In addition to per-sample profiles, the pipeline also supports generation of 'native' multi-sample taxonomic profiles (i.e., those generated by the taxonomic profiling tools themselves or additional utility scripts provided by the tool authors). -This are executed on a per-database level. I.e., you will get a multi-sample taxon table for each database you provide for each tool and will be placed in the same directory as the directories containing the per-sample profiles. +These are executed on a per-database level. I.e., you will get a multi-sample taxon table for each database you provide for each tool and will be placed in the same directory as the directories containing the per-sample profiles. The following tools will produce multi-sample taxon tables: @@ -503,7 +503,7 @@ The following tutorials assumes you already have the tool available (e.g. instal #### Bracken custom database -Bracken does not require an indepndent database construction, but rather builds upon Kraken2 databases. See [Kraken2](#kraken2-custom-database) for more information on how to build these. +Bracken does not require an independent database construction, but rather builds upon Kraken2 databases. See [Kraken2](#kraken2-custom-database) for more information on how to build these. In addition to a Kraken2 database, you also need to have the (average) read lengths (in bp) of your sequencing experiment, the K-mer size used to build the Kraken2 database, and Kraken2 available on your machine. @@ -536,7 +536,7 @@ You can follow Bracken [tutorial](https://ccb.jhu.edu/software/bracken/index.sht To build a custom Centrifuge database, a user needs to download taxonomy files, make a custom `seqid2taxid.map` and combine the fasta files together. -In total You need four components: a tab-separated file mapping sequence IDs to taxonomy IDs (`--conversion-table`), a tab-separated file mapping taxonomy IDs to their parents and rank, up to the root of the tree (`--taxonomy-tree`), a pipe-separated file mapping taxonomy IDs to a name (`--name-table`), and the reference sequences. +In total, you need four components: a tab-separated file mapping sequence IDs to taxonomy IDs (`--conversion-table`), a tab-separated file mapping taxonomy IDs to their parents and rank, up to the root of the tree (`--taxonomy-tree`), a pipe-separated file mapping taxonomy IDs to a name (`--name-table`), and the reference sequences. An example of custom `seqid2taxid.map`: @@ -596,7 +596,7 @@ A detailed description can be found [here](https://github.com/bbuchfink/diamond/ #### Kaiju custom database -To build a kaiju database, you need three components: a FASTA file with the protein sequences (the headers are the numeric NCBI taxon identifiers of the protein sequences), and you need to define the uppercase characters of the standard 20 amino acids you wish to include. +To build a kaiju database, you need two components: a FASTA file with the protein sequences (the headers are the numeric NCBI taxon identifiers of the protein sequences), and you need to define the uppercase characters of the standard 20 amino acids you wish to include. ```bash kaiju-mkbwt -a ACDEFGHIKLMNPQRSTVWY -o proteins proteins.faa From 6e4369526439c682d651814389bed52d65b6dae3 Mon Sep 17 00:00:00 2001 From: "James A. Fellows Yates" Date: Thu, 19 Jan 2023 08:55:23 +0100 Subject: [PATCH 604/789] Apply suggestions from code review Co-authored-by: Sofia Stamouli <91951607+sofstam@users.noreply.github.com> --- docs/usage.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/usage.md b/docs/usage.md index 51ce004..64f5cdb 100644 --- a/docs/usage.md +++ b/docs/usage.md @@ -66,7 +66,7 @@ An [example samplesheet](../assets/samplesheet.csv) has been provided with the p nf-core/taxprofiler supports multiple databases being classified/profiled against in parallel for each tool. Databases can be supplied either in the form of a compressed `.tar.gz` archive of a directory containing all relevant database files or the path to a directory on the filesystem. -The pipeline takes the locations and specific classification/profiling parameters of the tool of these databases as input via a four column comma-separated sheet. +The pipeline takes the paths and specific classification/profiling parameters of the tool of these databases as input via a four column comma-separated sheet. > ⚠️ nf-core/taxprofiler does not provide any databases by default, nor does it currently generate them for you. This must be performed manually by the user. See below for more information of the expected database files. @@ -155,7 +155,7 @@ There are currently two options for short-read preprocessing: [`fastp`](https:// For adapter clipping, you can either rely on the tool's default adapter sequences, or supply your own adapters (`--shortread_qc_adapter1` and `--shortread_qc_adapter2`) By default, paired-end merging is not activated. In this case paired-end 'alignment' against the reference databases is performed where supported, and if not, supported pairs will be independently classified/profiled. If paired-end merging is activated you can also specify whether to include unmerged reads in the reads sent for classification/profiling (`--shortread_qc_mergepairs` and `--shortread_qc_includeunmerged`). You can also turn off clipping and only perform paired-end merging, if requested. This can be useful when processing data downloaded from the ENA, SRA, or DDBJ (`--shortread_qc_skipadaptertrim`). -Both tools support length filtering of reads and can be tuned with `--shortread_qc_minlength`. Performing length filtering can be useful to remove short (often low sequencing complexity) sequences that result in unspecific classification and therefore slow down runtime during classificationprofiling, with minimal gain. +Both tools support length filtering of reads and can be tuned with `--shortread_qc_minlength`. Performing length filtering can be useful to remove short (often low sequencing complexity) sequences that result in unspecific classification and therefore slow down runtime during classification/profiling, with minimal gain. There is currently one option for long-read Oxford Nanopore processing: [`porechop`](https://github.com/rrwick/Porechop). @@ -183,7 +183,7 @@ Removal of possible-host reads from FASTQ files prior classification/profiling c Similarly to complexity filtering, host-removal can be useful for runtime optimisation and reduction in misclassified reads. It is not always necessary to report classification of reads from a host when you already know the host of the sample, therefore you can gain a run-time and computational advantage by removing these prior typically resource-heavy classification/profiling with more efficient methods. Furthermore, particularly with human samples, you can reduce the number of false positives during classification/profiling that occur due to host-sequence contamination in reference genomes on public databases. -nf-core/taxprofiler currently offers host-removal via alignment against a reference genome with Bowtie2, and the use of the unaligned reads for downstream classification/profiling. +nf-core/taxprofiler currently offers host-removal via alignment against a reference genome with Bowtie2 for short reads and minimap2 for long reads, and the use of the unaligned reads for downstream classification/profiling. You can supply your reference genome in FASTA format with `--hostremoval_reference`. You can also optionally supply a directory containing pre-indexed Bowtie2 index files with `--shortread_hostremoval_index` or a minimap2 `.mmi` file for `--longread_hostremoval_index`, however nf-core/taxprofiler will generate these for you if necessary. Pre-supplying the index directory or files can greatly speed up the process, and these can be re-used. @@ -201,7 +201,7 @@ You can optionally save the FASTQ output of the run merging with the `--save_run #### Classification and Profiling -The following suggestion gives you some tips and suggestions regarding running some of the different tools specifically _within the pipeline_. +The following sections gives you some tips and suggestions regarding running some of the different tools specifically _within the pipeline_. An important distinction between the different tools in included in the pipeline is classification versus profiling. Taxonomic _classification_ is concerned with simply detecting the presence of species in a given sample. Taxonomic _profiling_ involves additionally estimating the _abundance_ of each species. From 7d4035d4c747d5ab109b27e1a673861727ad04eb Mon Sep 17 00:00:00 2001 From: Sofia Stamouli <91951607+sofstam@users.noreply.github.com> Date: Thu, 19 Jan 2023 13:44:10 +0100 Subject: [PATCH 605/789] Add new line in the description of custom file --- docs/usage.md | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/docs/usage.md b/docs/usage.md index ccf2d85..4482778 100644 --- a/docs/usage.md +++ b/docs/usage.md @@ -470,11 +470,12 @@ You can follow Bracken [tutorial](https://ccb.jhu.edu/software/bracken/index.sht Centrifuge allows the user to [build custom databases](https://ccb.jhu.edu/software/centrifuge/manual.shtml#custom-database). The user should download taxonomy files, make custom `seqid2taxid.map` and combine the fasta files together. You need four components: a tab-separated file mapping sequence IDs to taxonomy IDs (`--conversion-table`), a \t|\t-separated file mapping taxonomy IDs to their parents and rank, up to the root of the tree (`--taxonomy-tree`), a '|'-separated file mapping taxonomy IDs to a name (`--name-table`) and the reference sequences. An example of custom `seqid2taxid.map`: - -NC_001133.9 4392 -NC_012920.1 9606 -NC_001134.8 4392 -NC_001135.5 4392 +``` + NC_001133.9 4392 + NC_012920.1 9606 + NC_001134.8 4392 + NC_001135.5 4392 + ``` ```bash centrifuge-download -o taxonomy taxonomy From 2d646285524cd17b203a69680a198bfbf79b227f Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Fri, 20 Jan 2023 13:33:43 +0100 Subject: [PATCH 606/789] Fix left-over warns from loca modules --- modules/local/ensure_fastq_extension.nf | 2 +- modules/local/kraken2_standard_report.nf | 2 +- modules/local/krona_cleanup.nf | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/modules/local/ensure_fastq_extension.nf b/modules/local/ensure_fastq_extension.nf index 6de223b..034c9bb 100644 --- a/modules/local/ensure_fastq_extension.nf +++ b/modules/local/ensure_fastq_extension.nf @@ -2,7 +2,7 @@ process ENSURE_FASTQ_EXTENSION { tag "$meta.id" label 'process_low' - conda (params.enable_conda ? "conda-forge::bash=5.0" : null) + conda "conda-forge::bash=5.0 container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? 'https://containers.biocontainers.pro/s3/SingImgsRepo/biocontainers/v1.2.0_cv2/biocontainers_v1.2.0_cv2.img' : 'biocontainers/biocontainers:v1.2.0_cv2' }" diff --git a/modules/local/kraken2_standard_report.nf b/modules/local/kraken2_standard_report.nf index 09a98c1..4169c3a 100644 --- a/modules/local/kraken2_standard_report.nf +++ b/modules/local/kraken2_standard_report.nf @@ -2,7 +2,7 @@ process KRAKEN2_STANDARD_REPORT { tag "$meta.id" label 'process_single' - conda (params.enable_conda ? 'conda-forge::sed=4.8' : null) + conda "conda-forge::sed=4.8" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? 'https://containers.biocontainers.pro/s3/SingImgsRepo/biocontainers/v1.2.0_cv2/biocontainers_v1.2.0_cv2.img' : 'biocontainers/biocontainers:v1.2.0_cv2' }" diff --git a/modules/local/krona_cleanup.nf b/modules/local/krona_cleanup.nf index 804cb69..f13dcc8 100644 --- a/modules/local/krona_cleanup.nf +++ b/modules/local/krona_cleanup.nf @@ -2,7 +2,7 @@ process KRONA_CLEANUP { tag "$meta.id" label 'process_low' - conda (params.enable_conda ? "conda-forge::sed=4.7" : null) + conda "conda-forge::sed=4.7" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? 'https://containers.biocontainers.pro/s3/SingImgsRepo/biocontainers/v1.2.0_cv1/biocontainers_v1.2.0_cv1.img' : 'biocontainers/biocontainers:v1.2.0_cv1' }" From cac6f54d2d67b64e23e591813678f052afe20406 Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Fri, 20 Jan 2023 13:36:17 +0100 Subject: [PATCH 607/789] [extra] Fix warn related to recently changed parameter --- workflows/taxprofiler.nf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/workflows/taxprofiler.nf b/workflows/taxprofiler.nf index d1693be..7a09573 100644 --- a/workflows/taxprofiler.nf +++ b/workflows/taxprofiler.nf @@ -29,7 +29,7 @@ if ( params.input ) { if (params.databases) { ch_databases = file(params.databases, checkIfExists: true) } else { exit 1, 'Input database sheet not specified!' } -if (params.shortread_qc_mergepairs && params.run_malt ) log.warn "[nf-core/taxprofiler] MALT does not accept uncollapsed paired-reads. Pairs will be profiled as separate files." +if (!params.shortread_qc_mergepairs && params.run_malt ) log.warn "[nf-core/taxprofiler] MALT does not accept uncollapsed paired-reads. Pairs will be profiled as separate files." if (params.shortread_qc_includeunmerged && !params.shortread_qc_mergepairs) exit 1, "ERROR: [nf-core/taxprofiler] cannot include unmerged reads when merging is not turned on. Please specify --shortread_qc_mergepairs" if (params.shortread_complexityfilter_tool == 'fastp' && ( params.perform_shortread_qc == false || params.shortread_qc_tool != 'fastp' )) exit 1, "ERROR: [nf-core/taxprofiler] cannot use fastp complexity filtering if preprocessing not turned on and/or tool is not fastp. Please specify --perform_shortread_qc and/or --shortread_qc_tool 'fastp'" From 606ffc0eb1a7385c2aaea4b4d3ebc5dbe721614c Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Fri, 20 Jan 2023 13:40:59 +0100 Subject: [PATCH 608/789] Remove platform specificity for MALT --- subworkflows/local/profiling.nf | 1 - 1 file changed, 1 deletion(-) diff --git a/subworkflows/local/profiling.nf b/subworkflows/local/profiling.nf index 6613648..4b4952c 100644 --- a/subworkflows/local/profiling.nf +++ b/subworkflows/local/profiling.nf @@ -67,7 +67,6 @@ workflow PROFILING { // MALT: We groupTuple to have all samples in one channel for MALT as database // loading takes a long time, so we only want to run it once per database ch_input_for_malt = ch_input_for_profiling.malt - .filter { it[0]['instrument_platform'] == 'ILLUMINA' } .map { meta, reads, db_meta, db -> From 1c820f21b33cde3d657978570d37d043a00337f7 Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Fri, 20 Jan 2023 17:53:55 +0100 Subject: [PATCH 609/789] Dont fail on divide by 0 errors on centrifuge --- conf/modules.config | 1 + 1 file changed, 1 insertion(+) diff --git a/conf/modules.config b/conf/modules.config index 28ede9d..ccf63e5 100644 --- a/conf/modules.config +++ b/conf/modules.config @@ -471,6 +471,7 @@ process { } withName: KRAKENTOOLS_COMBINEKREPORTS_CENTRIFUGE { + errorStrategy = { task.exitStatus in [255,1] ? 'ignore' : 'retry' } ext.prefix = { "centrifuge_${meta.id}_combined_reports" } publishDir = [ path: { "${params.outdir}/centrifuge/" }, From d56e3133f9b716030971741653b038118baadaca Mon Sep 17 00:00:00 2001 From: "James A. Fellows Yates" Date: Tue, 24 Jan 2023 10:45:01 +0100 Subject: [PATCH 610/789] Allow databases of all tools to arrive as tar.gz --- subworkflows/local/db_check.nf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/subworkflows/local/db_check.nf b/subworkflows/local/db_check.nf index a89b519..203ee4e 100644 --- a/subworkflows/local/db_check.nf +++ b/subworkflows/local/db_check.nf @@ -41,7 +41,7 @@ workflow DB_CHECK { //Filter the channel to run untar on DBs of tools actually using ch_input_untar = ch_dbs_for_untar.untar.dump() - .filter { params.run_kraken2 && it[0]['tool'] == 'kraken2' || params.run_centrifuge && it[0]['tool'] == 'centrifuge' || params.run_bracken && it[0]['tool'] == 'bracken' || params.run_kaiju && it[0]['tool'] == 'kaiju' || params.run_krakenuniq && it [0]['tool'] == 'krakenuniq' || params.run_malt && it[0]['tool'] == 'malt' || params.run_metaphlan3 && it[0]['tool'] == 'metaphlan3' } + .filter { params.run_bracken && it[0]['tool'] == 'bracken' || params.run_centrifuge && it[0]['tool'] == 'centrifuge' || || params.run_diamond && it[0]['tool'] == 'diamond' || params.run_kaiju && it[0]['tool'] == 'kaiju' || params.run_kraken2 && it[0]['tool'] == 'kraken2' || params.run_krakenuniq && it [0]['tool'] == 'krakenuniq' || params.run_malt && it[0]['tool'] == 'malt' || params.run_metaphlan3 && it[0]['tool'] == 'metaphlan3' || params.run_motus && it[0]['tool'] == 'motus' } UNTAR (ch_input_untar) ch_versions = ch_versions.mix(UNTAR.out.versions.first()) ch_final_dbs = ch_dbs_for_untar.skip.mix( UNTAR.out.untar ) From 1a148c5d4985d89c3a2449e6a01680b9160e5487 Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Tue, 24 Jan 2023 10:48:23 +0100 Subject: [PATCH 611/789] Remove double If and format for readability --- subworkflows/local/db_check.nf | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/subworkflows/local/db_check.nf b/subworkflows/local/db_check.nf index 203ee4e..f5cdf2c 100644 --- a/subworkflows/local/db_check.nf +++ b/subworkflows/local/db_check.nf @@ -41,7 +41,17 @@ workflow DB_CHECK { //Filter the channel to run untar on DBs of tools actually using ch_input_untar = ch_dbs_for_untar.untar.dump() - .filter { params.run_bracken && it[0]['tool'] == 'bracken' || params.run_centrifuge && it[0]['tool'] == 'centrifuge' || || params.run_diamond && it[0]['tool'] == 'diamond' || params.run_kaiju && it[0]['tool'] == 'kaiju' || params.run_kraken2 && it[0]['tool'] == 'kraken2' || params.run_krakenuniq && it [0]['tool'] == 'krakenuniq' || params.run_malt && it[0]['tool'] == 'malt' || params.run_metaphlan3 && it[0]['tool'] == 'metaphlan3' || params.run_motus && it[0]['tool'] == 'motus' } + .filter { + params.run_bracken && it[0]['tool'] == 'bracken' || + params.run_centrifuge && it[0]['tool'] == 'centrifuge' || + params.run_diamond && it[0]['tool'] == 'diamond' || + params.run_kaiju && it[0]['tool'] == 'kaiju' || + params.run_kraken2 && it[0]['tool'] == 'kraken2' || + params.run_krakenuniq && it [0]['tool'] == 'krakenuniq' || + params.run_malt && it[0]['tool'] == 'malt' || + params.run_metaphlan3 && it[0]['tool'] == 'metaphlan3' || + params.run_motus && it[0]['tool'] == 'motus' + } UNTAR (ch_input_untar) ch_versions = ch_versions.mix(UNTAR.out.versions.first()) ch_final_dbs = ch_dbs_for_untar.skip.mix( UNTAR.out.untar ) From 2439aa69d0195ca9a72893c8e4b0dc1a3112d243 Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Tue, 24 Jan 2023 10:58:03 +0100 Subject: [PATCH 612/789] Use specific samplesheet for MALT without LR reads due to GHA memory limits --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index a26c28b..ea98e78 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -169,5 +169,5 @@ jobs: - name: Run pipeline with test data uses: Wandalen/wretry.action@v1.0.11 with: - command: nextflow run ${GITHUB_WORKSPACE} -profile test_nothing,docker --run_malt --outdir ./results + command: nextflow run ${GITHUB_WORKSPACE} -profile test_nothing,docker --run_malt --input 'https://github.com/nf-core/test-datasets/raw/taxprofiler/samplesheet_shortreadsonly.csv' --outdir ./results attempt_limit: 3 From 085d9e519cb91ace783ca33fb1e6ed47a0bff9c9 Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Tue, 24 Jan 2023 11:39:37 +0100 Subject: [PATCH 613/789] [skip ci] add comment about recommendation to split SR/LR --- docs/usage.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/usage.md b/docs/usage.md index 3a4e55c..158cfab 100644 --- a/docs/usage.md +++ b/docs/usage.md @@ -64,6 +64,8 @@ ERR3201952,ERR3201952,OXFORD_NANOPORE,///fastq/ERR3201952.fastq.gz,, > ⚠️ Input FASTQ and FASTA files _must_ be gzipped +> ⚠️ While one can include both short-read and long-read data in one run, we recommend that you split these across _two_ pipeline runs and database sheets (see below). This will allow classification optmisation for each data type, and make MultiQC run-reports more readable (due to run statististics having vary large number differences). + | Column | Description | | --------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `sample` | Unique sample name [required]. | From 920583127347356b25b5a8a3b14db31100687100 Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Tue, 24 Jan 2023 11:50:10 +0100 Subject: [PATCH 614/789] Start adding filter for long read and MP3 --- subworkflows/local/profiling.nf | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/subworkflows/local/profiling.nf b/subworkflows/local/profiling.nf index 6613648..38936eb 100644 --- a/subworkflows/local/profiling.nf +++ b/subworkflows/local/profiling.nf @@ -202,8 +202,11 @@ workflow PROFILING { ch_input_for_metaphlan3 = ch_input_for_profiling.metaphlan3 .filter{ - if (it[0].is_fasta) log.warn "[nf-core/taxprofiler] MetaPhlAn3 currently does not accept FASTA files as input. Skipping MetaPhlAn3 for sample ${it[0].id}." - !it[0].is_fasta + meta, report -> + if (meta.is_fasta) log.warn "[nf-core/taxprofiler] MetaPhlAn3 currently does not accept FASTA files as input. Skipping MetaPhlAn3 for sample ${meta.id}." + !meta.is_fasta + if ( meta['instrument_platform'] == 'OXFORD_NANOPORE' ) log.warn "[nf-core/taxprofiler] MetaPhlAn3 has not been evaluated for Nanopore data. Skipping MetaPhlAn3 for sample ${meta.id}." + meta['tool'] == 'metaphlan3' && meta['instrument_platform'] != 'OXFORD_NANOPORE' } .multiMap { it -> From 9cf2d8763f25ef4d9c9e20e7db425a841e593c4e Mon Sep 17 00:00:00 2001 From: "James A. Fellows Yates" Date: Tue, 24 Jan 2023 11:50:58 +0100 Subject: [PATCH 615/789] [skip ci] Update docs/usage.md Co-authored-by: Sofia Stamouli <91951607+sofstam@users.noreply.github.com> --- docs/usage.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/usage.md b/docs/usage.md index 158cfab..d37ba60 100644 --- a/docs/usage.md +++ b/docs/usage.md @@ -64,7 +64,7 @@ ERR3201952,ERR3201952,OXFORD_NANOPORE,///fastq/ERR3201952.fastq.gz,, > ⚠️ Input FASTQ and FASTA files _must_ be gzipped -> ⚠️ While one can include both short-read and long-read data in one run, we recommend that you split these across _two_ pipeline runs and database sheets (see below). This will allow classification optmisation for each data type, and make MultiQC run-reports more readable (due to run statististics having vary large number differences). +> ⚠️ While one can include both short-read and long-read data in one run, we recommend that you split these across _two_ pipeline runs and database sheets (see below). This will allow classification optimisation for each data type, and make MultiQC run-reports more readable (due to run statistics having vary large number differences). | Column | Description | | --------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | From 6eafcc6499ebefc076fe1363b2047fced3b8a033 Mon Sep 17 00:00:00 2001 From: "James A. Fellows Yates" Date: Tue, 24 Jan 2023 12:43:34 +0100 Subject: [PATCH 616/789] Try Moritz's trick, assuming validate_db_rows already checks for tool name validity --- subworkflows/local/db_check.nf | 14 +++----------- 1 file changed, 3 insertions(+), 11 deletions(-) diff --git a/subworkflows/local/db_check.nf b/subworkflows/local/db_check.nf index f5cdf2c..7490b72 100644 --- a/subworkflows/local/db_check.nf +++ b/subworkflows/local/db_check.nf @@ -39,18 +39,10 @@ workflow DB_CHECK { skip: true } - //Filter the channel to run untar on DBs of tools actually using + // Filter the channel to untar only those databases for tools that are selected to be run by the user. ch_input_untar = ch_dbs_for_untar.untar.dump() - .filter { - params.run_bracken && it[0]['tool'] == 'bracken' || - params.run_centrifuge && it[0]['tool'] == 'centrifuge' || - params.run_diamond && it[0]['tool'] == 'diamond' || - params.run_kaiju && it[0]['tool'] == 'kaiju' || - params.run_kraken2 && it[0]['tool'] == 'kraken2' || - params.run_krakenuniq && it [0]['tool'] == 'krakenuniq' || - params.run_malt && it[0]['tool'] == 'malt' || - params.run_metaphlan3 && it[0]['tool'] == 'metaphlan3' || - params.run_motus && it[0]['tool'] == 'motus' + .filter { + params["run_${it[0]['tool']}"] } UNTAR (ch_input_untar) ch_versions = ch_versions.mix(UNTAR.out.versions.first()) From 0358489be0f4098b1f2cee1a9c396f5a37cd08e3 Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Tue, 24 Jan 2023 13:05:52 +0100 Subject: [PATCH 617/789] Remove metaphlan profiling for nanopore as it appears to always result in 100% unclassified --- subworkflows/local/profiling.nf | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/subworkflows/local/profiling.nf b/subworkflows/local/profiling.nf index 38936eb..f6eddb0 100644 --- a/subworkflows/local/profiling.nf +++ b/subworkflows/local/profiling.nf @@ -202,11 +202,8 @@ workflow PROFILING { ch_input_for_metaphlan3 = ch_input_for_profiling.metaphlan3 .filter{ - meta, report -> - if (meta.is_fasta) log.warn "[nf-core/taxprofiler] MetaPhlAn3 currently does not accept FASTA files as input. Skipping MetaPhlAn3 for sample ${meta.id}." - !meta.is_fasta - if ( meta['instrument_platform'] == 'OXFORD_NANOPORE' ) log.warn "[nf-core/taxprofiler] MetaPhlAn3 has not been evaluated for Nanopore data. Skipping MetaPhlAn3 for sample ${meta.id}." - meta['tool'] == 'metaphlan3' && meta['instrument_platform'] != 'OXFORD_NANOPORE' + if (it[0].is_fasta || it[0].instrument_platform == 'OXFORD_NANOPORE' ) log.warn "[nf-core/taxprofiler] MetaPhlAn3 currently does not accept FASTA files as input and/or has not been evaluated for Nanopore data. Skipping MetaPhlAn3 for sample ${it[0].id}." + !(it[0].is_fasta || it[0].instrument_platform == 'OXFORD_NANOPORE') } .multiMap { it -> From 14826d52056b6251f68b50d6bc605f89d8294230 Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Tue, 24 Jan 2023 13:20:58 +0100 Subject: [PATCH 618/789] Separate conditions, remove some left-over dumps --- subworkflows/local/db_check.nf | 2 +- subworkflows/local/profiling.nf | 9 +++++---- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/subworkflows/local/db_check.nf b/subworkflows/local/db_check.nf index a89b519..96ae7a1 100644 --- a/subworkflows/local/db_check.nf +++ b/subworkflows/local/db_check.nf @@ -40,7 +40,7 @@ workflow DB_CHECK { } //Filter the channel to run untar on DBs of tools actually using - ch_input_untar = ch_dbs_for_untar.untar.dump() + ch_input_untar = ch_dbs_for_untar.untar .filter { params.run_kraken2 && it[0]['tool'] == 'kraken2' || params.run_centrifuge && it[0]['tool'] == 'centrifuge' || params.run_bracken && it[0]['tool'] == 'bracken' || params.run_kaiju && it[0]['tool'] == 'kaiju' || params.run_krakenuniq && it [0]['tool'] == 'krakenuniq' || params.run_malt && it[0]['tool'] == 'malt' || params.run_metaphlan3 && it[0]['tool'] == 'metaphlan3' } UNTAR (ch_input_untar) ch_versions = ch_versions.mix(UNTAR.out.versions.first()) diff --git a/subworkflows/local/profiling.nf b/subworkflows/local/profiling.nf index f6eddb0..accab37 100644 --- a/subworkflows/local/profiling.nf +++ b/subworkflows/local/profiling.nf @@ -202,8 +202,10 @@ workflow PROFILING { ch_input_for_metaphlan3 = ch_input_for_profiling.metaphlan3 .filter{ - if (it[0].is_fasta || it[0].instrument_platform == 'OXFORD_NANOPORE' ) log.warn "[nf-core/taxprofiler] MetaPhlAn3 currently does not accept FASTA files as input and/or has not been evaluated for Nanopore data. Skipping MetaPhlAn3 for sample ${it[0].id}." - !(it[0].is_fasta || it[0].instrument_platform == 'OXFORD_NANOPORE') + if (it[0].is_fasta) log.warn "[nf-core/taxprofiler] MetaPhlAn3 currently does not accept FASTA files as input. Skipping MetaPhlAn3 for sample ${it[0].id}." + !it[0].is_fasta + if (it[0].instrument_platform == 'OXFORD_NANOPORE') log.warn "[nf-core/taxprofiler] MetaPhlAn3 has not been evaluated for Nanopore data. Skipping MetaPhlAn3 for sample ${it[0].id}." + !it[0].instrument_platform == 'OXFORD_NANOPORE' } .multiMap { it -> @@ -278,14 +280,13 @@ workflow PROFILING { [[id: db_meta.db_name, single_end: meta.single_end], reads, db_meta, db] } .groupTuple(by: [0,2,3]) - .dump(tag: "krakenuniq_premultimap") .multiMap { single_meta, reads, db_meta, db -> reads: [ single_meta + db_meta, reads.flatten() ] db: db } // Hardcode to _always_ produce the report file (which is our basic otput, and goes into) - KRAKENUNIQ_PRELOADEDKRAKENUNIQ ( ch_input_for_krakenuniq.reads.dump(tag: "krakenuniq_input"), ch_input_for_krakenuniq.db.dump(tag: "krakenuniq_db"), params.krakenuniq_ram_chunk_size, params.krakenuniq_save_reads, true, params.krakenuniq_save_readclassifications ) + KRAKENUNIQ_PRELOADEDKRAKENUNIQ ( ch_input_for_krakenuniq.reads, ch_input_for_krakenuniq.db, params.krakenuniq_ram_chunk_size, params.krakenuniq_save_reads, true, params.krakenuniq_save_readclassifications ) ch_multiqc_files = ch_multiqc_files.mix( KRAKENUNIQ_PRELOADEDKRAKENUNIQ.out.report ) ch_versions = ch_versions.mix( KRAKENUNIQ_PRELOADEDKRAKENUNIQ.out.versions.first() ) ch_raw_classifications = ch_raw_classifications.mix( KRAKENUNIQ_PRELOADEDKRAKENUNIQ.out.classified_assignment ) From 40f1e7b27aaa41484e4030340528302c398feeb1 Mon Sep 17 00:00:00 2001 From: "Moritz E. Beber" Date: Tue, 24 Jan 2023 14:15:51 +0100 Subject: [PATCH 619/789] fix: correct pattern to publish minimap2 index --- conf/modules.config | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/conf/modules.config b/conf/modules.config index 28ede9d..30f057e 100644 --- a/conf/modules.config +++ b/conf/modules.config @@ -230,7 +230,7 @@ process { path: { "${params.outdir}/minimap2/index" }, mode: params.publish_dir_mode, enabled: params.save_hostremoval_index, - pattern: 'minimap2' + pattern: '*.mmi' ] } From e7d7affcd08942766c2828eff8fade98736eea1b Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Tue, 24 Jan 2023 14:44:14 +0100 Subject: [PATCH 620/789] Pick up Kraken2 files correctly --- conf/modules.config | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/conf/modules.config b/conf/modules.config index 28ede9d..8f1291a 100644 --- a/conf/modules.config +++ b/conf/modules.config @@ -350,7 +350,7 @@ process { withName: KRAKEN2_KRAKEN2 { ext.args = params.kraken2_save_minimizers ? { "${meta.db_params} --report-minimizer-data" } : { "${meta.db_params}" } - ext.prefix = params.perform_runmerging ? { meta.tool == "bracken" ? "${meta.id}_${meta.db_name}.bracken" : "${meta.id}_${meta.db_name}.kraken" } : { meta.tool == "bracken" ? "${meta.id}_${meta.run_accession}_${meta.db_name}.bracken" : "${meta.id}_${meta.run_accession}_${meta.db_name}.kraken" } + ext.prefix = params.perform_runmerging ? { meta.tool == "bracken" ? "${meta.id}_${meta.db_name}.bracken" : "${meta.id}_${meta.db_name}.kraken2" } : { meta.tool == "bracken" ? "${meta.id}_${meta.run_accession}_${meta.db_name}.bracken" : "${meta.id}_${meta.run_accession}_${meta.db_name}.kraken2" } publishDir = [ path: { "${params.outdir}/kraken2/${meta.db_name}/" }, mode: params.publish_dir_mode, From a9933000993802149c9e550627b851d46b2e2776 Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Tue, 24 Jan 2023 15:06:42 +0100 Subject: [PATCH 621/789] Tweaks to MultiQC based on full test experiments --- assets/multiqc_config.yml | 8 ++----- conf/modules.config | 2 +- modules.json | 3 ++- modules/nf-core/porechop/porechop/main.nf | 6 ++++- .../porechop/porechop/porechop-porechop.diff | 23 +++++++++++++++++++ 5 files changed, 33 insertions(+), 9 deletions(-) create mode 100644 modules/nf-core/porechop/porechop/porechop-porechop.diff diff --git a/assets/multiqc_config.yml b/assets/multiqc_config.yml index c35adfa..bb0d3cc 100644 --- a/assets/multiqc_config.yml +++ b/assets/multiqc_config.yml @@ -268,12 +268,8 @@ table_columns_visible: non-primary_alignments: False reads_MQ0_percent: False error_rate: False - Kraken: - "% Unclassified": False - "% Top 5": False - Bracken: - "% Unclassified": False - "% Top 5": False + Kraken: False + Bracken: False Centrifuge: False DIAMOND: queries_aligned: False diff --git a/conf/modules.config b/conf/modules.config index 8f1291a..2891590 100644 --- a/conf/modules.config +++ b/conf/modules.config @@ -158,7 +158,7 @@ process { [ path: { "${params.outdir}/porechop" }, mode: params.publish_dir_mode, - pattern: '*.fastq.gz', + pattern: '*_porechopped.fastq.gz', enabled: params.save_preprocessed_reads ], [ diff --git a/modules.json b/modules.json index 3d54d9d..2375da6 100644 --- a/modules.json +++ b/modules.json @@ -179,7 +179,8 @@ "porechop/porechop": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": ["modules"] + "installed_by": ["modules"], + "patch": "modules/nf-core/porechop/porechop/porechop-porechop.diff" }, "prinseqplusplus": { "branch": "master", diff --git a/modules/nf-core/porechop/porechop/main.nf b/modules/nf-core/porechop/porechop/main.nf index 5267910..37735ea 100644 --- a/modules/nf-core/porechop/porechop/main.nf +++ b/modules/nf-core/porechop/porechop/main.nf @@ -22,12 +22,16 @@ process PORECHOP_PORECHOP { def args = task.ext.args ?: '' def prefix = task.ext.prefix ?: "${meta.id}" """ + ## To ensure ID matches rest of pipeline based on meta.id rather than input file name + mv $reads ${prefix}.fastq.gz + porechop \\ -i $reads \\ -t $task.cpus \\ $args \\ - -o ${prefix}.fastq.gz \\ + -o ${prefix}_porechopped.fastq.gz \\ > ${prefix}.log + cat <<-END_VERSIONS > versions.yml "${task.process}": porechop: \$( porechop --version ) diff --git a/modules/nf-core/porechop/porechop/porechop-porechop.diff b/modules/nf-core/porechop/porechop/porechop-porechop.diff new file mode 100644 index 0000000..897e1d2 --- /dev/null +++ b/modules/nf-core/porechop/porechop/porechop-porechop.diff @@ -0,0 +1,23 @@ +Changes in module 'nf-core/porechop/porechop' +--- modules/nf-core/porechop/porechop/main.nf ++++ modules/nf-core/porechop/porechop/main.nf +@@ -22,12 +22,16 @@ + def args = task.ext.args ?: '' + def prefix = task.ext.prefix ?: "${meta.id}" + """ ++ ## To ensure ID matches rest of pipeline based on meta.id rather than input file name ++ mv $reads ${prefix}.fastq.gz ++ + porechop \\ + -i $reads \\ + -t $task.cpus \\ + $args \\ +- -o ${prefix}.fastq.gz \\ ++ -o ${prefix}_porechopped.fastq.gz \\ + > ${prefix}.log ++ + cat <<-END_VERSIONS > versions.yml + "${task.process}": + porechop: \$( porechop --version ) + +************************************************************ From bdbb111344adc4ab6fdca52d1aa1db3cb16dbde3 Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Tue, 24 Jan 2023 15:08:28 +0100 Subject: [PATCH 622/789] Turn off all profilers in generla stats --- assets/multiqc_config.yml | 26 ++++---------------------- 1 file changed, 4 insertions(+), 22 deletions(-) diff --git a/assets/multiqc_config.yml b/assets/multiqc_config.yml index bb0d3cc..2e38968 100644 --- a/assets/multiqc_config.yml +++ b/assets/multiqc_config.yml @@ -271,28 +271,10 @@ table_columns_visible: Kraken: False Bracken: False Centrifuge: False - DIAMOND: - queries_aligned: False - Kaiju: - assigned: False - "% Assigned": False - "% Unclassified": False - MALT: - "Num. of queries": False - Total reads: False - Mappability: False - Assig. Taxonomy: False - Taxonomic assignment success: False - motus: - Total number of reads: False - Number of reads after filtering: False - Total number of inserts: False - Unique mappers: False - Multiple mappers: False - Ignored multiple mapper without unique hit: False - "Number of ref-mOTUs": False - "Number of meta-mOTUs": False - "Number of ext-mOTUs": False + DIAMOND: False + Kaiju: False + MALT: False + motus: False table_columns_name: FastQC (pre-Trimming): From f940b07dfe64b5b6aaee97c82ad01240c0757a50 Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Tue, 24 Jan 2023 15:15:02 +0100 Subject: [PATCH 623/789] Remove changes from other PR --- conf/modules.config | 1 - 1 file changed, 1 deletion(-) diff --git a/conf/modules.config b/conf/modules.config index ccf63e5..28ede9d 100644 --- a/conf/modules.config +++ b/conf/modules.config @@ -471,7 +471,6 @@ process { } withName: KRAKENTOOLS_COMBINEKREPORTS_CENTRIFUGE { - errorStrategy = { task.exitStatus in [255,1] ? 'ignore' : 'retry' } ext.prefix = { "centrifuge_${meta.id}_combined_reports" } publishDir = [ path: { "${params.outdir}/centrifuge/" }, From 78436655440bffbbe5fa49f0e59b9bfc46829bf7 Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Tue, 24 Jan 2023 15:32:49 +0100 Subject: [PATCH 624/789] Link rather than mv --- modules/nf-core/porechop/porechop/main.nf | 4 ++-- modules/nf-core/porechop/porechop/porechop-porechop.diff | 5 +++-- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/modules/nf-core/porechop/porechop/main.nf b/modules/nf-core/porechop/porechop/main.nf index 37735ea..b0ee60b 100644 --- a/modules/nf-core/porechop/porechop/main.nf +++ b/modules/nf-core/porechop/porechop/main.nf @@ -23,10 +23,10 @@ process PORECHOP_PORECHOP { def prefix = task.ext.prefix ?: "${meta.id}" """ ## To ensure ID matches rest of pipeline based on meta.id rather than input file name - mv $reads ${prefix}.fastq.gz + ln -s $reads ${prefix}.fastq.gz porechop \\ - -i $reads \\ + -i ${prefix}.fastq.gz \\ -t $task.cpus \\ $args \\ -o ${prefix}_porechopped.fastq.gz \\ diff --git a/modules/nf-core/porechop/porechop/porechop-porechop.diff b/modules/nf-core/porechop/porechop/porechop-porechop.diff index 897e1d2..3d73922 100644 --- a/modules/nf-core/porechop/porechop/porechop-porechop.diff +++ b/modules/nf-core/porechop/porechop/porechop-porechop.diff @@ -6,10 +6,11 @@ Changes in module 'nf-core/porechop/porechop' def prefix = task.ext.prefix ?: "${meta.id}" """ + ## To ensure ID matches rest of pipeline based on meta.id rather than input file name -+ mv $reads ${prefix}.fastq.gz ++ ln -s $reads ${prefix}.fastq.gz + porechop \\ - -i $reads \\ +- -i $reads \\ ++ -i ${prefix}.fastq.gz \\ -t $task.cpus \\ $args \\ - -o ${prefix}.fastq.gz \\ From 4289e1f901cbb0381d180904b2b19e090cfbbcd3 Mon Sep 17 00:00:00 2001 From: "James A. Fellows Yates" Date: Tue, 24 Jan 2023 15:42:14 +0100 Subject: [PATCH 625/789] Remove metaphlan3 nanopore filter as _sometimes_ it can work --- subworkflows/local/profiling.nf | 2 -- 1 file changed, 2 deletions(-) diff --git a/subworkflows/local/profiling.nf b/subworkflows/local/profiling.nf index 1fe4cbb..6b5347f 100644 --- a/subworkflows/local/profiling.nf +++ b/subworkflows/local/profiling.nf @@ -203,8 +203,6 @@ workflow PROFILING { .filter{ if (it[0].is_fasta) log.warn "[nf-core/taxprofiler] MetaPhlAn3 currently does not accept FASTA files as input. Skipping MetaPhlAn3 for sample ${it[0].id}." !it[0].is_fasta - if (it[0].instrument_platform == 'OXFORD_NANOPORE') log.warn "[nf-core/taxprofiler] MetaPhlAn3 has not been evaluated for Nanopore data. Skipping MetaPhlAn3 for sample ${it[0].id}." - !it[0].instrument_platform == 'OXFORD_NANOPORE' } .multiMap { it -> From 4f8ac72e1f6b804bf0628a9f1c8362a7c6a67eb7 Mon Sep 17 00:00:00 2001 From: sofstam Date: Wed, 25 Jan 2023 13:25:33 +0100 Subject: [PATCH 626/789] Add description of each tool --- docs/output.md | 44 +++++++++++++++++++++++++++++++++++--------- 1 file changed, 35 insertions(+), 9 deletions(-) diff --git a/docs/output.md b/docs/output.md index 17d37b5..15359b8 100644 --- a/docs/output.md +++ b/docs/output.md @@ -71,6 +71,8 @@ It is used in nf-core/taxprofiler for adapter trimming of short-reads.
    +By default nf-core/taxprofiler will only provide the `.fastp.fastq.gz` file if fastp is selected. The file `.merged.fastq.gz` will be available in the output folder if you provide the argument `--shortread_qc_includeunmerged`. You can change the default value for low complexity filtering by using the argument `--shortread_complexityfilter_fastp_threshold`. + ### AdapterRemoval [AdapterRemoval](https://adapterremoval.readthedocs.io/en/stable/) searches for and removes remnant adapter sequences from High-Throughput Sequencing (HTS) data and (optionally) trims low quality bases from the 3' end of reads following adapter removal. It is popular in the field of palaeogenomics. The output logs are stored in the results folder, and as a part of the MultiQC report. @@ -89,12 +91,14 @@ It is used in nf-core/taxprofiler for adapter trimming of short-reads.
    -By default nf-core/taxprofiler will only provide the `.settings` file if AdapterRemoval is selected. You will only find the FASTQ files in the results directory if you provide ` --save_preprocessed_reads` . If this is selected, you may recieve different combinations of FASTQ files for each sample depending on the input types - e.g. whether you have merged or not, or if you're supplying both single- and paired-end reads. +By default nf-core/taxprofiler will only provide the `.settings` file if AdapterRemoval is selected. You will only find the FASTQ files in the results directory if you provide ` --save_preprocessed_reads` . If this is selected, you may receive different combinations of FASTQ files for each sample depending on the input types - e.g. whether you have merged or not, or if you're supplying both single- and paired-end reads. Note that the FASTQ files may _not_ always be the 'final' reads that go into taxprofiling, if you also run other steps such as complexity filtering, host removal, run merging etc.. ### Porechop +[Porechop](https://github.com/rrwick/Porechop) is a tool for finding and removing adapters from Oxford Nanopore reads. Adapters on the ends of reads are trimmed and if a read has an adapter in its middle, it is considered a chimeric and it chopped into separate reads. +
    Output files @@ -103,6 +107,9 @@ Note that the FASTQ files may _not_ always be the 'final' reads that go into tax
    +The output logs are saved in the output folder and are part of MultiQC report. +We do **not** recommend using Porechop if you are already trimming the adapters with ONT's basecaller Guppy. + ### BBDuk [BBDuk](https://jgi.doe.gov/data-and-tools/software-tools/bbtools/bb-tools-user-guide/bbduk-guide/) stands for Decontamination Using Kmers. BBDuk was developed to combine most common data-quality-related trimming, filtering, and masking operations into a single high-performance tool. @@ -143,7 +150,7 @@ Note that the FASTQ file(s) may _not_ always be the 'final' reads that go into t ### Filtlong -[Filtlong](https://github.com/rrwick/Filtlong) is a quality filtering tool for long reads. +[Filtlong](https://github.com/rrwick/Filtlong) is a quality filtering tool for long reads. It can take a set of small reads and produce a smaller, better subset.
    Output files @@ -154,6 +161,8 @@ Note that the FASTQ file(s) may _not_ always be the 'final' reads that go into t
    +We do **not** recommend using Filtlong if you are performing filtering of low quality reads with ONT's basecaller Guppy. + ### Bowtie2 [Bowtie 2](https://bowtie-bio.sourceforge.net/bowtie2/index.shtml) is an ultrafast and memory-efficient tool for aligning sequencing reads to long reference sequences. It is particularly good at aligning reads of about 50 up to 100s or 1,000s of characters, and particularly good at aligning to relatively long (e.g. mammalian) genomes. @@ -188,6 +197,9 @@ It is used with nf-core/taxprofiler to allow removal of 'host' (e.g. human) or o
    +By default, nf-core taxprofiler will provide the `.bam` file if host removal for long reads is turned on. +minimap2 is not yet supported as a module in MultiQC and therefore the alignment to host genome is reported via samtools stats in MultiQC report. + ### Samtools stats [Samtools stats](http://www.htslib.org/doc/samtools-stats.html) collects statistics from an alignment file and outputs in a text format. @@ -200,9 +212,11 @@ It is used with nf-core/taxprofiler to allow removal of 'host' (e.g. human) or o
    +Samtools output file is part of the MultiQC report and gives statistics about the mapped/unmapped reads to host reference genome. + ### Bracken -[Bracken](https://ccb.jhu.edu/software/bracken/) (Bayesian Reestimation of Abundance with KrakEN) is a highly accurate statistical method that computes the abundance of species in DNA sequences from a metagenomics sample. Braken uses the taxonomy labels assigned by Kraken, a highly accurate metagenomics classification algorithm, to estimate the number of reads originating from each species present in a sample. +[Bracken](https://ccb.jhu.edu/software/bracken/) (Bayesian Reestimation of Abundance with Kraken) is a highly accurate statistical method that computes the abundance of species in DNA sequences from a metagenomics sample. Braken uses the taxonomy labels assigned by Kraken, a highly accurate metagenomics classification algorithm, to estimate the number of reads originating from each species present in a sample. > 🛈 The first step of using Bracken requires running Kraken2, therefore the initial results before abundance estimation will be found in `/kraken2/`. @@ -235,9 +249,9 @@ The main taxonomic profiling file from Bracken is the `*.tsv` file. This provide
    -The main taxonomic profiling file from Kraken2 is the `_combined_reports.txt` or `*report.txt` file. The former provides you the broadest over view of the taxonomic profiling results across all samples against a single databse, where you get two columns for each sample e.g. `2_all` and `2_lvl`, as well as a summarised column summing up across all samples `tot_all` and `tot_lvl`. The latter gives you the most information for a single sample. The report file is also used for the taxpasta step. +The main taxonomic classification file from Kraken2 is the `_combined_reports.txt` or `*report.txt` file. The former provides you the broadest over view of the taxonomic classification results across all samples against a single databse, where you get two columns for each sample e.g. `2_all` and `2_lvl`, as well as a summarised column summing up across all samples `tot_all` and `tot_lvl`. The latter gives you the most information for a single sample. The report file is also used for the taxpasta step. -You will only recieve the FASTQs and `*classifiedreads.txt` file if you supply `--kraken2_save_reads` and/or `--kraken2_save_readclassification` parameters to the pipeline. +You will only receive the FASTQs and `*classifiedreads.txt` file if you supply `--kraken2_save_reads` and/or `--kraken2_save_readclassification` parameters to the pipeline. ### KrakenUniq @@ -255,7 +269,7 @@ You will only recieve the FASTQs and `*classifiedreads.txt` file if you supply ` -The main taxonomic profiling file from KrakenUniq is the `*report.txt` file. This is an extension of the Kraken2 report with the additional k-mer coverage information that provides more information about the accuracy of hits. +The main taxonomic classification file from KrakenUniq is the `*report.txt` file. This is an extension of the Kraken2 report with the additional k-mer coverage information that provides more information about the accuracy of hits. > ⚠️ The output system of KrakenUniq can result in other `stdout` or `stderr` logging information being saved in the report file, therefore you must check your report files before downstream use! @@ -277,8 +291,12 @@ You will only receive the FASTQs and `*classifiedreads.txt` file if you supply ` +The main taxonomic classification files from Centrifuge are the `_combined_reports.txt`, `*report.txt`, `*results.txt` and the `*centrifuge.txt`. The latter is used by the taxpasta step. You will receive the FASTQ files if you supply `--centrifuge_save_reads`. + ### Kaiju +[Kaiju](https://github.com/bioinformatics-centre/kaiju) is a taxonomic classifier that finds maximum exact matches on the protein-level using the Burrows–Wheeler transform. +
    Output files @@ -288,6 +306,8 @@ You will only receive the FASTQs and `*classifiedreads.txt` file if you supply `
    +The default taxonomic rank is `species`. You can provide a different one by updating the argument `--kaiju_taxon_rank`. + ### DIAMOND [DIAMOND](https://github.com/bbuchfink/diamond) is a sequence aligner for translated DNA searches or protein sequences against a protein reference database such as NR. It is a replacement for the NCBI BLAST software tools.It has many key features and it is used as taxonomic classifier in nf-core/taxprofiler. @@ -301,6 +321,8 @@ You will only receive the FASTQs and `*classifiedreads.txt` file if you supply ` +You will receive the `*.sam` file if you provide the parameter `--diamond_save_reads` but in this case no taxonomic classification will be available, only the aligned reads in sam format. + ### MALT [MALT](https://software-ab.cs.uni-tuebingen.de/download/malt) is a fast replacement for BLASTX, BLASTP and BLASTN, and provides both local and semi-global alignment capabilities. @@ -319,7 +341,7 @@ You will only receive the FASTQs and `*classifiedreads.txt` file if you supply ` The main output of MALT is the `.rma6` file format, which can be only loaded into MEGAN and it's related tools. We provide the `rma2info` text files for improved compatibility with spreadsheet programs and other programmtic data manipulation tools, however this has only limited information compared to the 'binary' RMA6 file format (the `txt` file only contains taxonomic ID and count, whereas RMA6 has taxonomic lineage information). -You will only recieve the `.sam` and `.megan` files if you supply `--malt_save_reads` and/or `--malt_generate_megansummary` parameters to the pipeline. +You will only receive the `.sam` and `.megan` files if you supply `--malt_save_reads` and/or `--malt_generate_megansummary` parameters to the pipeline. ### MetaPhlAn3 @@ -341,7 +363,7 @@ The main taxonomic profiling file from MetaPhlAn3 is the `*_profile.txt` file. T ### mOTUs -[mOTUS](https://github.com/motu-tool/mOTUs) maps reads to a unique marker specific database and estimates the relative abundance of known and unknown species. +[mOTUS](https://github.com/motu-tool/mOTUs) is a taxonomic profiler that maps reads to a unique marker specific database and estimates the relative abundance of known and unknown species.
    Output files @@ -352,9 +374,13 @@ The main taxonomic profiling file from MetaPhlAn3 is the `*_profile.txt` file. T - `motus__combined_reports.txt`: A combined profile of all samples aligned to a given database (as generated by `motus_merge`)
    + +By default, nf-core/taxprofiler is providing a column describing NCBI taxonomic ID as this is used in the taxpasta step. You can disable this column by activating the argument `--motus_remove_ncbi_ids`. +You will receive the relative abundance instead of read counts if you provide the argument `--motus_use_relative_abundance`. + ### Krona -[Krona](https://github.com/marbl/Krona) is Krona allows the exploration of (metagenomic) hierarchical data with interactive zooming, multi-layered pie charts. +[Krona](https://github.com/marbl/Krona) allows the exploration of (metagenomic) hierarchical data with interactive zooming, multi-layered pie charts. Krona charts will be generated by the pipeline for supported tools (Kraken2, Centrifuge, Kaiju, and MALT) From d761edb615a444a548743502668f51f3e646a2c9 Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Wed, 25 Jan 2023 14:55:57 +0100 Subject: [PATCH 627/789] Patch the patch --- modules/nf-core/porechop/porechop/main.nf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/nf-core/porechop/porechop/main.nf b/modules/nf-core/porechop/porechop/main.nf index b0ee60b..533734e 100644 --- a/modules/nf-core/porechop/porechop/main.nf +++ b/modules/nf-core/porechop/porechop/main.nf @@ -11,7 +11,7 @@ process PORECHOP_PORECHOP { tuple val(meta), path(reads) output: - tuple val(meta), path("*.fastq.gz"), emit: reads + tuple val(meta), path("*_porechopped.fastq.gz"), emit: reads tuple val(meta), path("*.log") , emit: log path "versions.yml" , emit: versions From f63cec347394a3015ac885a333edffd95ae20c49 Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Wed, 25 Jan 2023 14:58:19 +0100 Subject: [PATCH 628/789] Actually patch the patch --- modules/nf-core/porechop/porechop/porechop-porechop.diff | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/modules/nf-core/porechop/porechop/porechop-porechop.diff b/modules/nf-core/porechop/porechop/porechop-porechop.diff index 3d73922..6c72cb1 100644 --- a/modules/nf-core/porechop/porechop/porechop-porechop.diff +++ b/modules/nf-core/porechop/porechop/porechop-porechop.diff @@ -1,6 +1,15 @@ Changes in module 'nf-core/porechop/porechop' --- modules/nf-core/porechop/porechop/main.nf +++ modules/nf-core/porechop/porechop/main.nf +@@ -11,7 +11,7 @@ + tuple val(meta), path(reads) + + output: +- tuple val(meta), path("*.fastq.gz"), emit: reads ++ tuple val(meta), path("*_porechopped.fastq.gz"), emit: reads + tuple val(meta), path("*.log") , emit: log + path "versions.yml" , emit: versions + @@ -22,12 +22,16 @@ def args = task.ext.args ?: '' def prefix = task.ext.prefix ?: "${meta.id}" From a77a437313d1923cb8b77a4abfe1e7f4ae69b87f Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Wed, 25 Jan 2023 15:02:02 +0100 Subject: [PATCH 629/789] Triple patch combo! --- modules/nf-core/porechop/porechop/main.nf | 3 ++- modules/nf-core/porechop/porechop/porechop-porechop.diff | 5 +++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/modules/nf-core/porechop/porechop/main.nf b/modules/nf-core/porechop/porechop/main.nf index 533734e..0b00759 100644 --- a/modules/nf-core/porechop/porechop/main.nf +++ b/modules/nf-core/porechop/porechop/main.nf @@ -23,7 +23,8 @@ process PORECHOP_PORECHOP { def prefix = task.ext.prefix ?: "${meta.id}" """ ## To ensure ID matches rest of pipeline based on meta.id rather than input file name - ln -s $reads ${prefix}.fastq.gz + + [[ -f ${prefix}.fastq.gz ]] || ln -s $reads ${prefix}.fastq.gz porechop \\ -i ${prefix}.fastq.gz \\ diff --git a/modules/nf-core/porechop/porechop/porechop-porechop.diff b/modules/nf-core/porechop/porechop/porechop-porechop.diff index 6c72cb1..5d51f24 100644 --- a/modules/nf-core/porechop/porechop/porechop-porechop.diff +++ b/modules/nf-core/porechop/porechop/porechop-porechop.diff @@ -10,12 +10,13 @@ Changes in module 'nf-core/porechop/porechop' tuple val(meta), path("*.log") , emit: log path "versions.yml" , emit: versions -@@ -22,12 +22,16 @@ +@@ -22,12 +22,17 @@ def args = task.ext.args ?: '' def prefix = task.ext.prefix ?: "${meta.id}" """ + ## To ensure ID matches rest of pipeline based on meta.id rather than input file name -+ ln -s $reads ${prefix}.fastq.gz ++ ++ [[ -f ${prefix}.fastq.gz ]] || ln -s $reads ${prefix}.fastq.gz + porechop \\ - -i $reads \\ From bc2876228c9c1bde4bbacafacb91fe299f336021 Mon Sep 17 00:00:00 2001 From: sofstam Date: Wed, 25 Jan 2023 15:11:43 +0100 Subject: [PATCH 630/789] Apply review suggestions --- docs/output.md | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/docs/output.md b/docs/output.md index 15359b8..6c707aa 100644 --- a/docs/output.md +++ b/docs/output.md @@ -107,7 +107,7 @@ Note that the FASTQ files may _not_ always be the 'final' reads that go into tax -The output logs are saved in the output folder and are part of MultiQC report. +The output logs are saved in the output folder and are part of MultiQC report.You do not normally need to check these manually. We do **not** recommend using Porechop if you are already trimming the adapters with ONT's basecaller Guppy. ### BBDuk @@ -161,6 +161,8 @@ Note that the FASTQ file(s) may _not_ always be the 'final' reads that go into t +You can use the filtered FASTQ for other downstream analyses to reduce repeated preprocessing of files. + We do **not** recommend using Filtlong if you are performing filtering of low quality reads with ONT's basecaller Guppy. ### Bowtie2 @@ -197,8 +199,8 @@ It is used with nf-core/taxprofiler to allow removal of 'host' (e.g. human) or o -By default, nf-core taxprofiler will provide the `.bam` file if host removal for long reads is turned on. -minimap2 is not yet supported as a module in MultiQC and therefore the alignment to host genome is reported via samtools stats in MultiQC report. +By default, nf-core taxprofiler will only provide the `.bam` file if host removal for long reads is turned on. +Note: minimap2 is not yet supported as a module in MultiQC and therefore there is no dedicated section in the MultiQC HTML. Rather, alignment statistics to host genome is reported via samtools stats module in MultiQC report. ### Samtools stats @@ -212,7 +214,7 @@ minimap2 is not yet supported as a module in MultiQC and therefore the alignment -Samtools output file is part of the MultiQC report and gives statistics about the mapped/unmapped reads to host reference genome. +In most cases you do not need to check this file, as it is rendered in the MultiQC run report. ### Bracken @@ -306,7 +308,7 @@ The main taxonomic classification files from Centrifuge are the `_combined_repor -The default taxonomic rank is `species`. You can provide a different one by updating the argument `--kaiju_taxon_rank`. +The most summary file is the `*combined_reports` file which summarises results across all samples. However if you wish to look at more precise information about each assignment, check the per-sample file. The default taxonomic rank is `species`. You can provide a different one by updating the argument `--kaiju_taxon_rank`. ### DIAMOND @@ -321,7 +323,7 @@ The default taxonomic rank is `species`. You can provide a different one by upda -You will receive the `*.sam` file if you provide the parameter `--diamond_save_reads` but in this case no taxonomic classification will be available, only the aligned reads in sam format. +By default you will receive a TSV output. Alternatively, you will receive a `*.sam` file if you provide the parameter `--diamond_save_reads` but in this case no taxonomic classification will be available(!), only the aligned reads in sam format. Note that DIAMOND has many output formats, so depending on your [choice](https://github.com/bbuchfink/diamond/wiki/3.-Command-line-options) with ` --diamond_output_format` you will receive the taxonomic information in a different format. ### MALT @@ -375,7 +377,7 @@ The main taxonomic profiling file from MetaPhlAn3 is the `*_profile.txt` file. T -By default, nf-core/taxprofiler is providing a column describing NCBI taxonomic ID as this is used in the taxpasta step. You can disable this column by activating the argument `--motus_remove_ncbi_ids`. +Normally `*_combined_reports.txt` is the most useful file for downstream analyses, but the per sample `.out` file can provide additional more specific information. By default, nf-core/taxprofiler is providing a column describing NCBI taxonomic ID as this is used in the taxpasta step. You can disable this column by activating the argument `--motus_remove_ncbi_ids`. You will receive the relative abundance instead of read counts if you provide the argument `--motus_use_relative_abundance`. ### Krona From 0edef9ea57c689d0de1799b8a147b6b774367adf Mon Sep 17 00:00:00 2001 From: sofstam Date: Mon, 30 Jan 2023 11:16:18 +0100 Subject: [PATCH 631/789] Review suggestions + prettier --- docs/output.md | 34 ++++++++++++++++++---------------- 1 file changed, 18 insertions(+), 16 deletions(-) diff --git a/docs/output.md b/docs/output.md index 6c707aa..b7bea1a 100644 --- a/docs/output.md +++ b/docs/output.md @@ -71,7 +71,7 @@ It is used in nf-core/taxprofiler for adapter trimming of short-reads. -By default nf-core/taxprofiler will only provide the `.fastp.fastq.gz` file if fastp is selected. The file `.merged.fastq.gz` will be available in the output folder if you provide the argument `--shortread_qc_includeunmerged`. You can change the default value for low complexity filtering by using the argument `--shortread_complexityfilter_fastp_threshold`. +By default nf-core/taxprofiler will only provide the `.fastp.fastq.gz` file if fastp is selected. The file `.merged.fastq.gz` will be available in the output folder if you provide the argument ` --shortread_qc_mergepairs` (optionally retaining un-merged pairs when in combination with `--shortread_qc_includeunmerged`). You can change the default value for low complexity filtering by using the argument `--shortread_complexityfilter_fastp_threshold`. ### AdapterRemoval @@ -91,9 +91,9 @@ By default nf-core/taxprofiler will only provide the `.fastp.fastq.gz -By default nf-core/taxprofiler will only provide the `.settings` file if AdapterRemoval is selected. You will only find the FASTQ files in the results directory if you provide ` --save_preprocessed_reads` . If this is selected, you may receive different combinations of FASTQ files for each sample depending on the input types - e.g. whether you have merged or not, or if you're supplying both single- and paired-end reads. +By default nf-core/taxprofiler will only provide the `.settings` file if AdapterRemoval is selected. You will only find the `.fastq` files in the results directory if you provide ` --save_preprocessed_reads` . If this is selected, you may receive different combinations of `.fastq` files for each sample depending on the input types - e.g. whether you have merged or not, or if you're supplying both single- and paired-end reads. -Note that the FASTQ files may _not_ always be the 'final' reads that go into taxprofiling, if you also run other steps such as complexity filtering, host removal, run merging etc.. +Note that the `.fastq` files may _not_ always be the 'final' reads that go into taxprofiling, if you also run other steps such as complexity filtering, host removal, run merging etc.. ### Porechop @@ -127,7 +127,7 @@ It is used in nf-core/taxprofiler for complexity filtering using different algor By default nf-core/taxprofiler will only provide the `.log` file if BBDuk is selected as the complexity filtering tool. You will only find the complexity filtered reads in your results directory if you provide ` --save_complexityfiltered_reads` . -Note that the FASTQ file(s) may _not_ always be the 'final' reads that go into taxprofiling, if you also run other steps such as host removal, run merging etc.. +Note that the `.fastq` file(s) may _not_ always be the 'final' reads that go into taxprofiling, if you also run other steps such as host removal, run merging etc.. ### PRINSEQ++ @@ -144,9 +144,9 @@ It is used in nf-core/taxprofiler for complexity filtering using different algor -By default nf-core/taxprofiler will only provide the `.log` file if PRINSEQ++ is selected as the complexity filtering tool. You will only find the complexity filtered FASTQ files in your results directory if you supply ` --save_complexityfiltered_reads` . +By default nf-core/taxprofiler will only provide the `.log` file if PRINSEQ++ is selected as the complexity filtering tool. You will only find the complexity filtered `.fastq` files in your results directory if you supply ` --save_complexityfiltered_reads` . -Note that the FASTQ file(s) may _not_ always be the 'final' reads that go into taxprofiling, if you also run other steps such as host removal, run merging etc.. +Note that the `.fastq` file(s) may _not_ always be the 'final' reads that go into taxprofiling, if you also run other steps such as host removal, run merging etc.. ### Filtlong @@ -161,7 +161,7 @@ Note that the FASTQ file(s) may _not_ always be the 'final' reads that go into t -You can use the filtered FASTQ for other downstream analyses to reduce repeated preprocessing of files. +You can use the filtered `.fastq` for other downstream analyses to reduce repeated preprocessing of files. We do **not** recommend using Filtlong if you are performing filtering of low quality reads with ONT's basecaller Guppy. @@ -169,7 +169,7 @@ We do **not** recommend using Filtlong if you are performing filtering of low qu [Bowtie 2](https://bowtie-bio.sourceforge.net/bowtie2/index.shtml) is an ultrafast and memory-efficient tool for aligning sequencing reads to long reference sequences. It is particularly good at aligning reads of about 50 up to 100s or 1,000s of characters, and particularly good at aligning to relatively long (e.g. mammalian) genomes. -It is used with nf-core/taxprofiler to allow removal of 'host' (e.g. human) or other possible contaminant reads (e.g. Phi X) from the FASTQ files prior to profiling. +It is used with nf-core/taxprofiler to allow removal of 'host' (e.g. human) or other possible contaminant reads (e.g. Phi X) from short-read `.fastq` files prior to profiling.
    Output files @@ -181,15 +181,15 @@ It is used with nf-core/taxprofiler to allow removal of 'host' (e.g. human) or o
    -By default nf-core/taxprofiler will only provide the `.log` file if host removal is turned on. You will only see the mapped (host) reads BAM file or the off-target reads in FASTQ format in your results directory if you provide `--save_hostremoval_mapped` and ` --save_hostremoval_unmapped` respectively. +By default nf-core/taxprofiler will only provide the `.log` file if host removal is turned on. You will only see the mapped (host) reads `.bam` file or the off-target reads in `.fastq` format in your results directory if you provide `--save_hostremoval_mapped` and ` --save_hostremoval_unmapped` respectively. -Note that the FASTQ file(s) may _not_ always be the 'final' reads that go into taxprofiling, if you also run other steps such as host removal, run merging etc.. +Note that the `.fastq` file(s) may _not_ always be the 'final' reads that go into taxonomic classification, if you also run other steps such as host removal, run merging etc.. Furthermore, while there is a dedicated section in the MultiQC HTML for Bowtie2, these values are not displayed by default in the General Stats table. Rather, alignment statistics to host genome is reported via samtools stats module in MultiQC report for direct comparison with minimap2 (see below). ### minimap2 [minimap2](https://github.com/lh3/minimap2) is an alignment tool suited to mapping long reads to reference sequences. -It is used with nf-core/taxprofiler to allow removal of 'host' (e.g. human) or other possible contaminant reads from the FASTQ files prior to taxonomic classification/profiling. +It is used with nf-core/taxprofiler to allow removal of 'host' (e.g. human) or other possible contaminant reads from long-read `.fastq` files prior to taxonomic classification/profiling.
    Output files @@ -204,7 +204,7 @@ Note: minimap2 is not yet supported as a module in MultiQC and therefore there i ### Samtools stats -[Samtools stats](http://www.htslib.org/doc/samtools-stats.html) collects statistics from an alignment file and outputs in a text format. +[Samtools stats](http://www.htslib.org/doc/samtools-stats.html) collects statistics from a SAM, `.bam`, or CRAM alignment file and outputs in a text format.
    Output files @@ -253,7 +253,7 @@ The main taxonomic profiling file from Bracken is the `*.tsv` file. This provide The main taxonomic classification file from Kraken2 is the `_combined_reports.txt` or `*report.txt` file. The former provides you the broadest over view of the taxonomic classification results across all samples against a single databse, where you get two columns for each sample e.g. `2_all` and `2_lvl`, as well as a summarised column summing up across all samples `tot_all` and `tot_lvl`. The latter gives you the most information for a single sample. The report file is also used for the taxpasta step. -You will only receive the FASTQs and `*classifiedreads.txt` file if you supply `--kraken2_save_reads` and/or `--kraken2_save_readclassification` parameters to the pipeline. +You will only receive the `.fastq` and `*classifiedreads.txt` file if you supply `--kraken2_save_reads` and/or `--kraken2_save_readclassification` parameters to the pipeline. ### KrakenUniq @@ -275,7 +275,7 @@ The main taxonomic classification file from KrakenUniq is the `*report.txt` file > ⚠️ The output system of KrakenUniq can result in other `stdout` or `stderr` logging information being saved in the report file, therefore you must check your report files before downstream use! -You will only receive the FASTQs and `*classifiedreads.txt` file if you supply `--krakenuniq_save_reads` and/or `--krakenuniq_save_readclassification` parameters to the pipeline. +You will only receive the `.fastq` and `*classifiedreads.txt` file if you supply `--krakenuniq_save_reads` and/or `--krakenuniq_save_readclassification` parameters to the pipeline. ### Centrifuge @@ -293,7 +293,7 @@ You will only receive the FASTQs and `*classifiedreads.txt` file if you supply `
    -The main taxonomic classification files from Centrifuge are the `_combined_reports.txt`, `*report.txt`, `*results.txt` and the `*centrifuge.txt`. The latter is used by the taxpasta step. You will receive the FASTQ files if you supply `--centrifuge_save_reads`. +The main taxonomic classification files from Centrifuge are the `_combined_reports.txt`, `*report.txt`, `*results.txt` and the `*centrifuge.txt`. The latter is used by the taxpasta step. You will receive the `.fastq` files if you supply `--centrifuge_save_reads`. ### Kaiju @@ -308,7 +308,7 @@ The main taxonomic classification files from Centrifuge are the `_combined_repor
    -The most summary file is the `*combined_reports` file which summarises results across all samples. However if you wish to look at more precise information about each assignment, check the per-sample file. The default taxonomic rank is `species`. You can provide a different one by updating the argument `--kaiju_taxon_rank`. +The most summary file is the `*combined_reports.txt` file which summarises results across all samples. However if you wish to look at more precise information about each assignment, check the per-sample file. The default taxonomic rank is `species`. You can provide a different one by updating the argument `--kaiju_taxon_rank`. ### DIAMOND @@ -412,6 +412,8 @@ The resulting HTML files can be loaded into your web browser for exploration. Ea Results generated by MultiQC collate pipeline QC from supported tools e.g. FastQC. The pipeline has special steps which also allow the software versions to be reported in the MultiQC output for future traceability. For more information about how to use MultiQC reports, see . +All tools in taxprofiler supported by MultiQC will have a dedicated section showing summary statistics of each tool based on information stored in log files. Note that the 'General Stats' table by default will only show statistics referring to pre-processing steps, and will not display possible values from each classifier/profiler, unless turned on by the user within the 'Configure Columns' menu or via a custom MultiQC config file (`--multiqc_config`) + ### Pipeline information
    From 5b738ad353918aa846d4684a198ffdd946082375 Mon Sep 17 00:00:00 2001 From: sofstam Date: Tue, 31 Jan 2023 09:35:40 +0100 Subject: [PATCH 632/789] Review + prettier --- docs/output.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/docs/output.md b/docs/output.md index b7bea1a..c785fc5 100644 --- a/docs/output.md +++ b/docs/output.md @@ -195,7 +195,7 @@ It is used with nf-core/taxprofiler to allow removal of 'host' (e.g. human) or o Output files - `minimap2` - - `.bam`: Alignment file in bam format + - `.bam`: Alignment file in BAM format
    @@ -204,7 +204,7 @@ Note: minimap2 is not yet supported as a module in MultiQC and therefore there i ### Samtools stats -[Samtools stats](http://www.htslib.org/doc/samtools-stats.html) collects statistics from a SAM, `.bam`, or CRAM alignment file and outputs in a text format. +[Samtools stats](http://www.htslib.org/doc/samtools-stats.html) collects statistics from a `.sam`, `.bam`, or `.cram` alignment file and outputs in a text format.
    Output files @@ -285,11 +285,11 @@ You will only receive the `.fastq` and `*classifiedreads.txt` file if you supply Output files - `centrifuge` - - `.centrifuge.mapped.fastq.gz`: Fastq files containing all mapped reads + - `.centrifuge.mapped.fastq.gz`: `FASTQ` files containing all mapped reads - `.centrifuge.report.txt`: A classification report that summarises the taxonomic ID, the taxonomic rank, length of genome sequence, number of classified and uniquely classified reads - `.centrifuge.results.txt`: A file that summarises the classification assignment for a read, i.e read ID, sequence ID, score for the classification, score for the next best classification, number of classifications for this read - `.centrifuge.txt`: A Kraken2-style report that summarises the fraction abundance, taxonomic ID, number of k-mers, taxonomic path of all the hits in the centrifuge run for a given sample - - `.centrifuge.unmapped.fastq.gz`: Fastq file containing all unmapped reads + - `.centrifuge.unmapped.fastq.gz`: FASTQ file containing all unmapped reads
    @@ -341,7 +341,7 @@ By default you will receive a TSV output. Alternatively, you will receive a `*.s -The main output of MALT is the `.rma6` file format, which can be only loaded into MEGAN and it's related tools. We provide the `rma2info` text files for improved compatibility with spreadsheet programs and other programmtic data manipulation tools, however this has only limited information compared to the 'binary' RMA6 file format (the `txt` file only contains taxonomic ID and count, whereas RMA6 has taxonomic lineage information). +The main output of MALT is the `.rma6` file format, which can be only loaded into MEGAN and it's related tools. We provide the `rma2info` text files for improved compatibility with spreadsheet programs and other programmtic data manipulation tools, however this has only limited information compared to the 'binary' RMA6 file format (the `.txt` file only contains taxonomic ID and count, whereas RMA6 has taxonomic lineage information). You will only receive the `.sam` and `.megan` files if you supply `--malt_save_reads` and/or `--malt_generate_megansummary` parameters to the pipeline. From 366745bdbe9e4c652dd310430d4612bfa4e11457 Mon Sep 17 00:00:00 2001 From: sofstam Date: Tue, 31 Jan 2023 09:38:43 +0100 Subject: [PATCH 633/789] Prettier in usage --- docs/usage.md | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/docs/usage.md b/docs/usage.md index 95bb0a0..c765c68 100644 --- a/docs/usage.md +++ b/docs/usage.md @@ -547,12 +547,13 @@ To build a custom Centrifuge database, a user needs to download taxonomy files, In total, you need four components: a tab-separated file mapping sequence IDs to taxonomy IDs (`--conversion-table`), a tab-separated file mapping taxonomy IDs to their parents and rank, up to the root of the tree (`--taxonomy-tree`), a pipe-separated file mapping taxonomy IDs to a name (`--name-table`), and the reference sequences. An example of custom `seqid2taxid.map`: + ``` - NC_001133.9 4392 - NC_012920.1 9606 - NC_001134.8 4392 + NC_001133.9 4392 + NC_012920.1 9606 + NC_001134.8 4392 NC_001135.5 4392 - ``` +``` ```bash centrifuge-download -o taxonomy taxonomy From b4d01ac226e7ab0d03b4014b37c044c3779a652a Mon Sep 17 00:00:00 2001 From: "James A. Fellows Yates" Date: Tue, 31 Jan 2023 10:23:36 +0100 Subject: [PATCH 634/789] Formatting tweaks --- docs/output.md | 49 ++++++++++++++++++++++++++++++++----------------- 1 file changed, 32 insertions(+), 17 deletions(-) diff --git a/docs/output.md b/docs/output.md index c785fc5..8ab12c0 100644 --- a/docs/output.md +++ b/docs/output.md @@ -71,7 +71,9 @@ It is used in nf-core/taxprofiler for adapter trimming of short-reads. -By default nf-core/taxprofiler will only provide the `.fastp.fastq.gz` file if fastp is selected. The file `.merged.fastq.gz` will be available in the output folder if you provide the argument ` --shortread_qc_mergepairs` (optionally retaining un-merged pairs when in combination with `--shortread_qc_includeunmerged`). You can change the default value for low complexity filtering by using the argument `--shortread_complexityfilter_fastp_threshold`. +By default nf-core/taxprofiler will only provide the `.fastp.fastq.gz` file if fastp is selected. The file `.merged.fastq.gz` will be available in the output folder if you provide the argument ` --shortread_qc_mergepairs` (optionally retaining un-merged pairs when in combination with `--shortread_qc_includeunmerged`). + +You can change the default value for low complexity filtering by using the argument `--shortread_complexityfilter_fastp_threshold`. ### AdapterRemoval @@ -91,9 +93,11 @@ By default nf-core/taxprofiler will only provide the `.fastp.fastq.gz -By default nf-core/taxprofiler will only provide the `.settings` file if AdapterRemoval is selected. You will only find the `.fastq` files in the results directory if you provide ` --save_preprocessed_reads` . If this is selected, you may receive different combinations of `.fastq` files for each sample depending on the input types - e.g. whether you have merged or not, or if you're supplying both single- and paired-end reads. +By default nf-core/taxprofiler will only provide the `.settings` file if AdapterRemoval is selected. + +You will only find the `.fastq` files in the results directory if you provide ` --save_preprocessed_reads`. If this is selected, you may receive different combinations of `.fastq` files for each sample depending on the input types - e.g. whether you have merged or not, or if you're supplying both single- and paired-end reads. -Note that the `.fastq` files may _not_ always be the 'final' reads that go into taxprofiling, if you also run other steps such as complexity filtering, host removal, run merging etc.. +> ⚠️ The resulting `.fastq` files may _not_ always be the 'final' reads that go into taxprofiling, if you also run other steps such as complexity filtering, host removal, run merging etc.. ### Porechop @@ -103,12 +107,16 @@ Note that the `.fastq` files may _not_ always be the 'final' reads that go into Output files - `porechop` + - `.log`: Log file containing trimming statistics - `.fastq.gz`: Adapter-trimmed file -The output logs are saved in the output folder and are part of MultiQC report.You do not normally need to check these manually. -We do **not** recommend using Porechop if you are already trimming the adapters with ONT's basecaller Guppy. +The output logs are saved in the output folder and are part of MultiQC report.You do not normally need to check these manually. + +You will only find the `.fastq` files in the results directory if you provide ` --save_preprocessed_reads`. + +> ⚠️ We do **not** recommend using Porechop if you are already trimming the adapters with ONT's basecaller Guppy. ### BBDuk @@ -127,7 +135,7 @@ It is used in nf-core/taxprofiler for complexity filtering using different algor By default nf-core/taxprofiler will only provide the `.log` file if BBDuk is selected as the complexity filtering tool. You will only find the complexity filtered reads in your results directory if you provide ` --save_complexityfiltered_reads` . -Note that the `.fastq` file(s) may _not_ always be the 'final' reads that go into taxprofiling, if you also run other steps such as host removal, run merging etc.. +> ⚠️ The resulting `.fastq` files may _not_ always be the 'final' reads that go into taxprofiling, if you also run other steps such as host removal, run merging etc.. ### PRINSEQ++ @@ -146,7 +154,7 @@ It is used in nf-core/taxprofiler for complexity filtering using different algor By default nf-core/taxprofiler will only provide the `.log` file if PRINSEQ++ is selected as the complexity filtering tool. You will only find the complexity filtered `.fastq` files in your results directory if you supply ` --save_complexityfiltered_reads` . -Note that the `.fastq` file(s) may _not_ always be the 'final' reads that go into taxprofiling, if you also run other steps such as host removal, run merging etc.. +> ⚠️ The resulting `.fastq` files may _not_ always be the 'final' reads that go into taxprofiling, if you also run other steps such as host removal, run merging etc.. ### Filtlong @@ -161,15 +169,15 @@ Note that the `.fastq` file(s) may _not_ always be the 'final' reads that go int -You can use the filtered `.fastq` for other downstream analyses to reduce repeated preprocessing of files. +You will only find the `.fastq` files in the results directory if you provide ` --save_preprocessed_reads`. -We do **not** recommend using Filtlong if you are performing filtering of low quality reads with ONT's basecaller Guppy. +> ⚠️ We do **not** recommend using Filtlong if you are performing filtering of low quality reads with ONT's basecaller Guppy. ### Bowtie2 [Bowtie 2](https://bowtie-bio.sourceforge.net/bowtie2/index.shtml) is an ultrafast and memory-efficient tool for aligning sequencing reads to long reference sequences. It is particularly good at aligning reads of about 50 up to 100s or 1,000s of characters, and particularly good at aligning to relatively long (e.g. mammalian) genomes. -It is used with nf-core/taxprofiler to allow removal of 'host' (e.g. human) or other possible contaminant reads (e.g. Phi X) from short-read `.fastq` files prior to profiling. +It is used with nf-core/taxprofiler to allow removal of 'host' (e.g. human) and/or other possible contaminant reads (e.g. Phi X) from short-read `.fastq` files prior to profiling.
    Output files @@ -183,7 +191,9 @@ It is used with nf-core/taxprofiler to allow removal of 'host' (e.g. human) or o By default nf-core/taxprofiler will only provide the `.log` file if host removal is turned on. You will only see the mapped (host) reads `.bam` file or the off-target reads in `.fastq` format in your results directory if you provide `--save_hostremoval_mapped` and ` --save_hostremoval_unmapped` respectively. -Note that the `.fastq` file(s) may _not_ always be the 'final' reads that go into taxonomic classification, if you also run other steps such as host removal, run merging etc.. Furthermore, while there is a dedicated section in the MultiQC HTML for Bowtie2, these values are not displayed by default in the General Stats table. Rather, alignment statistics to host genome is reported via samtools stats module in MultiQC report for direct comparison with minimap2 (see below). +> ⚠️ The resulting `.fastq` files may _not_ always be the 'final' reads that go into taxprofiling, if you also run other steps such as run merging etc.. + +> ℹ️ While there is a dedicated section in the MultiQC HTML for Bowtie2, these values are not displayed by default in the General Stats table. Rather, alignment statistics to host genome is reported via samtools stats module in MultiQC report for direct comparison with minimap2 (see below). ### minimap2 @@ -199,8 +209,9 @@ It is used with nf-core/taxprofiler to allow removal of 'host' (e.g. human) or o
    -By default, nf-core taxprofiler will only provide the `.bam` file if host removal for long reads is turned on. -Note: minimap2 is not yet supported as a module in MultiQC and therefore there is no dedicated section in the MultiQC HTML. Rather, alignment statistics to host genome is reported via samtools stats module in MultiQC report. +By default, nf-core taxprofiler will only provide the `.bam` file if host removal for long reads is turned on (i.e., `--save_hostremoval_mapped` and ` --save_hostremoval_unmapped`). + +> ℹ️ minimap2 is not yet supported as a module in MultiQC and therefore there is no dedicated section in the MultiQC HTML. Rather, alignment statistics to host genome is reported via samtools stats module in MultiQC report. ### Samtools stats @@ -273,10 +284,10 @@ You will only receive the `.fastq` and `*classifiedreads.txt` file if you supply The main taxonomic classification file from KrakenUniq is the `*report.txt` file. This is an extension of the Kraken2 report with the additional k-mer coverage information that provides more information about the accuracy of hits. -> ⚠️ The output system of KrakenUniq can result in other `stdout` or `stderr` logging information being saved in the report file, therefore you must check your report files before downstream use! - You will only receive the `.fastq` and `*classifiedreads.txt` file if you supply `--krakenuniq_save_reads` and/or `--krakenuniq_save_readclassification` parameters to the pipeline. +> ⚠️ The output system of KrakenUniq can result in other `stdout` or `stderr` logging information being saved in the report file, therefore you must check your report files before downstream use! + ### Centrifuge [Centrifuge](https://github.com/DaehwanKimLab/centrifuge) is a taxonomic sequence classifier that uses a Burrows-Wheeler transform and Ferragina-Manzina index for storing and mapping sequences. @@ -323,7 +334,9 @@ The most summary file is the `*combined_reports.txt` file which summarises resul -By default you will receive a TSV output. Alternatively, you will receive a `*.sam` file if you provide the parameter `--diamond_save_reads` but in this case no taxonomic classification will be available(!), only the aligned reads in sam format. Note that DIAMOND has many output formats, so depending on your [choice](https://github.com/bbuchfink/diamond/wiki/3.-Command-line-options) with ` --diamond_output_format` you will receive the taxonomic information in a different format. +By default you will receive a TSV output. Alternatively, you will receive a `*.sam` file if you provide the parameter `--diamond_save_reads` but in this case no taxonomic classification will be available(!), only the aligned reads in sam format. + +> ℹ️ DIAMOND has many output formats, so depending on your [choice](https://github.com/bbuchfink/diamond/wiki/3.-Command-line-options) with ` --diamond_output_format` you will receive the taxonomic information in a different format. ### MALT @@ -412,7 +425,9 @@ The resulting HTML files can be loaded into your web browser for exploration. Ea Results generated by MultiQC collate pipeline QC from supported tools e.g. FastQC. The pipeline has special steps which also allow the software versions to be reported in the MultiQC output for future traceability. For more information about how to use MultiQC reports, see . -All tools in taxprofiler supported by MultiQC will have a dedicated section showing summary statistics of each tool based on information stored in log files. Note that the 'General Stats' table by default will only show statistics referring to pre-processing steps, and will not display possible values from each classifier/profiler, unless turned on by the user within the 'Configure Columns' menu or via a custom MultiQC config file (`--multiqc_config`) +All tools in taxprofiler supported by MultiQC will have a dedicated section showing summary statistics of each tool based on information stored in log files. + +> ℹ️ The 'General Stats' table by default will only show statistics referring to pre-processing steps, and will not display possible values from each classifier/profiler, unless turned on by the user within the 'Configure Columns' menu or via a custom MultiQC config file (`--multiqc_config`) ### Pipeline information From 01fca90496cb9fd460001884d6f608d32703a849 Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Tue, 31 Jan 2023 11:08:46 +0100 Subject: [PATCH 635/789] Tweak MultiQC config [skip ci] --- assets/multiqc_config.yml | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/assets/multiqc_config.yml b/assets/multiqc_config.yml index 2e38968..71b56fd 100644 --- a/assets/multiqc_config.yml +++ b/assets/multiqc_config.yml @@ -56,7 +56,8 @@ top_modules: - "*_raw_falco_*_report.html" - "fastp" - "adapterRemoval" - - "porechop" + - "porechop": + extra: "ℹ️: if you get the error message 'Error - was not able to plot data.' this means that porechop did not detect any adapters and therefore no statistics generated." - "fastqc": name: "FastQC (post-Trimming)" path_filters: @@ -82,7 +83,7 @@ top_modules: target: "Bracken" doi: "10.7717/peerj-cs.104" info: "Estimates species abundances in metagenomics samples by probabilistically re-distributing reads in the taxonomic tree." - extra: "Note: plot title will say Kraken2 due to the first step of bracken producing the same output format as Kraken. Abundance information is currently not supported in MultiQC." + extra: "ℹ️: plot title will say Kraken2 due to the first step of bracken producing the same output format as Kraken. Abundance information is currently not supported in MultiQC." path_filters: - "*.bracken.kraken2.report.txt" - "kraken": @@ -91,7 +92,7 @@ top_modules: target: "Centrifuge" doi: "10.1101/gr.210641.116" info: "is a very rapid and memory-efficient system for the classification of DNA sequences from microbial samples. The system uses a novel indexing scheme based on the Burrows-Wheeler transform (BWT) and the Ferragina-Manzini (FM) index. Note: Figure title" - extra: "Note: plot title will say Kraken2 due to Centrifuge producing the same output format as Kraken. If activated, see the actual Kraken2 results in the section above." + extra: "ℹ️: plot title will say Kraken2 due to Centrifuge producing the same output format as Kraken. If activated, see the actual Kraken2 results in the section above." path_filters: - "*.centrifuge.txt" - "malt": From 225773000f82f23053b72ca523c9b7aeecf261e8 Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Tue, 31 Jan 2023 12:00:48 +0100 Subject: [PATCH 636/789] Fix channel structure when supplying own host bt2 index --- workflows/taxprofiler.nf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/workflows/taxprofiler.nf b/workflows/taxprofiler.nf index 7a09573..12a41f3 100644 --- a/workflows/taxprofiler.nf +++ b/workflows/taxprofiler.nf @@ -38,7 +38,7 @@ if (params.perform_shortread_hostremoval && !params.hostremoval_reference) { exi if (!params.hostremoval_reference && params.hostremoval_reference_index) { exit 1, "ERROR: [nf-core/taxprofiler] --shortread_hostremoval_index provided but no --hostremoval_reference FASTA supplied. Check input." } if (params.hostremoval_reference ) { ch_reference = file(params.hostremoval_reference) } -if (params.shortread_hostremoval_index ) { ch_shortread_reference_index = file(params.shortread_hostremoval_index ) } else { ch_shortread_reference_index = [] } +if (params.shortread_hostremoval_index ) { ch_shortread_reference_index = Channel.fromPath(params.shortread_hostremoval_index).map{[[], it]} } else { ch_shortread_reference_index = [] } if (params.longread_hostremoval_index ) { ch_longread_reference_index = file(params.longread_hostremoval_index ) } else { ch_longread_reference_index = [] } if (params.diamond_save_reads ) log.warn "[nf-core/taxprofiler] DIAMOND only allows output of a single format. As --diamond_save_reads supplied, only aligned reads in SAM format will be produced, no taxonomic profiles will be available." From 52907dcc26e9bd8679965f8758cc54cb8f6727d6 Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Tue, 31 Jan 2023 13:07:07 +0100 Subject: [PATCH 637/789] Prettier --- docs/output.md | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/docs/output.md b/docs/output.md index 8ab12c0..9ac5176 100644 --- a/docs/output.md +++ b/docs/output.md @@ -71,7 +71,7 @@ It is used in nf-core/taxprofiler for adapter trimming of short-reads. -By default nf-core/taxprofiler will only provide the `.fastp.fastq.gz` file if fastp is selected. The file `.merged.fastq.gz` will be available in the output folder if you provide the argument ` --shortread_qc_mergepairs` (optionally retaining un-merged pairs when in combination with `--shortread_qc_includeunmerged`). +By default nf-core/taxprofiler will only provide the `.fastp.fastq.gz` file if fastp is selected. The file `.merged.fastq.gz` will be available in the output folder if you provide the argument ` --shortread_qc_mergepairs` (optionally retaining un-merged pairs when in combination with `--shortread_qc_includeunmerged`). You can change the default value for low complexity filtering by using the argument `--shortread_complexityfilter_fastp_threshold`. @@ -93,7 +93,7 @@ You can change the default value for low complexity filtering by using the argum -By default nf-core/taxprofiler will only provide the `.settings` file if AdapterRemoval is selected. +By default nf-core/taxprofiler will only provide the `.settings` file if AdapterRemoval is selected. You will only find the `.fastq` files in the results directory if you provide ` --save_preprocessed_reads`. If this is selected, you may receive different combinations of `.fastq` files for each sample depending on the input types - e.g. whether you have merged or not, or if you're supplying both single- and paired-end reads. @@ -112,9 +112,9 @@ You will only find the `.fastq` files in the results directory if you provide ` -The output logs are saved in the output folder and are part of MultiQC report.You do not normally need to check these manually. +The output logs are saved in the output folder and are part of MultiQC report.You do not normally need to check these manually. -You will only find the `.fastq` files in the results directory if you provide ` --save_preprocessed_reads`. +You will only find the `.fastq` files in the results directory if you provide ` --save_preprocessed_reads`. > ⚠️ We do **not** recommend using Porechop if you are already trimming the adapters with ONT's basecaller Guppy. @@ -169,9 +169,9 @@ By default nf-core/taxprofiler will only provide the `.log` file if PRINSEQ++ is -You will only find the `.fastq` files in the results directory if you provide ` --save_preprocessed_reads`. +You will only find the `.fastq` files in the results directory if you provide ` --save_preprocessed_reads`. -> ⚠️ We do **not** recommend using Filtlong if you are performing filtering of low quality reads with ONT's basecaller Guppy. +> ⚠️ We do **not** recommend using Filtlong if you are performing filtering of low quality reads with ONT's basecaller Guppy. ### Bowtie2 @@ -334,7 +334,7 @@ The most summary file is the `*combined_reports.txt` file which summarises resul -By default you will receive a TSV output. Alternatively, you will receive a `*.sam` file if you provide the parameter `--diamond_save_reads` but in this case no taxonomic classification will be available(!), only the aligned reads in sam format. +By default you will receive a TSV output. Alternatively, you will receive a `*.sam` file if you provide the parameter `--diamond_save_reads` but in this case no taxonomic classification will be available(!), only the aligned reads in sam format. > ℹ️ DIAMOND has many output formats, so depending on your [choice](https://github.com/bbuchfink/diamond/wiki/3.-Command-line-options) with ` --diamond_output_format` you will receive the taxonomic information in a different format. @@ -425,7 +425,7 @@ The resulting HTML files can be loaded into your web browser for exploration. Ea Results generated by MultiQC collate pipeline QC from supported tools e.g. FastQC. The pipeline has special steps which also allow the software versions to be reported in the MultiQC output for future traceability. For more information about how to use MultiQC reports, see . -All tools in taxprofiler supported by MultiQC will have a dedicated section showing summary statistics of each tool based on information stored in log files. +All tools in taxprofiler supported by MultiQC will have a dedicated section showing summary statistics of each tool based on information stored in log files. > ℹ️ The 'General Stats' table by default will only show statistics referring to pre-processing steps, and will not display possible values from each classifier/profiler, unless turned on by the user within the 'Configure Columns' menu or via a custom MultiQC config file (`--multiqc_config`) From 932dc12fb181a083526e7a562856d2f669cb6b7b Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Tue, 31 Jan 2023 13:09:53 +0100 Subject: [PATCH 638/789] Add list of expected tools in MultiQC report [skip ci] --- docs/output.md | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/docs/output.md b/docs/output.md index 9ac5176..b60171e 100644 --- a/docs/output.md +++ b/docs/output.md @@ -427,6 +427,27 @@ Results generated by MultiQC collate pipeline QC from supported tools e.g. FastQ All tools in taxprofiler supported by MultiQC will have a dedicated section showing summary statistics of each tool based on information stored in log files. +You can expect in the MultiQC reports either sections and/or general stats columns for the following tools: + +- fastqc +- adapterRemoval +- fastp +- bbduk +- prinseqplusplus +- porechop +- filtlong +- bowtie2 +- minimap2 +- samtools (stats) +- kraken +- bracken +- centrifuge +- kaiju +- metaphlan +- diamond +- malt +- motus + > ℹ️ The 'General Stats' table by default will only show statistics referring to pre-processing steps, and will not display possible values from each classifier/profiler, unless turned on by the user within the 'Configure Columns' menu or via a custom MultiQC config file (`--multiqc_config`) ### Pipeline information From c4e366d47dd4ded53248611e61f86155c6860261 Mon Sep 17 00:00:00 2001 From: "James A. Fellows Yates" Date: Thu, 2 Feb 2023 11:59:26 +0100 Subject: [PATCH 639/789] Add full test data and documentation of the test data --- CITATIONS.md | 10 +++++++ README.md | 6 ++--- conf/test_full.config | 62 +++++++++++++++++++++++++++++++++++++------ 3 files changed, 66 insertions(+), 12 deletions(-) diff --git a/CITATIONS.md b/CITATIONS.md index daf9022..825a2f9 100644 --- a/CITATIONS.md +++ b/CITATIONS.md @@ -92,3 +92,13 @@ - [Singularity](https://pubmed.ncbi.nlm.nih.gov/28494014/) > Kurtzer GM, Sochat V, Bauer MW. Singularity: Scientific containers for mobility of compute. PLoS One. 2017 May 11;12(5):e0177459. doi: 10.1371/journal.pone.0177459. eCollection 2017. PubMed PMID: 28494014; PubMed Central PMCID: PMC5426675. + +## Data + +- [Maixner (2021)](https://doi.org/10.1016/j.cub.2021.09.031) (CI Test Data) + + > Maixner, Frank, Mohamed S. Sarhan, Kun D. Huang, Adrian Tett, Alexander Schoenafinger, Stefania Zingale, Aitor Blanco-Míguez, et al. 2021. “Hallstatt Miners Consumed Blue Cheese and Beer during the Iron Age and Retained a Non-Westernized Gut Microbiome until the Baroque Period.” Current Biology: CB 31 (23): 5149–62.e6. doi: 10.1016/j.cub.2021.09.031. + +- [Meslier (2022)](https://doi.org/10.1038/s41597-022-01762-z) (AWS Full Test data) + + > Meslier, Victoria, Benoit Quinquis, Kévin Da Silva, Florian Plaza Oñate, Nicolas Pons, Hugo Roume, Mircea Podar, and Mathieu Almeida. 2022. “Benchmarking Second and Third-Generation Sequencing Platforms for Microbial Metagenomics.” Scientific Data 9 (1): 694. doi: 10.1038/s41597-022-01762-z. \ No newline at end of file diff --git a/README.md b/README.md index 080a75b..9c38e9b 100644 --- a/README.md +++ b/README.md @@ -14,16 +14,14 @@ > ⚠️ This pipeline is still under development! While the pipeline is usable, not all functionality will be available! - - **nf-core/taxprofiler** is a bioinformatics best-practice analysis pipeline for taxonomic classification and profiling of shotgun metagenomic data. It allows for in-parallel taxonomic identification of reads or taxonomic abundance estimation with multiple classification and profiling tools against multiple databases, produces standardised output tables. The pipeline is built using [Nextflow](https://www.nextflow.io), a workflow tool to run tasks across multiple compute infrastructures in a very portable manner. It uses Docker/Singularity containers making installation trivial and results highly reproducible. The [Nextflow DSL2](https://www.nextflow.io/docs/latest/dsl2.html) implementation of this pipeline uses one container per process which makes it much easier to maintain and update software dependencies. Where possible, these processes have been submitted to and installed from [nf-core/modules](https://github.com/nf-core/modules) in order to make them available to all nf-core pipelines, and to everyone within the Nextflow community! - - On release, automated continuous integration tests run the pipeline on a full-sized dataset on the AWS cloud infrastructure. This ensures that the pipeline runs on AWS, has sensible resource allocation defaults set to run on real-world datasets, and permits the persistent storage of results to benchmark between pipeline releases and other analysis sources.The results obtained from the full-sized test can be viewed on the [nf-core website](https://nf-co.re/taxprofiler/results). +The nf-core/taxprofiler CI test dataset uses sequencing data from [Maixer et al. (2021) Curr. Bio.](https://doi.org/10.1016/j.cub.2021.09.031). The AWS full test dataset uses sequencing data and reference genomes from [Meslier (2022) _Sci. Data_](https://doi.org/10.1038/s41597-022-01762-z) + ## Pipeline summary diff --git a/conf/test_full.config b/conf/test_full.config index 49a10a0..cf8d873 100644 --- a/conf/test_full.config +++ b/conf/test_full.config @@ -1,12 +1,10 @@ /* -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Nextflow config file for running full-size tests -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Defines input files and everything required to run a full size pipeline test. - Use as follows: nextflow run nf-core/taxprofiler -profile test_full, --outdir - ---------------------------------------------------------------------------------------- */ @@ -15,10 +13,58 @@ params { config_profile_description = 'Full test dataset to check pipeline function' // Input data for full size test - // TODO nf-core: Specify the paths to your full test data ( on nf-core/test-datasets or directly in repositories, e.g. SRA) - // TODO nf-core: Give any required params for the test so that command line flags are not needed - input = 'https://raw.githubusercontent.com/nf-core/test-datasets/viralrecon/samplesheet/samplesheet_full_illumina_amplicon.csv' + input = 'https://github.com/nf-core/test-datasets/raw/taxprofiler/samplesheet_full.csv' + databases = 'https://github.com/nf-core/test-datasets/raw/taxprofiler/database_full.csv' // Genome references - genome = 'R64-1-1' + hostremoval_reference = 'ftp://ftp.ncbi.nlm.nih.gov/genomes/all/GCA/000/819/615/GCA_000819615.1_ViralProj14015/GCA_000819615.1_ViralProj14015_genomic.fna.gz' + + save_preprocessed_reads = true + + perform_shortread_qc = true + shortread_qc_mergepairs = true + perform_shortread_complexityfilter = true + save_complexityfiltered_reads = true + + perform_longread_qc = true + perform_shortread_hostremoval = true + perform_longread_hostremoval = true + save_hostremoval_index = true + save_hostremoval_mapped = true + save_hostremoval_unmapped = true + + perform_runmerging = true + save_runmerged_reads = true + + run_centrifuge = true + centrifuge_save_reads = true + + run_diamond = true + + run_kaiju = true + + run_kraken2 = true + kraken2_save_reads = true + kraken2_save_readclassification = true + kraken2_save_minimizers = true + + run_krakenuniq = true + krakenuniq_save_reads = true + krakenuniq_save_readclassifications = true + + run_bracken = true + + run_malt = true + malt_save_reads = true + malt_generate_megansummary = true + + run_metaphlan3 = true + + run_motus = true + motus_save_mgc_read_counts = true + + run_profile_standardisation = true + run_krona = true } + +cleanup = true \ No newline at end of file From 7ce55a99e813d1890cf9b28a3b620433eba45ead Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Thu, 2 Feb 2023 13:08:16 +0100 Subject: [PATCH 640/789] Fix linting --- CITATIONS.md | 2 +- bin/check_samplesheet.py | 2 -- conf/test_full.config | 16 ++++++++-------- 3 files changed, 9 insertions(+), 11 deletions(-) diff --git a/CITATIONS.md b/CITATIONS.md index 825a2f9..2f75fdb 100644 --- a/CITATIONS.md +++ b/CITATIONS.md @@ -101,4 +101,4 @@ - [Meslier (2022)](https://doi.org/10.1038/s41597-022-01762-z) (AWS Full Test data) - > Meslier, Victoria, Benoit Quinquis, Kévin Da Silva, Florian Plaza Oñate, Nicolas Pons, Hugo Roume, Mircea Podar, and Mathieu Almeida. 2022. “Benchmarking Second and Third-Generation Sequencing Platforms for Microbial Metagenomics.” Scientific Data 9 (1): 694. doi: 10.1038/s41597-022-01762-z. \ No newline at end of file + > Meslier, Victoria, Benoit Quinquis, Kévin Da Silva, Florian Plaza Oñate, Nicolas Pons, Hugo Roume, Mircea Podar, and Mathieu Almeida. 2022. “Benchmarking Second and Third-Generation Sequencing Platforms for Microbial Metagenomics.” Scientific Data 9 (1): 694. doi: 10.1038/s41597-022-01762-z. diff --git a/bin/check_samplesheet.py b/bin/check_samplesheet.py index f5b0e6a..9f0f7a6 100755 --- a/bin/check_samplesheet.py +++ b/bin/check_samplesheet.py @@ -71,7 +71,6 @@ def check_samplesheet(file_in, file_out): sample_mapping_dict = {} with open(file_in, "r") as fin: - ## Check header MIN_COLS = 4 HEADER = [ @@ -101,7 +100,6 @@ def check_samplesheet(file_in, file_out): ## Check sample entries for line in fin: - ## Pull out only relevant columns for downstream checking line_parsed = [x.strip().strip('"') for x in line.strip().split(",")] diff --git a/conf/test_full.config b/conf/test_full.config index cf8d873..07099d0 100644 --- a/conf/test_full.config +++ b/conf/test_full.config @@ -20,12 +20,12 @@ params { hostremoval_reference = 'ftp://ftp.ncbi.nlm.nih.gov/genomes/all/GCA/000/819/615/GCA_000819615.1_ViralProj14015/GCA_000819615.1_ViralProj14015_genomic.fna.gz' save_preprocessed_reads = true - + perform_shortread_qc = true shortread_qc_mergepairs = true perform_shortread_complexityfilter = true save_complexityfiltered_reads = true - + perform_longread_qc = true perform_shortread_hostremoval = true perform_longread_hostremoval = true @@ -46,20 +46,20 @@ params { run_kraken2 = true kraken2_save_reads = true kraken2_save_readclassification = true - kraken2_save_minimizers = true - - run_krakenuniq = true + kraken2_save_minimizers = true + + run_krakenuniq = true krakenuniq_save_reads = true krakenuniq_save_readclassifications = true run_bracken = true - + run_malt = true malt_save_reads = true malt_generate_megansummary = true run_metaphlan3 = true - + run_motus = true motus_save_mgc_read_counts = true @@ -67,4 +67,4 @@ params { run_krona = true } -cleanup = true \ No newline at end of file +cleanup = true From 5363274867c0bc66c6f727c188ddd021c437f104 Mon Sep 17 00:00:00 2001 From: sofstam Date: Thu, 2 Feb 2023 13:58:48 +0100 Subject: [PATCH 641/789] Add some last documentation --- conf/modules.config | 12 ++++++------ docs/output.md | 43 ++++++++++++++++++++++++++++++++++++------- docs/usage.md | 13 ++++++++++++- 3 files changed, 54 insertions(+), 14 deletions(-) diff --git a/conf/modules.config b/conf/modules.config index 11c0980..cae5a45 100644 --- a/conf/modules.config +++ b/conf/modules.config @@ -18,7 +18,7 @@ process { publishDir = [ path: { "${params.outdir}/fastqc/raw" }, mode: params.publish_dir_mode, - pattern: '*.html' + pattern: '*.{html,zip}' ] } @@ -28,7 +28,7 @@ process { publishDir = [ path: { "${params.outdir}/fastqc/processed" }, mode: params.publish_dir_mode, - pattern: '*.html' + pattern: '*.{html,zip}' ] } @@ -37,7 +37,7 @@ process { publishDir = [ path: { "${params.outdir}/falco/raw" }, mode: params.publish_dir_mode, - pattern: '*.{html,txt}' + pattern: '*.{html,txt,zip}' ] } @@ -46,7 +46,7 @@ process { publishDir = [ path: { "${params.outdir}/falco/processed" }, mode: params.publish_dir_mode, - pattern: '*.{html,txt}' + pattern: '*.{html,txt,zip}' ] } @@ -354,7 +354,7 @@ process { publishDir = [ path: { "${params.outdir}/kraken2/${meta.db_name}/" }, mode: params.publish_dir_mode, - pattern: '*.{txt,report,fastq.gz}' + pattern: '*.{txt,fastq.gz}' ] } @@ -393,7 +393,7 @@ process { publishDir = [ path: { "${params.outdir}/krakenuniq/${meta.db_name}/" }, mode: params.publish_dir_mode, - pattern: '*.{txt,report,fastq.gz}' + pattern: '*.{txt,fastq.gz}' ] } diff --git a/docs/output.md b/docs/output.md index b60171e..f2e1445 100644 --- a/docs/output.md +++ b/docs/output.md @@ -13,7 +13,7 @@ The directories listed below will be created in the results directory after the The pipeline is built using [Nextflow](https://www.nextflow.io/) and processes data using the following steps: - [FastQC](#fastqc) - Raw read QC -- [falco](#falco) - Alternative to FastQC for raw read QC +- [falco](#fastqc) - Alternative to FastQC for raw read QC - [fastp](#fastp) - Adapter trimming for Illumina data - [AdapterRemoval](#adapterremoval) - Adapter trimming for Illumina data - [Porechop](#porechop) - Adapter removal for Oxford Nanopore data @@ -22,7 +22,9 @@ The pipeline is built using [Nextflow](https://www.nextflow.io/) and processes d - [Filtlong](#filtlong) - Quality trimming and filtering for Nanopore data - [Bowtie2](#bowtie2) - Host removal for Illumina reads - [minimap2](#minimap2) - Host removal for Nanopore reads -- [samtoolsstats](#samtoolsstats) - Statistics from host removal +- [SAMtools stats](#samtoolsstats) - Statistics from host removal +- [SAMtools view](#samtoolsview) - Views and converts the alignment file +- [SAMtools bam2fq](#samtoolsbam2fq) - Converts the alignment file in fastq format - [Bracken](#bracken) - Taxonomic classifier using k-mers and abundance estimations - [Kraken2](#kraken2) - Taxonomic classifier using exact k-mer matches - [KrakenUniq](#krakenuniq) - Taxonomic classifier that combines the k-mer-based classification and the number of unique k-mers found in each species @@ -35,7 +37,7 @@ The pipeline is built using [Nextflow](https://www.nextflow.io/) and processes d - [MultiQC](#multiqc) - Aggregate report describing results and QC from the whole pipeline - [Pipeline information](#pipeline-information) - Report metrics generated during the workflow execution -### FastQC +### FastQC or falco
    Output files @@ -48,6 +50,8 @@ The pipeline is built using [Nextflow](https://www.nextflow.io/) and processes d [FastQC](http://www.bioinformatics.babraham.ac.uk/projects/fastqc/) gives general quality metrics about your sequenced reads. It provides information about the quality score distribution across your reads, per base sequence content (%A/T/G/C), adapter contamination and overrepresented sequences. For further reading and documentation see the [FastQC help pages](http://www.bioinformatics.babraham.ac.uk/projects/fastqc/Help/). +> ℹ️ Falco produces identical output to FastQC but in the `falco/` directory. + ![MultiQC - FastQC sequence counts plot](images/mqc_fastqc_counts.png) ![MultiQC - FastQC mean quality scores plot](images/mqc_fastqc_quality.png) @@ -68,6 +72,7 @@ It is used in nf-core/taxprofiler for adapter trimming of short-reads. - `fastp` - `.fastp.fastq.gz`: File with the trimmed unmerged fastq reads. - `.merged.fastq.gz`: File with the reads that were successfully merged. + - `.*{log,html,json}`: Log files in different formats.
    @@ -213,15 +218,39 @@ By default, nf-core taxprofiler will only provide the `.bam` file if host remova > ℹ️ minimap2 is not yet supported as a module in MultiQC and therefore there is no dedicated section in the MultiQC HTML. Rather, alignment statistics to host genome is reported via samtools stats module in MultiQC report. -### Samtools stats +### SAMtools view + +[SAMtools view](http://www.htslib.org/doc/samtools-view.html) views and comverts a `.sam`, `.bam`, or `.cram` alignment file. + +
    +Output files + +- `samtoolsstats` + - `.bam`: Alignment file in BAM format + +
    + +### SAMtools bam2fq + +[SAMtools bam2fq](http://www.htslib.org/doc/1.1/samtools.html) converts a `.sam`, `.bam`, or `.cram` alignment file to FASTQ format + +
    +Output files + +- `samtoolsstats` + - `.fq.zg`: Alignment file in FASTQ gzip format. + +
    + +### SAMtools stats -[Samtools stats](http://www.htslib.org/doc/samtools-stats.html) collects statistics from a `.sam`, `.bam`, or `.cram` alignment file and outputs in a text format. +[SAMtools stats](http://www.htslib.org/doc/samtools-stats.html) collects statistics from a `.sam`, `.bam`, or `.cram` alignment file and outputs in a text format.
    Output files - `samtoolsstats` - - `.stats`: File containing samtools stats output + - `.stats`: File containing samtools stats output.
    @@ -330,7 +359,7 @@ The most summary file is the `*combined_reports.txt` file which summarises resul - `diamond` - `.log`: A log file containing stdout information - - `.sam`: A file in SAM format that contains the aligned reads + - `*.{blast,xml,txt,daa,sam,tsv,paf,log}`: A file containing alignment information in various formats, or taxonomic information in a text-based format. Exact output depends on user choice. diff --git a/docs/usage.md b/docs/usage.md index c765c68..9aa83a5 100644 --- a/docs/usage.md +++ b/docs/usage.md @@ -606,7 +606,18 @@ A detailed description can be found [here](https://github.com/bbuchfink/diamond/ #### Kaiju custom database -To build a kaiju database, you need two components: a FASTA file with the protein sequences (the headers are the numeric NCBI taxon identifiers of the protein sequences), and you need to define the uppercase characters of the standard 20 amino acids you wish to include. +To build a kaiju database, you need three components: a FASTA file with the protein sequences ,the NCBI taxonomy dump files, and you need to define the uppercase characters of the standard 20 amino acids you wish to include. + +> ⚠️ The headers of the protein fasta file must be numeric NCBI taxon identifiers of the protein sequences. + +To download the NCBI taxonomy files, please run the following commands: + +```bash +wget https://ftp.ncbi.nlm.nih.gov/pub/taxonomy/new_taxdump/new_taxdump.zip +unzip new_taxdump.zip +``` + +To build the database, run the following command (the contents of taxdump must be in the same location where you run the command): ```bash kaiju-mkbwt -a ACDEFGHIKLMNPQRSTVWY -o proteins proteins.faa From 11a8624b3964a6061bdafeff384afe48a410207c Mon Sep 17 00:00:00 2001 From: "James A. Fellows Yates" Date: Fri, 3 Feb 2023 09:42:20 +0100 Subject: [PATCH 642/789] Add warning about database parameters [skip ci] --- docs/usage.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/docs/usage.md b/docs/usage.md index c765c68..95914f1 100644 --- a/docs/usage.md +++ b/docs/usage.md @@ -80,11 +80,15 @@ An [example samplesheet](../assets/samplesheet.csv) has been provided with the p ### Full database sheet nf-core/taxprofiler supports multiple databases being classified/profiled against in parallel for each tool. + Databases can be supplied either in the form of a compressed `.tar.gz` archive of a directory containing all relevant database files or the path to a directory on the filesystem. -The pipeline takes the paths and specific classification/profiling parameters of the tool of these databases as input via a four column comma-separated sheet. > ⚠️ nf-core/taxprofiler does not provide any databases by default, nor does it currently generate them for you. This must be performed manually by the user. See below for more information of the expected database files. +The pipeline takes the paths and specific classification/profiling parameters of the tool of these databases as input via a four column comma-separated sheet. + +> ⚠️ To allow user freedom, nf-core/taxprofiler does not check for mandatory or the validity of non-file database parameters for correct execution of the tool - excluding options offered via pipeline level parameters! Please validate your database parameters (cross-referencing [parameters](https://nf-co.re/taxprofiler/parameters) before submitting the database sheet! + An example database sheet can look as follows, where 5 tools are being used, and `malt` and `kraken2` will be used against two databases each. This is because specifying `bracken` implies first running `kraken2` on the same database. ```console From b4f88a29ce733212f009afa8f6c40fd4f3e67ad6 Mon Sep 17 00:00:00 2001 From: "James A. Fellows Yates" Date: Fri, 3 Feb 2023 09:46:01 +0100 Subject: [PATCH 643/789] Update docs/usage.md [skip ci] --- docs/usage.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/usage.md b/docs/usage.md index 95914f1..588f039 100644 --- a/docs/usage.md +++ b/docs/usage.md @@ -87,7 +87,7 @@ Databases can be supplied either in the form of a compressed `.tar.gz` archive o The pipeline takes the paths and specific classification/profiling parameters of the tool of these databases as input via a four column comma-separated sheet. -> ⚠️ To allow user freedom, nf-core/taxprofiler does not check for mandatory or the validity of non-file database parameters for correct execution of the tool - excluding options offered via pipeline level parameters! Please validate your database parameters (cross-referencing [parameters](https://nf-co.re/taxprofiler/parameters) before submitting the database sheet! +> ⚠️ To allow user freedom, nf-core/taxprofiler does not check for mandatory or the validity of non-file database parameters for correct execution of the tool - excluding options offered via pipeline level parameters! Please validate your database parameters (cross-referencing [parameters](https://nf-co.re/taxprofiler/parameters, and the given tool documentation) before submitting the database sheet! For example, if you don't use the default read length - Bracken will require `-r ` in the `db_params` column. An example database sheet can look as follows, where 5 tools are being used, and `malt` and `kraken2` will be used against two databases each. This is because specifying `bracken` implies first running `kraken2` on the same database. From 3e2b1811825d803edd3d6f3eaa7e237ec8dbfac2 Mon Sep 17 00:00:00 2001 From: sofstam Date: Fri, 3 Feb 2023 15:42:45 +0100 Subject: [PATCH 644/789] Apply review suggestions --- docs/output.md | 27 ++++++++------------------- nextflow_schema.json | 4 ++-- 2 files changed, 10 insertions(+), 21 deletions(-) diff --git a/docs/output.md b/docs/output.md index f2e1445..e1df0b9 100644 --- a/docs/output.md +++ b/docs/output.md @@ -23,8 +23,7 @@ The pipeline is built using [Nextflow](https://www.nextflow.io/) and processes d - [Bowtie2](#bowtie2) - Host removal for Illumina reads - [minimap2](#minimap2) - Host removal for Nanopore reads - [SAMtools stats](#samtoolsstats) - Statistics from host removal -- [SAMtools view](#samtoolsview) - Views and converts the alignment file -- [SAMtools bam2fq](#samtoolsbam2fq) - Converts the alignment file in fastq format +- [SAMtools fastq](#samtoolsfastq) - Converts the alignment file in fastq format - [Bracken](#bracken) - Taxonomic classifier using k-mers and abundance estimations - [Kraken2](#kraken2) - Taxonomic classifier using exact k-mer matches - [KrakenUniq](#krakenuniq) - Taxonomic classifier that combines the k-mer-based classification and the number of unique k-mers found in each species @@ -194,7 +193,7 @@ It is used with nf-core/taxprofiler to allow removal of 'host' (e.g. human) and/ -By default nf-core/taxprofiler will only provide the `.log` file if host removal is turned on. You will only see the mapped (host) reads `.bam` file or the off-target reads in `.fastq` format in your results directory if you provide `--save_hostremoval_mapped` and ` --save_hostremoval_unmapped` respectively. +By default nf-core/taxprofiler will only provide the `.log` file if host removal is turned on. You will only see the mapped (host) and unmapped reads in `.bam` format or the off-target reads in .fastq format in your results directory if you provide `--save_hostremoval_mapped` and ` --save_hostremoval_unmapped` respectively. > ⚠️ The resulting `.fastq` files may _not_ always be the 'final' reads that go into taxprofiling, if you also run other steps such as run merging etc.. @@ -214,33 +213,23 @@ It is used with nf-core/taxprofiler to allow removal of 'host' (e.g. human) or o -By default, nf-core taxprofiler will only provide the `.bam` file if host removal for long reads is turned on (i.e., `--save_hostremoval_mapped` and ` --save_hostremoval_unmapped`). +By default, nf-core taxprofiler will only provide the `.bam` file containing mapped and unmapped if host removal for long reads is turned on (i.e., `--save_hostremoval_mapped` and ` --save_hostremoval_unmapped`). > ℹ️ minimap2 is not yet supported as a module in MultiQC and therefore there is no dedicated section in the MultiQC HTML. Rather, alignment statistics to host genome is reported via samtools stats module in MultiQC report. -### SAMtools view +### SAMtools fastq -[SAMtools view](http://www.htslib.org/doc/samtools-view.html) views and comverts a `.sam`, `.bam`, or `.cram` alignment file. +[SAMtools fastq](http://www.htslib.org/doc/1.1/samtools.html) converts a `.sam`, `.bam`, or `.cram` alignment file to FASTQ format
    Output files - `samtoolsstats` - - `.bam`: Alignment file in BAM format + - `.fq.gz`: Alignment file in FASTQ gzip format.
    -### SAMtools bam2fq - -[SAMtools bam2fq](http://www.htslib.org/doc/1.1/samtools.html) converts a `.sam`, `.bam`, or `.cram` alignment file to FASTQ format - -
    -Output files - -- `samtoolsstats` - - `.fq.zg`: Alignment file in FASTQ gzip format. - -
    +This directory will be present and contain the unmapped reads from the FASTQ format from long-read minimap2 host removal (for short-read unmapped reads, see [bowtie2](#bowtie2), if `--save_hostremoval_unmapped` is supplied. ### SAMtools stats @@ -359,7 +348,7 @@ The most summary file is the `*combined_reports.txt` file which summarises resul - `diamond` - `.log`: A log file containing stdout information - - `*.{blast,xml,txt,daa,sam,tsv,paf,log}`: A file containing alignment information in various formats, or taxonomic information in a text-based format. Exact output depends on user choice. + - `*.{blast,xml,txt,daa,sam,tsv,paf}`: A file containing alignment information in various formats, or taxonomic information in a text-based format. Exact output depends on user choice. diff --git a/nextflow_schema.json b/nextflow_schema.json index 0c7ce3d..ee67554 100644 --- a/nextflow_schema.json +++ b/nextflow_schema.json @@ -296,8 +296,8 @@ "save_hostremoval_mapped": { "type": "boolean", "fa_icon": "fas fa-save", - "description": "Save mapped reads in BAM format from host removal", - "help_text": "Save the reads mapped to the reference genome in BAM format as output by the respective hostremoval alignment tool.\n\nThis can be useful if you wish to perform other analyses on the host organism (such as host-microbe interaction), however, you should consider whether the default mapping parameters of Bowtie2 (short-read) or minimap2 (long-read) are optimised to your context. " + "description": "Saved mapped and unmapped reads in BAM format from host removal", + "help_text": "Save the reads mapped to the reference genome and offtarget reads in BAM format as output by the respective hostremoval alignment tool.\n\nThis can be useful if you wish to perform other analyses on the host organism (such as host-microbe interaction), however, you should consider whether the default mapping parameters of Bowtie2 (short-read) or minimap2 (long-read) are optimised to your context. " }, "save_hostremoval_unmapped": { "type": "boolean", From 4123e0698130b037be2679b3938d79c144304e4e Mon Sep 17 00:00:00 2001 From: sofstam Date: Fri, 3 Feb 2023 15:54:29 +0100 Subject: [PATCH 645/789] Apply last review suggestions --- docs/output.md | 4 ++-- nextflow_schema.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/output.md b/docs/output.md index e1df0b9..0107ad9 100644 --- a/docs/output.md +++ b/docs/output.md @@ -193,7 +193,7 @@ It is used with nf-core/taxprofiler to allow removal of 'host' (e.g. human) and/ -By default nf-core/taxprofiler will only provide the `.log` file if host removal is turned on. You will only see the mapped (host) and unmapped reads in `.bam` format or the off-target reads in .fastq format in your results directory if you provide `--save_hostremoval_mapped` and ` --save_hostremoval_unmapped` respectively. +By default nf-core/taxprofiler will only provide the `.log` file if host removal is turned on. You will only see the mapped (host) and unmapped reads in `.bam` format or the off-target reads in `.fastq` format in your results directory if you provide `--save_hostremoval_mapped` and ` --save_hostremoval_unmapped` respectively. > ⚠️ The resulting `.fastq` files may _not_ always be the 'final' reads that go into taxprofiling, if you also run other steps such as run merging etc.. @@ -229,7 +229,7 @@ By default, nf-core taxprofiler will only provide the `.bam` file containing map -This directory will be present and contain the unmapped reads from the FASTQ format from long-read minimap2 host removal (for short-read unmapped reads, see [bowtie2](#bowtie2), if `--save_hostremoval_unmapped` is supplied. +This directory will be present and contain the unmapped reads from the `.fastq` format from long-read minimap2 host removal (for short-read unmapped reads, see [bowtie2](#bowtie2)), if `--save_hostremoval_unmapped` is supplied. ### SAMtools stats diff --git a/nextflow_schema.json b/nextflow_schema.json index ee67554..79a2325 100644 --- a/nextflow_schema.json +++ b/nextflow_schema.json @@ -297,7 +297,7 @@ "type": "boolean", "fa_icon": "fas fa-save", "description": "Saved mapped and unmapped reads in BAM format from host removal", - "help_text": "Save the reads mapped to the reference genome and offtarget reads in BAM format as output by the respective hostremoval alignment tool.\n\nThis can be useful if you wish to perform other analyses on the host organism (such as host-microbe interaction), however, you should consider whether the default mapping parameters of Bowtie2 (short-read) or minimap2 (long-read) are optimised to your context. " + "help_text": "Save the reads mapped to the reference genome and off-target reads in BAM format as output by the respective hostremoval alignment tool.\n\nThis can be useful if you wish to perform other analyses on the host organism (such as host-microbe interaction), however, you should consider whether the default mapping parameters of Bowtie2 (short-read) or minimap2 (long-read) are optimised to your context." }, "save_hostremoval_unmapped": { "type": "boolean", From 059cd17114814c63121d994ea8f2275584f1e12e Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Tue, 7 Feb 2023 11:43:40 +0100 Subject: [PATCH 646/789] Fix exporting of mapped/unmapped reads for consistency across both short and long reads --- conf/modules.config | 15 ++++-------- conf/test_full.config | 2 +- docs/output.md | 26 +++++++++++++-------- nextflow.config | 2 +- nextflow_schema.json | 4 ++-- subworkflows/local/longread_hostremoval.nf | 6 ++--- subworkflows/local/shortread_hostremoval.nf | 14 +++-------- 7 files changed, 31 insertions(+), 38 deletions(-) diff --git a/conf/modules.config b/conf/modules.config index cae5a45..01db6f6 100644 --- a/conf/modules.config +++ b/conf/modules.config @@ -201,6 +201,7 @@ process { ] } + // Saving unmapped reads as FQ comes via input channel! withName: BOWTIE2_ALIGN { ext.prefix = { "${meta.id}_${meta.run_accession}" } publishDir = [ @@ -212,7 +213,7 @@ process { [ path: { "${params.outdir}/bowtie2/align" }, mode: params.publish_dir_mode, - enabled: params.save_hostremoval_mapped, + enabled: params.save_hostremoval_bam, pattern: '*.bam' ], [ @@ -239,24 +240,18 @@ process { publishDir = [ path: { "${params.outdir}/minimap2/align" }, mode: params.publish_dir_mode, - enabled: params.save_hostremoval_mapped, + enabled: params.save_hostremoval_bam, pattern: '*.bam' ] } withName: SAMTOOLS_VIEW { ext.args = '-f 4' - ext.prefix = { "${meta.id}.mapped.sorted" } - publishDir = [ - path: { "${params.outdir}/samtools/view" }, - mode: params.publish_dir_mode, - enabled: params.save_hostremoval_unmapped, - pattern: '*.bam' - ] + ext.prefix = { "${meta.id}_${meta.run_accession}.unmapped" } } withName: SAMTOOLS_BAM2FQ { - ext.prefix = { "${meta.id}_${meta.run_accession}" } + ext.prefix = { "${meta.id}_${meta.run_accession}.unmapped" } publishDir = [ path: { "${params.outdir}/samtools/bam2fq" }, mode: params.publish_dir_mode, diff --git a/conf/test_full.config b/conf/test_full.config index 07099d0..e8bcb31 100644 --- a/conf/test_full.config +++ b/conf/test_full.config @@ -30,7 +30,7 @@ params { perform_shortread_hostremoval = true perform_longread_hostremoval = true save_hostremoval_index = true - save_hostremoval_mapped = true + save_hostremoval_bam = true save_hostremoval_unmapped = true perform_runmerging = true diff --git a/docs/output.md b/docs/output.md index 0107ad9..8c5bc5c 100644 --- a/docs/output.md +++ b/docs/output.md @@ -23,7 +23,7 @@ The pipeline is built using [Nextflow](https://www.nextflow.io/) and processes d - [Bowtie2](#bowtie2) - Host removal for Illumina reads - [minimap2](#minimap2) - Host removal for Nanopore reads - [SAMtools stats](#samtoolsstats) - Statistics from host removal -- [SAMtools fastq](#samtoolsfastq) - Converts the alignment file in fastq format +- [SAMtools bam2fq](#samtoolsfastq) - Converts unmapped BAM file to fastq format (minimap2 only) - [Bracken](#bracken) - Taxonomic classifier using k-mers and abundance estimations - [Kraken2](#kraken2) - Taxonomic classifier using exact k-mer matches - [KrakenUniq](#krakenuniq) - Taxonomic classifier that combines the k-mer-based classification and the number of unique k-mers found in each species @@ -179,7 +179,7 @@ You will only find the `.fastq` files in the results directory if you provide ` ### Bowtie2 -[Bowtie 2](https://bowtie-bio.sourceforge.net/bowtie2/index.shtml) is an ultrafast and memory-efficient tool for aligning sequencing reads to long reference sequences. It is particularly good at aligning reads of about 50 up to 100s or 1,000s of characters, and particularly good at aligning to relatively long (e.g. mammalian) genomes. +[Bowtie 2](https://bowtie-bio.sourceforge.net/bowtie2/index.shtml) is an ultrafast and memory-efficient tool for aligning sequencing reads to long reference sequences. It is particularly good at aligning reads of about 50 up to 100s or 1,000s of characters, and particularly good at aligning to relatively long (e.g. mammalian) genomes. It is used with nf-core/taxprofiler to allow removal of 'host' (e.g. human) and/or other possible contaminant reads (e.g. Phi X) from short-read `.fastq` files prior to profiling. @@ -187,13 +187,15 @@ It is used with nf-core/taxprofiler to allow removal of 'host' (e.g. human) and/ Output files - `bowtie2/` - - `.bam`: reads that aligned against the user-supplied reference genome + - `.bam`: BAM file containing reads that aligned against the user-supplied reference genome as well as unmapped reads - `.bowtie2.log`: log file about the mapped reads - `.unmapped.fastq.gz`: the off-target reads from the mapping that is used in downstream steps. -By default nf-core/taxprofiler will only provide the `.log` file if host removal is turned on. You will only see the mapped (host) and unmapped reads in `.bam` format or the off-target reads in `.fastq` format in your results directory if you provide `--save_hostremoval_mapped` and ` --save_hostremoval_unmapped` respectively. +By default nf-core/taxprofiler will only provide the `.log` file if host removal is turned on. You will only have a `.bam` file if you specify `--save_hostremoval_bam`. This will contain _both_ mapped and unmapped reads. You will only get FASTQ files if you specify to save `--save_hostremoval_unmapped` - these contain only unmapped reads. + +> ℹ️ Unmapped reads in FASTQ are only found in this directory for short-reads, for long-reads see [`samtools/bam2fq/`](#samtools-bam2fq) > ⚠️ The resulting `.fastq` files may _not_ always be the 'final' reads that go into taxprofiling, if you also run other steps such as run merging etc.. @@ -209,27 +211,31 @@ It is used with nf-core/taxprofiler to allow removal of 'host' (e.g. human) or o Output files - `minimap2` - - `.bam`: Alignment file in BAM format + - `.bam`: Alignment file in BAM format containing both mapped and unmapped reads. -By default, nf-core taxprofiler will only provide the `.bam` file containing mapped and unmapped if host removal for long reads is turned on (i.e., `--save_hostremoval_mapped` and ` --save_hostremoval_unmapped`). +By default, nf-core/taxprofiler will only provide the `.bam` file containing mapped and unmapped reads if saving of host removal for long reads is turned on via `--save_hostremoval_bam`. > ℹ️ minimap2 is not yet supported as a module in MultiQC and therefore there is no dedicated section in the MultiQC HTML. Rather, alignment statistics to host genome is reported via samtools stats module in MultiQC report. -### SAMtools fastq +> ℹ️ Unlike Bowtie2, minimap2 does not produce an unmapped FASTQ file by itself. See [`samtools/bam2fq`](#samtools-bam2fq) + +### SAMtools bam2fq -[SAMtools fastq](http://www.htslib.org/doc/1.1/samtools.html) converts a `.sam`, `.bam`, or `.cram` alignment file to FASTQ format +[SAMtools bam2fq](http://www.htslib.org/doc/1.1/samtools.html) converts a `.sam`, `.bam`, or `.cram` alignment file to FASTQ format
    Output files - `samtoolsstats` - - `.fq.gz`: Alignment file in FASTQ gzip format. + - `_interleaved.fq.gz`: Unmapped reads only in FASTQ gzip format
    -This directory will be present and contain the unmapped reads from the `.fastq` format from long-read minimap2 host removal (for short-read unmapped reads, see [bowtie2](#bowtie2)), if `--save_hostremoval_unmapped` is supplied. +This directory will be present and contain the unmapped reads from the `.fastq` format from long-read minimap2 host removal, if `--save_hostremoval_unmapped` is supplied + +> ℹ️ For short-read unmapped reads, see [bowtie2](#bowtie2). ### SAMtools stats diff --git a/nextflow.config b/nextflow.config index f5ab538..45a3cc7 100644 --- a/nextflow.config +++ b/nextflow.config @@ -103,7 +103,7 @@ params { shortread_hostremoval_index = null longread_hostremoval_index = null save_hostremoval_index = false - save_hostremoval_mapped = false + save_hostremoval_bam = false save_hostremoval_unmapped = false diff --git a/nextflow_schema.json b/nextflow_schema.json index 79a2325..89cad56 100644 --- a/nextflow_schema.json +++ b/nextflow_schema.json @@ -293,7 +293,7 @@ "description": "Save mapping index of input reference when not already supplied by user", "help_text": "Save the output files of the in-built indexing of the host genome.\n\nThis is recommend to be turned on if you plan to use the same reference genome multiple times, as supplying the directory or file to `--shortread_hostremoval_index` or `--longread_hostremoval_index` respectively can speed up runtime of future runs. Once generated, we recommend you place this file _outside_ of your run results directory in a central 'cache' directory you and others using your machine can access and supply to the pipeline." }, - "save_hostremoval_mapped": { + "save_hostremoval_bam": { "type": "boolean", "fa_icon": "fas fa-save", "description": "Saved mapped and unmapped reads in BAM format from host removal", @@ -303,7 +303,7 @@ "type": "boolean", "fa_icon": "fas fa-save", "description": "Save unmapped reads in FASTQ format from host removal", - "help_text": "Save the unreads mapped to the reference genome in FASTQ format (as exported from `samtools view`).\n\nThis can be useful if you wish to perform other analyses on the off-target reads from the host mapping, such as manual profiling or _de novo_ assembly." + "help_text": "Save only the reads NOT mapped to the reference genome in FASTQ format (as exported from `samtools view` and `bam2fq`).\n\nThis can be useful if you wish to perform other analyses on the off-target reads from the host mapping, such as manual profiling or _de novo_ assembly." } }, "fa_icon": "fas fa-user-times" diff --git a/subworkflows/local/longread_hostremoval.nf b/subworkflows/local/longread_hostremoval.nf index 3f9fdef..63fce58 100644 --- a/subworkflows/local/longread_hostremoval.nf +++ b/subworkflows/local/longread_hostremoval.nf @@ -34,14 +34,15 @@ workflow LONGREAD_HOSTREMOVAL { [ meta, reads, [] ] } - + // Generate unmapped reads FASTQ for downstream taxprofiling SAMTOOLS_VIEW ( ch_minimap2_mapped , [], [] ) ch_versions = ch_versions.mix( SAMTOOLS_VIEW.out.versions.first() ) SAMTOOLS_BAM2FQ ( SAMTOOLS_VIEW.out.bam, false ) ch_versions = ch_versions.mix( SAMTOOLS_BAM2FQ.out.versions.first() ) - SAMTOOLS_INDEX ( SAMTOOLS_VIEW.out.bam ) + // Indexing whole BAM for host removal statistics + SAMTOOLS_INDEX ( MINIMAP2_ALIGN.out.bam ) ch_versions = ch_versions.mix( SAMTOOLS_INDEX.out.versions.first() ) bam_bai = MINIMAP2_ALIGN.out.bam @@ -51,7 +52,6 @@ workflow LONGREAD_HOSTREMOVAL { ch_versions = ch_versions.mix(SAMTOOLS_STATS.out.versions.first()) ch_multiqc_files = ch_multiqc_files.mix( SAMTOOLS_STATS.out.stats ) - emit: stats = SAMTOOLS_STATS.out.stats //channel: [val(meta), [reads ] ] reads = SAMTOOLS_BAM2FQ.out.reads // channel: [ val(meta), [ reads ] ] diff --git a/subworkflows/local/shortread_hostremoval.nf b/subworkflows/local/shortread_hostremoval.nf index 71ebb08..50cd0d7 100644 --- a/subworkflows/local/shortread_hostremoval.nf +++ b/subworkflows/local/shortread_hostremoval.nf @@ -6,7 +6,6 @@ include { BOWTIE2_BUILD } from '../../modules/nf-core/bowtie2/build/ include { BOWTIE2_ALIGN } from '../../modules/nf-core/bowtie2/align/main' include { SAMTOOLS_INDEX } from '../../modules/nf-core/samtools/index/main' include { SAMTOOLS_STATS } from '../../modules/nf-core/samtools/stats/main' -include { SAMTOOLS_VIEW } from '../../modules/nf-core/samtools/view/main' workflow SHORTREAD_HOSTREMOVAL { take: @@ -25,20 +24,13 @@ workflow SHORTREAD_HOSTREMOVAL { ch_bowtie2_index = index.first() } + // Map, generate BAM with all reads and unmapped reads in FASTQ for downstream BOWTIE2_ALIGN ( reads, ch_bowtie2_index, true, true) ch_versions = ch_versions.mix( BOWTIE2_ALIGN.out.versions.first() ) ch_multiqc_files = ch_multiqc_files.mix( BOWTIE2_ALIGN.out.log ) - ch_bowtie2_mapped = BOWTIE2_ALIGN.out.bam - .map { - meta, reads -> - [ meta, reads, [] ] - } - - SAMTOOLS_VIEW ( ch_bowtie2_mapped, [], [] ) - ch_versions = ch_versions.mix( SAMTOOLS_VIEW.out.versions.first() ) - - SAMTOOLS_INDEX ( SAMTOOLS_VIEW.out.bam ) + // Indexing whole BAM for host removal statistics + SAMTOOLS_INDEX ( BOWTIE2_ALIGN.out.bam ) ch_versions = ch_versions.mix( SAMTOOLS_INDEX.out.versions.first() ) bam_bai = BOWTIE2_ALIGN.out.bam From 18886c0cbca45a1959b5c433822ee3e8f5163957 Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Tue, 7 Feb 2023 15:51:25 +0100 Subject: [PATCH 647/789] Start trying a different method with maps in profiling --- conf/modules.config | 2 +- docs/usage.md | 16 +++++++++------- subworkflows/local/db_check.nf | 11 +++++++---- subworkflows/local/profiling.nf | 15 ++++++++++++++- 4 files changed, 31 insertions(+), 13 deletions(-) diff --git a/conf/modules.config b/conf/modules.config index cae5a45..47c4663 100644 --- a/conf/modules.config +++ b/conf/modules.config @@ -359,7 +359,7 @@ process { } withName: BRACKEN_BRACKEN { - errorStrategy = 'ignore' + ext.args = { "${meta.db_params}" } ext.prefix = params.perform_runmerging ? { "${meta.id}_${meta.db_name}.bracken" } : { "${meta.id}_${meta.run_accession}_${meta.db_name}.bracken" } publishDir = [ path: { "${params.outdir}/bracken/${meta.db_name}/" }, diff --git a/docs/usage.md b/docs/usage.md index 366e0e5..21c983d 100644 --- a/docs/usage.md +++ b/docs/usage.md @@ -95,7 +95,7 @@ An example database sheet can look as follows, where 5 tools are being used, and tool,db_name,db_params,db_path malt,malt85,-id 85,///malt/testdb-malt/ malt,malt95,-id 90,///malt/testdb-malt.tar.gz -bracken,db1,,///bracken/testdb-bracken.tar.gz +bracken,db1,;-r 150,///bracken/testdb-bracken.tar.gz kraken2,db2,--quick,///kraken2/testdb-kraken2.tar.gz krakenuniq,db3,,///krakenuniq/testdb-krakenuniq.tar.gz centrifuge,db1,,///centrifuge/minigut_cf.tar.gz @@ -103,14 +103,16 @@ metaphlan3,db1,,///metaphlan3/metaphlan_database/ motus,db_mOTU,,///motus/motus_database/ ``` +Bracken **must** have a _semi-colon_ `;` list as in `db_params`, regardless of whether you have parameters or not. This is to allow to specify the Kraken2 parameters before, and Bracken parameters after the `;` as Bracken is a two step process. This is particularly important if you supply a Bracken database with a non-default read length parameter. + Column specifications are as follows: -| Column | Description | -| ----------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `tool` | Taxonomic profiling tool (supported by nf-core/taxprofiler) that the database has been indexed for [required]. Please note that `bracken` also implies running `kraken2` on the same database. | -| `db_name` | A unique name per tool for the particular database [required]. Please note that names need to be unique across both `kraken2` and `bracken` as well, even if re-using the same database. | -| `db_params` | Any parameters of the given taxonomic classifier/profiler that you wish to specify that the taxonomic classifier/profiling tool should use when profiling against this specific database. Can be empty to use taxonomic classifier/profiler defaults. Must not be surrounded by quotes [required]. We generally do not recommend specifying parameters here that turn on/off saving of output files or specifying particular file extensions - this should be already addressed via pipeline parameters. | -| `db_path` | Path to the database. Can either be a path to a directory containing the database index files or a `.tar.gz` file which contains the compressed database directory with the same name as the tar archive, minus `.tar.gz` [required]. | +| Column | Description | +| ----------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `tool` | Taxonomic profiling tool (supported by nf-core/taxprofiler) that the database has been indexed for [required]. Please note that `bracken` also implies running `kraken2` on the same database. | +| `db_name` | A unique name per tool for the particular database [required]. Please note that names need to be unique across both `kraken2` and `bracken` as well, even if re-using the same database. | +| `db_params` | Any parameters of the given taxonomic classifier/profiler that you wish to specify that the taxonomic classifier/profiling tool should use when profiling against this specific database. Can be empty to use taxonomic classifier/profiler defaults. Must not be surrounded by quotes [required]. We generally do not recommend specifying parameters here that turn on/off saving of output files or specifying particular file extensions - this should be already addressed via pipeline parameters. For Bracken databases, must at a minimum contain a `;` separating Kraken2 from Bracken parameters. | +| `db_path` | Path to the database. Can either be a path to a directory containing the database index files or a `.tar.gz` file which contains the compressed database directory with the same name as the tar archive, minus `.tar.gz` [required]. | > 💡 You can also specify the same database directory/file twice (ensuring unique `db_name`s) and specify different parameters for each database to compare the effect of different parameters during classification/profiling. diff --git a/subworkflows/local/db_check.nf b/subworkflows/local/db_check.nf index 270f597..5a52704 100644 --- a/subworkflows/local/db_check.nf +++ b/subworkflows/local/db_check.nf @@ -13,8 +13,8 @@ workflow DB_CHECK { ch_dbs_for_untar = Channel.empty() ch_final_dbs = Channel.empty() - // special check to check _between_ rows, for which we must group rows together - // note: this will run in parallel to within-row validity, but we can assume this will run faster thus will fail first + // Special check to check _between_ rows, for which we must group rows together + // Note: this will run in parallel to within-row validity, but we can assume this will run faster thus will fail first Channel.fromPath(dbsheet) .splitCsv ( header:true, sep:',' ) .map {[it.tool, it.db_name] } @@ -25,13 +25,14 @@ workflow DB_CHECK { if ( unique_names.size() < db_name.size() ) exit 1, "[nf-core/taxprofiler] ERROR: Each database for a tool must have a unique name, duplicated detected. Tool: ${tool}, Database name: ${unique_names}" } - // normal checks for within-row validity, so can be moved to separate functions + // Normal checks for within-row validity, so can be moved to separate functions parsed_samplesheet = Channel.fromPath(dbsheet) .splitCsv ( header:true, sep:',' ) .map { validate_db_rows(it) create_db_channels(it) } + .dump(tag: "blah") ch_dbs_for_untar = parsed_samplesheet .branch { @@ -40,7 +41,7 @@ workflow DB_CHECK { } // Filter the channel to untar only those databases for tools that are selected to be run by the user. - ch_input_untar = ch_dbs_for_untar.untar.dump() + ch_input_untar = ch_dbs_for_untar.untar .filter { params["run_${it[0]['tool']}"] } @@ -71,6 +72,8 @@ def validate_db_rows(LinkedHashMap row){ if ( row.db_params.contains('"') ) exit 1, "[nf-core/taxprofiler] ERROR: Invalid database db_params entry. No quotes allowed. Error in: ${row}" if ( row.db_params.contains("'") ) exit 1, "[nf-core/taxprofiler] ERROR: Invalid database db_params entry. No quotes allowed. Error in: ${row}" + if ( row.tool == 'bracken' && !row.db_params.contains(";") ) exit 1, "[nf-core/taxprofiler] ERROR: Invalid database db_params entry. Bracken requires a semi-colon. Error in: ${row}" + } def create_db_channels(LinkedHashMap row) { diff --git a/subworkflows/local/profiling.nf b/subworkflows/local/profiling.nf index 6b5347f..0cd6110 100644 --- a/subworkflows/local/profiling.nf +++ b/subworkflows/local/profiling.nf @@ -122,6 +122,15 @@ workflow PROFILING { if ( params.run_kraken2 ) { ch_input_for_kraken2 = ch_input_for_profiling.kraken2 + .dump(tag: "ch_input_for_kraken2") + .map { + // Have to pick first element if using bracken, + // as db sheet for bracken must have ; sep list to + meta, reads, db_meta, db -> + def db_meta_new = db_meta.clone() + db_meta_new['db_params'] = db_meta['tool'] == 'bracken' ? db_meta_new['db_params'].split(;)[0] : db_meta_new['db_params'] + [ meta, reads, db_meta_new, db ] + } .multiMap { it -> reads: [ it[0] + it[2], it[1] ] @@ -155,15 +164,19 @@ workflow PROFILING { ch_kraken2_output = KRAKEN2_STANDARD_REPORT(ch_kraken2_output).report } + // TODO UPDATE BRACKEN TO TAKE SECOND ELEMENT OF LIST + // NEED TO DO CHECKS WHEN ONE OR THE OTHER IS EMPTY AS WELL + // Extract the database name to combine by. ch_bracken_databases = databases .filter { meta, db -> meta['tool'] == 'bracken' } .map { meta, db -> [meta['db_name'], meta, db] } - // Extract the database name to combine by. + // Combine back with the reads ch_input_for_bracken = ch_kraken2_output .map { meta, report -> [meta['db_name'], meta, report] } .combine(ch_bracken_databases, by: 0) + .dump(tag: "ch_input_for_bracken") .multiMap { key, meta, report, db_meta, db -> report: [meta + db_meta, report] db: db From fe3d42ffd78a1f6ae7c8c3ab334e1036ba32d0b0 Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Wed, 8 Feb 2023 13:34:36 +0100 Subject: [PATCH 648/789] Make bracken db_params be a semi-colon separate list to allow kraken and bracken parameters --- subworkflows/local/db_check.nf | 1 - subworkflows/local/profiling.nf | 52 ++++++++++++++++++++++++++------- 2 files changed, 42 insertions(+), 11 deletions(-) diff --git a/subworkflows/local/db_check.nf b/subworkflows/local/db_check.nf index 5a52704..20402f6 100644 --- a/subworkflows/local/db_check.nf +++ b/subworkflows/local/db_check.nf @@ -32,7 +32,6 @@ workflow DB_CHECK { validate_db_rows(it) create_db_channels(it) } - .dump(tag: "blah") ch_dbs_for_untar = parsed_samplesheet .branch { diff --git a/subworkflows/local/profiling.nf b/subworkflows/local/profiling.nf index 0cd6110..16caa8f 100644 --- a/subworkflows/local/profiling.nf +++ b/subworkflows/local/profiling.nf @@ -120,17 +120,28 @@ workflow PROFILING { } if ( params.run_kraken2 ) { - - ch_input_for_kraken2 = ch_input_for_profiling.kraken2 - .dump(tag: "ch_input_for_kraken2") + // Have to pick first element of db_params if using bracken, + // as db sheet for bracken must have ; sep list to + // distinguish between kraken and bracken parameters + ch_input_for_kraken2 = ch_input_for_profiling.kraken2 + .dump(tag: "ch_input_for_kraken2_b4") .map { - // Have to pick first element if using bracken, - // as db sheet for bracken must have ; sep list to meta, reads, db_meta, db -> def db_meta_new = db_meta.clone() - db_meta_new['db_params'] = db_meta['tool'] == 'bracken' ? db_meta_new['db_params'].split(;)[0] : db_meta_new['db_params'] + + // Only take second element if one exists + def parsed_params = db_meta_new['db_params'].split(";") + if ( parsed_params.size() == 2 ) { + db_meta_new['db_params'] = parsed_params[0] + } else if ( parsed_params.size() == 0 ) { + db_meta_new['db_params'] = "" + } else { + db_meta_new['db_params'] = parsed_params[0] + } + [ meta, reads, db_meta_new, db ] } + .dump(tag: "ch_input_for_kraken2_after") .multiMap { it -> reads: [ it[0] + it[2], it[1] ] @@ -164,9 +175,6 @@ workflow PROFILING { ch_kraken2_output = KRAKEN2_STANDARD_REPORT(ch_kraken2_output).report } - // TODO UPDATE BRACKEN TO TAKE SECOND ELEMENT OF LIST - // NEED TO DO CHECKS WHEN ONE OR THE OTHER IS EMPTY AS WELL - // Extract the database name to combine by. ch_bracken_databases = databases .filter { meta, db -> meta['tool'] == 'bracken' } @@ -176,7 +184,31 @@ workflow PROFILING { ch_input_for_bracken = ch_kraken2_output .map { meta, report -> [meta['db_name'], meta, report] } .combine(ch_bracken_databases, by: 0) - .dump(tag: "ch_input_for_bracken") + .dump(tag: "ch_input_for_bracken_b4") + .map { + + key, meta, reads, db_meta, db -> + def db_meta_new = db_meta.clone() + + // Have to pick second element if using bracken, as first element + // contains kraken parameters + if ( db_meta['tool'] == 'bracken' ) { + + // Only take second element if one exists + def parsed_params = db_meta_new['db_params'].split(";") + if ( parsed_params.size() == 2 ) { + db_meta_new['db_params'] = parsed_params[1] + } else { + db_meta_new['db_params'] = "" + } + + } else { + db_meta_new['db_params'] + } + + [ key, meta, reads, db_meta_new, db ] + } + .dump(tag: "ch_input_for_bracken_after") .multiMap { key, meta, report, db_meta, db -> report: [meta + db_meta, report] db: db From b3837cce5b4397ae0e0f17a296ff1d31d29285bd Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Wed, 8 Feb 2023 15:44:37 +0100 Subject: [PATCH 649/789] Relax strictness so can supply empty db_params but block if only single parameter with out ; --- docs/usage.md | 2 +- subworkflows/local/db_check.nf | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/docs/usage.md b/docs/usage.md index 21c983d..53dc8c3 100644 --- a/docs/usage.md +++ b/docs/usage.md @@ -103,7 +103,7 @@ metaphlan3,db1,,///metaphlan3/metaphlan_database/ motus,db_mOTU,,///motus/motus_database/ ``` -Bracken **must** have a _semi-colon_ `;` list as in `db_params`, regardless of whether you have parameters or not. This is to allow to specify the Kraken2 parameters before, and Bracken parameters after the `;` as Bracken is a two step process. This is particularly important if you supply a Bracken database with a non-default read length parameter. +For Bracken, if you wish to supply amy parameters to either the Kraken or Bracken step you **must** have a _semi-colon_ `;` list as in `db_params`. This is to allow to specify the Kraken2 parameters before, and Bracken parameters after the `;` as Bracken is a two step process. This is particularly important if you supply a Bracken database with a non-default read length parameter. If you do not have any parameters to specify, you can leave this as empty. Column specifications are as follows: diff --git a/subworkflows/local/db_check.nf b/subworkflows/local/db_check.nf index 20402f6..35240ed 100644 --- a/subworkflows/local/db_check.nf +++ b/subworkflows/local/db_check.nf @@ -71,7 +71,8 @@ def validate_db_rows(LinkedHashMap row){ if ( row.db_params.contains('"') ) exit 1, "[nf-core/taxprofiler] ERROR: Invalid database db_params entry. No quotes allowed. Error in: ${row}" if ( row.db_params.contains("'") ) exit 1, "[nf-core/taxprofiler] ERROR: Invalid database db_params entry. No quotes allowed. Error in: ${row}" - if ( row.tool == 'bracken' && !row.db_params.contains(";") ) exit 1, "[nf-core/taxprofiler] ERROR: Invalid database db_params entry. Bracken requires a semi-colon. Error in: ${row}" + // check if any form of bracken params, that it must have `;` + if ( row.tool == 'bracken' && row.db_params && !row.db_params.contains(";") ) exit 1, "[nf-core/taxprofiler] ERROR: Invalid database db_params entry. Bracken requires a semi-colon if passing parameter. Error in: ${row}" } From 70eb84b8d5d310c666d0de2fb5f9db401571cc39 Mon Sep 17 00:00:00 2001 From: "James A. Fellows Yates" Date: Thu, 9 Feb 2023 08:01:52 +0100 Subject: [PATCH 650/789] Apply suggestions from code review Co-authored-by: Moritz E. Beber --- conf/modules.config | 1 + docs/usage.md | 2 +- subworkflows/local/profiling.nf | 3 --- 3 files changed, 2 insertions(+), 4 deletions(-) diff --git a/conf/modules.config b/conf/modules.config index 47c4663..b0a6e03 100644 --- a/conf/modules.config +++ b/conf/modules.config @@ -359,6 +359,7 @@ process { } withName: BRACKEN_BRACKEN { + errorStrategy = 'ignore' ext.args = { "${meta.db_params}" } ext.prefix = params.perform_runmerging ? { "${meta.id}_${meta.db_name}.bracken" } : { "${meta.id}_${meta.run_accession}_${meta.db_name}.bracken" } publishDir = [ diff --git a/docs/usage.md b/docs/usage.md index 53dc8c3..523d92a 100644 --- a/docs/usage.md +++ b/docs/usage.md @@ -103,7 +103,7 @@ metaphlan3,db1,,///metaphlan3/metaphlan_database/ motus,db_mOTU,,///motus/motus_database/ ``` -For Bracken, if you wish to supply amy parameters to either the Kraken or Bracken step you **must** have a _semi-colon_ `;` list as in `db_params`. This is to allow to specify the Kraken2 parameters before, and Bracken parameters after the `;` as Bracken is a two step process. This is particularly important if you supply a Bracken database with a non-default read length parameter. If you do not have any parameters to specify, you can leave this as empty. +For Bracken, if you wish to supply any parameters to either the Kraken or Bracken step you **must** have a _semi-colon_ `;` list as in `db_params`. This is to allow to specify the Kraken2 parameters before, and Bracken parameters after the `;` as Bracken is a two step process. This is particularly important if you supply a Bracken database with a non-default read length parameter. If you do not have any parameters to specify, you can leave this as empty. Column specifications are as follows: diff --git a/subworkflows/local/profiling.nf b/subworkflows/local/profiling.nf index 16caa8f..cf5a9b8 100644 --- a/subworkflows/local/profiling.nf +++ b/subworkflows/local/profiling.nf @@ -141,7 +141,6 @@ workflow PROFILING { [ meta, reads, db_meta_new, db ] } - .dump(tag: "ch_input_for_kraken2_after") .multiMap { it -> reads: [ it[0] + it[2], it[1] ] @@ -184,7 +183,6 @@ workflow PROFILING { ch_input_for_bracken = ch_kraken2_output .map { meta, report -> [meta['db_name'], meta, report] } .combine(ch_bracken_databases, by: 0) - .dump(tag: "ch_input_for_bracken_b4") .map { key, meta, reads, db_meta, db -> @@ -208,7 +206,6 @@ workflow PROFILING { [ key, meta, reads, db_meta_new, db ] } - .dump(tag: "ch_input_for_bracken_after") .multiMap { key, meta, report, db_meta, db -> report: [meta + db_meta, report] db: db From a731669b8e2207c4167b9bb9c10ca7626604b57e Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Thu, 9 Feb 2023 13:31:57 +0100 Subject: [PATCH 651/789] optimisation for single-cpu processes --- conf/base.config | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/conf/base.config b/conf/base.config index d8b8fa7..4200e22 100644 --- a/conf/base.config +++ b/conf/base.config @@ -28,7 +28,7 @@ process { // See https://www.nextflow.io/docs/latest/config.html#config-process-selectors withLabel:process_single { cpus = { check_max( 1 , 'cpus' ) } - memory = { check_max( 6.GB * task.attempt, 'memory' ) } + memory = { check_max( 1.GB * task.attempt, 'memory' ) } time = { check_max( 4.h * task.attempt, 'time' ) } } withLabel:process_low { @@ -62,4 +62,9 @@ process { withName:CUSTOM_DUMPSOFTWAREVERSIONS { cache = false } + withName: rma2info { + cpus = { check_max( 1 , 'cpus' ) } + memory = { check_max( 6.GB * task.attempt, 'memory' ) } + time = { check_max( 4.h * task.attempt, 'time' ) } + } } From cc7d219267798020183ae2f812e66178d0d2107f Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Thu, 9 Feb 2023 13:32:29 +0100 Subject: [PATCH 652/789] Revert "optimisation for single-cpu processes" This reverts commit a731669b8e2207c4167b9bb9c10ca7626604b57e. --- conf/base.config | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/conf/base.config b/conf/base.config index 4200e22..d8b8fa7 100644 --- a/conf/base.config +++ b/conf/base.config @@ -28,7 +28,7 @@ process { // See https://www.nextflow.io/docs/latest/config.html#config-process-selectors withLabel:process_single { cpus = { check_max( 1 , 'cpus' ) } - memory = { check_max( 1.GB * task.attempt, 'memory' ) } + memory = { check_max( 6.GB * task.attempt, 'memory' ) } time = { check_max( 4.h * task.attempt, 'time' ) } } withLabel:process_low { @@ -62,9 +62,4 @@ process { withName:CUSTOM_DUMPSOFTWAREVERSIONS { cache = false } - withName: rma2info { - cpus = { check_max( 1 , 'cpus' ) } - memory = { check_max( 6.GB * task.attempt, 'memory' ) } - time = { check_max( 4.h * task.attempt, 'time' ) } - } } From ce1118930dbf0a888421fea00728107d46094af5 Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Thu, 9 Feb 2023 13:33:39 +0100 Subject: [PATCH 653/789] Resource optimisation --- conf/base.config | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/conf/base.config b/conf/base.config index d8b8fa7..c06d231 100644 --- a/conf/base.config +++ b/conf/base.config @@ -28,7 +28,7 @@ process { // See https://www.nextflow.io/docs/latest/config.html#config-process-selectors withLabel:process_single { cpus = { check_max( 1 , 'cpus' ) } - memory = { check_max( 6.GB * task.attempt, 'memory' ) } + memory = { check_max( 1.GB * task.attempt, 'memory' ) } time = { check_max( 4.h * task.attempt, 'time' ) } } withLabel:process_low { @@ -62,4 +62,9 @@ process { withName:CUSTOM_DUMPSOFTWAREVERSIONS { cache = false } + withName: RMA2INFO { + cpus = { check_max( 1 , 'cpus' ) } + memory = { check_max( 6.GB * task.attempt, 'memory' ) } + time = { check_max( 4.h * task.attempt, 'time' ) } + } } From 79b4db9a34cc032e1ea0c92eee17db803731cfe6 Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Thu, 16 Feb 2023 13:39:05 +0100 Subject: [PATCH 654/789] Move kaiju2table to profiling --- conf/modules.config | 4 ++-- docs/output.md | 9 +++++---- subworkflows/local/profiling.nf | 10 ++++++++-- subworkflows/local/standardisation_profiles.nf | 16 ---------------- 4 files changed, 15 insertions(+), 24 deletions(-) diff --git a/conf/modules.config b/conf/modules.config index 8ef8728..815e216 100644 --- a/conf/modules.config +++ b/conf/modules.config @@ -487,9 +487,9 @@ process { } withName: KAIJU_KAIJU2TABLE { - ext.prefix = { "kaiju_${meta.id}_combined_reports" } + ext.prefix = params.perform_runmerging ? { "${meta.id}_${meta.db_name}.kaijutable" } : { "${meta.id}_${meta.run_accession}_${meta.db_name}.kaijutable" } publishDir = [ - path: { "${params.outdir}/kaiju/" }, + path: { "${params.outdir}/kaiju/${meta.db_name}/" }, mode: params.publish_dir_mode, pattern: '*.{txt}' ] diff --git a/docs/output.md b/docs/output.md index 8c5bc5c..1a03109 100644 --- a/docs/output.md +++ b/docs/output.md @@ -332,18 +332,19 @@ The main taxonomic classification files from Centrifuge are the `_combined_repor ### Kaiju -[Kaiju](https://github.com/bioinformatics-centre/kaiju) is a taxonomic classifier that finds maximum exact matches on the protein-level using the Burrows–Wheeler transform. +[Kaiju](https://github.com/bioinformatics-centre/kaiju) is a taxonomic classifier that finds maximum exact matches on the protein-level using the Burrows-Wheeler transform.
    Output files - `kaiju` - - `.tsv`: A file that summarises the fraction abundance, taxonomic ID, number of reads and taxonomic names - - `kaiju__combined_reports.txt`: A combined profile of all samples aligned to a given database (as generated by `kaiju2table`) + - `/` + - `_.kaiju.tsv`: Raw output from Kaiju with taxonomic rank, read ID and taxonic ID + - `_.kaijutable.txt`: Summarised Kaiju output with fraction abundance, taxonomic ID, number of reads, and taxonomic names (as generated by `kaiju2table`)
    -The most summary file is the `*combined_reports.txt` file which summarises results across all samples. However if you wish to look at more precise information about each assignment, check the per-sample file. The default taxonomic rank is `species`. You can provide a different one by updating the argument `--kaiju_taxon_rank`. +The most useful summary file is the `*kaijutable.txt` file which summarises hits across all treads. However if you wish to look at more precise information on a per-read bases `*tsv` file. The default taxonomic rank is `species`. You can provide a different one by updating the argument `--kaiju_taxon_rank`. ### DIAMOND diff --git a/subworkflows/local/profiling.nf b/subworkflows/local/profiling.nf index cf5a9b8..cbd8071 100644 --- a/subworkflows/local/profiling.nf +++ b/subworkflows/local/profiling.nf @@ -5,12 +5,13 @@ include { MALT_RUN } from '../../modules/nf-core/malt/run/main' include { MEGAN_RMA2INFO as MEGAN_RMA2INFO_TSV } from '../../modules/nf-core/megan/rma2info/main' include { KRAKEN2_KRAKEN2 } from '../../modules/nf-core/kraken2/kraken2/main' -include { KRAKEN2_STANDARD_REPORT } from '../../modules/local/kraken2_standard_report' +include { KRAKEN2_STANDARD_REPORT } from '../../modules/local/kraken2_standard_report' include { BRACKEN_BRACKEN } from '../../modules/nf-core/bracken/bracken/main' include { CENTRIFUGE_CENTRIFUGE } from '../../modules/nf-core/centrifuge/centrifuge/main' include { CENTRIFUGE_KREPORT } from '../../modules/nf-core/centrifuge/kreport/main' include { METAPHLAN3_METAPHLAN3 } from '../../modules/nf-core/metaphlan3/metaphlan3/main' include { KAIJU_KAIJU } from '../../modules/nf-core/kaiju/kaiju/main' +include { KAIJU_KAIJU2TABLE } from '../../modules/nf-core/kaiju/kaiju2table/main' include { DIAMOND_BLASTX } from '../../modules/nf-core/diamond/blastx/main' include { MOTUS_PROFILE } from '../../modules/nf-core/motus/profile/main' include { KRAKENUNIQ_PRELOADEDKRAKENUNIQ } from '../../modules/nf-core/krakenuniq/preloadedkrakenuniq/main' @@ -269,7 +270,12 @@ workflow PROFILING { KAIJU_KAIJU ( ch_input_for_kaiju.reads, ch_input_for_kaiju.db) ch_versions = ch_versions.mix( KAIJU_KAIJU.out.versions.first() ) - ch_raw_classifications = ch_raw_classifications.mix( KAIJU_KAIJU.out.results ) + + KAIJU_KAIJU2TABLE ( KAIJU_KAIJU.out.results, ch_input_for_kaiju.db, params.kaiju_taxon_rank) + ch_versions = ch_versions.mix( KAIJU_KAIJU2TABLE.out.versions ) + + ch_multiqc_files = ch_multiqc_files.mix( KAIJU_KAIJU2TABLE.out.summary ) + ch_raw_classifications = ch_raw_classifications.mix( KAIJU_KAIJU2TABLE.out.summary ) } diff --git a/subworkflows/local/standardisation_profiles.nf b/subworkflows/local/standardisation_profiles.nf index 582aaed..303d8fd 100644 --- a/subworkflows/local/standardisation_profiles.nf +++ b/subworkflows/local/standardisation_profiles.nf @@ -3,7 +3,6 @@ // include { BRACKEN_COMBINEBRACKENOUTPUTS } from '../../modules/nf-core/bracken/combinebrackenoutputs/main' -include { KAIJU_KAIJU2TABLE } from '../../modules/nf-core/kaiju/kaiju2table/main' include { KRAKENTOOLS_COMBINEKREPORTS as KRAKENTOOLS_COMBINEKREPORTS_KRAKEN } from '../../modules/nf-core/krakentools/combinekreports/main' include { KRAKENTOOLS_COMBINEKREPORTS as KRAKENTOOLS_COMBINEKREPORTS_CENTRIFUGE } from '../../modules/nf-core/krakentools/combinekreports/main' include { METAPHLAN3_MERGEMETAPHLANTABLES } from '../../modules/nf-core/metaphlan3/mergemetaphlantables/main' @@ -79,21 +78,6 @@ workflow STANDARDISATION_PROFILES { ch_multiqc_files = ch_multiqc_files.mix( KRAKENTOOLS_COMBINEKREPORTS_CENTRIFUGE.out.txt ) ch_versions = ch_versions.mix( KRAKENTOOLS_COMBINEKREPORTS_CENTRIFUGE.out.versions ) - // Kaiju - - // Collect and replace id for db_name for prefix - ch_profiles_for_kaiju = ch_input_classifications.kaiju - .map { [it[0]['db_name'], it[1]] } - .groupTuple() - .map { - [[id:it[0]], it[1]] - } - - KAIJU_KAIJU2TABLE ( ch_profiles_for_kaiju, ch_input_databases.kaiju.map{it[1]}, params.kaiju_taxon_rank) - ch_standardised_tables = ch_standardised_tables.mix( KAIJU_KAIJU2TABLE.out.summary ) - ch_multiqc_files = ch_multiqc_files.mix( KAIJU_KAIJU2TABLE.out.summary ) - ch_versions = ch_versions.mix( KAIJU_KAIJU2TABLE.out.versions ) - // Kraken2 // Collect and replace id for db_name for prefix From 4e818efe6d156e9152eea00655aa09d069b0a253 Mon Sep 17 00:00:00 2001 From: "James A. Fellows Yates" Date: Thu, 16 Feb 2023 13:45:04 +0100 Subject: [PATCH 655/789] Update docs/output.md Co-authored-by: Sofia Stamouli <91951607+sofstam@users.noreply.github.com> --- docs/output.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/output.md b/docs/output.md index 1a03109..f875c7e 100644 --- a/docs/output.md +++ b/docs/output.md @@ -344,7 +344,7 @@ The main taxonomic classification files from Centrifuge are the `_combined_repor -The most useful summary file is the `*kaijutable.txt` file which summarises hits across all treads. However if you wish to look at more precise information on a per-read bases `*tsv` file. The default taxonomic rank is `species`. You can provide a different one by updating the argument `--kaiju_taxon_rank`. +The most useful summary file is the `*kaijutable.txt` file which summarises hits across all reads. However if you wish to look at more precise information on a per-read basis, see the `*tsv` file. The default taxonomic rank is `species`. You can provide a different one by updating the argument `--kaiju_taxon_rank`. ### DIAMOND From 7dfcdd015b77c28ff172fcca1f568cdef0574e1e Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Thu, 16 Feb 2023 14:02:13 +0100 Subject: [PATCH 656/789] Re-add the 'native' combined kaiju output --- conf/modules.config | 11 ++++++++++- docs/output.md | 3 ++- subworkflows/local/profiling.nf | 5 ++--- subworkflows/local/standardisation_profiles.nf | 16 ++++++++++++++++ 4 files changed, 30 insertions(+), 5 deletions(-) diff --git a/conf/modules.config b/conf/modules.config index 815e216..22001be 100644 --- a/conf/modules.config +++ b/conf/modules.config @@ -486,7 +486,7 @@ process { ext.args = { "${meta.db_params}" } } - withName: KAIJU_KAIJU2TABLE { + withName: '.*PROFILING:KAIJU_KAIJU2TABLE' { ext.prefix = params.perform_runmerging ? { "${meta.id}_${meta.db_name}.kaijutable" } : { "${meta.id}_${meta.run_accession}_${meta.db_name}.kaijutable" } publishDir = [ path: { "${params.outdir}/kaiju/${meta.db_name}/" }, @@ -495,6 +495,15 @@ process { ] } + withName: '.*STANDARDISATION_PROFILES:KAIJU_KAIJU2TABLE' { + ext.prefix = { "kaiju_${meta.id}_combined_reports" } + publishDir = [ + path: { "${params.outdir}/kaiju/" }, + mode: params.publish_dir_mode, + pattern: '*.{txt}' + ] + } + withName: KAIJU_KAIJU2KRONA { ext.args = '-v -u' } diff --git a/docs/output.md b/docs/output.md index f875c7e..be681bd 100644 --- a/docs/output.md +++ b/docs/output.md @@ -338,13 +338,14 @@ The main taxonomic classification files from Centrifuge are the `_combined_repor Output files - `kaiju` + - `kaiju__combined_reports.txt`: A combined profile of all samples aligned to a given database (as generated by kaiju2table) - `/` - `_.kaiju.tsv`: Raw output from Kaiju with taxonomic rank, read ID and taxonic ID - `_.kaijutable.txt`: Summarised Kaiju output with fraction abundance, taxonomic ID, number of reads, and taxonomic names (as generated by `kaiju2table`) -The most useful summary file is the `*kaijutable.txt` file which summarises hits across all reads. However if you wish to look at more precise information on a per-read basis, see the `*tsv` file. The default taxonomic rank is `species`. You can provide a different one by updating the argument `--kaiju_taxon_rank`. +The most useful summary file is the `_combined_reports.txt` file which summarises hits across all reads and samples. Separate per-sample versions summaries can be seen in `/*.txt`. However if you wish to look at more precise information on a per-read basis, see the `*tsv` file. The default taxonomic rank is `species`. You can provide a different one by updating the argument `--kaiju_taxon_rank`. ### DIAMOND diff --git a/subworkflows/local/profiling.nf b/subworkflows/local/profiling.nf index cbd8071..a55dcaf 100644 --- a/subworkflows/local/profiling.nf +++ b/subworkflows/local/profiling.nf @@ -270,13 +270,12 @@ workflow PROFILING { KAIJU_KAIJU ( ch_input_for_kaiju.reads, ch_input_for_kaiju.db) ch_versions = ch_versions.mix( KAIJU_KAIJU.out.versions.first() ) + ch_raw_classifications = ch_raw_classifications.mix( KAIJU_KAIJU.out.results ) KAIJU_KAIJU2TABLE ( KAIJU_KAIJU.out.results, ch_input_for_kaiju.db, params.kaiju_taxon_rank) ch_versions = ch_versions.mix( KAIJU_KAIJU2TABLE.out.versions ) - ch_multiqc_files = ch_multiqc_files.mix( KAIJU_KAIJU2TABLE.out.summary ) - ch_raw_classifications = ch_raw_classifications.mix( KAIJU_KAIJU2TABLE.out.summary ) - + ch_raw_profiles = ch_raw_profiles.mix( KAIJU_KAIJU2TABLE.out.summary ) } if ( params.run_diamond ) { diff --git a/subworkflows/local/standardisation_profiles.nf b/subworkflows/local/standardisation_profiles.nf index 303d8fd..582aaed 100644 --- a/subworkflows/local/standardisation_profiles.nf +++ b/subworkflows/local/standardisation_profiles.nf @@ -3,6 +3,7 @@ // include { BRACKEN_COMBINEBRACKENOUTPUTS } from '../../modules/nf-core/bracken/combinebrackenoutputs/main' +include { KAIJU_KAIJU2TABLE } from '../../modules/nf-core/kaiju/kaiju2table/main' include { KRAKENTOOLS_COMBINEKREPORTS as KRAKENTOOLS_COMBINEKREPORTS_KRAKEN } from '../../modules/nf-core/krakentools/combinekreports/main' include { KRAKENTOOLS_COMBINEKREPORTS as KRAKENTOOLS_COMBINEKREPORTS_CENTRIFUGE } from '../../modules/nf-core/krakentools/combinekreports/main' include { METAPHLAN3_MERGEMETAPHLANTABLES } from '../../modules/nf-core/metaphlan3/mergemetaphlantables/main' @@ -78,6 +79,21 @@ workflow STANDARDISATION_PROFILES { ch_multiqc_files = ch_multiqc_files.mix( KRAKENTOOLS_COMBINEKREPORTS_CENTRIFUGE.out.txt ) ch_versions = ch_versions.mix( KRAKENTOOLS_COMBINEKREPORTS_CENTRIFUGE.out.versions ) + // Kaiju + + // Collect and replace id for db_name for prefix + ch_profiles_for_kaiju = ch_input_classifications.kaiju + .map { [it[0]['db_name'], it[1]] } + .groupTuple() + .map { + [[id:it[0]], it[1]] + } + + KAIJU_KAIJU2TABLE ( ch_profiles_for_kaiju, ch_input_databases.kaiju.map{it[1]}, params.kaiju_taxon_rank) + ch_standardised_tables = ch_standardised_tables.mix( KAIJU_KAIJU2TABLE.out.summary ) + ch_multiqc_files = ch_multiqc_files.mix( KAIJU_KAIJU2TABLE.out.summary ) + ch_versions = ch_versions.mix( KAIJU_KAIJU2TABLE.out.versions ) + // Kraken2 // Collect and replace id for db_name for prefix From de6a4214ef78a53d0d39f0226a8c0b65afeecd32 Mon Sep 17 00:00:00 2001 From: sofstam Date: Thu, 16 Feb 2023 14:29:52 +0100 Subject: [PATCH 657/789] Add taxpasta_merge to taxprofiler --- conf/modules.config | 15 ++ conf/test.config | 4 +- modules.json | 173 +++++++++++++----- modules/nf-core/taxpasta/merge/main.nf | 47 +++++ modules/nf-core/taxpasta/merge/meta.yml | 58 ++++++ nextflow.config | 16 +- nextflow_schema.json | 16 +- .../local/standardisation_profiles.nf | 20 ++ 8 files changed, 302 insertions(+), 47 deletions(-) create mode 100644 modules/nf-core/taxpasta/merge/main.nf create mode 100644 modules/nf-core/taxpasta/merge/meta.yml diff --git a/conf/modules.config b/conf/modules.config index 8ef8728..51b27ad 100644 --- a/conf/modules.config +++ b/conf/modules.config @@ -533,6 +533,21 @@ process { ] } + withName: TAXPASTA_MERGE { + ext.args = { + [ + "-p ${meta.tool} -o ${meta.tool}_${meta.id}.${params.taxpasta_standardisation_format}", + params.taxpasta_add_taxonomy ? "-p" : "", + params.taxpasta_add_samplesheet ? "-s" :"" + ].join(',').replaceAll(','," ") + } + publishDir = [ + path: { "${params.outdir}/taxpasta/" }, + mode: params.publish_dir_mode, + pattern: '*.{tsv,csv,arrow,parquet,biom}' + ] + } + withName: CUSTOM_DUMPSOFTWAREVERSIONS { publishDir = [ path: { "${params.outdir}/pipeline_info" }, diff --git a/conf/test.config b/conf/test.config index cfd371a..682d087 100644 --- a/conf/test.config +++ b/conf/test.config @@ -25,7 +25,7 @@ params { perform_shortread_qc = true perform_longread_qc = true shortread_qc_mergepairs = true - perform_shortread_complexityfilter = true + perform_shortread_complexityfilter = false perform_shortread_hostremoval = true perform_longread_hostremoval = true perform_runmerging = true @@ -44,7 +44,7 @@ params { malt_save_reads = true kraken2_save_reads = true centrifuge_save_reads = true - diamond_save_reads = true + run_profile_standardisation = true } process { diff --git a/modules.json b/modules.json index 2375da6..9b87f43 100644 --- a/modules.json +++ b/modules.json @@ -8,212 +8,301 @@ "adapterremoval": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "bbmap/bbduk": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "bowtie2/align": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "bowtie2/build": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "bracken/bracken": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "bracken/combinebrackenoutputs": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "cat/fastq": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "centrifuge/centrifuge": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "centrifuge/kreport": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "custom/dumpsoftwareversions": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "diamond/blastx": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "falco": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": ["modules"], + "installed_by": [ + "modules" + ], "patch": "modules/nf-core/falco/falco.diff" }, "fastp": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "fastqc": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "filtlong": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "gunzip": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "kaiju/kaiju": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "kaiju/kaiju2krona": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "kaiju/kaiju2table": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "kraken2/kraken2": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "krakentools/combinekreports": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "krakentools/kreport2krona": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "krakenuniq/preloadedkrakenuniq": { "branch": "master", "git_sha": "a6eb17f65b3ee5761c25c075a6166c9f76733cee", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "krona/ktimporttaxonomy": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "krona/ktimporttext": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "malt/run": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "megan/rma2info": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "metaphlan3/mergemetaphlantables": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "metaphlan3/metaphlan3": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "minimap2/align": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "minimap2/index": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "motus/merge": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "motus/profile": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "multiqc": { "branch": "master", "git_sha": "ee80d14721e76e2e079103b8dcd5d57129e584ba", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "porechop/porechop": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": ["modules"], + "installed_by": [ + "modules" + ], "patch": "modules/nf-core/porechop/porechop/porechop-porechop.diff" }, "prinseqplusplus": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "samtools/bam2fq": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "samtools/index": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "samtools/stats": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "samtools/view": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] + }, + "taxpasta/merge": { + "branch": "master", + "git_sha": "74ab450ed05e034d049c00f6e2853de2c31594b4", + "installed_by": [ + "modules" + ] }, "untar": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] } } } } } -} +} \ No newline at end of file diff --git a/modules/nf-core/taxpasta/merge/main.nf b/modules/nf-core/taxpasta/merge/main.nf new file mode 100644 index 0000000..67a6f25 --- /dev/null +++ b/modules/nf-core/taxpasta/merge/main.nf @@ -0,0 +1,47 @@ +process TAXPASTA_MERGE { + tag "$meta.id" + label 'process_single' + + conda "bioconda::taxpasta=0.1.1" + container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? + 'https://depot.galaxyproject.org/singularity/taxpasta:0.1.1--pyhdfd78af_0': + 'quay.io/biocontainers/taxpasta:0.1.1--pyhdfd78af_0' }" + + + input: + tuple val(meta), path(profiles) + path taxonomy + path samplesheet + + output: + tuple val(meta), path("*.{tsv,csv,arrow,parquet,biom}"), emit: merged_profiles + path "versions.yml" , emit: versions + + when: + task.ext.when == null || task.ext.when + + script: + // N.B.: Taxpasta requires a --profiler option and will fail without it. + // This must be specified via a `nextflow.config` or `modules.config`, for + // example, as "--profiler kraken2". Additionally, it requires a --output + // option with the output file name. The desired format will be parsed from + // the name and should correspond to the output pattern specified above, + // e.g., "--output ${task.ext.prefix}.tsv". + def args = task.ext.args ?: '' + def prefix = task.ext.prefix ?: "${meta.id}" + def taxonomy_option = taxonomy ? "--taxonomy ${taxonomy}" : '' + def samplesheet_input = samplesheet ? "-s ${samplesheet}" : '' + """ + taxpasta merge \\ + $args \\ + $taxonomy_option \\ + $samplesheet_input \\ + $profiles + + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + taxpasta: \$(taxpasta --version) + END_VERSIONS + """ +} diff --git a/modules/nf-core/taxpasta/merge/meta.yml b/modules/nf-core/taxpasta/merge/meta.yml new file mode 100644 index 0000000..79d301f --- /dev/null +++ b/modules/nf-core/taxpasta/merge/meta.yml @@ -0,0 +1,58 @@ +name: "taxpasta_merge" +description: Standardise and merge two or more taxonomic profiles into a single table +keywords: + - taxonomic profile + - standardise + - standardisation + - metagenomics + - taxonomic profiling + - otu tables + - taxon tables +tools: + - "taxpasta": + description: "TAXonomic Profile Aggregation and STAndardisation" + homepage: "https://taxpasta.readthedocs.io/" + documentation: "https://taxpasta.readthedocs.io/" + tool_dev_url: "https://github.com/taxprofiler/taxpasta" + doi: "" + licence: "['Apache-2.0']" + +input: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - profiles: + type: file + description: A list of taxonomic profiler output files (typically in text format, mandatory) + pattern: "*.{tsv,csv,arrow,parquet,biom}" + - samplesheet: + type: file + description: + A samplesheet describing the sample name and a filepath to a taxonomic abundance profile that needs to be relative + from the work environment. The profiles must be provided even if you give a samplesheet as argument (optional) + pattern: "*.{tsv,csv,ods,xlsx,arrow,parquet}" + - taxonomy: + type: directory + description: Directory containing at a minimum nodes.dmp and names.dmp files (optional) + pattern: "*/" + +output: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - versions: + type: file + description: File containing software versions + pattern: "versions.yml" + - merged_profiles: + type: file + description: Output file with standardised multiple profiles in one go and have all profiles combined into a single table. + pattern: "*.{tsv,csv,ods,xlsx,arrow,parquet,biom}" + +authors: + - "@sofstam" + - "@jfy133" diff --git a/nextflow.config b/nextflow.config index 45a3cc7..52a72db 100644 --- a/nextflow.config +++ b/nextflow.config @@ -155,8 +155,11 @@ params { krona_taxonomy_directory = null // profile standardisation - run_profile_standardisation = false - generate_biom_output = false + run_profile_standardisation = false + taxpasta_add_taxonomy = false + taxpasta_add_samplesheet = false + taxpasta_standardisation_format = 'tsv' + generate_biom_output = false } // Load base.config by default for all pipelines @@ -242,6 +245,15 @@ profiles { executor.cpus = 16 executor.memory = 60.GB } + hasta { + includeConfig 'conf/hasta.config' + } + dev_priority { + params { + priority = 'development' + clusterOptions = "--qos=low" + } + } test { includeConfig 'conf/test.config' } test_full { includeConfig 'conf/test_full.config' } test_noprofiling { includeConfig 'conf/test_noprofiling.config' } diff --git a/nextflow_schema.json b/nextflow_schema.json index 89cad56..a84a232 100644 --- a/nextflow_schema.json +++ b/nextflow_schema.json @@ -767,5 +767,19 @@ { "$ref": "#/definitions/reference_genome_options" } - ] + ], + "properties": { + "add_taxonomy": { + "type": "string", + "default": "false" + }, + "add_samplesheet": { + "type": "string", + "default": "false" + }, + "standardisation_taxpasta_format": { + "type": "string", + "default": "tsv" + } + } } diff --git a/subworkflows/local/standardisation_profiles.nf b/subworkflows/local/standardisation_profiles.nf index 582aaed..0a416a9 100644 --- a/subworkflows/local/standardisation_profiles.nf +++ b/subworkflows/local/standardisation_profiles.nf @@ -8,6 +8,7 @@ include { KRAKENTOOLS_COMBINEKREPORTS as KRAKENTOOLS_COMBINEKREPORTS_KRAKEN include { KRAKENTOOLS_COMBINEKREPORTS as KRAKENTOOLS_COMBINEKREPORTS_CENTRIFUGE } from '../../modules/nf-core/krakentools/combinekreports/main' include { METAPHLAN3_MERGEMETAPHLANTABLES } from '../../modules/nf-core/metaphlan3/mergemetaphlantables/main' include { MOTUS_MERGE } from '../../modules/nf-core/motus/merge/main' +include { TAXPASTA_MERGE } from '../../modules/nf-core/taxpasta/merge/main' workflow STANDARDISATION_PROFILES { take: @@ -21,6 +22,20 @@ workflow STANDARDISATION_PROFILES { ch_versions = Channel.empty() ch_multiqc_files = Channel.empty() + //Taxpasta standardisation + ch_input_for_taxpasta = profiles + .map { + meta, profile -> + def meta_new = [:] + meta_new.id = meta.db_name + meta_new.tool = meta.tool == 'metaphlan3' ? 'metaphlan' : meta.tool == 'malt' ? 'megan6' : meta.tool + [meta_new, profile] + } + .groupTuple () + + TAXPASTA_MERGE (ch_input_for_taxpasta, [], []) + + /* Split profile results based on tool they come from */ @@ -74,6 +89,8 @@ workflow STANDARDISATION_PROFILES { [[id:it[0]], it[1]] } + + KRAKENTOOLS_COMBINEKREPORTS_CENTRIFUGE ( ch_profiles_for_centrifuge ) ch_standardised_tables = ch_standardised_tables.mix( KRAKENTOOLS_COMBINEKREPORTS_CENTRIFUGE.out.txt ) ch_multiqc_files = ch_multiqc_files.mix( KRAKENTOOLS_COMBINEKREPORTS_CENTRIFUGE.out.txt ) @@ -125,6 +142,8 @@ workflow STANDARDISATION_PROFILES { ch_multiqc_files = ch_multiqc_files.mix( METAPHLAN3_MERGEMETAPHLANTABLES.out.txt ) ch_versions = ch_versions.mix( METAPHLAN3_MERGEMETAPHLANTABLES.out.versions ) + ch_standardised_tables.dump (tag: 'standardised') + // mOTUs // mOTUs has a 'single' database, and cannot create custom ones. @@ -149,6 +168,7 @@ workflow STANDARDISATION_PROFILES { emit: tables = ch_standardised_tables + taxpasta = TAXPASTA_MERGE.out.merged_profiles versions = ch_versions mqc = ch_multiqc_files } From 25d44c955e9d8d4e3050e6ed189710a1f8e23fde Mon Sep 17 00:00:00 2001 From: sofstam Date: Thu, 16 Feb 2023 15:16:05 +0100 Subject: [PATCH 658/789] Merge dev into add_taxpasta_merge --- nextflow.config | 9 --------- 1 file changed, 9 deletions(-) diff --git a/nextflow.config b/nextflow.config index 52a72db..9d3af4c 100644 --- a/nextflow.config +++ b/nextflow.config @@ -245,15 +245,6 @@ profiles { executor.cpus = 16 executor.memory = 60.GB } - hasta { - includeConfig 'conf/hasta.config' - } - dev_priority { - params { - priority = 'development' - clusterOptions = "--qos=low" - } - } test { includeConfig 'conf/test.config' } test_full { includeConfig 'conf/test_full.config' } test_noprofiling { includeConfig 'conf/test_noprofiling.config' } From dad64a688dc9a0858d7d38787bc57468f81834d6 Mon Sep 17 00:00:00 2001 From: sofstam Date: Thu, 16 Feb 2023 16:33:36 +0100 Subject: [PATCH 659/789] Add documentation for taxpasta module --- docs/output.md | 24 ++++++ modules.json | 170 +++++++++++-------------------------------- nextflow_schema.json | 31 ++++---- 3 files changed, 83 insertions(+), 142 deletions(-) diff --git a/docs/output.md b/docs/output.md index be681bd..4ffad3f 100644 --- a/docs/output.md +++ b/docs/output.md @@ -33,6 +33,7 @@ The pipeline is built using [Nextflow](https://www.nextflow.io/) and processes d - [MALT](#malt) - Sequence alignment and analysis tool designed for processing high-throughput sequencing data, especially in the context of metagenomics - [MetaPhlAn3](#metaphlan3) - Genome-level marker gene based taxonomic classifier - [mOTUs](#motus) - Tool for marker gene-based OTU (mOTU) profiling. +- [TAXPASTA](#taxpasta) - Tool to standardise taxonomic profiles as well as merge profiles across samples for the same classifier/profiler. - [MultiQC](#multiqc) - Aggregate report describing results and QC from the whole pipeline - [Pipeline information](#pipeline-information) - Report metrics generated during the workflow execution @@ -435,6 +436,29 @@ Krona charts will be generated by the pipeline for supported tools (Kraken2, Cen The resulting HTML files can be loaded into your web browser for exploration. Each file will have a dropdown to allow you to switch between each sample aligned against the given database of the tool. +### TAXPASTA + +[TAXPASTA](https://github.com/taxprofiler/taxpasta) is a python package added as a module in nf-core/taxprofiler that can standardise and merge two or more taxonomic profiles across samples into one single table.. + +
    +Output files + +- `taxpasta` + - `.*.{tsv,csv,arrow,parquet,biom}`: A list of taxonomic profiler output files. The standard format is the `tsv`. The first column describes the taxonomy ID and the rest of the columns describe the read counts for each sample. +
    + +The following report files are used for the taxpasta step: + +- Bracken: `_.tsv` +- Centrifuge: `.centrifuge.txt` +- Diamond: `` +- Kaiju: `_.kaijutable.txt` +- KrakenUniq: `_.report.txt` +- Kraken2: `_.report.txt` +- MALT: `.txt.gz` +- MetaPhlAn3: `_profile.txt` +- mOTUs: `.out` + ### MultiQC
    diff --git a/modules.json b/modules.json index 9b87f43..5b07b07 100644 --- a/modules.json +++ b/modules.json @@ -8,301 +8,217 @@ "adapterremoval": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "bbmap/bbduk": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "bowtie2/align": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "bowtie2/build": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "bracken/bracken": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "bracken/combinebrackenoutputs": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "cat/fastq": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "centrifuge/centrifuge": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "centrifuge/kreport": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "custom/dumpsoftwareversions": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "diamond/blastx": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "falco": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": [ - "modules" - ], + "installed_by": ["modules"], "patch": "modules/nf-core/falco/falco.diff" }, "fastp": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "fastqc": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "filtlong": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "gunzip": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "kaiju/kaiju": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "kaiju/kaiju2krona": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "kaiju/kaiju2table": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "kraken2/kraken2": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "krakentools/combinekreports": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "krakentools/kreport2krona": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "krakenuniq/preloadedkrakenuniq": { "branch": "master", "git_sha": "a6eb17f65b3ee5761c25c075a6166c9f76733cee", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "krona/ktimporttaxonomy": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "krona/ktimporttext": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "malt/run": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "megan/rma2info": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "metaphlan3/mergemetaphlantables": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "metaphlan3/metaphlan3": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "minimap2/align": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "minimap2/index": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "motus/merge": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "motus/profile": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "multiqc": { "branch": "master", "git_sha": "ee80d14721e76e2e079103b8dcd5d57129e584ba", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "porechop/porechop": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": [ - "modules" - ], + "installed_by": ["modules"], "patch": "modules/nf-core/porechop/porechop/porechop-porechop.diff" }, "prinseqplusplus": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "samtools/bam2fq": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "samtools/index": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "samtools/stats": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "samtools/view": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "taxpasta/merge": { "branch": "master", "git_sha": "74ab450ed05e034d049c00f6e2853de2c31594b4", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "untar": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] } } } } } -} \ No newline at end of file +} diff --git a/nextflow_schema.json b/nextflow_schema.json index a84a232..b17094f 100644 --- a/nextflow_schema.json +++ b/nextflow_schema.json @@ -509,6 +509,21 @@ "fa_icon": "fas fa-folder-open", "description": "Specify path to krona taxonomy directories (required for MALT krona plots)", "help_text": "Specify a path to a Krona taxonomy database directory (i.e. a directory containing a krona generated `.tab` file).\n\nThis is only required for generating Krona plots of MALT output.\n\nNote this taxonomy database must be downloaded and generated with the `updateTaxonomy.sh` script from the krona-tools package." + }, + "taxpasta_add_taxonomy": { + "type": "boolean", + "description": "The path to a directory containing taxdump files.", + "help_text": "At least nodes.dmp and names.dmp are required. A merged.dmp file is optional." + }, + "taxpasta_add_samplesheet": { + "type": "boolean", + "description": "A table with with two columns, one for the sample and one for the taxonomic profile.", + "help_text": "If this option is provided, any arguments are ignored." + }, + "taxpasta_standardisation_format": { + "type": "string", + "default": "tsv", + "description": "The desired output format." } }, "fa_icon": "fas fa-chart-line" @@ -767,19 +782,5 @@ { "$ref": "#/definitions/reference_genome_options" } - ], - "properties": { - "add_taxonomy": { - "type": "string", - "default": "false" - }, - "add_samplesheet": { - "type": "string", - "default": "false" - }, - "standardisation_taxpasta_format": { - "type": "string", - "default": "tsv" - } - } + ] } From c9b521234bab8db27946181ea114f11bfe3e330d Mon Sep 17 00:00:00 2001 From: sofstam Date: Thu, 16 Feb 2023 16:38:00 +0100 Subject: [PATCH 660/789] Prettier for docs --- docs/output.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/output.md b/docs/output.md index 4ffad3f..fb1f728 100644 --- a/docs/output.md +++ b/docs/output.md @@ -33,7 +33,7 @@ The pipeline is built using [Nextflow](https://www.nextflow.io/) and processes d - [MALT](#malt) - Sequence alignment and analysis tool designed for processing high-throughput sequencing data, especially in the context of metagenomics - [MetaPhlAn3](#metaphlan3) - Genome-level marker gene based taxonomic classifier - [mOTUs](#motus) - Tool for marker gene-based OTU (mOTU) profiling. -- [TAXPASTA](#taxpasta) - Tool to standardise taxonomic profiles as well as merge profiles across samples for the same classifier/profiler. +- [TAXPASTA](#taxpasta) - Tool to standardise taxonomic profiles as well as merge profiles across samples for the same classifier/profiler. - [MultiQC](#multiqc) - Aggregate report describing results and QC from the whole pipeline - [Pipeline information](#pipeline-information) - Report metrics generated during the workflow execution @@ -445,7 +445,7 @@ The resulting HTML files can be loaded into your web browser for exploration. Ea - `taxpasta` - `.*.{tsv,csv,arrow,parquet,biom}`: A list of taxonomic profiler output files. The standard format is the `tsv`. The first column describes the taxonomy ID and the rest of the columns describe the read counts for each sample. -
    + The following report files are used for the taxpasta step: From 27b7171b96703129e1b2357db2f4d87febfab5a6 Mon Sep 17 00:00:00 2001 From: sofstam Date: Fri, 17 Feb 2023 09:16:58 +0100 Subject: [PATCH 661/789] Apply review suggestions --- conf/modules.config | 2 +- conf/test.config | 2 +- docs/output.md | 4 ++-- nextflow_schema.json | 3 ++- subworkflows/local/standardisation_profiles.nf | 2 -- 5 files changed, 6 insertions(+), 7 deletions(-) diff --git a/conf/modules.config b/conf/modules.config index 6aaa379..4a1fba2 100644 --- a/conf/modules.config +++ b/conf/modules.config @@ -548,7 +548,7 @@ process { "-p ${meta.tool} -o ${meta.tool}_${meta.id}.${params.taxpasta_standardisation_format}", params.taxpasta_add_taxonomy ? "-p" : "", params.taxpasta_add_samplesheet ? "-s" :"" - ].join(',').replaceAll(','," ") + ].join(' ').trim() } publishDir = [ path: { "${params.outdir}/taxpasta/" }, diff --git a/conf/test.config b/conf/test.config index 682d087..925987e 100644 --- a/conf/test.config +++ b/conf/test.config @@ -33,7 +33,7 @@ params { run_kaiju = true run_kraken2 = true run_bracken = true - run_malt = false + run_malt = true run_metaphlan3 = true run_centrifuge = true run_diamond = true diff --git a/docs/output.md b/docs/output.md index fb1f728..3da9b22 100644 --- a/docs/output.md +++ b/docs/output.md @@ -33,7 +33,7 @@ The pipeline is built using [Nextflow](https://www.nextflow.io/) and processes d - [MALT](#malt) - Sequence alignment and analysis tool designed for processing high-throughput sequencing data, especially in the context of metagenomics - [MetaPhlAn3](#metaphlan3) - Genome-level marker gene based taxonomic classifier - [mOTUs](#motus) - Tool for marker gene-based OTU (mOTU) profiling. -- [TAXPASTA](#taxpasta) - Tool to standardise taxonomic profiles as well as merge profiles across samples for the same classifier/profiler. +- [TAXPASTA](#taxpasta) - Tool to standardise taxonomic profiles as well as merge profiles across samples from the same database and classifier/profiler. - [MultiQC](#multiqc) - Aggregate report describing results and QC from the whole pipeline - [Pipeline information](#pipeline-information) - Report metrics generated during the workflow execution @@ -438,7 +438,7 @@ The resulting HTML files can be loaded into your web browser for exploration. Ea ### TAXPASTA -[TAXPASTA](https://github.com/taxprofiler/taxpasta) is a python package added as a module in nf-core/taxprofiler that can standardise and merge two or more taxonomic profiles across samples into one single table.. +[TAXPASTA](https://github.com/taxprofiler/taxpasta) that standardises and merge two or more taxonomic profiles across samples into one single table. It supports multiple different classifiers simplifying taxonomic classification results between tools and databases.
    Output files diff --git a/nextflow_schema.json b/nextflow_schema.json index b17094f..a6eb0a8 100644 --- a/nextflow_schema.json +++ b/nextflow_schema.json @@ -523,7 +523,8 @@ "taxpasta_standardisation_format": { "type": "string", "default": "tsv", - "description": "The desired output format." + "description": "The desired output format.", + "enum": ["tsv", "csv", "arrow", "parquet", "biom"] } }, "fa_icon": "fas fa-chart-line" diff --git a/subworkflows/local/standardisation_profiles.nf b/subworkflows/local/standardisation_profiles.nf index 0a416a9..d928263 100644 --- a/subworkflows/local/standardisation_profiles.nf +++ b/subworkflows/local/standardisation_profiles.nf @@ -90,7 +90,6 @@ workflow STANDARDISATION_PROFILES { } - KRAKENTOOLS_COMBINEKREPORTS_CENTRIFUGE ( ch_profiles_for_centrifuge ) ch_standardised_tables = ch_standardised_tables.mix( KRAKENTOOLS_COMBINEKREPORTS_CENTRIFUGE.out.txt ) ch_multiqc_files = ch_multiqc_files.mix( KRAKENTOOLS_COMBINEKREPORTS_CENTRIFUGE.out.txt ) @@ -142,7 +141,6 @@ workflow STANDARDISATION_PROFILES { ch_multiqc_files = ch_multiqc_files.mix( METAPHLAN3_MERGEMETAPHLANTABLES.out.txt ) ch_versions = ch_versions.mix( METAPHLAN3_MERGEMETAPHLANTABLES.out.versions ) - ch_standardised_tables.dump (tag: 'standardised') // mOTUs From 5ebc22dd29b992495fcaf42511b1038f84d6e78a Mon Sep 17 00:00:00 2001 From: sofstam Date: Fri, 17 Feb 2023 12:58:33 +0100 Subject: [PATCH 662/789] Add icon in nextflow_schema.json --- nextflow_schema.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/nextflow_schema.json b/nextflow_schema.json index a6eb0a8..80ba987 100644 --- a/nextflow_schema.json +++ b/nextflow_schema.json @@ -524,7 +524,8 @@ "type": "string", "default": "tsv", "description": "The desired output format.", - "enum": ["tsv", "csv", "arrow", "parquet", "biom"] + "enum": ["tsv", "csv", "arrow", "parquet", "biom"], + "fa_icon": "fas fa-file" } }, "fa_icon": "fas fa-chart-line" From 08bfa6a1a73970bf986cf2be312565d029cbbb6a Mon Sep 17 00:00:00 2001 From: sofstam Date: Fri, 17 Feb 2023 13:43:38 +0100 Subject: [PATCH 663/789] Apply review suggestions for docs --- docs/output.md | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/docs/output.md b/docs/output.md index 3da9b22..284e55b 100644 --- a/docs/output.md +++ b/docs/output.md @@ -449,15 +449,15 @@ The resulting HTML files can be loaded into your web browser for exploration. Ea The following report files are used for the taxpasta step: -- Bracken: `_.tsv` -- Centrifuge: `.centrifuge.txt` -- Diamond: `` -- Kaiju: `_.kaijutable.txt` -- KrakenUniq: `_.report.txt` -- Kraken2: `_.report.txt` -- MALT: `.txt.gz` -- MetaPhlAn3: `_profile.txt` -- mOTUs: `.out` +- Bracken: `_.tsv` Taxpasta used the `new_est_reads` column for the standardised profile. +- Centrifuge: `.centrifuge.txt` Taxpasta uses the `direct_assigned_reads` column for the standardised profile. +- Diamond: `` Taxpasta summarises number of reads per NCBI taxonomy ID standardised profile. +- Kaiju: `_.kaijutable.txt` Taxpasta uses the `reads` column from kaiju2table standardised profile. +- KrakenUniq: `_.report.txt` Taxpasta uses the `reads` column for the standardised profile. +- Kraken2: `_.report.txt` Taxpasta uses the `direct_assigned_reads` column for the standardised profile. +- MALT: `.txt.gz` Taxpasta uses the `count` (second) column from the output of MEGAN6's rma2info for the standardised profile. +- MetaPhlAn3: `_profile.txt` Taxpasta uses the `relative_abundance` column multiplied with a fixed number to yield an integer for the standardised profile. +- mOTUs: `.out` Taxpasta uses the `read_count` column for the standardised profile. ### MultiQC From 604df56fdbf80bf6e079b75c4e2a1b4901ebd9af Mon Sep 17 00:00:00 2001 From: sofstam Date: Fri, 17 Feb 2023 13:49:13 +0100 Subject: [PATCH 664/789] Add a description about the files used by taxpasta --- docs/output.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/docs/output.md b/docs/output.md index 284e55b..9a7518d 100644 --- a/docs/output.md +++ b/docs/output.md @@ -444,9 +444,13 @@ The resulting HTML files can be loaded into your web browser for exploration. Ea Output files - `taxpasta` - - `.*.{tsv,csv,arrow,parquet,biom}`: A list of taxonomic profiler output files. The standard format is the `tsv`. The first column describes the taxonomy ID and the rest of the columns describe the read counts for each sample. + + - `_*.{tsv,csv,arrow,parquet,biom}`: Standardised taxon table containing multiple samples. The standard format is the `tsv`. The first column describes the taxonomy ID and the rest of the columns describe the read counts for each sample. +
    +These files will likely be the most useful files for the comparison of differences in classification between different tools or building consensuses, with the caveat they have slightly less information than the actual output from each tool (which may have non-standard information e.g. taxonomic rank, percentage of hits, abundance estimations). + The following report files are used for the taxpasta step: - Bracken: `_.tsv` Taxpasta used the `new_est_reads` column for the standardised profile. From f0aa89cb877513034e7202f6a977f5f79a86f0df Mon Sep 17 00:00:00 2001 From: sofstam Date: Fri, 17 Feb 2023 14:47:29 +0100 Subject: [PATCH 665/789] Rename taxpasta parameters and remove samplesheet parameter --- conf/modules.config | 7 +++---- nextflow.config | 7 +++---- nextflow_schema.json | 25 ++++++++++--------------- 3 files changed, 16 insertions(+), 23 deletions(-) diff --git a/conf/modules.config b/conf/modules.config index 4a1fba2..0bab02b 100644 --- a/conf/modules.config +++ b/conf/modules.config @@ -534,7 +534,7 @@ process { } withName: MOTUS_MERGE { - ext.args = { params.generate_biom_output ? "-B" : "" } + ext.args = { params.standardisation_motus_generatebiom ? "-B" : "" } ext.prefix = { "motus_${meta.id}_combined_reports" } publishDir = [ path: { "${params.outdir}/motus/" }, @@ -545,9 +545,8 @@ process { withName: TAXPASTA_MERGE { ext.args = { [ - "-p ${meta.tool} -o ${meta.tool}_${meta.id}.${params.taxpasta_standardisation_format}", - params.taxpasta_add_taxonomy ? "-p" : "", - params.taxpasta_add_samplesheet ? "-s" :"" + "-p ${meta.tool} -o ${meta.tool}_${meta.id}.${params.standardisation_taxpasta_format}", + params.standardisation_taxpasta_addtaxonomy ? "-p" : "" ].join(' ').trim() } publishDir = [ diff --git a/nextflow.config b/nextflow.config index 9d3af4c..34e8b00 100644 --- a/nextflow.config +++ b/nextflow.config @@ -156,10 +156,9 @@ params { // profile standardisation run_profile_standardisation = false - taxpasta_add_taxonomy = false - taxpasta_add_samplesheet = false - taxpasta_standardisation_format = 'tsv' - generate_biom_output = false + standardisation_taxpasta_addtaxonomy = false + standardisation_taxpasta_format = 'tsv' + standardisation_motus_generatebiom = false } // Load base.config by default for all pipelines diff --git a/nextflow_schema.json b/nextflow_schema.json index 80ba987..a7a1b4d 100644 --- a/nextflow_schema.json +++ b/nextflow_schema.json @@ -491,11 +491,11 @@ "description": "Turn on standardisation of taxon tables across profilers", "help_text": "Turns on standardisation of output OTU tables across all tools; each into a TSV format following the following scheme:\n\n|TAXON | SAMPLE_A | SAMPLE_B |\n|-------------|----------------|-----------------|\n| taxon_a | 32 | 123 |\n| taxon_b | 1 | 5 |\n\nThis currently only is generated for mOTUs." }, - "generate_biom_output": { + "standardisation_motus_generatebiom": { "type": "boolean", "fa_icon": "fas fa-toggle-on", "description": "Turn on generation of BIOM output (currently only applies to mOTUs)", - "help_text": "Turn on the saving of the taxonomic output in BIOM format (`.biom`) in the results directory of your pipeline run, instead of the default TSV format.\n\nNote this file is from the output of the `motus merge` command.\n\n> Modifies tool parameter(s):\n> - `-B -o`" + "help_text": "Turn on the saving of the taxonomic output in BIOM format (`.biom`) in the results directory of your pipeline run, instead of the default TSV format.\\n\\nNote this file is from the output of the `motus merge` command.\\n\\n> Modifies tool parameter(s):\\n> - `-B -o`" }, "run_krona": { "type": "boolean", @@ -510,22 +510,17 @@ "description": "Specify path to krona taxonomy directories (required for MALT krona plots)", "help_text": "Specify a path to a Krona taxonomy database directory (i.e. a directory containing a krona generated `.tab` file).\n\nThis is only required for generating Krona plots of MALT output.\n\nNote this taxonomy database must be downloaded and generated with the `updateTaxonomy.sh` script from the krona-tools package." }, - "taxpasta_add_taxonomy": { - "type": "boolean", - "description": "The path to a directory containing taxdump files.", - "help_text": "At least nodes.dmp and names.dmp are required. A merged.dmp file is optional." - }, - "taxpasta_add_samplesheet": { - "type": "boolean", - "description": "A table with with two columns, one for the sample and one for the taxonomic profile.", - "help_text": "If this option is provided, any arguments are ignored." - }, - "taxpasta_standardisation_format": { + "standardisation_taxpasta_format": { "type": "string", "default": "tsv", + "fa_icon": "fas fa-file", "description": "The desired output format.", - "enum": ["tsv", "csv", "arrow", "parquet", "biom"], - "fa_icon": "fas fa-file" + "enum": ["tsv", "csv", "arrow", "parquet", "biom"] + }, + "standardisation_taxpasta_addtaxonomy": { + "type": "boolean", + "description": "The path to a directory containing taxdump files, typically from NCBI.", + "help_text": "At least nodes.dmp and names.dmp are required. A merged.dmp file is optional." } }, "fa_icon": "fas fa-chart-line" From 90a5668007b84a5ece6fa85b2385514c4cd7790d Mon Sep 17 00:00:00 2001 From: sofstam Date: Fri, 17 Feb 2023 15:38:36 +0100 Subject: [PATCH 666/789] run_malt false in test and add text in output.md --- conf/test.config | 4 ++-- docs/output.md | 2 ++ subworkflows/local/standardisation_profiles.nf | 1 - 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/conf/test.config b/conf/test.config index 925987e..c80533a 100644 --- a/conf/test.config +++ b/conf/test.config @@ -25,7 +25,7 @@ params { perform_shortread_qc = true perform_longread_qc = true shortread_qc_mergepairs = true - perform_shortread_complexityfilter = false + perform_shortread_complexityfilter = true perform_shortread_hostremoval = true perform_longread_hostremoval = true perform_runmerging = true @@ -33,7 +33,7 @@ params { run_kaiju = true run_kraken2 = true run_bracken = true - run_malt = true + run_malt = false run_metaphlan3 = true run_centrifuge = true run_diamond = true diff --git a/docs/output.md b/docs/output.md index 9a7518d..1e39576 100644 --- a/docs/output.md +++ b/docs/output.md @@ -463,6 +463,8 @@ The following report files are used for the taxpasta step: - MetaPhlAn3: `_profile.txt` Taxpasta uses the `relative_abundance` column multiplied with a fixed number to yield an integer for the standardised profile. - mOTUs: `.out` Taxpasta uses the `read_count` column for the standardised profile. +Please aware the outputs of each tool's standardised profile _may not_ be directly comparable between each tool. Some may report raw read counts, whereas others may report abundance information. Please always refer to the list above, for which information is used for each tool. + ### MultiQC
    diff --git a/subworkflows/local/standardisation_profiles.nf b/subworkflows/local/standardisation_profiles.nf index d928263..de58622 100644 --- a/subworkflows/local/standardisation_profiles.nf +++ b/subworkflows/local/standardisation_profiles.nf @@ -141,7 +141,6 @@ workflow STANDARDISATION_PROFILES { ch_multiqc_files = ch_multiqc_files.mix( METAPHLAN3_MERGEMETAPHLANTABLES.out.txt ) ch_versions = ch_versions.mix( METAPHLAN3_MERGEMETAPHLANTABLES.out.versions ) - // mOTUs // mOTUs has a 'single' database, and cannot create custom ones. From 211b5f3a6802f41d47e23c4840eaf116299a367c Mon Sep 17 00:00:00 2001 From: sofstam Date: Mon, 20 Feb 2023 11:49:31 +0100 Subject: [PATCH 667/789] Apply review suggestions --- docs/output.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/output.md b/docs/output.md index 1e39576..85b163c 100644 --- a/docs/output.md +++ b/docs/output.md @@ -438,7 +438,7 @@ The resulting HTML files can be loaded into your web browser for exploration. Ea ### TAXPASTA -[TAXPASTA](https://github.com/taxprofiler/taxpasta) that standardises and merge two or more taxonomic profiles across samples into one single table. It supports multiple different classifiers simplifying taxonomic classification results between tools and databases. +[TAXPASTA](https://github.com/taxprofiler/taxpasta) standardises and merges two or more taxonomic profiles across samples into one single table. It supports multiple different classifiers simplifying comparison of taxonomic classification results between tools and databases.
    Output files @@ -463,7 +463,7 @@ The following report files are used for the taxpasta step: - MetaPhlAn3: `_profile.txt` Taxpasta uses the `relative_abundance` column multiplied with a fixed number to yield an integer for the standardised profile. - mOTUs: `.out` Taxpasta uses the `read_count` column for the standardised profile. -Please aware the outputs of each tool's standardised profile _may not_ be directly comparable between each tool. Some may report raw read counts, whereas others may report abundance information. Please always refer to the list above, for which information is used for each tool. +> ⚠️ Please aware the outputs of each tool's standardised profile _may not_ be directly comparable between each tool. Some may report raw read counts, whereas others may report abundance information. Please always refer to the list above, for which information is used for each tool. ### MultiQC From 04bc978ef67af53b36dff02308893c1525f7f47f Mon Sep 17 00:00:00 2001 From: sofstam Date: Mon, 20 Feb 2023 11:56:06 +0100 Subject: [PATCH 668/789] Remove taxonomy parameter from taxpasta --- conf/modules.config | 7 +------ nextflow.config | 1 - nextflow_schema.json | 5 ----- 3 files changed, 1 insertion(+), 12 deletions(-) diff --git a/conf/modules.config b/conf/modules.config index 0bab02b..605a7c5 100644 --- a/conf/modules.config +++ b/conf/modules.config @@ -543,12 +543,7 @@ process { } withName: TAXPASTA_MERGE { - ext.args = { - [ - "-p ${meta.tool} -o ${meta.tool}_${meta.id}.${params.standardisation_taxpasta_format}", - params.standardisation_taxpasta_addtaxonomy ? "-p" : "" - ].join(' ').trim() - } + ext.args = { "-p ${meta.tool} -o ${meta.tool}_${meta.id}.${params.standardisation_taxpasta_format}" } publishDir = [ path: { "${params.outdir}/taxpasta/" }, mode: params.publish_dir_mode, diff --git a/nextflow.config b/nextflow.config index 34e8b00..9228d67 100644 --- a/nextflow.config +++ b/nextflow.config @@ -156,7 +156,6 @@ params { // profile standardisation run_profile_standardisation = false - standardisation_taxpasta_addtaxonomy = false standardisation_taxpasta_format = 'tsv' standardisation_motus_generatebiom = false } diff --git a/nextflow_schema.json b/nextflow_schema.json index a7a1b4d..5871862 100644 --- a/nextflow_schema.json +++ b/nextflow_schema.json @@ -516,11 +516,6 @@ "fa_icon": "fas fa-file", "description": "The desired output format.", "enum": ["tsv", "csv", "arrow", "parquet", "biom"] - }, - "standardisation_taxpasta_addtaxonomy": { - "type": "boolean", - "description": "The path to a directory containing taxdump files, typically from NCBI.", - "help_text": "At least nodes.dmp and names.dmp are required. A merged.dmp file is optional." } }, "fa_icon": "fas fa-chart-line" From 3fa1b0c17d8a023184edad1325e1c42518f189ce Mon Sep 17 00:00:00 2001 From: sofstam Date: Mon, 20 Feb 2023 13:48:04 +0100 Subject: [PATCH 669/789] Remove standardised_tables --- subworkflows/local/standardisation_profiles.nf | 13 ------------- 1 file changed, 13 deletions(-) diff --git a/subworkflows/local/standardisation_profiles.nf b/subworkflows/local/standardisation_profiles.nf index de58622..2506680 100644 --- a/subworkflows/local/standardisation_profiles.nf +++ b/subworkflows/local/standardisation_profiles.nf @@ -18,7 +18,6 @@ workflow STANDARDISATION_PROFILES { motu_version main: - ch_standardised_tables = Channel.empty() ch_versions = Channel.empty() ch_multiqc_files = Channel.empty() @@ -91,7 +90,6 @@ workflow STANDARDISATION_PROFILES { KRAKENTOOLS_COMBINEKREPORTS_CENTRIFUGE ( ch_profiles_for_centrifuge ) - ch_standardised_tables = ch_standardised_tables.mix( KRAKENTOOLS_COMBINEKREPORTS_CENTRIFUGE.out.txt ) ch_multiqc_files = ch_multiqc_files.mix( KRAKENTOOLS_COMBINEKREPORTS_CENTRIFUGE.out.txt ) ch_versions = ch_versions.mix( KRAKENTOOLS_COMBINEKREPORTS_CENTRIFUGE.out.versions ) @@ -106,7 +104,6 @@ workflow STANDARDISATION_PROFILES { } KAIJU_KAIJU2TABLE ( ch_profiles_for_kaiju, ch_input_databases.kaiju.map{it[1]}, params.kaiju_taxon_rank) - ch_standardised_tables = ch_standardised_tables.mix( KAIJU_KAIJU2TABLE.out.summary ) ch_multiqc_files = ch_multiqc_files.mix( KAIJU_KAIJU2TABLE.out.summary ) ch_versions = ch_versions.mix( KAIJU_KAIJU2TABLE.out.versions ) @@ -123,7 +120,6 @@ workflow STANDARDISATION_PROFILES { } KRAKENTOOLS_COMBINEKREPORTS_KRAKEN ( ch_profiles_for_kraken2 ) - ch_standardised_tables = ch_standardised_tables.mix( KRAKENTOOLS_COMBINEKREPORTS_KRAKEN.out.txt ) ch_multiqc_files = ch_multiqc_files.mix( KRAKENTOOLS_COMBINEKREPORTS_KRAKEN.out.txt ) ch_versions = ch_versions.mix( KRAKENTOOLS_COMBINEKREPORTS_KRAKEN.out.versions ) @@ -137,7 +133,6 @@ workflow STANDARDISATION_PROFILES { } METAPHLAN3_MERGEMETAPHLANTABLES ( ch_profiles_for_metaphlan3 ) - ch_standardised_tables = ch_standardised_tables.mix( METAPHLAN3_MERGEMETAPHLANTABLES.out.txt ) ch_multiqc_files = ch_multiqc_files.mix( METAPHLAN3_MERGEMETAPHLANTABLES.out.txt ) ch_versions = ch_versions.mix( METAPHLAN3_MERGEMETAPHLANTABLES.out.versions ) @@ -156,15 +151,7 @@ workflow STANDARDISATION_PROFILES { MOTUS_MERGE ( ch_profiles_for_motus, ch_input_databases.motus.map{it[1]}, motu_version ) - if ( params.generate_biom_output ) { - ch_standardised_tables = ch_standardised_tables.mix ( MOTUS_MERGE.out.biom ) - } else { - ch_standardised_tables = ch_standardised_tables.mix ( MOTUS_MERGE.out.txt ) - } - ch_versions = ch_versions.mix( MOTUS_MERGE.out.versions ) - emit: - tables = ch_standardised_tables taxpasta = TAXPASTA_MERGE.out.merged_profiles versions = ch_versions mqc = ch_multiqc_files From 90aa7551a9b56040eb04cb4cc1f9f0d5cbac2bd9 Mon Sep 17 00:00:00 2001 From: sofstam Date: Mon, 20 Feb 2023 14:27:57 +0100 Subject: [PATCH 670/789] Fix the motus_versions --- subworkflows/local/standardisation_profiles.nf | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/subworkflows/local/standardisation_profiles.nf b/subworkflows/local/standardisation_profiles.nf index 2506680..2c6a591 100644 --- a/subworkflows/local/standardisation_profiles.nf +++ b/subworkflows/local/standardisation_profiles.nf @@ -150,7 +150,8 @@ workflow STANDARDISATION_PROFILES { } MOTUS_MERGE ( ch_profiles_for_motus, ch_input_databases.motus.map{it[1]}, motu_version ) - + ch_versions = ch_versions.mix( MOTUS_MERGE.out.versions ) + emit: taxpasta = TAXPASTA_MERGE.out.merged_profiles versions = ch_versions From 9847b8d9a73a2407bfdc3ee7605a17de1dda61dc Mon Sep 17 00:00:00 2001 From: "James A. Fellows Yates" Date: Mon, 20 Feb 2023 20:35:22 +0100 Subject: [PATCH 671/789] Fix label base.config for MEGAN_RMA2INFO --- conf/base.config | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/conf/base.config b/conf/base.config index c06d231..7470db1 100644 --- a/conf/base.config +++ b/conf/base.config @@ -62,7 +62,12 @@ process { withName:CUSTOM_DUMPSOFTWAREVERSIONS { cache = false } - withName: RMA2INFO { + withName: MEGAN_RMA2INFO_TSV { + cpus = { check_max( 1 , 'cpus' ) } + memory = { check_max( 6.GB * task.attempt, 'memory' ) } + time = { check_max( 4.h * task.attempt, 'time' ) } + } + withName: MEGAN_RMA2INFO_KRONA { cpus = { check_max( 1 , 'cpus' ) } memory = { check_max( 6.GB * task.attempt, 'memory' ) } time = { check_max( 4.h * task.attempt, 'time' ) } From 32c0d8d6a5ac86475b86f79aa96a373aa14e32a4 Mon Sep 17 00:00:00 2001 From: "James A. Fellows Yates" Date: Wed, 22 Feb 2023 08:24:48 +0100 Subject: [PATCH 672/789] Fix KrakenUniq Taxpasta issue --- subworkflows/local/standardisation_profiles.nf | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/subworkflows/local/standardisation_profiles.nf b/subworkflows/local/standardisation_profiles.nf index 2c6a591..ce1ef23 100644 --- a/subworkflows/local/standardisation_profiles.nf +++ b/subworkflows/local/standardisation_profiles.nf @@ -24,17 +24,17 @@ workflow STANDARDISATION_PROFILES { //Taxpasta standardisation ch_input_for_taxpasta = profiles .map { - meta, profile -> - def meta_new = [:] - meta_new.id = meta.db_name - meta_new.tool = meta.tool == 'metaphlan3' ? 'metaphlan' : meta.tool == 'malt' ? 'megan6' : meta.tool - [meta_new, profile] - } - .groupTuple () + meta, profile -> + def meta_new = [:] + meta_new.id = meta.db_name + meta_new.tool = meta.tool == 'metaphlan3' ? 'metaphlan' : meta.tool == 'malt' ? 'megan6' : meta.tool + [meta_new, profile] + } + .groupTuple () + .map { [ it[0], it[1].flatten() ] } TAXPASTA_MERGE (ch_input_for_taxpasta, [], []) - /* Split profile results based on tool they come from */ From cd4614f387a5dbbd67984e9f98b8654b9e07a741 Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Thu, 23 Feb 2023 14:00:00 +0100 Subject: [PATCH 673/789] Fix typo in schema docs [skip ci] --- nextflow_schema.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/nextflow_schema.json b/nextflow_schema.json index 5871862..3de42d5 100644 --- a/nextflow_schema.json +++ b/nextflow_schema.json @@ -417,7 +417,7 @@ "default": "16G", "description": "Specify how large to chunk database when loading into memory for KrakenUniq", "fa_icon": "fas fa-database", - "help_text": "nf-core/taxprofiler utilises a 'low memory' option for KrakenUniq that can reduce the amount of RAM the process requires using the `--preloaded` option.\n\nA further extension to this option is that you can specify how large each chunk of the database should be that gets loaded into memory at any one time. You can specify the amount of RAM to chunk the database to with this parameter, and is particularly useful for people with limited computational resources.\n\nMore information about this parameter can be seen [here](https://github.com/fbreitwieser/krakenuniq/blob/master/README.md#new-release-v07).\n\n> Modifies KrakenUniq parameter: --preload\n\n> \n\n" + "help_text": "nf-core/taxprofiler utilises a 'low memory' option for KrakenUniq that can reduce the amount of RAM the process requires using the `--preloaded` option.\n\nA further extension to this option is that you can specify how large each chunk of the database should be that gets loaded into memory at any one time. You can specify the amount of RAM to chunk the database to with this parameter, and is particularly useful for people with limited computational resources.\n\nMore information about this parameter can be seen [here](https://github.com/fbreitwieser/krakenuniq/blob/master/README.md#new-release-v07).\n\n> Modifies KrakenUniq parameter: --preload-size\n\n" }, "krakenuniq_save_readclassifications": { "type": "boolean", From 5a6fcf1f42a1c13cde747cf158afe4f2ed96486b Mon Sep 17 00:00:00 2001 From: sofstam Date: Fri, 24 Feb 2023 11:44:07 +0100 Subject: [PATCH 674/789] Update taxpasta/merge to version 0.2.0 and add taxonomy argument --- conf/modules.config | 7 ++++++- modules.json | 2 +- modules/nf-core/taxpasta/merge/main.nf | 6 +++--- nextflow.config | 1 + nextflow_schema.json | 5 +++++ 5 files changed, 16 insertions(+), 5 deletions(-) diff --git a/conf/modules.config b/conf/modules.config index 605a7c5..10ce34d 100644 --- a/conf/modules.config +++ b/conf/modules.config @@ -543,7 +543,12 @@ process { } withName: TAXPASTA_MERGE { - ext.args = { "-p ${meta.tool} -o ${meta.tool}_${meta.id}.${params.standardisation_taxpasta_format}" } + ext.args = { + [ + "-p ${meta.tool} -o ${meta.tool}_${meta.id}.${params.standardisation_taxpasta_format}", + params.taxpasta_add_taxonomy ? "--taxonomy" : "", + ].join(' ').trim() + } publishDir = [ path: { "${params.outdir}/taxpasta/" }, mode: params.publish_dir_mode, diff --git a/modules.json b/modules.json index 5b07b07..d1899a4 100644 --- a/modules.json +++ b/modules.json @@ -209,7 +209,7 @@ }, "taxpasta/merge": { "branch": "master", - "git_sha": "74ab450ed05e034d049c00f6e2853de2c31594b4", + "git_sha": "fe58454add6225d2b7468e6d72a3a1f6a3149638", "installed_by": ["modules"] }, "untar": { diff --git a/modules/nf-core/taxpasta/merge/main.nf b/modules/nf-core/taxpasta/merge/main.nf index 67a6f25..46aea29 100644 --- a/modules/nf-core/taxpasta/merge/main.nf +++ b/modules/nf-core/taxpasta/merge/main.nf @@ -2,10 +2,10 @@ process TAXPASTA_MERGE { tag "$meta.id" label 'process_single' - conda "bioconda::taxpasta=0.1.1" + conda "bioconda::taxpasta=0.2.0" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/taxpasta:0.1.1--pyhdfd78af_0': - 'quay.io/biocontainers/taxpasta:0.1.1--pyhdfd78af_0' }" + 'https://depot.galaxyproject.org/singularity/taxpasta:0.2.0--pyhdfd78af_0': + 'quay.io/biocontainers/taxpasta:0.2.0--pyhdfd78af_0' }" input: diff --git a/nextflow.config b/nextflow.config index 9228d67..18e706a 100644 --- a/nextflow.config +++ b/nextflow.config @@ -157,6 +157,7 @@ params { // profile standardisation run_profile_standardisation = false standardisation_taxpasta_format = 'tsv' + taxpasta_add_taxonomy = false standardisation_motus_generatebiom = false } diff --git a/nextflow_schema.json b/nextflow_schema.json index 3de42d5..314b485 100644 --- a/nextflow_schema.json +++ b/nextflow_schema.json @@ -516,6 +516,11 @@ "fa_icon": "fas fa-file", "description": "The desired output format.", "enum": ["tsv", "csv", "arrow", "parquet", "biom"] + }, + "taxpasta_add_taxonomy": { + "type": "boolean", + "description": "The path to a directory containing taxdump files.", + "help_text": "At least nodes.dmp and names.dmp are required. A merged.dmp file is optional." } }, "fa_icon": "fas fa-chart-line" From 5dc3cbc2789ac9bb036ce12a6c8dc2f7a8bb56d5 Mon Sep 17 00:00:00 2001 From: sofstam Date: Fri, 24 Feb 2023 13:04:38 +0100 Subject: [PATCH 675/789] Rename taxonomy argument --- conf/modules.config | 2 +- nextflow.config | 2 +- nextflow_schema.json | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/conf/modules.config b/conf/modules.config index 10ce34d..2b65798 100644 --- a/conf/modules.config +++ b/conf/modules.config @@ -546,7 +546,7 @@ process { ext.args = { [ "-p ${meta.tool} -o ${meta.tool}_${meta.id}.${params.standardisation_taxpasta_format}", - params.taxpasta_add_taxonomy ? "--taxonomy" : "", + params.taxpasta_taxonomy_files ? "--taxonomy" : "", ].join(' ').trim() } publishDir = [ diff --git a/nextflow.config b/nextflow.config index 18e706a..30f2498 100644 --- a/nextflow.config +++ b/nextflow.config @@ -157,7 +157,7 @@ params { // profile standardisation run_profile_standardisation = false standardisation_taxpasta_format = 'tsv' - taxpasta_add_taxonomy = false + taxpasta_taxonomy_files = false standardisation_motus_generatebiom = false } diff --git a/nextflow_schema.json b/nextflow_schema.json index 314b485..78260a5 100644 --- a/nextflow_schema.json +++ b/nextflow_schema.json @@ -517,7 +517,7 @@ "description": "The desired output format.", "enum": ["tsv", "csv", "arrow", "parquet", "biom"] }, - "taxpasta_add_taxonomy": { + "taxpasta_taxonomy_files": { "type": "boolean", "description": "The path to a directory containing taxdump files.", "help_text": "At least nodes.dmp and names.dmp are required. A merged.dmp file is optional." From e18e68faa50031aedb931fd5f2034b2d6bb72a39 Mon Sep 17 00:00:00 2001 From: sofstam Date: Fri, 24 Feb 2023 15:50:24 +0100 Subject: [PATCH 676/789] Apply review suggestion --- conf/modules.config | 2 +- nextflow.config | 2 +- nextflow_schema.json | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/conf/modules.config b/conf/modules.config index 2b65798..e49d792 100644 --- a/conf/modules.config +++ b/conf/modules.config @@ -546,7 +546,7 @@ process { ext.args = { [ "-p ${meta.tool} -o ${meta.tool}_${meta.id}.${params.standardisation_taxpasta_format}", - params.taxpasta_taxonomy_files ? "--taxonomy" : "", + params.taxpasta_taxonomy_dir ? "--taxonomy" ${params.taxpasta_taxonomy_dir}" : "", ].join(' ').trim() } publishDir = [ diff --git a/nextflow.config b/nextflow.config index 30f2498..79f1d71 100644 --- a/nextflow.config +++ b/nextflow.config @@ -157,7 +157,7 @@ params { // profile standardisation run_profile_standardisation = false standardisation_taxpasta_format = 'tsv' - taxpasta_taxonomy_files = false + taxpasta_taxonomy_dir = false standardisation_motus_generatebiom = false } diff --git a/nextflow_schema.json b/nextflow_schema.json index 78260a5..303ab5c 100644 --- a/nextflow_schema.json +++ b/nextflow_schema.json @@ -517,7 +517,7 @@ "description": "The desired output format.", "enum": ["tsv", "csv", "arrow", "parquet", "biom"] }, - "taxpasta_taxonomy_files": { + "taxpasta_taxonomy_dir": { "type": "boolean", "description": "The path to a directory containing taxdump files.", "help_text": "At least nodes.dmp and names.dmp are required. A merged.dmp file is optional." From a7ae57c94ec7ada5d3e65ec346d92eaead6b03eb Mon Sep 17 00:00:00 2001 From: sofstam Date: Fri, 24 Feb 2023 15:53:54 +0100 Subject: [PATCH 677/789] Fix linting --- conf/modules.config | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/conf/modules.config b/conf/modules.config index e49d792..263bca3 100644 --- a/conf/modules.config +++ b/conf/modules.config @@ -546,7 +546,7 @@ process { ext.args = { [ "-p ${meta.tool} -o ${meta.tool}_${meta.id}.${params.standardisation_taxpasta_format}", - params.taxpasta_taxonomy_dir ? "--taxonomy" ${params.taxpasta_taxonomy_dir}" : "", + params.taxpasta_taxonomy_dir ? "--taxonomy ${params.taxpasta_taxonomy_dir}" : "", ].join(' ').trim() } publishDir = [ From 78d7001bea972bfdd62ddc5fd6c849893030e3ba Mon Sep 17 00:00:00 2001 From: sofstam Date: Fri, 24 Feb 2023 16:53:49 +0100 Subject: [PATCH 678/789] Document the taxonomy parameters --- docs/output.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/output.md b/docs/output.md index 85b163c..d34d597 100644 --- a/docs/output.md +++ b/docs/output.md @@ -449,6 +449,8 @@ The resulting HTML files can be loaded into your web browser for exploration. Ea
    +By enabling the parameter `--taxonomy` and giving the path to a directory containing taxdump files, the taxon name, the taxon rank and the taxon's entire lineage can be added in the output. Those should be configured through `ext.args` by respectively using the parameters `--add-name`, `--add-rank` and `--add-lineage`. + These files will likely be the most useful files for the comparison of differences in classification between different tools or building consensuses, with the caveat they have slightly less information than the actual output from each tool (which may have non-standard information e.g. taxonomic rank, percentage of hits, abundance estimations). The following report files are used for the taxpasta step: From 2f0c68a833540a292367b49d16c642d4c8f43e31 Mon Sep 17 00:00:00 2001 From: sofstam Date: Mon, 27 Feb 2023 10:15:42 +0100 Subject: [PATCH 679/789] Last review suggestions --- conf/modules.config | 4 ++++ docs/output.md | 2 +- nextflow.config | 4 ++++ nextflow_schema.json | 22 ++++++++++++++++++++++ 4 files changed, 31 insertions(+), 1 deletion(-) diff --git a/conf/modules.config b/conf/modules.config index 263bca3..a3cb66a 100644 --- a/conf/modules.config +++ b/conf/modules.config @@ -547,6 +547,10 @@ process { [ "-p ${meta.tool} -o ${meta.tool}_${meta.id}.${params.standardisation_taxpasta_format}", params.taxpasta_taxonomy_dir ? "--taxonomy ${params.taxpasta_taxonomy_dir}" : "", + params.taxpasta_add_name ? "--add-name" : "", + params.taxpasta_add_rank ? "--add-rank" : "", + params.taxpasta_add_lineage ? "--add-lineage" : "", + params.taxpasta_add_idlineage ? "--add-id-lineage" : "", ].join(' ').trim() } publishDir = [ diff --git a/docs/output.md b/docs/output.md index d34d597..b944299 100644 --- a/docs/output.md +++ b/docs/output.md @@ -449,7 +449,7 @@ The resulting HTML files can be loaded into your web browser for exploration. Ea
    -By enabling the parameter `--taxonomy` and giving the path to a directory containing taxdump files, the taxon name, the taxon rank and the taxon's entire lineage can be added in the output. Those should be configured through `ext.args` by respectively using the parameters `--add-name`, `--add-rank` and `--add-lineage`. +By enabling the parameter `--taxonomy` and giving the path to a directory containing taxdump files, the taxon name, the taxon rank, the taxon's entire lineage including taxon names and the taxon's entire lineage including taxon identifiers can be added in the output. Those should be configured through `ext.args` by respectively using the parameters `--add-name`, `--add-rank`, `--add-lineage` and `--add-id-lineage`. These files will likely be the most useful files for the comparison of differences in classification between different tools or building consensuses, with the caveat they have slightly less information than the actual output from each tool (which may have non-standard information e.g. taxonomic rank, percentage of hits, abundance estimations). diff --git a/nextflow.config b/nextflow.config index 79f1d71..fc78904 100644 --- a/nextflow.config +++ b/nextflow.config @@ -158,6 +158,10 @@ params { run_profile_standardisation = false standardisation_taxpasta_format = 'tsv' taxpasta_taxonomy_dir = false + taxpasta_add_name = false + taxpasta_add_rank = false + taxpasta_add_lineage = false + taxpasta_add_idlineage = false standardisation_motus_generatebiom = false } diff --git a/nextflow_schema.json b/nextflow_schema.json index 303ab5c..4614dd9 100644 --- a/nextflow_schema.json +++ b/nextflow_schema.json @@ -521,6 +521,28 @@ "type": "boolean", "description": "The path to a directory containing taxdump files.", "help_text": "At least nodes.dmp and names.dmp are required. A merged.dmp file is optional." + }, + "taxpasta_add_name": { + "type": "string", + "default": "false", + "description": "Add the taxon name to the output." + }, + "taxpasta_add_rank": { + "type": "string", + "default": "false", + "description": "Add the taxon rank to the output." + }, + "taxpasta_add_lineage": { + "type": "string", + "default": "false", + "description": "Add the taxon's entire lineage to the output.", + "help_text": "These are taxon names separated by semi-colons. " + }, + "taxpasta_add_idlineage": { + "type": "string", + "default": "false", + "description": "Add the taxon's entire lineage to the output.", + "help_text": "These are taxon identifiers separated by semi-colons. " } }, "fa_icon": "fas fa-chart-line" From 489650feb8dbff56d83078f7b772b1e80916269c Mon Sep 17 00:00:00 2001 From: sofstam Date: Mon, 27 Feb 2023 10:24:14 +0100 Subject: [PATCH 680/789] Linting --- nextflow_schema.json | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/nextflow_schema.json b/nextflow_schema.json index 4614dd9..cacff75 100644 --- a/nextflow_schema.json +++ b/nextflow_schema.json @@ -523,24 +523,20 @@ "help_text": "At least nodes.dmp and names.dmp are required. A merged.dmp file is optional." }, "taxpasta_add_name": { - "type": "string", - "default": "false", + "type": "boolean", "description": "Add the taxon name to the output." }, "taxpasta_add_rank": { - "type": "string", - "default": "false", + "type": "boolean", "description": "Add the taxon rank to the output." }, "taxpasta_add_lineage": { - "type": "string", - "default": "false", + "type": "boolean", "description": "Add the taxon's entire lineage to the output.", "help_text": "These are taxon names separated by semi-colons. " }, "taxpasta_add_idlineage": { - "type": "string", - "default": "false", + "type": "boolean", "description": "Add the taxon's entire lineage to the output.", "help_text": "These are taxon identifiers separated by semi-colons. " } From d96e0a17a5c002d707c2223e65437420ee06b1a1 Mon Sep 17 00:00:00 2001 From: Sofia Stamouli <91951607+sofstam@users.noreply.github.com> Date: Mon, 27 Feb 2023 10:39:10 +0100 Subject: [PATCH 681/789] Update conf/modules.config Co-authored-by: James A. Fellows Yates --- conf/modules.config | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/conf/modules.config b/conf/modules.config index a3cb66a..defef95 100644 --- a/conf/modules.config +++ b/conf/modules.config @@ -550,7 +550,7 @@ process { params.taxpasta_add_name ? "--add-name" : "", params.taxpasta_add_rank ? "--add-rank" : "", params.taxpasta_add_lineage ? "--add-lineage" : "", - params.taxpasta_add_idlineage ? "--add-id-lineage" : "", + params.taxpasta_add_idlineage ? "--add-id-lineage" : "" ].join(' ').trim() } publishDir = [ From 1aef73cda869e2c6bfe94bda04b6bd6a13d9b6d4 Mon Sep 17 00:00:00 2001 From: Sofia Stamouli <91951607+sofstam@users.noreply.github.com> Date: Mon, 27 Feb 2023 10:39:44 +0100 Subject: [PATCH 682/789] Update docs/output.md Co-authored-by: James A. Fellows Yates --- docs/output.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/output.md b/docs/output.md index b944299..54bdeb1 100644 --- a/docs/output.md +++ b/docs/output.md @@ -449,7 +449,7 @@ The resulting HTML files can be loaded into your web browser for exploration. Ea -By enabling the parameter `--taxonomy` and giving the path to a directory containing taxdump files, the taxon name, the taxon rank, the taxon's entire lineage including taxon names and the taxon's entire lineage including taxon identifiers can be added in the output. Those should be configured through `ext.args` by respectively using the parameters `--add-name`, `--add-rank`, `--add-lineage` and `--add-id-lineage`. +By providing the path to a directory containing taxdump files to `--taxpasta_taxonomy_dir`, the taxon name, the taxon rank, the taxon's entire lineage including taxon names and/or the taxon's entire lineage including taxon identifiers can also be added in the output in addition to just the taxon ID. Addition of this extra information can be turned by using the parameters `--add-name`, `--add-rank`, `--add-lineage` and `--add-id-lineage` respectively. These files will likely be the most useful files for the comparison of differences in classification between different tools or building consensuses, with the caveat they have slightly less information than the actual output from each tool (which may have non-standard information e.g. taxonomic rank, percentage of hits, abundance estimations). From d454ceed862e96730f87d51d0e14814f9554c9e2 Mon Sep 17 00:00:00 2001 From: Sofia Stamouli <91951607+sofstam@users.noreply.github.com> Date: Mon, 27 Feb 2023 11:00:42 +0100 Subject: [PATCH 683/789] Update docs/output.md Co-authored-by: James A. Fellows Yates --- docs/output.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/output.md b/docs/output.md index 54bdeb1..0d35bdd 100644 --- a/docs/output.md +++ b/docs/output.md @@ -449,7 +449,7 @@ The resulting HTML files can be loaded into your web browser for exploration. Ea -By providing the path to a directory containing taxdump files to `--taxpasta_taxonomy_dir`, the taxon name, the taxon rank, the taxon's entire lineage including taxon names and/or the taxon's entire lineage including taxon identifiers can also be added in the output in addition to just the taxon ID. Addition of this extra information can be turned by using the parameters `--add-name`, `--add-rank`, `--add-lineage` and `--add-id-lineage` respectively. +By providing the path to a directory containing taxdump files to `--taxpasta_taxonomy_dir`, the taxon name, the taxon rank, the taxon's entire lineage including taxon names and/or the taxon's entire lineage including taxon identifiers can also be added in the output in addition to just the taxon ID. Addition of this extra information can be turned by using the parameters `--taxpasta_add_name`, `--taxpasta_add_rank`, `--taxpasta_add_lineage` and `--taxpasta_add_idlineage` respectively. These files will likely be the most useful files for the comparison of differences in classification between different tools or building consensuses, with the caveat they have slightly less information than the actual output from each tool (which may have non-standard information e.g. taxonomic rank, percentage of hits, abundance estimations). From e3e465df1f1a4b0d64754de93a7952592b1efd73 Mon Sep 17 00:00:00 2001 From: Sofia Stamouli <91951607+sofstam@users.noreply.github.com> Date: Mon, 27 Feb 2023 11:00:59 +0100 Subject: [PATCH 684/789] Update nextflow_schema.json Co-authored-by: James A. Fellows Yates --- nextflow_schema.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/nextflow_schema.json b/nextflow_schema.json index cacff75..65d17b1 100644 --- a/nextflow_schema.json +++ b/nextflow_schema.json @@ -518,7 +518,7 @@ "enum": ["tsv", "csv", "arrow", "parquet", "biom"] }, "taxpasta_taxonomy_dir": { - "type": "boolean", + "type": "string", "description": "The path to a directory containing taxdump files.", "help_text": "At least nodes.dmp and names.dmp are required. A merged.dmp file is optional." }, From 69430ef8519be38b9e72ba3b0a3adb629626976f Mon Sep 17 00:00:00 2001 From: Sofia Stamouli <91951607+sofstam@users.noreply.github.com> Date: Mon, 27 Feb 2023 11:02:55 +0100 Subject: [PATCH 685/789] Update nextflow.config Co-authored-by: James A. Fellows Yates --- nextflow.config | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/nextflow.config b/nextflow.config index fc78904..19ca198 100644 --- a/nextflow.config +++ b/nextflow.config @@ -157,7 +157,7 @@ params { // profile standardisation run_profile_standardisation = false standardisation_taxpasta_format = 'tsv' - taxpasta_taxonomy_dir = false + taxpasta_taxonomy_dir = null taxpasta_add_name = false taxpasta_add_rank = false taxpasta_add_lineage = false From 4dea308c22a09eaf84e740f1af706faac4463b56 Mon Sep 17 00:00:00 2001 From: sofstam Date: Mon, 27 Feb 2023 11:34:19 +0100 Subject: [PATCH 686/789] Linting --- modules.json | 170 ++++++++++++++++++++++++++++++++++++++------------- 1 file changed, 127 insertions(+), 43 deletions(-) diff --git a/modules.json b/modules.json index d1899a4..f4a5e86 100644 --- a/modules.json +++ b/modules.json @@ -8,217 +8,301 @@ "adapterremoval": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "bbmap/bbduk": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "bowtie2/align": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "bowtie2/build": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "bracken/bracken": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "bracken/combinebrackenoutputs": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "cat/fastq": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "centrifuge/centrifuge": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "centrifuge/kreport": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "custom/dumpsoftwareversions": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "diamond/blastx": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "falco": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": ["modules"], + "installed_by": [ + "modules" + ], "patch": "modules/nf-core/falco/falco.diff" }, "fastp": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "fastqc": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "filtlong": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "gunzip": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "kaiju/kaiju": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "kaiju/kaiju2krona": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "kaiju/kaiju2table": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "kraken2/kraken2": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "krakentools/combinekreports": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "krakentools/kreport2krona": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "krakenuniq/preloadedkrakenuniq": { "branch": "master", "git_sha": "a6eb17f65b3ee5761c25c075a6166c9f76733cee", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "krona/ktimporttaxonomy": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "krona/ktimporttext": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "malt/run": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "megan/rma2info": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "metaphlan3/mergemetaphlantables": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "metaphlan3/metaphlan3": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "minimap2/align": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "minimap2/index": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "motus/merge": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "motus/profile": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "multiqc": { "branch": "master", "git_sha": "ee80d14721e76e2e079103b8dcd5d57129e584ba", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "porechop/porechop": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": ["modules"], + "installed_by": [ + "modules" + ], "patch": "modules/nf-core/porechop/porechop/porechop-porechop.diff" }, "prinseqplusplus": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "samtools/bam2fq": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "samtools/index": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "samtools/stats": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "samtools/view": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "taxpasta/merge": { "branch": "master", "git_sha": "fe58454add6225d2b7468e6d72a3a1f6a3149638", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "untar": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] } } } } } -} +} \ No newline at end of file From c94bfb0cf14faae54ed6678adbff46f8b56cdbff Mon Sep 17 00:00:00 2001 From: sofstam Date: Mon, 27 Feb 2023 13:09:07 +0100 Subject: [PATCH 687/789] Fix prettier --- modules.json | 170 +++++++++++++-------------------------------------- 1 file changed, 43 insertions(+), 127 deletions(-) diff --git a/modules.json b/modules.json index f4a5e86..d1899a4 100644 --- a/modules.json +++ b/modules.json @@ -8,301 +8,217 @@ "adapterremoval": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "bbmap/bbduk": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "bowtie2/align": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "bowtie2/build": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "bracken/bracken": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "bracken/combinebrackenoutputs": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "cat/fastq": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "centrifuge/centrifuge": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "centrifuge/kreport": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "custom/dumpsoftwareversions": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "diamond/blastx": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "falco": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": [ - "modules" - ], + "installed_by": ["modules"], "patch": "modules/nf-core/falco/falco.diff" }, "fastp": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "fastqc": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "filtlong": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "gunzip": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "kaiju/kaiju": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "kaiju/kaiju2krona": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "kaiju/kaiju2table": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "kraken2/kraken2": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "krakentools/combinekreports": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "krakentools/kreport2krona": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "krakenuniq/preloadedkrakenuniq": { "branch": "master", "git_sha": "a6eb17f65b3ee5761c25c075a6166c9f76733cee", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "krona/ktimporttaxonomy": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "krona/ktimporttext": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "malt/run": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "megan/rma2info": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "metaphlan3/mergemetaphlantables": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "metaphlan3/metaphlan3": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "minimap2/align": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "minimap2/index": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "motus/merge": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "motus/profile": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "multiqc": { "branch": "master", "git_sha": "ee80d14721e76e2e079103b8dcd5d57129e584ba", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "porechop/porechop": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": [ - "modules" - ], + "installed_by": ["modules"], "patch": "modules/nf-core/porechop/porechop/porechop-porechop.diff" }, "prinseqplusplus": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "samtools/bam2fq": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "samtools/index": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "samtools/stats": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "samtools/view": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "taxpasta/merge": { "branch": "master", "git_sha": "fe58454add6225d2b7468e6d72a3a1f6a3149638", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "untar": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] } } } } } -} \ No newline at end of file +} From 99fe8adb1bb023f3bcc032f554c2212d94adbe81 Mon Sep 17 00:00:00 2001 From: sofstam Date: Mon, 27 Feb 2023 13:49:02 +0100 Subject: [PATCH 688/789] Add helptext --- nextflow_schema.json | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/nextflow_schema.json b/nextflow_schema.json index 65d17b1..02c5688 100644 --- a/nextflow_schema.json +++ b/nextflow_schema.json @@ -520,25 +520,27 @@ "taxpasta_taxonomy_dir": { "type": "string", "description": "The path to a directory containing taxdump files.", - "help_text": "At least nodes.dmp and names.dmp are required. A merged.dmp file is optional." + "help_text": "This arguments provides the path to the directory containing taxdump files. At least nodes.dmp and names.dmp are required. A merged.dmp file is optional. \n\nModifies tool parameter(s):\n-taxpasta: `--taxpasta_taxonomy_dir`" }, "taxpasta_add_name": { "type": "boolean", - "description": "Add the taxon name to the output." + "description": "Add the taxon name to the output.", + "help_text": "The standard output format of taxpasta is a two-column table including the read counts and the integer taxonomic ID. The taxon name can be added as additional information to the output table.\n\nModifies tool parameter(s):\n- taxpasta: `taxpasta_add_name`" }, "taxpasta_add_rank": { "type": "boolean", - "description": "Add the taxon rank to the output." + "description": "Add the taxon rank to the output.", + "help_text": "The standard output format of taxpasta is a two-column table including the read counts and the integer taxonomic ID. The taxon rank can be added as additional information to the output table.\n\nModifies tool parameter(s):\n- taxpasta: `taxpasta_add_rank`" }, "taxpasta_add_lineage": { "type": "boolean", "description": "Add the taxon's entire lineage to the output.", - "help_text": "These are taxon names separated by semi-colons. " + "help_text": "\nThe standard output format of taxpasta is a two-column table including the read counts and the integer taxonomic ID. The taxon's entire lineage with the taxon names separated by semi-colons can be added as additional information to the output table.\n\nModifies tool parameter(s):\n- taxpasta: `taxpasta_add_lineage`\n" }, "taxpasta_add_idlineage": { "type": "boolean", "description": "Add the taxon's entire lineage to the output.", - "help_text": "These are taxon identifiers separated by semi-colons. " + "help_text": "\nThe standard output format of taxpasta is a two-column table including the read counts and the integer taxonomic ID. The taxon's entire lineage with the taxon identifiers separated by semi-colons can be added as additional information to the output table.\n\nModifies tool parameter(s):\n- taxpasta: `taxpasta_add_idlineage`\n" } }, "fa_icon": "fas fa-chart-line" From 54af021965837019a0fc423c34008704c2fe9a98 Mon Sep 17 00:00:00 2001 From: Sofia Stamouli <91951607+sofstam@users.noreply.github.com> Date: Mon, 27 Feb 2023 14:18:01 +0100 Subject: [PATCH 689/789] Update nextflow_schema.json Co-authored-by: James A. Fellows Yates --- nextflow_schema.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/nextflow_schema.json b/nextflow_schema.json index 02c5688..cc6b26f 100644 --- a/nextflow_schema.json +++ b/nextflow_schema.json @@ -525,7 +525,7 @@ "taxpasta_add_name": { "type": "boolean", "description": "Add the taxon name to the output.", - "help_text": "The standard output format of taxpasta is a two-column table including the read counts and the integer taxonomic ID. The taxon name can be added as additional information to the output table.\n\nModifies tool parameter(s):\n- taxpasta: `taxpasta_add_name`" + "help_text": "The standard output format of taxpasta is a two-column table including the read counts and the integer taxonomic ID. The taxon name can be added as additional information to the output table.\n\nModifies tool parameter(s):\n- taxpasta: `--taxpasta_add_name`" }, "taxpasta_add_rank": { "type": "boolean", From 9621d34c4a3c25d949ef7f62e077cf69ed1e1289 Mon Sep 17 00:00:00 2001 From: Sofia Stamouli <91951607+sofstam@users.noreply.github.com> Date: Mon, 27 Feb 2023 14:18:11 +0100 Subject: [PATCH 690/789] Update nextflow_schema.json Co-authored-by: James A. Fellows Yates --- nextflow_schema.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/nextflow_schema.json b/nextflow_schema.json index cc6b26f..cd3ff46 100644 --- a/nextflow_schema.json +++ b/nextflow_schema.json @@ -530,7 +530,7 @@ "taxpasta_add_rank": { "type": "boolean", "description": "Add the taxon rank to the output.", - "help_text": "The standard output format of taxpasta is a two-column table including the read counts and the integer taxonomic ID. The taxon rank can be added as additional information to the output table.\n\nModifies tool parameter(s):\n- taxpasta: `taxpasta_add_rank`" + "help_text": "The standard output format of taxpasta is a two-column table including the read counts and the integer taxonomic ID. The taxon rank can be added as additional information to the output table.\n\nModifies tool parameter(s):\n- taxpasta: `--taxpasta_add_rank`" }, "taxpasta_add_lineage": { "type": "boolean", From fff7453d0cf61401939230c145cecc4d590cbbf1 Mon Sep 17 00:00:00 2001 From: Sofia Stamouli <91951607+sofstam@users.noreply.github.com> Date: Mon, 27 Feb 2023 14:18:22 +0100 Subject: [PATCH 691/789] Update nextflow_schema.json Co-authored-by: James A. Fellows Yates --- nextflow_schema.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/nextflow_schema.json b/nextflow_schema.json index cd3ff46..8aee354 100644 --- a/nextflow_schema.json +++ b/nextflow_schema.json @@ -535,7 +535,7 @@ "taxpasta_add_lineage": { "type": "boolean", "description": "Add the taxon's entire lineage to the output.", - "help_text": "\nThe standard output format of taxpasta is a two-column table including the read counts and the integer taxonomic ID. The taxon's entire lineage with the taxon names separated by semi-colons can be added as additional information to the output table.\n\nModifies tool parameter(s):\n- taxpasta: `taxpasta_add_lineage`\n" + "help_text": "\nThe standard output format of taxpasta is a two-column table including the read counts and the integer taxonomic ID. The taxon's entire lineage with the taxon names separated by semi-colons can be added as additional information to the output table.\n\nModifies tool parameter(s):\n- taxpasta: `--taxpasta_add_lineage`\n" }, "taxpasta_add_idlineage": { "type": "boolean", From df5303270da03f11d186c8e4a8fb1e7b69385f71 Mon Sep 17 00:00:00 2001 From: Sofia Stamouli <91951607+sofstam@users.noreply.github.com> Date: Mon, 27 Feb 2023 14:18:30 +0100 Subject: [PATCH 692/789] Update nextflow_schema.json Co-authored-by: James A. Fellows Yates --- nextflow_schema.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/nextflow_schema.json b/nextflow_schema.json index 8aee354..2a72303 100644 --- a/nextflow_schema.json +++ b/nextflow_schema.json @@ -540,7 +540,7 @@ "taxpasta_add_idlineage": { "type": "boolean", "description": "Add the taxon's entire lineage to the output.", - "help_text": "\nThe standard output format of taxpasta is a two-column table including the read counts and the integer taxonomic ID. The taxon's entire lineage with the taxon identifiers separated by semi-colons can be added as additional information to the output table.\n\nModifies tool parameter(s):\n- taxpasta: `taxpasta_add_idlineage`\n" + "help_text": "\nThe standard output format of taxpasta is a two-column table including the read counts and the integer taxonomic ID. The taxon's entire lineage with the taxon identifiers separated by semi-colons can be added as additional information to the output table.\n\nModifies tool parameter(s):\n- taxpasta: `--taxpasta_add_idlineage`\n" } }, "fa_icon": "fas fa-chart-line" From 58f09ed659eba75d5818326ab9e5ef65677a9e6c Mon Sep 17 00:00:00 2001 From: sofstam Date: Wed, 1 Mar 2023 22:12:09 +0100 Subject: [PATCH 693/789] Update taxpasta/merge module --- modules.json | 172 ++++++++++++++++++------- modules/nf-core/taxpasta/merge/main.nf | 6 +- 2 files changed, 131 insertions(+), 47 deletions(-) diff --git a/modules.json b/modules.json index d1899a4..4b05d01 100644 --- a/modules.json +++ b/modules.json @@ -8,217 +8,301 @@ "adapterremoval": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "bbmap/bbduk": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "bowtie2/align": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "bowtie2/build": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "bracken/bracken": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "bracken/combinebrackenoutputs": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "cat/fastq": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "centrifuge/centrifuge": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "centrifuge/kreport": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "custom/dumpsoftwareversions": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "diamond/blastx": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "falco": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": ["modules"], + "installed_by": [ + "modules" + ], "patch": "modules/nf-core/falco/falco.diff" }, "fastp": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "fastqc": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "filtlong": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "gunzip": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "kaiju/kaiju": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "kaiju/kaiju2krona": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "kaiju/kaiju2table": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "kraken2/kraken2": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "krakentools/combinekreports": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "krakentools/kreport2krona": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "krakenuniq/preloadedkrakenuniq": { "branch": "master", "git_sha": "a6eb17f65b3ee5761c25c075a6166c9f76733cee", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "krona/ktimporttaxonomy": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "krona/ktimporttext": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "malt/run": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "megan/rma2info": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "metaphlan3/mergemetaphlantables": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "metaphlan3/metaphlan3": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "minimap2/align": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "minimap2/index": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "motus/merge": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "motus/profile": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "multiqc": { "branch": "master", "git_sha": "ee80d14721e76e2e079103b8dcd5d57129e584ba", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "porechop/porechop": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": ["modules"], + "installed_by": [ + "modules" + ], "patch": "modules/nf-core/porechop/porechop/porechop-porechop.diff" }, "prinseqplusplus": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "samtools/bam2fq": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "samtools/index": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "samtools/stats": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "samtools/view": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "taxpasta/merge": { "branch": "master", - "git_sha": "fe58454add6225d2b7468e6d72a3a1f6a3149638", - "installed_by": ["modules"] + "git_sha": "23ff77e576b3930923229e7430dcdd0b51012c1d", + "installed_by": [ + "modules" + ] }, "untar": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] } } } } } -} +} \ No newline at end of file diff --git a/modules/nf-core/taxpasta/merge/main.nf b/modules/nf-core/taxpasta/merge/main.nf index 46aea29..00c63ba 100644 --- a/modules/nf-core/taxpasta/merge/main.nf +++ b/modules/nf-core/taxpasta/merge/main.nf @@ -2,10 +2,10 @@ process TAXPASTA_MERGE { tag "$meta.id" label 'process_single' - conda "bioconda::taxpasta=0.2.0" + conda "bioconda::taxpasta=0.2.1" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/taxpasta:0.2.0--pyhdfd78af_0': - 'quay.io/biocontainers/taxpasta:0.2.0--pyhdfd78af_0' }" + 'https://depot.galaxyproject.org/singularity/taxpasta:0.2.1--pyhdfd78af_0': + 'quay.io/biocontainers/taxpasta:0.2.1--pyhdfd78af_0' }" input: From 7ae7fb528b23255ee491c459f1c6fb5d12c7eb9c Mon Sep 17 00:00:00 2001 From: sofstam Date: Wed, 1 Mar 2023 22:17:07 +0100 Subject: [PATCH 694/789] Prettier --- modules.json | 170 +++++++++++++-------------------------------------- 1 file changed, 43 insertions(+), 127 deletions(-) diff --git a/modules.json b/modules.json index 4b05d01..6e41dad 100644 --- a/modules.json +++ b/modules.json @@ -8,301 +8,217 @@ "adapterremoval": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "bbmap/bbduk": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "bowtie2/align": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "bowtie2/build": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "bracken/bracken": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "bracken/combinebrackenoutputs": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "cat/fastq": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "centrifuge/centrifuge": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "centrifuge/kreport": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "custom/dumpsoftwareversions": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "diamond/blastx": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "falco": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": [ - "modules" - ], + "installed_by": ["modules"], "patch": "modules/nf-core/falco/falco.diff" }, "fastp": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "fastqc": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "filtlong": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "gunzip": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "kaiju/kaiju": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "kaiju/kaiju2krona": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "kaiju/kaiju2table": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "kraken2/kraken2": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "krakentools/combinekreports": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "krakentools/kreport2krona": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "krakenuniq/preloadedkrakenuniq": { "branch": "master", "git_sha": "a6eb17f65b3ee5761c25c075a6166c9f76733cee", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "krona/ktimporttaxonomy": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "krona/ktimporttext": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "malt/run": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "megan/rma2info": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "metaphlan3/mergemetaphlantables": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "metaphlan3/metaphlan3": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "minimap2/align": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "minimap2/index": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "motus/merge": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "motus/profile": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "multiqc": { "branch": "master", "git_sha": "ee80d14721e76e2e079103b8dcd5d57129e584ba", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "porechop/porechop": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": [ - "modules" - ], + "installed_by": ["modules"], "patch": "modules/nf-core/porechop/porechop/porechop-porechop.diff" }, "prinseqplusplus": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "samtools/bam2fq": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "samtools/index": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "samtools/stats": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "samtools/view": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "taxpasta/merge": { "branch": "master", "git_sha": "23ff77e576b3930923229e7430dcdd0b51012c1d", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "untar": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] } } } } } -} \ No newline at end of file +} From a14937f668b59a5c4a7615af8fcf7438103d5e43 Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Thu, 2 Mar 2023 13:34:10 +0100 Subject: [PATCH 695/789] Remove unused module and fix module structure for samplesheet_check --- modules/local/ensure_fastq_extension.nf | 31 ------------------------- modules/local/samplesheet_check.nf | 4 ++++ 2 files changed, 4 insertions(+), 31 deletions(-) delete mode 100644 modules/local/ensure_fastq_extension.nf diff --git a/modules/local/ensure_fastq_extension.nf b/modules/local/ensure_fastq_extension.nf deleted file mode 100644 index 034c9bb..0000000 --- a/modules/local/ensure_fastq_extension.nf +++ /dev/null @@ -1,31 +0,0 @@ -process ENSURE_FASTQ_EXTENSION { - tag "$meta.id" - label 'process_low' - - conda "conda-forge::bash=5.0 - container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://containers.biocontainers.pro/s3/SingImgsRepo/biocontainers/v1.2.0_cv2/biocontainers_v1.2.0_cv2.img' : - 'biocontainers/biocontainers:v1.2.0_cv2' }" - - - input: - tuple val(meta), path(reads) - - output: - tuple val(meta), path('*.fastq.gz'), emit: reads - - script: - if (meta.single_end) { - fastq = "${reads.baseName}.fastq.gz" - """ - ln -s '${reads}' '${fastq}' - """ - } else { - first = "${reads[0].baseName}.fastq.gz" - second = "${reads[1].baseName}.fastq.gz" - """ - ln -s '${reads[0]}' '${first}' - ln -s '${reads[1]}' '${second}' - """ - } -} diff --git a/modules/local/samplesheet_check.nf b/modules/local/samplesheet_check.nf index 2879e46..ed686c8 100644 --- a/modules/local/samplesheet_check.nf +++ b/modules/local/samplesheet_check.nf @@ -1,5 +1,6 @@ process SAMPLESHEET_CHECK { tag "$samplesheet" + label 'process_single' conda "conda-forge::python=3.8.3" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? @@ -13,6 +14,9 @@ process SAMPLESHEET_CHECK { path '*.csv' , emit: csv path "versions.yml", emit: versions + when: + task.ext.when == null || task.ext.when + script: // This script is bundled with the pipeline, in nf-core/taxprofiler/bin/ """ check_samplesheet.py \\ From 5c549e5ce3e080b88383377a1d13d2083311accc Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Thu, 2 Mar 2023 13:49:03 +0100 Subject: [PATCH 696/789] Remove TODOs and references to under development --- .github/workflows/awsfulltest.yml | 1 - CITATIONS.md | 46 ++++++++++++++++++++++--------- README.md | 8 +----- conf/base.config | 2 -- docs/output.md | 2 -- nextflow.config | 1 - workflows/taxprofiler.nf | 3 +- 7 files changed, 35 insertions(+), 28 deletions(-) diff --git a/.github/workflows/awsfulltest.yml b/.github/workflows/awsfulltest.yml index fe81d27..a8974a0 100644 --- a/.github/workflows/awsfulltest.yml +++ b/.github/workflows/awsfulltest.yml @@ -15,7 +15,6 @@ jobs: steps: - name: Launch workflow via tower uses: nf-core/tower-action@v3 - # TODO nf-core: You can customise AWS full pipeline tests as required # Add full size test data (but still relatively small datasets for few samples) # on the `test_full.config` test runs with only one set of parameters with: diff --git a/CITATIONS.md b/CITATIONS.md index 2f75fdb..2ed0a2b 100644 --- a/CITATIONS.md +++ b/CITATIONS.md @@ -16,6 +16,10 @@ > Ewels P, Magnusson M, Lundin S, Käller M. MultiQC: summarize analysis results for multiple tools and samples in a single report. Bioinformatics. 2016 Oct 1;32(19):3047-8. doi: 10.1093/bioinformatics/btw354. Epub 2016 Jun 16. PubMed PMID: 27312411; PubMed Central PMCID: PMC5039924. +- [falco](https://doi.org/10.12688/f1000research.21142.2) + + > de Sena Brandine G and Smith AD. Falco: high-speed FastQC emulation for quality control of sequencing data. F1000Research 2021, 8:1874 + - [fastp](https://doi.org/10.1093/bioinformatics/bty560) > Chen, Shifu, Yanqing Zhou, Yaru Chen, and Jia Gu. 2018. Fastp: An Ultra-Fast All-in-One FASTQ Preprocessor. Bioinformatics 34 (17): i884-90. 10.1093/bioinformatics/bty560. @@ -26,27 +30,41 @@ - [Porechop](https://github.com/rrwick/Porechop) +- [FILTLONG](https://github.com/rrwick/Filtlong) + - [BBTools](http://sourceforge.net/projects/bbmap/) - [PRINSEQ++](https://doi.org/10.7287/peerj.preprints.27553v1) > Cantu, Vito Adrian, Jeffrey Sadural, and Robert Edwards. 2019. PRINSEQ++, a Multi-Threaded Tool for Fast and Efficient Quality Control and Preprocessing of Sequencing Datasets. e27553v1. PeerJ Preprints. doi: 10.7287/peerj.preprints.27553v1. -- [Kraken2](https://doi.org/10.1186/s13059-019-1891-0) +- [Bowtie2](https://doi.org/10.1038/nmeth.1923) - > Wood, Derrick E., Jennifer Lu, and Ben Langmead. 2019. Improved Metagenomic Analysis with Kraken 2. Genome Biology 20 (1): 257. doi: 10.1186/s13059-019-1891-0. + > Langmead, B., & Salzberg, S. L. (2012). Fast gapped-read alignment with Bowtie 2. Nature Methods, 9(4), 357–359. doi: 10.1038/nmeth.1923 -- [KrakenUniq](https://doi.org/10.1186/s13059-018-1568-0) +- [minimap2](https://doi.org/10.1093/bioinformatics/bty191) - > Breitwieser, Florian P., Daniel N. Baker, and Steven L. Salzberg. 2018. KrakenUniq: confident and fast metagenomics classification using unique k-mer counts. Genome Biology 19 (1): 198. doi: 10.1186/s13059-018-1568-0 + > Li, H. (2018). Minimap2: pairwise alignment for nucleotide sequences. Bioinformatics , 34(18), 3094–3100. doi: 10.1093/bioinformatics/bty191 + +- [SAMTools](https://doi.org/10.1093/gigascience/giab008) + + > Danecek, P., Bonfield, J. K., Liddle, J., Marshall, J., Ohan, V., Pollard, M. O., Whitwham, A., Keane, T., McCarthy, S. A., Davies, R. M., & Li, H. (2021). Twelve years of SAMtools and BCFtools. GigaScience, 10(2). doi: 10.1093/gigascience/giab008 - [Bracken](https://doi.org/10.7717/peerj-cs.104) > Lu, J., Breitwieser, F. P., Thielen, P., & Salzberg, S. L. (2017). Bracken: Estimating species abundance in metagenomics data. PeerJ Computer Science, 3, e104. doi: 10.7717/peerj-cs.104 -- [Krona](https://doi.org/10.1186/1471-2105-12-385) +- [Kraken2](https://doi.org/10.1186/s13059-019-1891-0) - > Ondov, Brian D., Nicholas H. Bergman, and Adam M. Phillippy. 2011. Interactive metagenomic visualization in a Web browser. BMC Bioinformatics 12 (1): 385. doi: 10.1186/1471-2105-12-385. + > Wood, Derrick E., Jennifer Lu, and Ben Langmead. 2019. Improved Metagenomic Analysis with Kraken 2. Genome Biology 20 (1): 257. doi: 10.1186/s13059-019-1891-0. + +- [KrakenUniq](https://doi.org/10.1186/s13059-018-1568-0) + + > Breitwieser, Florian P., Daniel N. Baker, and Steven L. Salzberg. 2018. KrakenUniq: confident and fast metagenomics classification using unique k-mer counts. Genome Biology 19 (1): 198. doi: 10.1186/s13059-018-1568-0 + + - [MetaPhlAn3](https://doi.org/10.7554/eLife.65088) + + > Beghini, Francesco, Lauren J McIver, Aitor Blanco-Míguez, Leonard Dubois, Francesco Asnicar, Sagun Maharjan, Ana Mailyan, et al. 2021. “Integrating Taxonomic, Functional, and Strain-Level Profiling of Diverse Microbial Communities with BioBakery 3.” Edited by Peter Turnbaugh, Eduardo Franco, and C Titus Brown. ELife 10 (May): e65088. doi: 10.7554/eLife.65088 - [MALT](https://doi.org/10.1038/s41559-017-0446-6) @@ -56,23 +74,25 @@ > Huson, Daniel H., Sina Beier, Isabell Flade, Anna Górska, Mohamed El-Hadidi, Suparna Mitra, Hans-Joachim Ruscheweyh, and Rewati Tappu. 2016. “MEGAN Community Edition - Interactive Exploration and Analysis of Large-Scale Microbiome Sequencing Data.” PLoS Computational Biology 12 (6): e1004957. doi: 10.1371/journal.pcbi.1004957. -- [MetaPhlAn3](https://doi.org/10.7554/eLife.65088) +- [DIAMOND](https://doi.org/10.1038/nmeth.3176) - > Beghini, Francesco, Lauren J McIver, Aitor Blanco-Míguez, Leonard Dubois, Francesco Asnicar, Sagun Maharjan, Ana Mailyan, et al. 2021. “Integrating Taxonomic, Functional, and Strain-Level Profiling of Diverse Microbial Communities with BioBakery 3.” Edited by Peter Turnbaugh, Eduardo Franco, and C Titus Brown. ELife 10 (May): e65088. doi: 10.7554/eLife.65088 +> Buchfink, Benjamin, Chao Xie, and Daniel H. Huson. 2015. “Fast and Sensitive Protein Alignment Using DIAMOND.” Nature Methods 12 (1): 59-60. doi: 10.1038/nmeth.3176. - [Centrifuge](https://doi.org/10.1101/gr.210641.116) > Kim, Daehwan, Li Song, Florian P. Breitwieser, and Steven L. Salzberg. 2016. “Centrifuge: Rapid and Sensitive Classification of Metagenomic Sequences.” Genome Research 26 (12): 1721-29. doi: 10.1101/gr.210641.116. -- [DIAMOND](https://doi.org/10.1038/nmeth.3176) +- [Kaiju](https://doi.org/10.1038/ncomms11257) -> Buchfink, Benjamin, Chao Xie, and Daniel H. Huson. 2015. “Fast and Sensitive Protein Alignment Using DIAMOND.” Nature Methods 12 (1): 59-60. doi: 10.1038/nmeth.3176. + > Menzel, P., Ng, K. L., & Krogh, A. (2016). Fast and sensitive taxonomic classification for metagenomics with Kaiju. Nature Communications, 7, 11257. doi: 10.1038/ncomms11257 -- [FILTLONG](https://github.com/rrwick/Filtlong) +- [mOTUs](https://doi.org/10.1186/s40168-022-01410-z) -- [falco](https://doi.org/10.12688/f1000research.21142.2) + > Ruscheweyh, H.-J., Milanese, A., Paoli, L., Karcher, N., Clayssen, Q., Keller, M. I., Wirbel, J., Bork, P., Mende, D. R., Zeller, G., & Sunagawa, S. (2022). Cultivation-independent genomes greatly expand taxonomic-profiling capabilities of mOTUs across various environments. Microbiome, 10(1), 212. doi: 10.1186/s40168-022-01410-z + +- [Krona](https://doi.org/10.1186/1471-2105-12-385) -> de Sena Brandine G and Smith AD. Falco: high-speed FastQC emulation for quality control of sequencing data. F1000Research 2021, 8:1874 + > Ondov, Brian D., Nicholas H. Bergman, and Adam M. Phillippy. 2011. Interactive metagenomic visualization in a Web browser. BMC Bioinformatics 12 (1): 385. doi: 10.1186/1471-2105-12-385. ## Software packaging/containerisation tools diff --git a/README.md b/README.md index 9c38e9b..1e43ab8 100644 --- a/README.md +++ b/README.md @@ -12,8 +12,6 @@ ## Introduction -> ⚠️ This pipeline is still under development! While the pipeline is usable, not all functionality will be available! - **nf-core/taxprofiler** is a bioinformatics best-practice analysis pipeline for taxonomic classification and profiling of shotgun metagenomic data. It allows for in-parallel taxonomic identification of reads or taxonomic abundance estimation with multiple classification and profiling tools against multiple databases, produces standardised output tables. The pipeline is built using [Nextflow](https://www.nextflow.io), a workflow tool to run tasks across multiple compute infrastructures in a very portable manner. It uses Docker/Singularity containers making installation trivial and results highly reproducible. The [Nextflow DSL2](https://www.nextflow.io/docs/latest/dsl2.html) implementation of this pipeline uses one container per process which makes it much easier to maintain and update software dependencies. Where possible, these processes have been submitted to and installed from [nf-core/modules](https://github.com/nf-core/modules) in order to make them available to all nf-core pipelines, and to everyone within the Nextflow community! @@ -24,8 +22,6 @@ The nf-core/taxprofiler CI test dataset uses sequencing data from [Maixer et al. ## Pipeline summary - - ![](docs/images/taxprofiler_tube.png) 1. Read QC ([`FastQC`](https://www.bioinformatics.babraham.ac.uk/projects/fastqc/) or [`falco`](https://github.com/smithlabcode/falco) as an alternative option) @@ -46,7 +42,7 @@ The nf-core/taxprofiler CI test dataset uses sequencing data from [Maixer et al. - [KrakenUniq](https://github.com/fbreitwieser/krakenuniq) 5. Perform optional post-processing with: - [bracken](https://ccb.jhu.edu/software/bracken/) -6. Standardises output tables +6. Standardises output tables ([`Taxpasta`](https://taxpasta.readthedocs.io)) 7. Present QC for raw reads ([`MultiQC`](http://multiqc.info/)) 8. Plotting Kraken2, Centrifuge, Kaiju and MALT results ([`Krona`](https://hpc.nih.gov/apps/kronatools.html)) @@ -98,8 +94,6 @@ For further information or help, don't hesitate to get in touch on the [Slack `# - - An extensive list of references for the tools used by the pipeline can be found in the [`CITATIONS.md`](CITATIONS.md) file. You can cite the `nf-core` publication as follows: diff --git a/conf/base.config b/conf/base.config index 7470db1..2f63669 100644 --- a/conf/base.config +++ b/conf/base.config @@ -10,7 +10,6 @@ process { - // TODO nf-core: Check the defaults for all processes cpus = { check_max( 1 * task.attempt, 'cpus' ) } memory = { check_max( 6.GB * task.attempt, 'memory' ) } time = { check_max( 4.h * task.attempt, 'time' ) } @@ -24,7 +23,6 @@ process { // These labels are used and recognised by default in DSL2 files hosted on nf-core/modules. // If possible, it would be nice to keep the same label naming convention when // adding in your local modules too. - // TODO nf-core: Customise requirements for specific processes. // See https://www.nextflow.io/docs/latest/config.html#config-process-selectors withLabel:process_single { cpus = { check_max( 1 , 'cpus' ) } diff --git a/docs/output.md b/docs/output.md index 0d35bdd..cbb04f8 100644 --- a/docs/output.md +++ b/docs/output.md @@ -6,8 +6,6 @@ This document describes the output produced by the pipeline. Most of the plots a The directories listed below will be created in the results directory after the pipeline has finished. All paths are relative to the top-level results directory. - - ## Pipeline overview The pipeline is built using [Nextflow](https://www.nextflow.io/) and processes data using the following steps: diff --git a/nextflow.config b/nextflow.config index 19ca198..885c439 100644 --- a/nextflow.config +++ b/nextflow.config @@ -9,7 +9,6 @@ // Global default params, used in configs params { - // TODO nf-core: Specify your pipeline's command line flags // Input options input = null diff --git a/workflows/taxprofiler.nf b/workflows/taxprofiler.nf index 12a41f3..e44015f 100644 --- a/workflows/taxprofiler.nf +++ b/workflows/taxprofiler.nf @@ -9,13 +9,13 @@ def summary_params = NfcoreSchema.paramsSummaryMap(workflow, params) // Validate input parameters WorkflowTaxprofiler.initialise(params, log) -// TODO nf-core: Add all file path parameters for the pipeline to the list below // Check input path parameters to see if they exist def checkPathParamList = [ params.input, params.genome, params.databases, params.outdir, params.longread_hostremoval_index, params.hostremoval_reference, params.shortread_hostremoval_index, params.multiqc_config, params.shortread_qc_adapterlist, params.krona_taxonomy_directory, + params.taxpasta_taxonomy_dir, params.multiqc_logo, params.multiqc_methods_description ] for (param in checkPathParamList) { if (param) { file(param, checkIfExists: true) } } @@ -301,7 +301,6 @@ workflow TAXPROFILER { ch_multiqc_files = ch_multiqc_files.mix( STANDARDISATION_PROFILES.out.mqc.collect{it[1]}.ifEmpty([]) ) } - // TODO create multiQC module for metaphlan MULTIQC ( ch_multiqc_files.collect(), ch_multiqc_config.toList(), From aedf0b34de16368ad6aa4285fa7a42c051b8f0ac Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Thu, 2 Mar 2023 13:51:28 +0100 Subject: [PATCH 697/789] Bump version for release --- nextflow.config | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/nextflow.config b/nextflow.config index 885c439..f6f3340 100644 --- a/nextflow.config +++ b/nextflow.config @@ -305,7 +305,7 @@ manifest { description = """Taxonomic profiling of shotgun metagenomic data""" mainScript = 'main.nf' nextflowVersion = '!>=22.10.1' - version = '1.0dev' + version = '1.0.0' doi = '' } From ec89187504eb624948211b1084ca54be6d3b7c94 Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Thu, 2 Mar 2023 13:53:32 +0100 Subject: [PATCH 698/789] Update CHANGELOG for first release --- CHANGELOG.md | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index ca0928b..92b9541 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,10 +3,18 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). -## v1.0dev - [date] +## v1.0.0 - Dodgy Dachshund [date] Initial release of nf-core/taxprofiler, created with the [nf-core](https://nf-co.re/) template. +- Add read quality control (sequencing QC, adapter removal and merging) +- Add read complexity filtering +- Add host-reads removal step +- Add run merging +- Add taxonomic classification +- Add taxon table standardisation +- Add post-classification visualisation + ### `Added` ### `Fixed` From 6c2ce4a1c940a6b51b235f8a69c9f8ef15b30b55 Mon Sep 17 00:00:00 2001 From: "James A. Fellows Yates" Date: Fri, 3 Mar 2023 08:37:31 +0100 Subject: [PATCH 699/789] Apply suggestions from code review Co-authored-by: Sofia Stamouli <91951607+sofstam@users.noreply.github.com> --- .github/PULL_REQUEST_TEMPLATE.md | 3 ++- CITATIONS.md | 4 ++-- conf/test_krakenuniq.config | 9 +++++---- docs/output.md | 6 +++--- docs/usage.md | 2 +- nextflow.config | 4 ++-- subworkflows/local/profiling.nf | 2 +- 7 files changed, 16 insertions(+), 14 deletions(-) diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md index 333c4f1..ae4285a 100644 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -15,7 +15,8 @@ Learn more about contributing: [CONTRIBUTING.md](https://github.com/nf-core/taxp - [ ] This comment contains a description of changes (with reason). - [ ] If you've fixed a bug or added code that should be tested, add tests! -- [ ] If you've added a new tool - have you followed the pipeline conventions in the [contribution docs](https://github.com/nf-core/taxprofiler/tree/master/.github/CONTRIBUTING.md)- [ ] If necessary, also make a PR on the nf-core/taxprofiler _branch_ on the [nf-core/test-datasets](https://github.com/nf-core/test-datasets) repository. +- [ ] If you've added a new tool - have you followed the pipeline conventions in the [contribution docs](https://github.com/nf-core/taxprofiler/tree/master/.github/CONTRIBUTING.md) +- [ ] If necessary, also make a PR on the nf-core/taxprofiler _branch_ on the [nf-core/test-datasets](https://github.com/nf-core/test-datasets) repository. - [ ] Make sure your code lints (`nf-core lint`). - [ ] Ensure the test suite passes (`nextflow run . -profile test,docker --outdir `). - [ ] Usage Documentation in `docs/usage.md` is updated. diff --git a/CITATIONS.md b/CITATIONS.md index 2ed0a2b..c9c16ae 100644 --- a/CITATIONS.md +++ b/CITATIONS.md @@ -62,7 +62,7 @@ > Breitwieser, Florian P., Daniel N. Baker, and Steven L. Salzberg. 2018. KrakenUniq: confident and fast metagenomics classification using unique k-mer counts. Genome Biology 19 (1): 198. doi: 10.1186/s13059-018-1568-0 - - [MetaPhlAn3](https://doi.org/10.7554/eLife.65088) +- [MetaPhlAn3](https://doi.org/10.7554/eLife.65088) > Beghini, Francesco, Lauren J McIver, Aitor Blanco-Míguez, Leonard Dubois, Francesco Asnicar, Sagun Maharjan, Ana Mailyan, et al. 2021. “Integrating Taxonomic, Functional, and Strain-Level Profiling of Diverse Microbial Communities with BioBakery 3.” Edited by Peter Turnbaugh, Eduardo Franco, and C Titus Brown. ELife 10 (May): e65088. doi: 10.7554/eLife.65088 @@ -76,7 +76,7 @@ - [DIAMOND](https://doi.org/10.1038/nmeth.3176) -> Buchfink, Benjamin, Chao Xie, and Daniel H. Huson. 2015. “Fast and Sensitive Protein Alignment Using DIAMOND.” Nature Methods 12 (1): 59-60. doi: 10.1038/nmeth.3176. + > Buchfink, Benjamin, Chao Xie, and Daniel H. Huson. 2015. “Fast and Sensitive Protein Alignment Using DIAMOND.” Nature Methods 12 (1): 59-60. doi: 10.1038/nmeth.3176. - [Centrifuge](https://doi.org/10.1101/gr.210641.116) diff --git a/conf/test_krakenuniq.config b/conf/test_krakenuniq.config index c811cd9..586a4d6 100644 --- a/conf/test_krakenuniq.config +++ b/conf/test_krakenuniq.config @@ -45,10 +45,11 @@ params { run_motus = false run_krona = true krona_taxonomy_directory = 'https://raw.githubusercontent.com/nf-core/test-datasets/modules/data/genomics/sarscov2/metagenome/krona_taxonomy.tab' - malt_save_reads = true - kraken2_save_reads = true - centrifuge_save_reads = true - diamond_save_reads = true + malt_save_reads = false + kraken2_save_reads = false + centrifuge_save_reads = false + diamond_save_reads = false + run_profile_standardisation = true } process { diff --git a/docs/output.md b/docs/output.md index cbb04f8..2c02879 100644 --- a/docs/output.md +++ b/docs/output.md @@ -16,12 +16,12 @@ The pipeline is built using [Nextflow](https://www.nextflow.io/) and processes d - [AdapterRemoval](#adapterremoval) - Adapter trimming for Illumina data - [Porechop](#porechop) - Adapter removal for Oxford Nanopore data - [BBDuk](#bbduk) - Quality trimming and filtering for Illumina data -- [PRINSEQ++](#prinseq++) - Quality trimming and filtering for Illunina data +- [PRINSEQ++](#prinseq) - Quality trimming and filtering for Illunina data - [Filtlong](#filtlong) - Quality trimming and filtering for Nanopore data - [Bowtie2](#bowtie2) - Host removal for Illumina reads - [minimap2](#minimap2) - Host removal for Nanopore reads -- [SAMtools stats](#samtoolsstats) - Statistics from host removal -- [SAMtools bam2fq](#samtoolsfastq) - Converts unmapped BAM file to fastq format (minimap2 only) +- [SAMtools stats](#samtools-stats) - Statistics from host removal +- [SAMtools bam2fq](#samtools-fastq) - Converts unmapped BAM file to fastq format (minimap2 only) - [Bracken](#bracken) - Taxonomic classifier using k-mers and abundance estimations - [Kraken2](#kraken2) - Taxonomic classifier using exact k-mer matches - [KrakenUniq](#krakenuniq) - Taxonomic classifier that combines the k-mer-based classification and the number of unique k-mers found in each species diff --git a/docs/usage.md b/docs/usage.md index 523d92a..3a45752 100644 --- a/docs/usage.md +++ b/docs/usage.md @@ -199,7 +199,7 @@ You can optionally save the FASTQ output of the run merging with the `--save_com > ⚠️ For nanopore data: we do not recommend performing any read preprocessing or complexity filtering if you are using ONTs Guppy toolkit for basecalling and post-processing. -#### Host Removal +#### Host-Read Removal Removal of possible-host reads from FASTQ files prior classification/profiling can be activated with `--perform_shortread_hostremoval` or `--perform_longread_hostremoval`. diff --git a/nextflow.config b/nextflow.config index f6f3340..827b70f 100644 --- a/nextflow.config +++ b/nextflow.config @@ -102,7 +102,7 @@ params { shortread_hostremoval_index = null longread_hostremoval_index = null save_hostremoval_index = false - save_hostremoval_bam = false + save_hostremoval_bam = false save_hostremoval_unmapped = false @@ -302,7 +302,7 @@ manifest { name = 'nf-core/taxprofiler' author = """nf-core community""" homePage = 'https://github.com/nf-core/taxprofiler' - description = """Taxonomic profiling of shotgun metagenomic data""" + description = """Taxonomic classification and profiling of shotgun metagenomic data""" mainScript = 'main.nf' nextflowVersion = '!>=22.10.1' version = '1.0.0' diff --git a/subworkflows/local/profiling.nf b/subworkflows/local/profiling.nf index a55dcaf..28ca7e8 100644 --- a/subworkflows/local/profiling.nf +++ b/subworkflows/local/profiling.nf @@ -329,7 +329,7 @@ workflow PROFILING { reads: [ single_meta + db_meta, reads.flatten() ] db: db } - // Hardcode to _always_ produce the report file (which is our basic otput, and goes into) + // Hardcode to _always_ produce the report file (which is our basic output, and goes into) KRAKENUNIQ_PRELOADEDKRAKENUNIQ ( ch_input_for_krakenuniq.reads, ch_input_for_krakenuniq.db, params.krakenuniq_ram_chunk_size, params.krakenuniq_save_reads, true, params.krakenuniq_save_readclassifications ) ch_multiqc_files = ch_multiqc_files.mix( KRAKENUNIQ_PRELOADEDKRAKENUNIQ.out.report ) ch_versions = ch_versions.mix( KRAKENUNIQ_PRELOADEDKRAKENUNIQ.out.versions.first() ) From 74a534352454e3c2a05292cd0554d9f1e16417cb Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Fri, 3 Mar 2023 09:11:10 +0100 Subject: [PATCH 700/789] Add taxpasta to tubemap --- docs/images/taxprofiler_tube.pdf | Bin 61548 -> 62441 bytes docs/images/taxprofiler_tube.png | Bin 706137 -> 731263 bytes docs/images/taxprofiler_tube.svg | 1157 +++++++++++++++++++----------- 3 files changed, 742 insertions(+), 415 deletions(-) diff --git a/docs/images/taxprofiler_tube.pdf b/docs/images/taxprofiler_tube.pdf index b0b10bbb2a1e45b1581dc74cd81bd864bb76b9dc..bf696cf199a2e55577dff7c1438ce0d47f0505b0 100644 GIT binary patch delta 38309 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 delta 37371 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%0Dg?T^Pwo(H?#={Lp{;X12sr`IiI z|8uQgNNO~eaLJWSNLi2e?g65qIaMcaR?Vq@&bQl7ddmD{(jNg2Jzq&yHZ*hU>)6V+ z3(+a7D${#-AE4V}M%PHr&m}r|QN@B|@(so)36ZA{H?_7VMn3DR%DkBTpKrDP=Z|ch zEonXnGfM=;w}tko=xI=$aXHrC^_#7ssp)xo0pZ{@O+-YJ^qP&R(j4{?fAJe1evqjh zk1oSzOM&7K|M<2-xQk&!BI|WYb>+3Hs4~kzD(J$@`p#HyK?xyAInjJk} zp5kI6QLf_^xk@boE_32Ihxfh@G3?SQPQbqVSav41OjadLGe;QJCs{zf_N5p9|JIIy zsW11Ti&6AlMg2YH<%w?_Y8o^LGLcK(o`A4z#%e4%fk}`|$q#FZ&LizYnuRtbFOuAqf#2Y_BUF+7vOoT zt)@XG<=uTarJCdKJLKa8?Z4rlw@Qx7GcofaddtRtCtfp1yrh|N@m#rnMv2mB+PwOy zaqCr{_!xH8G>u3U>ATE__HFaszfWT8!i+hoG@g}CvHzy3X^6b*y8p6N_~-SJsQ5TTcI>xH@nh;Lrc+ zk**0JscK9*Y96VN#3_LD(rADF?Eycxz88Hca3woJ&Qf)ljfXQw{rh+Rhw|pY_A@Do zc`}B9v=W-_0p=pQY0g&;E!NjwMw6MSTQA{RULg3(rM%`ov!|uK)fIzZCJF?NCY%L= zPx)Q@=ac@2Y$x~?nzB!z9F=so9Sd-K1*}cCTpaoBMVuV9N^0LGqka_zq(Jm|Yh&B0 z5+aX|dg1s{7Y43uEW}S*f6zxhjK9A5L1s<$dlfJ;@nb*pag#r^!zX*5T~9tM2pO|f zjOQheHz!9cq_7dWzn2_$#8~7LkAt(c3u7U2LCnm|KEMzcdW!rgnY+DlP z8PZRy&}bOwgD7s4Pc4(j=%e@t=07b1OHlKD!_)Utt;^*^tTPPSE>#8!q}3f`Ck>q!>c;ri6#$|cN39;;>QZG**Gs03%D6xK6fdx$ zM?DS*Ex=~3H0sa3Baa)S*4|sZnzHmvJMhd6h9r9!=rR-jBomutQSxv|hqBR^yDDd; zB_|)dh=Jw>RFyy0Z=;L346DEUC>jfA^us`z0T#oT;l-wxA8EQ*w$0c8G69w#del@j zc1g!5?Ie$F(oMmEo;7V*ZnwSR6W+(p)t|c>(`43;voedN4LMM&bD*Z!@wB*SKIoH6 zS2d5p$g$g&YC-FT?=9D~PRIRS&{Dn1r{-5zUHu1~2K&1aW3KXPIBEV+ZQtV}>O@A+ zG`xgU>(>v7Kl-)twUwOkxVVlIjlokTtskx)-MNYO?zyW0XE{kBi4m|1;#K}(5B@*y z_#0i?wI@Yr%CEGSG@=S0%!d`;+X~wbxlG?4I_!WfZ#V9K`f?@*bEZk0JsFqiRB!S| z08?IZ%Fn2&vWmLwV=(#1XyIYZ&p`-IbtLm*RILB}ex->u5 zrskt${uq>nu-t=>oGgJj-^K#nX(&((fF}e?7F zw^UwHpj|MdPshWu^ZQ?Qc|KJ`8WPGO_1624Oeiww)341ttj!;1Wo;|rTo}e)k{d2` zcH6XJ)~qxwV0gF$Jb^sGk~GWV&p)1O{ZxdvZg8^orWG-D#&|2|us5At51cy1F_#U08(nfF7SsRyWow-LT`qX@J9*iX?Lzj=^-<9Dd~maB!u^ zTDdVTuF2E3yv|zG4*Y_M!QYB53z9&oJH3pbN}Gd$K`>VO>e7w{S{|x^7EdaQ&ET}O zv^ER!1i|2^BOwp6@@m1>3i9$@lZ6Z(9V=rNM%W50P+6Vwkxjj;>NI~u_z$e%xa<_; zIf(qTAaqkwvbJ*;yEE%U5vDNz>an;=n>j4W@!%MB!_C8RdKvart&`Wa_M0uKXyz4j zEAB3pi4(z5PgBgx$hp&2!mOrse!S?2@AKeQ8U2e5ds~BLdJsr>g}wGR7;4$7e+l1a zzkN9&#N-l6*A z{dJgvyLAC~&O*6) zB-I@-!O(Wxwx7=kdoSiZS62eTWh#V1CLIZHt@cZ!bX2#A1g%k>luSO1mC0ne<7>hi z=q_)F{a2@e6Y@_d56NZ!BxUQBg@E5F^Pv(@jDPaoBgQ(e;zFE*|+~6mE464K)rGY59 zj1X50YY$9sg4E1OsoHG{=lR><-Ha;N03&dA zhTuSoO)U1dBq~epkkae?u^?SQcaJ2uZ6qr}^>nHIu_3MMJXIIJ~n8X|BsEut& zI4Zv6`4^82(ZY97wMNW zTK9=^9p}^H;HLu)^|DesRcLb@&Pdn2TQA4-F5AxpGvs^VF5vs@{qg%aJ3Aweu*GJK zrE^t|=B%xfdWFS{_0$V_dHH>iQXO9_Qa>y7_@LeOmK_1ukxX{a_jR#+{^df+xP)z&KVmNJ_AD}CIvS2B>%kbOyUcA?P6=%DjaC8Cr zxW=dEbnC}>;OxxP?{Cs9Fwd|y$pD9t)TWNKe{vs-V(P>S1BQ|xARF>hz{Z@`cH+}$ zJD=+3zrPJ$ci0DAp1(*FpozDS()(((?1w|d%amuT=x|Gx1@vepv8ZDnIh%E}4_;$= zPcPHcpb*kEy9Vxc7aqOKj>DG{7oJ4LrZYo3sUDi{%ave` z%@3y>oD-Wws}(F;@zsHR&(NT3qo29DIQ#+LTO=2&fe$(f95@dru4&8;VkBB;xVbHc zl=S6bP~U1=b4@=mDmHd(V*YFgt4acMwry^&QJ0xdK}nKsb%k7|japf8hS0|PSsbc1 z2^M*kKZHlBqf{h)^eqqYU$dE^+2u6KF1RJ3X}xN?H!6wSO=|)jKV&^roHqaQgmLON zGdx>CkZmYuFI%d_!fSQkB#MN+?CMuAYEC}Ojr}=G)KXn2oJ~k4Qx&I@Bi%r`pNqvH zeK3>sxJ@AT>$@J+oMBJwu9aH=dPE#{6|(_K@;!&?YVXt@?ap z+`$7a+-^VdkZXLQCTMjRL}HtYrktUyl8?u@AG*7iYqCe5JhrT{PRh1cC5@Nrfr_52sk)&dw*;6sBjt9Z1Xc0@$;Hr^Ud?5&k6>B zDrqAaj$%Cn-Geuy25_bmXyw;bGxF_o&21cB(%}@|5|zUyC^8LGAc`nFFWn!XSL17p zScKTpdb|=j-oAc)0C#J(5kyb!p+yq@M+1k;UK?GwfIOn+&U=(>r6--0k(At((rPS< z@%fv!C7ARwkaPGwLYa^67qYiC#Xf%BBsO~sFj-0MoN)Vsy>cE1nzabz!1jIn>@rkJ z&yaCDSLL>SXO3qt*2UR}_lNa5I<4*9X+M!W zSKEvqh0r$c*566h?KEHcit_|uRlj~H%kRy>_i4^biH~Q;-_rma=-tD?6`J43tCoRMzm<|6Xa{z z{bS>JD>zyygUelDuF(>U`zX=)liWc?JxtgRsc1FS5JvQsv7$kbaCpUb(p5!oo;QF_ z!$4P(=TO%sp>KcEnm4NM&s zv2Om!TfJ4Wj#`Td_rn%`zk6GqQ73)ph$XgII@iNga*Khh9+#hag*oH1A2G^>kkr(b zpBjicMg{+LS&VE#HUzEmVOh}yoko2NPu@efA$hq@FTx5+OIBz?aM@@Y`Sxw;X8SV@ z5ZwHF?HFcI5gX3kF<`@)F#5dtSRSh5mLWy2Ba?W_M+DavD#LChYZHP>$6`6>hc%5m z{i6p=#(r7LN_@|AX?7%t`(as{bNFyIr{ml}K*Phbhk$?`X!xquG3=HsT#W)ep}o)( za7LKA;-wyJUxrP^@_vnkCO7+n` z0170dCJi4m%W~5GzQoFhH1nbgn71C4wtXC=%PODBEaxn-g?CgwsYdaku6(mqODa#+4fwMYE!#m7gwY?Wih4cA^5QCy;8wtRlG2AQuS^^ z$3br-eK^(#&L;&m*M;bCt%UiQ;y|3R#HPi1`9``zg_RWY)}~Ib{Xw$*g$v7Q=-jbll+dONU7I{hh*$(?XWQ%ck{b6m4(Vv%NfwqT zi;IilF)?n`C#3UE#AW`muHw5`rb+9x(z)GXFT|tVu(6lfrVD+sW`PE<$d9wJjm_Bb zS!>E;sfZrAQIAxuF%>9W@=2}1u+&&6etbC7jJ4dTiNT(3PrKFmXl-R5bFmELH0OD) z0^O2~ys!NGgba$4^2Czd){(;J<{DmCuhORLj zs9@h=39?A16w&7T7&WyG3QSptuk6COV_5N{Wbm&l*mnhrgo;HmJlI$_dXlFCLgV7yEKWR1Q8(RK$HoV`&^*} zY8AD;UN7=af7ZTZYg6%-K+9^x1{*hR^xdCP57bm3xjCqKn>KhYZ? z|9d6OEicm=U7!VSJXxx;8sDayy*e9LSSUF60hLhE?r~D0`4u`*(WMJl4v$#sdmTBA z7tFJ^Jlzc~WP|BfKy1%u&xD*LXS;Ez6{tyYdiq&{o({F5gWQ2*WI_^HTlfp0CdvEW zK)F*?RMEUigRlV$frd2j`5Y1UH!fj1tzG>t72+gZ--x{P1&G9?+!%Be04In?e~9|@ zlADi&ZsYMZO9udHM-ckU;wHO~+*UuI6V80%dd52?LR1cK6Z}I-q;!3N*6-bVew7NR58JGAl+@9(NDys3w`iKUb1VHNUt1~!zFM=BX|lX zw#Bn9$=O{OA7J zOi{M9BP4T|`=;I`fkwr6sz;kN40{lJ(oLbrdy(0^zTSd&kN z>Q0upid0u<%jCSGpY&BKye!=LVug?B8%ce#+H8Cg{9)`j?ruqg^@BT4Yu5Ht#naOW>cNJwNf*pBL|xDpoC zS$i05Ci5w0VauEcI?utev20`%%rn=h)=j|g>-JO6$gEaNOUoIm+^5Hox-)60025`k z(5bgew@!UqIlb5=(LF?C(O({?TiCvkAd5kE#!Net;YMGDLwg?KF&XUhMAiCCs4eN}ruI@|{ zJ~H~r(3K2u(8Lo0tQuf2()kj&He(*GiuuqA18rz5z)dn}fUb!jVqFH8;8Ig%0e0u> z`2-{?0=|o;^xnj)Kh>#GU)OJnhBtlPvB6U;%YKNM5`8j#b#}<*B>s zwCp;1>KvLDI34%O`vLH;19iyA1m)|7t!mrQcpLpU)Bj6_yti$!eLi~+grf}RZE>my zXgEn~st=BM|6Gn#bj@Q6STD>cP!NY^nKOnk{1E7>9!mn~^Z`Am8F>!4S9>A9Mc^{s z`9=ILtKfWEC7Dju^R31h+MRIc>2em!@+-g7ITbQFs}Sd6w>n*B`E>!HebaB_Wv6rI z>lz6A%y3{Q4!^Z9!+XuPW8fAlB>82MR%q%&3C5KiYx?bsy<4!UD|Y z{VLToS*k_{e|-l z1|LM@R;_AgD#4@dcCOlaTfOoh7E;RxQg;&M5>kv)(hl>`;-NuTS1Ro=o?P}Ll)PU9 zFw_%Z(GKGiuZH8+)<)VaEO$u(!m-(T;CGSVvbeQHs4whdIUsbwWg_Xz`J{U;;oA=} zd;BK-EA{(>TSPYPcz4CSeRIGU-Bake59(XkI~?Hu%bYu-_~=fr`Qh|Gdi{M(1T*fB zjEt1oY3e}h$5;A1)@Tz=`o+kQ4r(Jo3QN10#4kX&q6VA*2my+E)T%+x4>)f)blRv= zX!y*d(SBJfC$>q;h=p7^_0@h&U~?e}_!gtK@0{#?n_xq<#fM zYy+&B!=XdQj9;StNlkiKb0hnB38w8CzTF|4K!f>@zdXBt-MF#j6lI1Ta*C+Q8u3HH zS2a$*_U5lg220cULeWHAW-J*y^4b+vVbDAr!f#Y#VKd2kmMD9P7P`~b0L_IsPaHx) zh@A)fGj#79Mk6h(LWXW#fB@0Knl3kNBJ_R08cUOPb^da0? z?7HE_yAR-~R-uxQH*JT27IcY)A-sXD`J{N$v5XyWekl3=eFte*FhgKZbif`-U8<2< z${Z7f{&H`0Jehzi4E8SLu$kQ++}#dMD}!;UEc%|w^{RQrAu!!60sREiQ5m@X;#qu- zv4aHM%h)vbmN|~goH|Wc^?A)2N5rf9gUNvf zw>2c|p|H+#=D0Q8#;XgNj~l+94mm?S)%aOcxhzo@zrV6uSb4W=r1$Ztc>Daa*r6A@qNIwsqUdAf zWHwCqa%a#w?UT;D3^k#r4MLylzyD2|03tpxO$S0s7rM2HFnW%|6ylY5Zri;ZKW@JL z`_nC0{ZzGjJKGkmM;V%p`of!f-?_fouUfWScp-Cos6C!q>PSvpvD8ZCY|jxnmTEQ5 zp^{_Ql@m%oKniJ~YRGI>Yc~Dgw|XlQ-#P*>k?3Y*W@VML9aA{;Ltp#PPd4-Rp7@sw zfZ2@FvD1ulCg%EI{x)+pof_JZP+I(ZsZhuAmR+@38qCab7ITjuJ-(J1`vCeX(lPFt zS(#;Qg|YllX}A#=G4wo2&zz9&@T=)Frh}YXUk(u2w-NF9kP(wPf;aroa^1E>C=7V ze&)iAZSZBO2wA2C(eFo~NZNjR@^W3YoCKzNFPcKs`TqWKq3_?1Q8YIfz!#&E5>xH3 zwBJ;Kw|K;uz2cPm2icxy$KrInV-Mu~yrDdHV0Tn`=tQcP)JZAj*-{x!ym*(z-Qp>@ zO_pyC{rlWKS+g+2)q$G>5ywgpEtdZ6N4nC#KiHF1DQ$Oz9ACq5!>9uj&q#bzucf2v zmG~>WU0rq`e$T82$T0e)w>FbM*Hg zsb2s7=#P@8H&2qExO=Q4l(TS-=^&o57k{Ov`iJmy?Y5Chp>MY=>^hb4cJ1`L@V|LN z8pUVU#!Yp-JyoR~ic5sfB>U9d6nn-i1wF?%?^AWBCM$xu<~gPBX9{ZisQdWji^h!W zzuUyza4Lfkfl-@LmIevsY}qw2@>U7Tf{-$p9C*n~{olhP1-p{$2&cZF86->?zNB|= zGUZx!X=2pacD}^tmNC{Q!3Z@68ECsXLF5l>z=CMx?ys)o&*=;kF3W1$x(M) zs(s`ir(^y@FnuKsn95eY)E;g$aPs>6D4}5?Y=qe+aKjJmfPWwS-3Aw7XPGaLZqe~L zT-sEzN!PH5i7vxf%u)5Fl6?K?BXaM=FS-l`dTDqUmbQ$z80_?U{(2%+H$Civ9A|{M zDB@ldW0Mq*!%t=gGcQXPsX6|6AQT=%BT@?9J!TNt91%CB`|HP@y?;MMD(gXB;XQ9Z zo3gQA?LTzhjO~zQVXS}6{pn9? zz~7dfk(M6o<$@P2vs~l#wtXo#p8lNu@0tHqhR9kjz}f-U+qv?orP_l6L|@t^xATJ}<+M=(@a(D`d*ol)Cy?W>d%^zl4xR^@L`1(GMbC(Z$@W zx(V%CK1W)F^u5#@Ddi;e244-=CY^A(mKONQg)SrRwuTg&LcOYko@Cb>-}t-iny*ZhAJ@bQowdl5N+>OwWd7!J z!xA6Q#a;3(=V1N#Qe)n)38JNeEMA7n3=4Z$-lgUZyNH%$c5sg2uQV#&9N$DKHF5II zmqx8ef&5zLa^?$5yTwPVsb|X~h9%$kHo#xPnwr>uH1#i|*zljgr?!$UU{*q)g z4AN5y5_(Dxi&p(L#jJdxom!+QMgXs5{;i zdx@!6%lSxgl-8eCGE6c2NheC8B&#SZf8y!(tGpb?-~Oi^y}>me6XxA3e4e~~2@Dy} z?PSLu^#8toZw_$K@)}>j5a38HdA|ti80D;`MvRe z*?FD>fhK{WZ;m6%j7HyUz5^*OxLd?f8p>Ryw>$NOHUDcFVf?tX;ZV{_*^U??`*XVP z(4)Q(-o*G5?*k)&o5g>A5@~X{bm?|H6KCV0+s_k6oxOhcV5-dWem?%`Rs1gITOzDQ zbidunet1y)5y!`=xbg4dBdrNTLt>_Bw>(*>>Eji=Lg4E!fTWXsw5H%47!a;jj)yP0a2k+WimWffhu)s%Te`{Zt) zgDgw>(=vZMIrXPc^>vSU(%?g+d9bqA`&*q4zUI4!;%oYK!G#MTfz@HwuVc={yZgT- z0ndj>pE|jZ53si8NI7iWz|1w7P9BCA=ePJjxPL8nE)HEQh~{Espp-6oJYCX~m^{T5 zzIa`W#gq59J6s0p?02FZG$Xc_7*tigaIhn*p~iH%{=p`>Ivg6x6!&ZZ@I(`xV_@od zEQkN=W3fmp`X(C#sr#+-`gO=e&tH1!nG2tD*T_?p>3U@sAGnn>W0%j~$HgMerZJIp&f zMvRSV|63CH%Jy9STGiA;K2CwVZuRsnC!@+W$!EB;Ejv1|Zb|*f5!Bi(dOnAqpR#y3 zm8AEYKZ*IJ5|#0NMY;;x!wZd)?xB@be-{1o9FULIpi)dsaERI<+{b*C#N7Y-vA_QQ zL0d11De}ho@-=8*`YQjZ;DVnLl_y`Lo=CIxh2kYKKP6$uy~0c)ibaJm+n%Bb;f{@07CH)d_@ zB~9NRqLRE4vhCOd^}TWoZ-48NXOd=Q>0lggI-x1kbsER9#QBMLWzF^yuaj|2y$5`X zq&iXcbNPA-=v~>}a4e~{@vtt;lck_*T+Xl$ebL? z*d}`B&iuxF#-n(qp2Or-FLT_eckR^l=`yO{sw(o$&UMPdTK2_X3*~H^(yqkf{Hcpi zytjF_FMfGvng2pn+3xe)KL>AK=hskBSUiRhO(_I?A)&45^AJM#mISVJsU)k6EF7BoY+&AKG zgr4P|;=v{z^9{b06U#OmDN^?*!drwSWSCe3j|du^W|e(^ZXD`Np_L}Y=X@4^58<{q&HCO-f2W2Vw!`^wXHhT?McQExvMsKqQEo zJucUjxN*aihy=n(?*yb-;WG}sY00ODE*c2L!q}OZVM)NQ^!Z5@!GzLFXZ@j53p=U? zFhLDh{IfDMd;0ss;6ok>C1m1~ixykoJR z@jzmb#YFIO0iwesT6u+QX=I13Wg=h4U z8a{NjNZbaxCzR3?p=7Tue$n$Cz0%W0bQNlaqn&>Hy1%mrX7Houc(L91@6K_2umH)W7aYkCjcpv?}ZES{dsb3AA@Vg0Ks|BFdm-OQ`jJvg4{=DeQ2 z&7;mJi#;^mM9FCIo7Z*MMNJe%p~r!{yeN~1S1)Gq?H9wPC6F30C1S7bD}G*j{n*?B zAqcKLu(J_^UYS?jknKfZeygc)km+F26a;=d8`w%2EyOt!+ZuDS0R*0cfS*$H9Gd(^ zV6Vhk3M&*LX)EAh9uWo-CJ8P48IV@P!CGJ|HyikJkO;r2I^b-O?%1c`6~9${?!9yn zeXl{uQn*e~vutk$_aE;Xfd7Y+B_*9Tz&OEBMhVd|tPOt(VDKmdLxarRHhcweH^q}W zu+$Y{u+KshFg^^S-lAFxff93i;&mLVIuv-Yu~C{GZgH4i#Dr)7+=_%2cy`LbX@Og6 z3G)%u7PFG0cro|}IjvhRHf7so0PfRFF(lrdFcuW;-s|`V7e^ZuIAY!iK7nF$95k)T zK?AN7MU1zA6|yx@QCv|F5plsh;YFlCjM}NM20)|V0>Xn#>-m(VrNzY|z-*@@nDM$& znPJmXxAY=I<4v|dGdsIDZlDYtm-R;h+e?92SjM!4!jlyqjPI=5vN=976tQ8{g<Xju}&DWAC(oMtL|{sD8h*ompBYS)w5mI^Jnp4GF0U!DTd zZrT=&5w1x3gPE<=%tsKnNS1&tS!Hehb)2`btNSxBs{|R}$zWw+JZG&QQL~l45VF)L zL73$e!x0n1P!43+eVXy*xRa<^zAu9~m`ONM(TOJ!k2mZ_P!;Mm#0D@+hJTf&TQmRq z@uv+NH#U#rmBkYc;z$8OL1heNO?foK!~)o7?2YHg+Tbr4*Om?CXu_JlQb$im7lR;C zJ|>7nE(0dq=p65&MPstQLQ03t8ivXu(7dU$@9+3ihPal3Yea6dDSi|kBv+BupnQkz zrG^*>Klm!%Kvp1@qIgQoq8)`DrW0TPM4T4I3P?RN8};tpp>TSM047fyQlQAGV{!91 z1#bub%0Oo5{5w+8bk*x>!C#FOzsL<*cq{4FvypH}*oE|qxCw=b>v)us2rlF&fdnc+ z0NM0mu`5@;pvg`$XgfRFo}~c$i7nfu90P~sJ)p9jfh2+HjLner<@N+4Tu`&=`gRKHFZNgtNCfx?> z;^Za4tLYyOyye@vsd*2j3W_Sqcv;D}XXO(QLN=rqtnkt=byP&vFC?@C= zXw9+mNvjq{EpT)}jjp5`fnGA6`#uNT=L4{R8RfGTAgrbrO@R8T`~ z6bB|~z62V$Fp^(>%p}D}Ixws25Vw3Iv#^aagl)3OIV5g`m5*bx;49v!35{+0nh6tF zrEJ?K0~PCvUyk7PU?f8XW64c{NdmG96GA1vz4Z6GZB$`Tg8=AoCC`p^`@AM81bb6q z1a8N-VTMj6UOn_Rr9a%xCnXTUgNZQ>aRtSorHQVvCT`He*wnTsa)$P@uoo;umY0_$ z6SZ!VoUJq-5D?HH?13i`g$xwY91y_GDiQkREcDyQc=fsbz*`ONQD5R_{iz@kPbQoyy6LHwElxwojav~=(#{-GM~DYSE8{mUMv zYNz!t_kV&bWF6kgne#338H41;wZhnyaYF`_uK_KWiK2b1f+mWs5Sh+FMXIIuVVlEG%R!X7VK?XDKTi{&-H8M7}YiQ75Ef75Wpw2aeo z;uamh<(I?rPt@=5E>-hLx;lZgP^61rw0;~l1xBFnPxjMk0x0$YHp zNf^#Lt&pSwV*T)3s*2sLckTq23~Kg2*Bxz>bcpF+I3oQZ{jeBudxAOk==&TH`^6qc z(t(2X7<(Mgo;(jlK8ix&Lh3hMqS1*54aj90%|_~&)=6xTqJ*)X!3|Ywl&QrA=L%o{ z`HB`?dM_5jFQJwdtTjA4d zPK@9(Y#*urEQ7Nz4PolYIhZG;(w6LmH!W!FTHq9H*}63$!wvlnjA;)YK5Vu)qm89H z@oKk*7`&Yb9BCB6H$p^wmp;v-&OCGLBL$E^Mky7zQ4(igyxAdgIIU*}-k^VMe*Q&^ zqOTFz3M&Eu-%o!_N}Q+~0qHOSt^WLIE8WIKSd$XRGX!-~Bak|PNL7N{ zYi_g0#$L)Jc9c#{!Ik*|h@J;gDaf(BIMdIB0XY^Gczp`CZQfjkO;xq|m8i`a5Tf+*LZO#*$QNDU`xVnvxPh;n1@b1AD6ufEpbPH1&q(%Z|J1X~M zy6Xqj9cX!sFI15D~g>Voj`AvHCGOO5E<7;~4H zPY_Ghp_Y_!{mQs7m74K0_}P??*kOoWZ(x~{fg&mt>3e{jTNJiR&390?SkJdvaPZGx z!$drBf62&5W<>t&DrC1=?2m`)R)Af5mBDu6e(vff2HP*aH~K(e9YPIWgH~i01B0Q3 zpPxhjb_hSCO3{T|UL?p~1g8T(kB9PH_TA10H91ab&g;-JC`L|qK&0U?k>WK_!F{g{ zyUq}{6oip6_8RV5UzLxNW)%RH&7jU~w3*Y%gZp|QKg|}67Y6^uM>bL0dmU8 z^IJzLKDLqd&t`aPMb7Qx)M;GN>x1$0 zWK@V*v>QKamwY?6!jVt8Z1+80z0QW`se_({1vXuekDW0ek#*YYp$V(h@)^*N1|~Xl z$>R-Rd)4dyZuD}mRBUQy>F((w%XvC&7R0Yno7Ii>WtwHyU? zd!0iRFOQ(EgbsAkjRPj;9Jlj+^8n=1f^$&|3kTd(OVd{Wf>V@PAOW6*-Dzlr3CbLl zge8aXm&uVWb=WJKhE`4^iAJD!pd zcr=9^Rx|r50-~@?D@@HS`2}A*IxjDe(!)0>ifs%$e{^3_eGhxW8TuU>ufkMriby`piCGn1JfMi)W$ixDkL zG>&hw?Uv3`s#iGU`iO!aY+@r6RTp{h9)%OW3=@nZP`lf|sNjVK8!3YDlg#%PjXY7^ zi^cM4ycsEU3jsn7f;%I5f)l^|%LT|(MJNT=?`hjPO&dhM7zCyP7#aIY@4PpXtC=u} z-NuytTk2tAaORlA1a2Y*30+j;_G9It-Caqxtq8?Z@u!^=O9hvyZ{-`GU>d z$mtOG=<0McU7}Vlma;&~A6tjx#JSRRZ;>7-OklsK(Hf|S;;u2n{Cbd!1kk-+mSNb{ z;#nT~3h+z4{s9!RqFH=pF3g)JZXyD z#iKy22tmB4|aLXRx^bT@Yfp)pfG(&ggfMM{LZyX-j`c+oqg66KuI zmTQr+AKoGY#K0ss9AF=D4tlkOJ1RoFq>q)9RiO^3Lt9|_$U5~9d;p2%C4Nh(xg92t zq{BvO+}rCdpj<7qJaOLVmlxIDz)+Du;z|!5MB(I}lj9KDZiy+Qu@CYC59MxQ!_*R- z$ePwZgmk>7c36^f7MO zvVFS@8YaQjZ)%t!aKVjm7MU5PiBf3U8j_waY_$zW;Y`QFs*=tBjM=N*Va+Zj_lVHS zj0AlB4w`Hcaf0SObE%-@H?YfV0n3>_I^Cj{(4?NEx!m`Y4W3IFQco(~kOKgYB$#_b z1KwAB&%F_{WQdy|-{Mn$I=N0q3gyWeU`_yUeoU>^_q4uYh#WuwyV z`Bs#D-ZO;;V9qb6y1igqNHpy%DHXtsgI-iN5`;_$Y?g!Du?%Cs=Wk|aTox< z$-=Y|PqOWTG3gMuP*HJV&ZU@b3kmgk3tb~mXXoE$2dWO|7Ont0Ad@Tvq5#U1zuLk7 zlsqfo4f>JUKX2F)4m%X8c}~jn*yGDkmyR$Ru`emC&>7W@7*p_gCN90xdrGr3a@C8Jc-Xg&fD#yec!>aR zVfCkno8U~;Pw7F%dQ)?1^x<1l56U>5?kEmW2&(bz@W1KE!nTQ}quIqK9UYseXk%{SK-3w`O2|~1vBncC6>y+$W$ea}^!Q@YEKD8ADOzn>k4ukCTiq|Am zw51|YKmiDgnGMx-zPn%V5pxp!<29uCD-C-|$tv0cCp?89+o{Kcu6oG$;rPD^P(UUk zI;<86NIK-~T4Tge&c>*a3Y(Ya6vH??*wT&;A<=#@+$PB0B*BFO{tm#<5tU~^s@KrD z#+`cv-B=6=grR9Gh#v&U#BUQG2u?vAGJo~TQWdq(+H!*9c7{OhZX0o=RoveGGhb_c zCBno8ajEKoy$p7iP^ceMv7LO>MvBCDR%{kUo(Ez3A*T6UqX8Q}ed5l(QMg(JensW2 z3;R);eZn03^m$)uCz>qc zBu7Qd^BN(7xILO${tgN9G2|vn zzPs{N^35k$6;?rnW#n!Lsp#>r*eZKj@)odMa&4Nn8;@8?{_bgXe7MKrKs*&=Sx+Do z<#+zfi)Nz=AL3g077BJ1c$*b?Fc_x9;SeKD-F{L34EB9^E6R8P5ul(Iiai)D3CeScf{RJ0Xxi^D<}+DU7E^jm<75m%=S|ow&QKbFZw=b=P*hrj zC`l}IKb7$@ZrX67($2d_ihXq0{inF3R9-WVMk1|t>_Z7x*!8e)Pd&-vXQykzf z-6m((v_?fqam5L8wF5vk%$KJ6E6F#Ez+fa|k$60zEgwLM*g!f-XuZqG#DyBx5oamg z#`mg&>ZY<8ERYl)H-Qgf{kLrzR&qw5R}|LRX{&P|X7icG?zx-@aMe;WXjQK0hW> z!H!mCzHxdalAuPY+HN2+@pEY+V-bWVtR)jO#zlPWp3%{O$Vw!4AheQ%XbnM{;{fa# z>}H;lBJRUJB{MQs7;TY3H8(lnWQ*5WoviOJbCEP|#N-UfcG%D~07OI!(l(GBgS-%f z734TPa%nz`u^Cx6l*@NAEGOThLe@`-!<}Rnf9Kqy7AyPVbEl0DA3ow0R9@)B%xvhd z<6rT|?zkMmYe(;Sz>NkNZdr&vE~P010V<*!DQH z=aVc@4#B071j=%6xmcB)SPY!C0X>2GqK%q27AK8IVB<3SV$vccX;pP4&!N`SLH|NE z?}xdd%Wl@82=Rn6bOlJ@*1U>}XHWwY&sFqQIw=k)NaR1B+w?YV38c=N0G22ZnLU-yR> z$J#!A3L2lpgID51g;?rg=LO)%fVJ$UFPu|}hrARpOag`)8yhcfWT#||6?*-%68*H^ z{UYk$)XXbxKUFU>3jA=e=4aov@!n87KNl>3#5v%(eMb$vd$-b*et@Xm2;YF-4Iud;Hgqw$GWp)IS~ANy-RS6};z~ z%+1GCvTd>Y>|^?ELKSzqsirqgALCuBr7e5dqA?Waqf}o_!3xR8!APFicH0*%=&;dO z@MJa}6u=tQTUhtX;mbVM{L@`^sc_r)I@sw7GXC%jGaY7USXD6^TEqwLy79C_vEeY+VDc z{|pjB6v`#Bc>qhHfBdmJ|5FpTUaVV8Ec=P=D4jbo=M7s@PBYGrDNKgDR9JV@5;FvT z6ilvE<7AGw&mwISdq?eTCqc8J=Qa7#iq!P2IC_?COb$h@V-P6$Aj&oEh~rgJC5 zsPdPm&jU&^K8tdS<0{_{fjbqn1n3&%f=k~QJm7@zxBFGSu-NOAYoB|nHpNhdpbw=w z#tmp%IP|NcP|%(@eY#530q7|w;2D^`BCSXf_euPn!Eg`JM%Rg|z8+*4PU{)1HV^@P z#k+HG?Me(X0NbI6Aax<(4U(Ikd-n?*j5SLs3@8FSM`TaNsEt68t5VwmX=fJ2#t`C@ ze7b1_77GdUKnF(`{^#k0VMdz&fBKo455!Om%5sH+T=>`H(2~4E*u-FJ5Q;9CI#;1k zAl#ft)B#lU*Mx;9W$(6&p3Lf*F`Gi|PfWX5cN!WDqMK^#9>ZnOMTpW4EK~w)4^v={ znCzM32*)jjE$+&j7zcwr1daCzY9%z`fC-_SZ`DEBLu&1B3Bwq_kP35k)51xFI`hRw zTGr45!ssuqPp5sbpe3a<*&OOjC3E{AhgILmwo{Z&t`=NcUp|IxV5K;47`l#$=#Mh& zw)0QiBi(d9b=px7&B+f)zlKmgi{sO=xMDZeBYg4lZeuX9eLJRifQ1s$>6Yjx&_#z0>A+5Pcxm2o4G97$acBJdeLiB z)L&v2Gse!!fxLfix0?*r9GAa-Ac4c&*v-waBmQQe5f?Mzs-2Sg%gf80zH;Ie(r^v# z{nf4N*%62m%}CBA&zYWmxUa{>$g*wbDm1*+4-!b_3U*(qmIwesA9msKA4sCguMSrD zmN%7;qUtrWezurnWo5;?&HXnjDrtnCmf2piE<1#oOyOVm{o9uNF#N^zGE}z}>+9jD z9|ohD)lioTjJBrL99C1pBoyKkMvX$)|MB_7cf1x$am2`XkQFOHJ%=g`2Ci3bi^E@u zTc;g4hp`NAYvHq>^3h2=&&gSfi337Ucx8mG1T5POtP_x`S_k(McysCHH%z^*)k$Mc zOU)#nH#S%C`F$IiMx>08Y}bxrC;a3~&71KL8?3>Ccjo_b6|Az@;r9 zvti4wyJ_y2_4Ckzw{VtxOlUv(JMO{&TMo^D@$jTgHHK=mj%=s`r~>C(JOv4) zdnvR^v<5QCdU9kMTj;^ifQ3I=Wqwj-h8_GwU<4?f&4Nu4b~YA}QzpTiFg?A21ds#t zaisALDsR3K3n`$RcwN1xC_VsLOgCjRF?0vJ!xI6G0L0+E+(1!Z^XLRx$(ja!4tOZ1 z*<}JNP<85F`1VZ;FldP%cU-PMx@w!2J7;~=h+S}U) z&nnNOLd4X5ATgGRY}6Tj!hK9c{UzCAZDmDRS(yHNxO(iPsJ;VOiz;`3Fb4ALQVoE~ zi0#>C52+H;R%b!)ETTe!kWv8;)*-`JG_?hdhVKQb{12-?It>jp}9Vg^4u-XTHF?(qp)~}7Q?CEb*MhZukZFYcOE`v0>FdS5(#C#C@}M=3Y}eDYfxI$ za5|XdjS7+tHccNg*gvr8tYv4kyc!*gfC zVsWk-hQ0Z!6wmT+7uWAOf%%euC)Nz844KKXXO@m0n0tvs2|P(Wat^nxw)68T(&B^h z(_#{G8O0Fs;UvR3s+7$rLBN1jq&ETU0+^~uT|3})GE*NDeDmgw-0mW26og@0o33#G zrS`QIHG6-e5DyQJD|0cu$n)b*`)qb|1U-BCaxds@98%vFFis+k>Pzuw!KaGRT5F+I z4z2BBL&n88hmd2`)Wm$*^Ho(aWSJ$yDKt@R9{s(&Az^{mBKx`YzMzCcB9CZRG)ic*=Ct?ZFVBovuNQbso6_q;pj^ZR}t zpTEvI#rySs-Pd(J$Mw7kQHkmHXp;OXxy}{nv@V5CPxR7cFr3PW2axe_Wqy$EaoGpV zKVL62y>sl$*#}-p^XV)IX>E|+6ZM>Iy5LY`qS%fl$wzB`yfcjOjtxlhF5EO{1$agrd<5z_b9mRuy{o*BPCnM^-31o+JLr-YcukVTg5wB; z*^e`NsnaRXbiBBx5U0w!B;1*lh#iVzFAI$Oj=%=o0fOPCUEig6DchHp6>Cwt2m-DcZ{f6p$-_vOG{Eq%1$WGGH|Or?)n`=2=TGQ+>CY-l5Q zgu=QAj^6W{#h$j!Io5B_t=?AtyZ43)I`Yw!_li@E<%tnI~R( zHul{vzx)Oca!tHzq;X!F9PT-R{J!coB{U8xN8!ht-#EfvTJ` zD_gYr53-M5(Nn@}Ku$PZk>Ou_Z^p#T08c%3cs)HaIoSex&E55l3ba>q>UykirGn8@ z^l8*<4^|~1S4Wrj@8AC-{bq>~UXZ)%?*s;Yd(Ctdvcu@h-k-xeB_t;DHLnpefs_Rm zm7bRgW1C_ka8EUC%RhrZoi;McGRx%>L*<=BhKV1#5)8y$gb?I_cFUnms>iT0}? zo6K3E^EI9`G3ZpS5F+~cvyXXJA0}XJ=(+UT9}cijKWejI`W?8ww!}37c;gs^1ef9_ z;E7b|&?hiizwGJ-;Q?kxRJuXB28hlOH0!lx2)wVE^5xLkOOj_W2CL&Ayvtx%)5i>1 z7&TJi=dp3mszzq`Dq%cU{OJ#6-Vj8??OH+x;XV4ELnx6a%)M@xUh~Mvv}LOG#oAt&#_*6R1B*}uz%tym4dev9VcluqDi`S7_L=oD!yD)o`VT_2-%kc0V zo-qk{@!qCNLI#HV$FAVFk4HyGUs@tGI8ub63QmFM6nCZng zm!gNgnc(yBN|=~!rmzt^JzP%6z>%rbbIk=x-)dMa8n>?bK+Z~I-tUR?$`cFRzORPp z(mIuko#wS zblrVG3p9*W{C31TPta1G_|xlAQ3Q;etz4)!alQz?*AO{{1r83_n5a^5KkwYQrLwZp z%}znY_l4)0ijwks!|LgAm8u8wT?JQ?yNuPIYHg*e2-tNgx2~t0z2pFu zh@_+tbK89@-=8--9Yl-;XhYc#iG*y<5pKV1o^x4iYwB%Z)%hP5U*bRAwdL?wzRt(> zyrWT>rLg>!{yRm%f4*h+V-Ct#<4>Ve=I0w%*Up@!^A#`RMzj%umU&tVrf>iA0?=_i zw@5ddp4h+>NUt8U*ID#dCA0h+Z2qj5l>GfnX?E-jhu#wdr?p{g%3E5ZUnGNY7nD7U zv_tFhqeqWAySZs%%sF-T?3==I&#nu&gBxP@A3JK5OHt?1io#(g$)f6gk-eb_lxqkjCbTNOv-L{y3 znpbo#P@M;}Xi&HS7@hc}q@^bjCAW!9iW2v(Tr8q9v?$jyWr#pV=2dAa&!pE*OZGQ8n0z>+Z`1nxt z63O!~fY#%(lDDc;Tfp+~vAUvc-SqC=(Nj84v&>38qFvXdK<}Mkk8<#fxqDZ%KtiTt z{7n4eVDyB3^s`d0`F4Rt#ock*d2KZQj>9e}rv2Z(QQ^M;Gl}TYD=sC#auX|`1`L?`oamlwE=li?Y@kn)%Au(cF~SmH4Id1*Pvk38zcX(8qbC4 zdiFVtb5@xyRPVN_Yn`ojTZtH*ODX>Tc1HBbp<~Cy-8NojP^TuZ(ey#R1MGgEOW4=t zi>dqAKhNso2~5|z6?5&u6i-S9m{)mLEY|yo98&J4wi|!uguL57<45@s6aq$5h0jw%M@&Ggj1K08f2L}3n z{CL`yubx7$soD6<^0bXj&R8AOg_*S4WXzHG>fkN3B0=RHZXOvva(u2 z7C+PbTG{%Hrj->h&+zrQ%l5XFjavB_go_&$novc^fP=LRYA9Y{d#zDxLC{N z5VRzJ@jLzB;EdN4JMg!>GbzZ=Z}*@}Ge3HCi=O@`aiQm;Ui!BLX&H!1@%Um+ets=- zblzj&EtZYhuajN(jpHqI)1(owXdcaEv@ZTg~Z<$(1(h<@J=zSwG@ok|*8t#sFc9uAvVVv@Z zGziStG&HkjJqoZqYPJt+`0i}9ksEMP< z6hBZB&Wa-iTGTug+$?+kC}e4#bBlEF)5n^9&nvlepBW!LdQ{)oXp>P_TkAI&4`ui> zeW*spoEE$aY)}@e>!bN39XlmtoO(FdUb$>^%=YesqF9w=tTH$-qs*v^Zka8@yRw!nS#H*uk>2*KQNRi^j4vAq#HhKf4nMgl*PGz6KlDb zc^{a)kf^BBW`(Ku?_ZuVGXuow9~!Ftgo3vfjvv0c;-DZZwEDFatV$jdqo)IqYutX> z(fo<-!}ShF;=BW>c{D6ws_VmSpW$Yhr8|`--cj(fAEYYcE}3B?cKbq0jyyF_YV3_S zHq?a|Xc!SVH{U$ z*s?~&T#g}ZWp#${N?*9cKWnd0^m(2Y{MPSl^Nf{$3HeR}%bd9?PfT9$qk-mNksxli z!0#?qUGdDvZo@ab%9_<0yoW|_rGBNP&`{@Tecof;c<-aU-zvKXeR)GCBX0^d&h~m< z$(>e`n=}}-G#0l@9r(An@c4Y`@}p1?8gsC+3IJtWRbQ`_seD!&?}7w~?Z#wPi?ro% zeJLG%dm3wwu|I3nL(abmv$fQYh5+YNd>J1BzGz{}Z{ z9960}-`Ie5JaF-%4APMTz&u+)h1u(W=dN&$(Z`RjMU_cRRFwYDASMN&gue*p4ZL>E z8ecVH%=e7v76s&J^6EY@-UVLLn$#K;0&8mZ^XJ9jJB`5jUD4JSJ2!7)@>6)XYtSl) zA4aS$8!gI1Zv0?h$V0vo?I@tn_5_@O>|AKcY*m^_GuU-<+9M((TfkXm&a`5XZA?;#nVdU>mJ5hl zS7-reMh<#jE&c7Am;_l6WR!~)qoU6kXURBFyS(?}_sd{FB!hMAPe37ao*Of-)eM6D zdlD8EUZh%l3%b2S)vwW1m=Id`6zQoc=aEZ=6*uKti8O5dNR91AD+ZizpX1|6oeqzR z8aAuG;&8nw?{eakCxVWSj@qpWNtm>A+6`!~%k9~705ZfR4!&eNm$Fy2_hEm3e~kkN z20&n4kj>XQ(YMOH<-MkW>)Ay2$B!QmLN-0_wSd(8Y`vc7w^WkarU1ne_<&bxUu9NIkJO*nu8)bZM9`zYv3p>vZHn4Gr` zB7Ifky#ORHf(`tY%W|JTR|i3Xr3|We$rsO`=OCLb!=h}*mMvRYB`hgW((CjV)Jpg{ zmAzu~hJOCcXf-1{ha(Hu@vVb%ezU|{e$AU3LtHoruK`#VFSzAT9J%L0#&CEG3k{EBHJTC4igD9Qlacp|X8 zT&kYnWx8+;cp2~Jj$X@S&&FNf6QZNHqOyj9!>U~bQGNw=?I8fP=~x7*C4uyMpG*C2hfVT~y8K?*Y+mp{ zE-AxNH&0#DAV1@B!!4#h%d?RU%uG6ODrw_HgzhJ`>4?_7@mkv9z7o3c=aVIYMp2!& zcQh2M*ITi&a;Vt|TEcIymwUgH@ZLg?No47~@GHeao7{=9cm5>VW-~z4Xu% z+g$QK^AZH5wyuaDGgp78yZo`6i6=0-G-A%fMRNTccP^gMb3(Mw8SCCYe)LGFk&Y)- zBt^$gT`S(!!66(HMGABP6!+mgCrsnmoQS}~MAzLgHa5ooLoc`S@T{SUAx(kdORkQ| z*KVY7Ba9w55{TC>LL~ubasvL1;Euw>DH>ey2?^=~BHN!;fYhSFJm&1`x?fi}+H4sx z0(q>Qc!S=0|4ibX4K01W{ut&|p46Z94GjZHQ3lxV=GD%-TBaWG_al1T2b}X zHeuvNa9=&sL{TZvY>0@kd*zWb7XllFfg$EjK%OW9=IG_Ij*;dr;VG^!S0CX@M`E^^wq*6H6 zM1au>Lm}2AuIP1~J$(3Z4yXaC?R!q2JsXPC_M29ntivst1=Fjel$^zsXn`c-w8QA4&^i|D->^gL-{@iZ#8-M{k`=Gj3 z<}Ayx?rt+1JG)ljoq;!`_Qkj!vE`I^rhv2hRHi?yLTTq!`01&0&UNhpHrq(IL+Qq| zw>DA`B6#@ugXfef{yT6^byw~P9R6I!_Qa%jXv&=-n)+kLua^20cKa@c2e`c4NYT1< zfnDn4&dSD$qwDTQx86TmBV@c-rPb}f%;_z5P)A<+ztO4D+wgv)h|U;X8tIaz<&AMe1zxfs{TDXa)IBz1I=` zFbF#K!VH@DA9(!=J*W7yU5ZvB<2Jv4&w{^?gy>4(?Wy&$wB#nu837Cv>~mAjmDw&q zrrSu(PG4vAougbi+4_MawK_;9T`ao5?9gz|d-&aU(C{0;vJATYyeT0qZN2Hxdd6!~ zU`?+{redAdt`)nh(BN|jYr-%k3^jctc@ zI1mP+ZJ_0?zm&llh$5o5FmGFd$>J0Sq&cq(7o^5|%c8Iz?&>!?J2@$+e}xsZb2SRV zx0B*RLX~iIz|ds)t~mtk#LQF-e`t*r;Cu>ECH?(?dm&L{iHs?7c4wUSR!+_cP-Fss zl6C{Qva(VuDlQjCm%!6S@B&eXYZsxHPJq3%hB8%JH?&u^oXLl*rZpzY9UB=mHZggk zT%VJkP7SP!|3iMw=wib?=Rj2RxaqI_KAoo7L);qMopUO@7uTL zo{Dc6hUi*~im1a!j*$Q8NPhYrs2$a*|HR|~%>{Mk+kXs`lrT2=?AI*aG=gWXq@-j# zEPPws;((9OAC@aspjG5OCb$P@!8ixJcp-f{>dBKQ0I)Z@N12(KFQj~ji@|Pr2b>0@ zh5|1_LupPcD=WV`eD^AUpiha6LI-}ZZIUaBSan_9AS9Eda5V~@!oFLtfvLz)gEcoK z=QP69b~_5IXWjkaCTwcEQ&Mf+HTyG$d3*L2%BYS0 z=&evoebsy@x$;hPtuOW1uFrfFJA>EXVAbZ{L%)xoUQK{e&4xQzOC(T-H$W#fe(C7T zU$ZY1g?^m|#6a_VTEy{d32!)V1=4%x?b(^C*~ z{9tBojtR0NA*wu0pp4?p99LEGQP~-}1JwQe>&Dh|RfHcZxcG&JCvEK)Q4CvC85tQl z@YIT!71ATnp!2n_;_!ZZ3oIp9fxHaFSNVM>eXwvFkF>s@;jhwCCGce2a&j!7N9=qq zi}3O7PaBM;>rKWWfzS{J1qFo*GnkOeF%x#oMUV271q7@`ajpd6kml!h3IGxirxr#X zw$YxR9^)5wo3ka0cI^D;$dPZd%zrvSRu<%Lf@k13QdA$KJUU z0$Otba}{j?6E&r?yZd7`JN4IF!_?!8oST%3nBDc6ItD^;m4Z;@o0*am{4q~t_$eYd z6&UcnQPa{|eK{b)%qK6;+TPwS#C0$lf*oGC^wQM=rSY+rhZ{gl%J&YV(&G?ySQ!1pxGOd6ilmqKqAq&2}s9=ho30PPmToO!6%`!vwF zr$Epkx56p|JM?Q%jq9)j_Ogrh-!q`$wCp|3&L8Ngrni2{?aFg?0s8X1u#I~^+K1%J z{z!?}KcZFhxlA>(@=o4hw)=}Y)U{0JR3;;}moQsxhL~dL zD)$+J>ovHrE~pGQ41J0}#Mp2+WQ!6_)FZqE9``Yg*UMGa)~-hsdpR6&&S)x>8#WNY z4$v1@>B|Ln4#eODEzgBZm&gSOai4FEu9Y<^93Sp)0JN$F-8X^v&Tmr38f|_O2)63& z+tCj$Fl^NA{<6H@Z+_}$jv>a(Pi>X+qXvo zuvNTy^H0&Ek7r=ln1>Ra=hywbvZZA!LAI=SCPmq#Y(iRxH_N2KP%;m5a<0qZfm$!T zjemdCtPIvS3GV@ea|GGoKLw7&^j9byn0O5Jg~i1K7+o&RpzL5jfDxCG;cyz2uQj5+ zBc|*zL4n_=4p&XZeOB4Mdjqxy)@7L$t@ZX^I+hLSy%voA>H^UY^~CKN^4qD9LsfQPb3psn2j8-zP4Z^ZQTx zEqr4MN{Iykz;z{?Fo=|eZr~Ob5y`QA%RK$_Q;Zu2uAJP&Dxnr`zE!<`!>;%b-*55{ z$(c<_&5QBcr38V2_d&wa zdVhUk%zNJ>TFaNlmN``8FZvR&%qa6;J^6O~R`n3O@1tfPzI@qEHWfcjeysWMVH>nM zW++v}0=FZ_P6LxE~xLOEx9*TbXViJ;O zhmLyfIsdaHtWbYWFv27fgYwP;Rw32AA)9y6AKFE~x;pXAssHsl&GV`y4_o~pi|V-U zE+z}Raq96O?(I}NZm{W!R{E7Jt+Sf_jsHW+0t+kF^ zsv6V%ZVcG^57b4xqBTDD-q;}&)7 zWEf-0RHduc-6 zycI-&*QD>D6+kE%8P0!6m{h6$-k+9xxq*iu~`m{-e`)fn`w`DUZ45KxjSnDFn(eHtj`Zvgc2v%82~4y_Kz z12doVb zdd%%-@Jz46IToLke5w2xGL3Rh^@k5Jvayhh2{(W3;X^*yi=44JSo@1CnNDzy18+Ga z8=$BIMF!Uavefz(GKX%Wp{c+hnHeZGJ9Uc3fm^zKxg;JeZ_Ldk)en>a0*4d#Y$lew zH+g(VuvW1hN_;RF;388O7fJlZS0M6@-k1Kj(}k#b+?ZawW6et8(vSG86D`!CT7lPP zIUXFldh5GxHd{u+$ZV;p-zAmvT!o<}2hXQS++O~}rF$67l{ZdJglWIkG|y!d8}8P( z-jdV%^t>4KdZ#QXd)~dvIxPB~1S1s|7S?|$c&4R$Qbo$*)s^_GcZ2uxrLhG`|3!-Q z>J2xIjGTmfLiRyXB)SkzItNy(bOmFJxOcNqeJZ-a%3*(BSe-g%csTn(;eDNsbM$&o zbp)h&z9#ZB(n7;nkD5!qAN;9(E|OD14dN$D-(PU&f|n^a?-qnrm_Nw67;PQo8*)3a z%h&p?MfcO1i;9aIUe(T&vz9Mk{?>u<#Khr;kMl7OIP#*mOT z254=n$Jo6Ia@$7(J~;yka=EokV_-Z|<8+2FoLy)aHb^g@_ks>LN_7iH#TVD#G7UUw z(y?=Ja3I4P2_b2i)Ejm|J+`nZIv6GxPfW`k7HvQal81_mz{Bsfc5$(t%njHXJ%wfz?@dm(Q$iH3A(N)~$Z_|AOWU$62KQ8aOd2)7xk1?luOh+hT$}rzdem)I> z6*T45@bK{9;#P4W`MgK(l0DU_`ycLfW!J>GAN%^&^UNdy4}FDnFT1-j~T3lRVMbBDKP)pm{IET$MA@V zkdIh{JhdA)Z&u3J;+{gr+4_9r2Ws4E&}~fSwuNd42npTvUPkzqy#I<4vCvF(Ce-F# z-g$pMVGD2ob3&5CZ?r_=q`hw1BUGG>{V&e!NVZ-0GJovd_?Yx^N%*c z$nDAh_4BfTta}x)??vkyKJ-$t8X8tTVmKf(9@yWcSXpZ@H{2RV8|J*)s~AF4a=omDhR(xQ>zKCZTC6sFQ`;XI6T>SoipE$D=mUZs#o!nx({&Get zBdslel0XtF(qHIdI?r{-UeTo(T^gS@3yz zre!T8T$>DRB(UIKGo7yen?K9A3}`^*u|oUY#r_yyaK?BA^lmJPtOL^_*dj?jjC!Yl z*JX=O&9sg@)D&f&%fndcAj*=~PH2%v?f5>89Wb0bU%F(Mf#9>tZdpG6GG5o*#WC4d zpam!4e07u41|`aSFuZ&A=hVTV`GVPY5dx!DF5?^ zy|@IbsJR79zpZaC?vdeyg-snuA+P0Lt3B?V2kT>ntFS08gQ5ZE+p+f-l-mPXMXh=4 zTnYUQ*mcX^U!mC`sCY3!z&b8CX^h$EbS8k!Adn&fZf57O>~II{082KOCU4Jh2JS8O zS-2@%{SP-iH<)v@qXVSn)cc_ka&F%~3GvHsk|@VeneWfuqv84dSis;>dU}YgaTeZ) zj3s6!CJ?d*GOzfUT`3^c4!EK0g?ao%@+>FMBI6)?rSmXiZwLg!ov}R8T4cUs+w%Av zD4sJPpE7lS`O-f!V)BFeoIwFH+FV|X-?2G;y6WF~)t<&`XCQqgS4YyL)H#;UPoGjy z5VX%h#jSL3%vxxI|2g{Z-KNpc(b<;oGxy|VWi`nl2Ge(~*O@Z{FcX9kh06;=guLpuHEMVagX%`**Mb~@ zA{6FMZ$l$sNoizbV@qFu2`|IJuhc5W_3X6&a zW&I$m$d87tomH)y@wV9B;quJzSuo%dZrwfhaLxPwCh1n5$J|_H%da*oJ~;NHm?=*x z77efD5$ngN!k(K6`Md6vLs}!#xG++ze{y?N$O;u7ol&SPNzdA6!`_HB$*z{YfbDZs~6jFF)-5)4I zaR&)gg}had@kEBDSWI>;3?{mg&tu|W(9-by{2sQEC$$mNsl1-vy!m@P9(IQ#y7Y;U zs43SLarAvMfC`0kL8b%af={5a9GXx)B)=XMVSW*uv8EhlBKC*4tZdv&zgV~)nVCts12DBS@Ly~2PrhHcw&;qHyA^+nA`V5`BoL!vMQ9Ut&Nf%<@ygFAU+%_GgI6sTb_u+K#B+nRxg%E^H<95H1O2g8n37zBr=i+%k)Qx( z#WrHk9Sa|?!@46esYr<`k>oI9%Ua+pON?jFv!~tmH z5?G%zFL-zpsOL?P;FAXc7)d)T{ zG*GEUY*)-T5Hr=Jjs{CmXDSR@9F5s{6rPgH5N93Czm#n&V%8^KH0;GTI4EUN$nf#; z)!y(m#Fs=SFBoKuvEA0%!PZvM)D-E~v)os)uGDvl8Qy1kuW12f>`XLmkixv2``QU# zaYNBKesqpi4egPan(&p-AV||D(KR!O5TyhsrO^=P=eOg-75fKqNr<->`kTf}G?fQxs z+FanDJvr#oGy>-X)4h$qr>AW)VYO!?ejx0*v5s=F7!F=Q@?~WAZU)4IvJA^6!yaWS zjU8fEN^NSMG^&n;7bsv43JZz_Zr5{)2Q#>&b~H1OSKf>M(2`=e?iIDo zQO}zZ4_&tme7*UQvA%Jiz}AZTZt9^~=A5ka>q+hS}4L|1rrL7GF=>?tfJ2%Z~5K*~O(r?O^c- zB=g11zV$n_CO7cRp?#N*#upYO(Vu(xObh~&Fpw4QtK3eMWWdX`Sp`fW4wK*ZCtv(p0ijLKsSKlQ38z+t8bYm-SzPv#%RAQp>9Q86(W zGRF%&4iC)N1Y@RYSi?LSIMqvbPoXra#@?HFl$J)wWHM6^uRHtM(%wESCntyD8b66^ z%E*g|*aVtoo4Cc(OMH}n!7{Iz+)*LvUhL9vw|@BW@l)&Wr|TJo9p2pBl|)yP@6d65 zat6C$@6>MHBwKDH`>ZkW5>{oh49?{gL=CZj&v$fnb}q+QZ8C~2PgZ3w8F*y!I^)hq zZdYW6Qe~alTjGAqNj<78AB;NmWjd=|$)w3xsm;2-irx%3w-dqwj|0( zNT>nsn~Y+tuU(pZnwg(*-hHh5RHmJWdG-iN23qEPw_{D!%Mk z4zlOaX9H7w`mTFNy6(E;$B(DYI+YZ|yj$7Tm6*#Pt>uhGXsDwu*Ck=j?%5ZBSF-Ku zXoXGILPQoqJXjHQVwow9=)sX(EKCx6NxK&qM%H0HsP)Ge;T~~#7q-HG%MgBroV+~S z%w#0RTZa#xJpqNnWqHvJ9qEZ%H{2vHJy8|I%E>V?S26B9ZwJHl#5oHw#ojOp2Ica{ zyph1(YOUt?rp87I>_Y@8+y7X;aqCtvR9z!J>#51FZ??53JiW3tkp4jwwoIvEH!*(O z)C7Cw1Jfvy?oP}Kc{{kc=upVgY6lV=*6Mggzre8eckYHgc(hmF5Rw8TJUp*H*Yf>$ z`oz4&58kihlAhom3CcR58@@%Bqpw`t)uqOLbE)a2E1|Kz{SN0E{%Nia+I-sC*;L?U zZ`yF#YyLg-Rh`c{MTAT$Ki6!@m;Ghgud}1}+uMDxPrG^BwkNv35&DJg(#`00-ta*S zDfcGEX!rlnko~`&D5|$ZN&l>>;kt+!6IjZO$4~d)OnzcE%fXZS)qo~?cOZeYsS#kK zDlyUOfNwgSAVY&8PSeirQTL@cZ{AGI&ej47nAE`<#F1?c-w_|^z7Bs39}(7@Ipyhz zaHD)2_79{2uV~)?4Wf*w`e{pXT003>>0sWn--+mDzVkxD!W*%NTL~O!JjaEofeVp- z-!L_nmNjEW)gLi7!@mgz_|X ziFvm$2_Ts-bk0mhR+b5lnp=q{IA8{bfSs`fDsdAkf%bN544J^{u{6em=z69Z;gSqr zmcV_pt(&8;#L{j$BrMpbHbbpymqgLQpu2EHG!Rc@@d0)VGGsNU*vuJdgIM=o6mVFE zaIT%)j5SuC;Q=MbsYHybr%*Y86ZL+`Q^*gylQ?Rxq}Ez618~(1bl29^U2}h*_xdR^ z?LODxYTO~EZ1lEZzyl%KTTxMTc!O7!@Doj=V{>TrGB1LZ>87%AkriLP0 zEy9IlUTLLD?NITlHyvC|`UlVA2>!JW;u+eDi-!|o)5N$i1Z;*`2w1hWGFL=IME+_h z;?Cmsy1PS}Xs@}7&;N8{oR^CsloC;6X)6hg|4KZ8$&~}Vjmo7QWt5qkNB51q?y=`) zc<5BsE?%kn`nc+<5AY9i^-H#?Hb{ zoK5DTI1x*mvzv0)tXgtBNcdUm*t3N7g01-W*}oqsKv{TdILH-o;!fh@E9dJA{!eLL z6k86p4==*5CV~d$wZ&R)^_E zC)Y}ok&&?v9*udZ`I7(z?YW|&q6+ImixB(19{V}{dCl->OhEd7a#3jyo;b9I{XmkF z@GHmF5@8U6-i_GU>f$DxNtK{x&?{B%-fe*+0i{Ok@Zq*m4t=mD^h``aDB(|E`s4e~ z0nB|zF^*jbXpD6Ds;~arwdwX zBx`2|bikJ2Ta&s+AyE=>A8blin|v79C0-#RTI>~;1E9(mY?rd3wpM!t!#>z6);Sk< z_k$>$u|K|H9ZcS3fYMqN)Aoo$C~5O&Chro}w1?->E#;a0>RbF{X$vX0^h1%Nh#_41Ux z{nOtr+F`;ueUQIu;aq?1(f1hJrsOv#^2<-hp$(kC3jKqF4`)x(@DzW9&$YcQ4*Ha( zGS?O#`3`KRD7E);Uxm=j2HYqA9zEeR!O%Te2B?ug?BS&hGWbrLOUfzWlb`#^~ zvg@ppYoS|JLaL_(0<5)eysO9p68`kBhX|0jPy7(mO4x6B;Vd&0!{ZAo)!??^(c~r6yy&7=~wWd%@ka~Ot<=+}YAIPu1KO%`}^+28N zUM6%_*nHcG1-}rCK2q%;T3aO$VN0ZY)3JHthm0UH|~)6y!3 zte%UJybdkD9n{uIb$6~OcCjZD4kS*Fz<5V zUn*x$#gdyZp&h}QTYXW*OiSEG4ggnUNp(h=$l3u-8;CzMX{z+^EJ3fgcb9GIsrh$I zh4Wuk%?tE+4=}8YSm@c_vwiXY15Z!$0>0e~EgTx>RKg3QV%)xjy`!OAs}-@CTQ*wV zo;RqvUadoPD}};>Lg}2K#mQB__O_bV)|+!GL7t3HHQEL-#4mR==MG<>v|^Zc=dt-q zq^Z{z>{=3?no0^oAdx;Q)ir?K0dOXNF5O(?$u`a-8&kHMkZvs-V(0f!FAU*K5z!Pb z%22(ojg)IMjC0k8pY8Yd@)|(zJLMZP25gF3e6J=abHT;G0WT&zL&8kzCy@RrV)`<~ zl>>+x-aO~^18d9i-kY(_M0reg1`=iz)3m7-4X=wI=k-CvxO{)q{ zs|vnrgR_RGG4WpoRuJ4IX7i!U-~aI4y-Xw$rjn!@pm3(Qy8NZpUbkaB1c_EFaTUb- ze*TzTKfBIX-g1L~-gkF%qIU!sU_{=4Uk3w(bURSA$A-dXaIT%``Hxqd>+8#LJhrm1 zT$>y3749xWnDiYvrybU!Qc^c(0vd2|W49b2TRIK`t{_J-+iY03u2_(b;;%EBzn8ek zhK7dh6;|Nf&c*CYcCB*nB_~JW`SR`E%g!6EC0f_!4#r;|J@WVO->mpOEs)c%>f`I1 z*Ui?#1X3SAl?n*)_}NwXs4AM9qokAMxw$EDOv|A<^pA~g!Kh?>;sl?v^7j8Mu+E@z z49h6fpqR0jt*$6q z>pjVJ)D>^vZbV(S$-s&^$pa>jj?ivjzfwXr-^tI0i2|_>bdF>mH@5>rWU7`1!*r+^K zJdFNm-nN3<1}~R7`lCsK0w%uM@!n?dcfWC26Xm$?24u8P>|pS1ft!~A)tO;gMMVx$ z8sMzl?C$OkJVS-)0u56GyNBTMn0humhe0W5O&k|eJhr2E9)OCg*M(Qb;>pwx$Np~! zUa25Ser>sz>H6Qo1{340495bXkK8ctUJGz91Ik9@nDIvg_zwH7;qp6L=!YGZR2l3> zZya3^&>U_y$OHcq7#z$iEgh4)GSR=EGzWN(zjB_29NSs!ChXt~2<`D_UJ}DA#w>2<5?Ekyk79VNVP=x}cWDOmi-j9*S;ByoxL7u?x(ohWo>8Wra zX`tts7p$S^d~uo%m>w5=R1}#XKhC^E_4t^23`9~A-``f#hfT!4q7V#=de*{Z52F^* zm2G?OWg+m34NRBq=EwS}aJ>?sf-S%5Ma%tX?VyfpJ5ar@!N<}o zD=OBI6^_w63L)0xK@3`{QCpI`s;+}mebXf;IGwF&Q zo^cIyg$dy7-1A7Vj>2F&fE+qPL;2HFT0tuO}T?fX8 zX?$5b5gf%S1fLRV>5Cnv7zCcjR7yDVDzD^09l?kgHf5$^YRXP} zPSh7T4ajP7hYIEs?Q2p|Y|;n%_h8y9$3Vp90KN3<$1bGJm{dhw#eW|p1xtEQMGAa} z5!tFf^YmC#K9zycq4iLdORw(_+4~9~cyh`VaQw^_-3QMx7FNJBj@kHvtnF&>gzf3m z*HEcl#e|9h<~Om+gt%5*#vt$ZS(!%GlJ_!a9qEX9&>;``C}AEocSblP@-)?lMvi!4+l>@6-KA#>0obD6FU`lw`oWXO_qK&`xi^X-L!ivLv=C*zc`lt$uO8`Dt59gOKOEl$=Jc)q@Yd2K}P ztv!Q!gNTE}D8nytM%r8yPz)bhN4Cc$<>pG_v#ob>a-yaTV2J8?pt%u^c`MqAzE?6d zt%}~>vTBwnSce}SOTLbmKy zi_*Hxpz>V&&cA7Ds=>>tYi5>FlNBPSuy?N w+^Lq%C}hEQkRZFO?^!pkPS5U|M& zc4Lp89*Y#Zdv7c}#9a4`QT-To%P}+8S6GxtQuV**>W`5Y*OgF$=1n+r>?mv{E+GB# zlJ`5lzrO}brQu4Knszb@Mn5h*vC8--O^;~Wxpt0@5qM14pw7L%9U~Ofv8VFSE2RJD z1xP!F7p4Ia>>9S^P|K21USq4e20d68STyhY3HW0;l|1Odie?TUkBy+}YfRtu^iK%*2bcbahKsRu(wfAz!*`Oh<9WbG2{*!6#!>xV_6N z6zbo1w7l`2&e!+g+QAU=oBf!1A#=Cjkv09Pj@pL~RY61ix}wi0c8Hn<(ZrK&o1`w zfj*-)Qfy*M#o@{8I`p{zTmH}(4*NYX{)5t|aQvZ&-q1;U{)O?kV+u@o{ApauUk*_V zzCirbB$C8ZfZ%RuFPL+l!%Pe7GFej13*>qh1C{}(z!^3+Jdalz`!+)xxuNyC^t&hY zkDw(4-1MQmvJx{`e2H*hcgQ{mJfRZ@T~+~ zS@Y#5sXFxM@%GtnHdgpcG{Kl2k)4>B`0OS11|x}=d)9{GIxZI^5x%pG%E^%+T54{s zTnIY_HeDM{$-Q}qNqFOZ_<;go{I@@U;Mlne5{^bH{&2YY$aQ?w%9?w48pIVV>ZUP$ z1w$jb)8h9E#^aE%FtR||)*hp^vl4d&zDL+^UIZrIAe^P!>0JDT`^WtbwE_Gfd*onF zYDkgxWaJGZ#Cvv-klG~{g=Bk;JJ8+RH zW>M+JDfmBvnnMdv^X}YO&#Q2P0?+FsLF5nU%cOAa3GCNgC*g>;(R<*jCS`C;5K=t8 zw->@H@*1B)g>D#2bDO~#q@Z7X|L~X&CmebyZKy^7u!pdcAEsTRN)iJi z=xsXuyD-dI1i>T0OYP{Gw>5E4wnWj1H`CEHaoyk!}m!~8$^aa^fwh{ zMx_0p3sR=zQsF#*{(OXNK7}k{q325S@?^8KH&P%2HvrdaXpXso7D%hZ3v~^IF#rWw z4^C2a-$K$!Ag5zM*VWOXKmj&3HLZjJ9$okVc$B`cU#m+9^At!A3<-&u8Be{$>=$Na z+#MW{`D^vd&m`DafyAV*r)g8Ko#1KfgvbDb=0e_oOT_7>c|zkZMbts+@P89?3r0Y_ z`98rD^m&-7u@K|QRfdn74zb^w;xvqN2!p3ULPO6WLsL#c!8Kq(T=oY*j7f=TnIMAB z=1PBIBNUZm=Vh`Je-8H8AWU5?r{kRJL7I{|3EN`NUY2EMijwsSd>kvJP-`K)|12jO z1!gd6vOtUJ+>rfh69x($T�AS!FwxxwL=rF^7}w2r#=3@udM7#&+@J;S<=0nqhd- zFrNN_Dm0vMyo=JowLyV_mWb4%4=)lwji5^^tk_iJV8RvP--oYRXa<>LOpyMy`#l#S zp^*Iw!iqsNh=efPQ-`Q|Uc&R?PPFe|DsO1KfYN>$Bwnp4YL+B?(?Qn2cU*XNYtSuO zN5P__99Lpk9dX))9e_7@(_oh^_jo6UiUKUX_q(ai9K_4d}QQ_b43k4kpSl~B&3YtYX+Nz z5pE)Zb-!xkja#;ewFHX@9!(fI>T{6Ze6JF7qQlk5se z$@Fc(A}yHlV7Ek=4j%Zgt|V>rxd?Vp_k;_d{C z(f(QTKNfs>WXmoA#S`jsAK?>8w!h=I7_wyCWPNg4*9qrHW1B#1JpJz@aPlKCkO#tOdb>+xL`2&TkJ{UC zN-8NU6ZxoS6c!?kXUi8q1fl(1=eljtvV`v&8(>S1SBE+7IKtzNGg3tV5;7cdQlV^h zcsSPS)X9foKe3{rLHpcboVdjf;4h=M##XtknA3!UIwd8gr3aTQ%z2~JXO_j7!$0o5 z2Ovvzhirgr43cCEKv$mCXCGN{-pS>=^YimQUcbmjP*17CpggErgOPaz>s5lLW?L7w zhMS*%C|uz>CSH1K9dJ9SAtcQ4OnU|!xhUbH$3ZWzz373YSr?gt5;u4)=mX)5 zsB_l8M&G{zq?6pib@@0~E0xM0@7x(Zw5Xmz+`Vc#q8S)l!JP92Mu(!g`GXA^me}?( zFni?{Cw+ecRS2~tAbRU+VtgD(?v3qK7M;vLPFbHj*R(ip3~4K9DO`h>lxp|``?|%D zXD1fe+}?g`rqgj)zS>H1+;<)&=Ja-QDPu(Tp)|dA-@+YjMz?^XN9XY*Y<<3TcHVL0 z%4&Y=sCo@V;2Tpw7%6DI9$Hyf=j3Em)rOLYg98i;NIo*}ZjS|iRC&lPdrT=y~i zW0?&#LOD!SQ8W|=q`zwc08YTX^xGc(sX77x3#z{y-(2rl6Q4{h{wtwM5(gzJy^50L-IAJe`>|cT%QiEL*cLD^UG%|jU zSm@=1brO+GBrXZc)t%#Wo@7~@*kq7s26$A9tvr{hp(Ajpb9kw67;teLkhvuHT#bLW9 zELm!382Fic&eB)qi`FH+v`Kk*rl##Z^#@hXKoezUOB)@(aDVG8<^9#SKGbWy_mdtC z)7Z&S@xGgyzn%X^Jln0V0LRwI(8Eh}l67@;eB@GzWDZerGE*a5aYpHul>R?C5%D49 ze?n_R4esO$QCY?5SU&!^YJ}&=QxNRhaU!e?~4BI6+#dLD6cI`BP&e~*cYX-_NA(3tioqch$U^*S6% zq|)uu;eGG`@#HO#>7ZycvW16)s3FsrO3P3R-Vl$)X+g3@j`3DK$_Xc?AL~|gqqq~3 zm8jH5j%Z@LANNckUq%NJ*fNftI-^bbAuprBL&ABc0x}q?{OK15^lDt@5BH> z{4{IyM#LZjKy?DMzw@4wX8=|sQo(9Mo*~BX3m4RZ$KHd%jN_2mYIq!cO$A=XaL&2u z>5N#e_FZ@eLPs|6He37jt+yFIn=g3Slba#5@5|7B5mzoMZ`VU9gXyt}(N|U7PgY-j zU!s0c&~Sb2dWn3gE4gXNq4AK$Mc#q?HkEi2)?)$l1a-RO@Z+yR>^{o}7jtlHh z-2CT&gZw0w?=z@DR-k@Q2vs})DG&(-X&Ha^;+)S$g$)9}avCwTwtap9XXb{a9$D1< z-3Va|v+wpOE(}Gsj1yZB&fB}PoF>TRUV+T+me z{mL;&D-d8cKkGb3A3(r$T|`B$3K?#UAiNkQ6_RgLvtIT0ukyqFhhBCqlv&6&S<8BZ zY>K3}2!Q9sZoPq;K(+!)Aczod(AaO`*@g>2wb0dB1F7c&OiKBAd2h4Vg#n(wkMek$L_T}R0vj3>4kw1-{5I{f@>9Fx zY!)|O4~c6@`LgGNs|SzB9TDFUb-q$lx|^vdjjipdlhw*x(oeohvD81A=mKaz*(sss z6{Gci$+jO7>ohF|%($^eIO75<-<0Ykx}ZTz4Ns_nRlea|Oqk~EH~$d)s$U%G=?agL zHXdEZcRU3hJmB&W)}UK5b8E?_1#nIbwy+@6u-;kz3=FanB9Cx zIYqN^<1Nk#BWM`_>#W0yS$?Gj-q31cvyNLj4iopNPgmOR2s73?wb3AE-eXqCT#G_{ zqd`Sx*$sXRj%@GD6#^-GC9y}g=t$~jhR#Z>pQ%vqL;p1-5%9}tF-DnHw@SI}G!Mgp z>46R9i&-nGk4`-g{pX}*7`NUaSqqi)2glpL2_vXiPZv-Y%KTo5gBBADJr#X79F~)_ z$RK6L$7c}@!prZDPk=1VzeZ!)9G5-TcwhgaU)zCU zN6}RE(*r!#7F&Nx5pdx!v4w4i(U zCT*u|r}kZm&;iNX{m#a``;wok@@yKL5n3tam+Ak{!xON%$1GWk(Hys9?yN=liq)0H zx!jiVCklQEp?-L~UOH9E%Zpr2?#U`xLUCL7^z<-DvTfV;Ufptei3pP55?op63k}0E zfn>yC5v+Vd{@n)^6q7_k3ZNjpVGOv~+HmYo)7K8Y)NtYJ4BQ7!iMxw~F^E!0UT)XT zV(}HasNBOcA)ErprF&K5?~A`ZQC)Yv-%Gn|_?r=FDs zeoz9}%3109H>GPWHHS}d&}lmTyYZ?@KkL3c`H_6qAD^mFY=RiPNops*qx5dnARqSJ z71{jv6Qdg>w9JCil^aIollB)n~*r zcj*8AVv4Y9+V1d0dSr?V>bSfM-&X?e(o=e0)s8#LIm+tC*_8fWavEv~!EvAMy*FBP z9#uw_BR<;@5dVylQ{eVY4|(x129cf`MqPH~QV@m{4N+EB7P!N!_yD`0!2~9(+3T%oSG~9XH6|HtpE70XPaWUib~!H z28|8Wo`{WSs6NbDa<9A13TDdZN;Q8xO;FFfC=`j(0OUE0rvm4{Qq zFbQnP1qWcdXhIG60&o>A=gvnk22VWj^XKCOtOxajwbOZQY?3-JTY)V7*caiSV5%oc zV7fl*DG(&>4b+T+c%=zH1Z;P;Z`YDovgp2jrz5iwBn({`-VpDU8`}CAz&_AiJaH<( z=~0$`#3J6k*p-CR{Qv)~?rcx#AIS7P@5^I;UaN3JomW2F_`J*AdD%Ygmqt6z&c!IH zRSN9eciqnJU|W7$c4%a?wbpB1InJ<_ad^zfAQ6m^jmydfVE!Z_VNkTS<)d!>xuiI? z|2}dBU;8;bMZH9GkM3wtB6u$vL_ny?i*jLWHD%5|Uc!O9gmUIN?4#Rd5ckS4UYrXR z3KTFr>LI}MJpr*P3~tA>1HN-M#}fhwO-7Mp$Ws##Q0`9Ec=bef&5r;0{Qu`m>iw3s zqF)yocXI61#K9OK&sp9vJHG=~;fxOf{3@NjYN3oH3rvQlK< z(b#y^Z3tZrWsXSYD`{+_J82_clD7M0ZVaZw+`<&=$7m(Fs&<6KiE8^bPc1QDYyX2z z)ofGG4h;wOfYn>$N4s136URij=qQY>&+fXwxBQmkKAbL&W{HV;l{#5~LU1(|6)_AZ zgg&#yG#cGRm+}_Iz5Dwd72>iu!+O`T9@#{&G28&oF?;^BK8*s4PIPeaCP%~^0;J|X zKk^du3sqmIzkKvmDm zliY?~rv6JyOB9E9QT0$>)!~yp60@B?fC(wrho4aN96n;W;<4&sZ+yp+yxIlTls8JFVWn|A6|htg5!A zEO}IAhuH7@1~n&cJjH@QE^}^?*!Y62c!o@oETn%_U{u&Ey3eOZjw&FQ!8B~`rl9r+ ze*VXYkDOoe+wr$r=)GGDUsp2p^z9Vix0PCRq;lo#b4~43QBm1TDlb|br%^Ctn~?00 zgwWIp!hEB(Ydx2a)Z%X&1jodr!zK&|)EVjRpw9D0$`nXVS)tp@q{}y8+ z$xQ{qYz8f!X4zLBNKV9j_zwxW;yNX-)!|Sl>@Op5*jA{BKFJ{C5B2zp5V6+!`%0 z8&ZGLZ;qwS6`*r7zwl7mSD8n$oQyQAi8|*lCLb6Z8C489&LA16^2AU5{z1Jrm2Y(h zcp?Jv$0;(I0#`~nWIKf2dw8Ru#=tz$YA1j0!k@zC z@Z?Nh*B3+H@m>q*O$$W(2dgYh9j+=`l3*K!!3tLPIy~%awQt&P*`npDBEKappk~vz zGtseyj;rqOTV7IX39U90dmk!At{}o(Kx^8%QhG77^Yh&(za?vPpJ#jL#uvtHrc;x@ zi(VCcZ1KD+P$MRcA^709ar=R*>o#*UytafYO*4ed(?yi_yVn`WPQ3s#G0s&c620d2 zXPiB^74pr~x>duF7Oq*dX8CZ49X@3Fh7>bQ)&8pmh}$3Fy}EBh-`*EuTO^fyx%P*@ZEjir z^pfS?Okv;HWDY!j93DOWJv+svStPbeR4Tof)lw?kW6;vfbD4en!L2LvW#{9%^70O# z73>61hIr;}fC zLK98{-Rf!HUHsA{Hv|f>x^exffw&4$Ik_s$G(FAUHW1YsA%&ic%xEVnE_Zl9Jo;qf z0cd48dHIr$A9E}3D|27NS|{W$HZ5`bi!_De0j}1nLOD!f^KQ#$y$afuHNV7*w*T3&XMhh6iIYD zv99A$NndKW(9Vk~#Cx9n{vkmo)#lUTSk)cUGPLVXb#My(*l*b37Vz>`$Bz9%TOwz!Qg$_*f+omH0n^orGAj@U$KhnO|!jV#R%Sd#oaWM?AxcSk+F4Ht5&YRY4QB>#jB2PTl1!Dulp@VJ@&js^*r4o2qeanibM`x?sWn6 zn?rw#Z2Oe_Nwu>2vdi;L?rVb8^d841gZVNo@u758eqw}rljtLqaui;gT$>2@&97fY}Q4Fg|T6S^G<`*vN&|FL;w4~mKT5LnK21g)wFQvnSZ%iRyZg66MZb=SXVLR0J?%AvTrBuC3 z{RUdQMAoI+e2&u#in{PqXRFYeAMvi^%%M?CJNN}@cr$K?O-Rwb&pckKQoFLPFg25^ zE`8uj=Ba=dgbPSOtwWV>ke;Y9mkETcCPw--LaA*&uCHSk{cxJomHqjHf0{-X#8&r7 z9~_c8MAAg(Ce-wI=&_NS2d%GU{nh|ErUSkE7AZM7)w@ySSXaQ6B8>So+ofF@FyHY2 zU`CAITuan8EvHme6cBbVMUuy_s>iZR@(lfzA6hBb|o>iOl&8#Qv=PTNb~E7N}O)T4Bk zY>{7Nqg8wD!OEn+Eq;eMyYBnQN=3zETGosV4lni$y{n;XGC6N*7`LBfb*%?O4ob~c zDdF{l2itG5h;IPfz~3lIC9;i5nJqq1W1`4J;%{}P$<2Q1mv`RkdYicTcmketU~bf{ zTjd_KiW;Ms7V!^ydUVVn2XJ{Lqb9~-VsC|i9EIaltl>?msoUmF)yf0 z<8+rGpgM@T!uikd-mMbRZEO{TQ;Y!p!4B%5%>I{CejWGl5%YW@^Pd_og@tN#Z)xox z!lT*g^2y}@#*oGsxC;Qd+NRI^E;eRW&2|BbFvWobK6^#QeXiMTX|_GXQpal0+4*B_ zrpC>h9_1%RDn}G#Q4%`DnrZ2Y-4(k(GdM$^0sRXb(XXRUXgSLFP0DR*J)kqhZ+Qi@ z{*biYVf*aB0LPZXdY!tzkV1sF2KUh$M;5UQfuVwxyN*LfI^n}D=nW`Qr~$HVa-qdq zJ7wvSUI8TFM_EOM8S3iL>fG1%=MkR?9=8kq^roPX+P~3OZYF{El8~{jx3?d?Y~<$R z!YjS!z=6E4i|vU^@BWw8l3wob!K8McCh}O$P{__Zci*%$%MS1`zpt$<8RI(k>$g^F zgPJJkT_xi)O^jOmZFh)WDOQr?5?NALP zh5K?^ch5XFY@*K?haDdC3^$PDL`5Zp?e;lha>tc_6dAu4q0^(!=+}8oCF$`ylkGO$ z;>Le2zNEOJ`ABi)G^Iizr` z^}+Em!8!$uJ~!r|@f!+6Yvi|$L;R5HV2dY6L9u)HZl|G^lYd55v`MUX)%5`!_480r1+TFlz@jvyV zIkB&rJ|hA^8u5r;+bHt}8hLUi-MC)G%RmhjGakuWGZ=IYpRiWfehUS^Ukml3inQw| zLPL}G{(FYYi`o8crq37y1%X(a6_ENgALaZ;atO!(R#27zYSrR$Ytqsh9D7uyxps1X zsDpf26?QS4dH^};cz7BX4CkAZ%a&9&Qd7&qsP-WfW`)PV5QztKm(tIRB>WrWNxG$a zPl6`%4N?8^zg>M6&!o1Buqe^~>ImB>T>K~zi|H=gBft3ZjhthH`sDf(h_%4H@h~xpk7{q(sqWYN_Xg6S`*^N} zY4S@B&zL0o(EG?hB^W=tSm|9&Ur{s(yU$zzh97=K5LHZu@4m@UoLHAZq3VDcmc0CP zJt|I+M8x%ZWl?XD`z{Ejqxip%F?XV)X+RA}bOW6BMLGHbooq4v)()Cv5aY7Pc$_2V zHUIX{|I^q1zyBYfc9kPXc5t$U&u+nz#I#pyah$*3b9>Xmqg9G75du!(rrUIx$eDFh z;3j%n>r#4QJiW(y+002FlK5)2*Kmk!I_e#$U+}AFusLq0LjL@Kb1meH-I&OF6bSZS z6!N&D)}VOQ%eVvBim>wA_VsIV6*r6@J6wRT8QPyW!2$;5by_)w%3<~D)eNsMxo|;6w2T#oOZIvN{{J@R z->**y3?JDgwWu9lE!+2MgXYDvU7XD?oN*hLs~d86x4k`Dsa%DB(lbqF($Y*b);V5% zU*42X*{;^a)?#(0#>z0A>plxBW6jjoDYH#UwC^e^$#mp!JtMwv-)01PVI^HhrXb<8 zU|7Y7YIe|Q*Wn6>ArL?hvF$@{gbHyxh>B9MxEC>=11(aaf9szo;W`54Goy^(=f{i=8>(jY5B|MrAEGX$&rr)v-{*R3 zs`)50r)x*j>k3`4`oS&47KV}Cfw*Fh#HtqYnnL#loAoNd`fZ;-^GP4uMZd)@4L1r- z4SqphF*Kr*yFuZA3oJ`NV+aN8V{rAd6+F%Y7Tm74EX>V2QS%>gn-TzSPrSU)M&K7{ zYioN0H5*~VK?Xp7(l63++*eT%#AF^ESI`v&KY6l?c%yiE*Fmg|K}iZ=5gH0y9P{$> z&KATgT!a#pIB3zY5D6X#QKV22+b~k7AnaQYVO60)P!+LwU4S|F@{%2L(oBqvDImBb z4;q62y`f2M5MFMA{HwxY(?dYJ;lO>!Bw$q9c&s9D+=P*A9QE_~0T?l56-yc!WDWa3 zNP9T>--Xj|k9R%LQG5tKDE)ye1e-^p=dDiasm6Kkg_2+g{mQR#el#1DXPBq@w)AI* zCugYta--xi7kjbSPkukYKiAx>fT4@2r4{L?{hxFx%`O(!%W={b#XP6rJ;!^%t6MhN z;3&#?)VX=U`I1vJ(wJ#~bT#Flo|wwlL{C#Dj@wDUAZQ5*H9zVyk{}eCY%h3p6ZQ9KER>yQ zp!tyhM99U={tV1MfK3{o-&^o|B$OhUd2t09VMSbKAB5rcBH^*j{jjGUfw?BEo4gTF zJEDgDk089FV`hHl@U^~vV@%BF(YFA5x5BG`Y_JWaR3ko>wAO`0EFe?#UVIg3+2(%^ zk@JQ{JYBB!bU#!OGo9BqlF%PW>I{2bkdH@f^yLTHfc{~CjOJjyngC-r0!q$)&PlGz zk9c2QO_Dv~za&CIh&yxJBw#2Znp0xi`}s3n^IR7CHGukKn3}W$ni7QGYq()f`Z|~% z{9ufOtYejWa^KR;`MJ3+cpl|Lrhj~-K`2<`%%~^@5^O0@Q|)mmfVmIenSs|CM8Z#0 z$OY*y?h2g=#E&kXmxQ?yfM)YK!N2m)IEX3Fet98CEPl|yM(}h%#xmBi^k*x`DCn=% z-O@Gqe50dTh*qt;dlg{9;EZfA5Cr#Bswls??HU*|>xk&THAgDxt8ft=L#Yx=Iw?Xb z?4l1i{GR-KMRr7vT?LsR`}pzWhKo2w(PxCSx9|MtCZWG7$9V)03gU%t%T{E7>PDYq ziXne1aqoj)ot8)4$JAF`V8AGHIk}a=t>Vv`J_T;D2Rh|noURMV+^i{Gk4_aYXlz)v z^685xFT-b?p^;U_*7h3$G^mp~I!1LOk8`P~KFHj@uhrc<<#NV4)6r(jV9W}n* zv9S$m1JV&;(ZSWH;x6>+GW=eejQRWS;(k9nS^QJcWt`D!igD!9vzjL&tCT+#(2EGp zy#Vb#h!xLQv5S5k!YmlmgC|V}iT##4^FyZ5$_&6o# zqcN;I2*v!{+FDvj^OHbQW{yMO8^OrC>ac>}r9BfU9{JDk3ksf0asI;yrwE{jB*CZc zm=CLxPy>N6U$Onkz~@1CF#6G95%xJ*qyE0WXHweie}q(`FwF`p_T%09Iz+Xqp39KL z+bzSk2oLf2Gu!XF$6N*W6rhHa2p*;?4|=Zo)x!3f6Q~Q`ov^? zd-3I+kdQRax}uuFY-LI!49A(!9c^E91p3(L@C1?&=agI`@PL@V6TA^~JyE#e{ayfh zC;;Of&h2ujtws6TwWjBH?8|l^y>JTG+C&lgi9!Z>kDZh`!;E2d=i=K5HQRQ?Ri-(m z!nLIIsQ3_iB(FcSiFK_D;&2`zVn3^L43UJL5J^a;okLIw$_rvP92K`|f(4R|Ed)Bc z?|7eNlGtC}i!nqvklvHfI&5f2KUR=o9QXlH-5rjf+=Jm5xCIl;5M;0V%A^q+DMIF0 zPImS?48u$MIGy;jA3{FkG_lzge=eUIgkXRe%E+_~{4GTLbHbJib1QKYplWGEY9aAV z;?^Z2^@7g4M4rhECWJ%L9wS=;9a}KF=gbO7-5U6IgMCjYrU87wgLcv|VnN(d*g(iW z4oOKpM4TW{eU8%|o>@pmlAJ;c3#D-^JynZAQWJDG3h|E4jSz2Wr0Gq5YXz#$cPU=d z4$p`lOI<$12&rAr9k;qlXX=nD3^z5o(Ge5X;2Mk%g;PvSYfuNK3SxcbtRQ)LBYKS+ z`w*1y7;i!E3`~;qeBx^mG2!1*kF3}$-uUdXF;~Jne$3W(7_JPcm7%CR3J9E9y4?mb zwwXhc2M?Oz!^Gvv=Y(kqs}XC&n={6_e3j9uox_Rr1~Dk%A-I9!QRYf!Jj5=TS_~!3 z!=ciPeKp&VCO72%%?tC0cEgVyw0$FF`mV08T87@6XI-9Ffu7wYseffm#VvN?dnD{E z8$#o;;^Fk&j2nCu2Hc5Ua59-^*SROE3ez$3<% zcv0TL@_4S_5LOkO9V#igJq{AYc7Pz#9RRkW7$SaEOv6A7!_3eAkNA+Gw2wo#GXM*+ zt({%a88`UBL0vkBO>c*mX&Z?zb}GKLd;mWpHTwLTk<4#aj5pVtlamwZfTz)wwdd@e z=G`rH!NVJCHc^Rm2aY>x9s@nU%#l!Ss@{cgey3f0JInpbXH43u+zVZVRSc;&OR6Ma zIM=?qoyMx9;l8|*#*|L^U&LU`nR>NHocjb>z1UJ7Ow;~BD4f~wGvDV9&o`r(&@{$* z7h2uR_2cu5I0Al1tO^G3bW4y)=`#ktvfdE0oE5F8uRqo8TulRD0sF-SoyzlUH!shM z?C{6|>5D+tCw_c9VR8J981do&l<&s1sCRE=#BP+qWsJLSz;TTO7v4IH@Mm2jVq%cn z93;AAhNLScLr|R`yKvz`Cf7?SD~Y}j3juaMwDw$e^QX{@y@P9umb9PFB)JGP5KK=* zLS;m##{&MGmNL?CnOANi<04Qd@HehuM^SqXFF`&H$qY5}pBqf%tH3%6Sz72nB$R$D1$00=I1~Skt+2IscIuVI;g4W2W zgR`Q{R2X!*H+;~H(<6oPKl|aQO~1(NNbG1ZH{h0Ib;vgult42}mM9von|MOS2Myte za7St)6FeNG2Mtr4MW$8F{n!bsTw)<`b&bQgZDtGT?DzsYJm+a4S!x_|g=F}6tQlIa zGBEYwF&RI`9>1yxgTuKgFMJlqfi?TByUlo*)DbzupL1!5T)UmP7WcvPrO`73sY=lB zr8GetI0z^vGFUu}Ybe(h#&PNBKRG*NPkuJ&4D4zens>;OT2{NlVcaxRyqf|Og-l=~ zQL0#$E1sJ&X(8hRaaNZcgVUL z2BWHAS&~1OKYLIu?rkLs6Xf?h){_nr#s*9z{sdkrKN+<;(ql1 z92p75Z4}&s5w}EL=8toUm`~MRRV*#J5yeUIxWUhnNSyU@-eA80bNIy>U9ni(-p+U zN@J#@neC$!S1dvqi>ZHa+CDS*S^9-CF?_oo(7usMeU1srP_+aHlP z!X#1i;-;<$+`>;rniDP%_?1Nz`Tz>phmQdijXbjt3z|l7}p@+o6`DR8DZKA3p14W6Q3is<8 z!oklKBA=y54rF#Gx~&(Xx(|^?-HEwh$8gk>{FsL=4a9MUN#heDuh}SI&t^kEUxFSE zdY6=)_o^?#T}y(rND>{oB+Zx<+nu5m1l+(o$te;ebw!w@$wtmo>pg9|V&i$Z(3^ZWUl$!Ew&iuG?&|xWqTfBeD`@+0#KhF@t*oUF&=oJ4 z=pe2~dwgP32l`HJ3D)5}GX4GNulK{p1jUj3E5U`^uMs;m|C$_QF< z7`_TjRr`2(X&$Mb#J{?yXr`-Bz?=$QhsGcfUEn(m`d@cq&KpoA_ld@1WQHl0*9xRv zm?Wz65WW`^SjAkG zG-k=523(U`5}w`Vw77}Y?Jd4|L10Sk!cKgpM3@v8xD!B5dwV+>`fJ@z^2dQAsw-)F zQc_WoC>-W{3`>jS55?_c+JBl5m6QeRNy0*7{R`abr$V_&B<^%fOi3?kZwAi0%+Ag6 zN&i8Yp7b?`06mHwgx!Jlj@)u(=Y^8(vCyvHx^*g2s@)BKOE^)8iL@{+d8oS(2nZo( z?IplM1dbdh>f%~`R9niB2)vwQ280XvFK)ka>v|7rpLbW;6; zJ7&zen3NoAm#t_}GSp%V*(2feq(4CRn3|F)k8fI#G{8nE4EBY|tsm#R``q#3)yQiS z=9Yek%La#^ihL-pKGs%b&SI^REab%SP`B+@yKZIfUJ$A9$eAYNF&k6w4Lko;h<8_dIMAUgr4A7CO z5E(^tN*Vblz91_tbu6E_HDP(^93D1s^;SYr8BFFPMsy>-9d^6dAA}KD288PP$Q)+7 z`;v^Na2ItKh{OlXC zvCD2?bj`!iWZ5N`;AGy5*m*JmbWuFL9PCmf3b#TJ<5Fy;kw?-L2!)HU8nyYFcab>J zC0;_T&un$k*|}_4%mYG>h*|PH=3i9JLNSEX|1E@`fj6Nk0FM5&?RE$((?kda-x3v& z0Fu)Gwa9}7wKN(ORf$pT8Zsp{)60`A+$2*s)IS6z$C3`N1MdldOO-c~uNbkD{*aH7 zYwrob5k{aUTq=8VZFs;PsUl`ByOPBS4iKVZ z1}s;kJiaWLr=weJg6FpZ&z6jKZgU*}{TrE%zTx5FB8plvu#J;gi?X8nU$Fa<#6Pr` zY6|a_>e0~=p9^N#XEdh+FAT(T+2T@|nu8L2JsJV+sNLwuPzLcdNs+y#F?;4IH=3-#g2N%d_E(IFy&A9@ty+aaIJVXZYNDfImEWy?lvmkS+2ri`^#Mo9 z7TA((^II;J?Ww+Ox|mLTz=4~|L4MG_JZ(?yD`&Z-fOun5wTm>($)@isYs-6gtL6O` z2$cUz4v{wi^YVIvyHkIOgny0$e%HFD5#wpdIGwUUiaMZkn1yATE zc4MTvlJP(&ijxIsN!Hs~?>!?~?mL5Aj_0c1zb`=MGxpxMyp>bD4Uq{Cn24g*=Ccs)SroV;$BRs^)!oma%7PuMX*lwJ#rD)(Xoa&I2 z(}0;ZY1v5*m=Po8xuDaV2O~IiyVvnPwrtxRRF;JC^Ee~c?b)-(eQ9wT4x%>zd^OWw zLi3ti_L_M0@Xi9^x8r9uLh1uarokTPW!2_kxR05Ga4|pm%^XF3J)GqYsK)8jRxM;S zzs@^!2uqXiL}c+y7Y*9*y9d@#0CIWKCIF)N-Bu&_SO+Q04MBe?@7X#6@(NUyssx~G zYg7#{tKJTyQ6yb04C0wpw|}AVH^EROBE*}QCTmx%>;=S+6C+=?qA;?qf9*VU_j5)1 zXb@as-DpmIiR9D~_rx{g%Xxhl)1JtDOe}T`d1L^O1&6?X(9a>{S}qp~Lm~u$Q$R{P zCZ`^P+7oFz*=^(2%}L%kw=m*k1>!{UsUv2k3`d&g`GzMUuqmTyOLa2Kgz%vgXxsN7 zda~4>BCFpUJM}xLU!JBRfM=VCbUHd(A3qwSLxaUSNg_C5O)%5#@~vqSZ2)^@!ok3; zWIhk8q!X0Ka$&+?9dZ3J!HK1paROh#pC=muosf1BTK09&p5*q|p<)F1X0?rrznGB1 z_$2Q~NAr^ph-trdxPosDwlL67w&9VH6%_at$Q)|mSt+eGTwy2=F|dmqM|(v@o9E{M zQdubrM6_ms4lUAaek0<5i&R2 z-?sJ6s|}kZ11~WgF1@?YKiFN!i9UhsVzrOdoUzvi-n>zyHnTa+q#t>BSGs@4igoXs z+Zbrd>nlPH*>q+*KIYBmEqrZKEq`IXW&M3oW@r7oBW|Vxi~nlb$qO~(4j^N0ANFGe z&v#r3N(X8Do1qX?ZoGsCH>-kX<^kx_-Z-x@$7w)_p8PrR&N2p0ne;fE7=@IkHs zE3}7L3GyNE%eBrRC^X{k8qFSc%UJjET5+QE1P~P-!Y=8w79bW0An9P$#}$ftF7N?K z34$9|HDh*JjiAgI(S_$W(3TmmV55sYijD}4C9k?D?Lx-duN@smy$kR)?Sw9TWQ`>7 zGCF9hAiyF1ia`ki1H*h9fNtJ8Tt5<72pDLv9%d?UbQE<%8ggW#BeIpCro61DPMkQZ zp`j7>_6OR}WP{Tfz#}TEVHcZ+=>|oA=4=o=2|)MopafJ(AUw%b8POS)<$H;99=s1y zF8#pX^0ShhNoX-AvgTv>03N*aTADXX>qDT`S&xUvYGputt*RvB=FQjek(=SrA!SEC z!HIAVA+npqL0j)5ra73(iDNdx^D1CP7L?2Ha08R{p@e$fYIR)w1%-teytWPmFy&VW`x!d_9OLYi{K+oX5z>yGbDgd(~@398T8FLjWN-ivoZICP;RZJu$b zkd*#8OFrkKbWK&&tEe>ynFQ_uyjjeLS#)BgN_u@Mt)*2cprAks_zQ;1sErxW*0ur5GdGy|-xm7%uS7xzhK>_AV4P2nWKE@ccs7^?;LQ^V_4m!&cl(RW>%Q z6|v;Y_p76Q-p%5*eeEHC)*Guf-P^R=>4|Jjsz9U507VXa!y5Wzxq$-{Y{vh9736g^ z8Ng^iE5(dH4NoRL?mOo+Irl=tLAVOcLQ<-zM|Q4>QY4PPe$EP*|Mz0z5w<=(5~F!V zJV)E5QS2QZjBYqC0csjzp;g2yuIEHc0pzU$m#HzL6M=acgH%(h|MJ{q73PUe+!cg= zbVP*_s&eM7B1?A?61X7ShmjUQ1;Gv++Fy2fro0H9wMW(_6gkAy535jkOg4fz=p#f{ zy@6;z*yXo*f|oYmYY-eM0vIBN{!rGa*maT`CANmkAGF;c8AXN?_c*0FYfVLEiq`$w(3T-ahd;ToXQM^uvGbzq+(VBIOnCaA$ZvwaE+# zSgVKVaG23Og^Z?QVRa;e&p^0w3W~(y%ON;2R^23C4~^UNmKmp7KSy` z_CRcypo7Pv{djk$wGB!^Xmt20a3%Zmo_?Bi<{e_r0BQc3n2>XF5*5RjajTwlT13>0 z2^4Ee6(nhtDAVX~CL~xyN{R8E#4A}BuW_Ev@LrM@YijM@fJ8izSr=#{pB1QJele*z zQP`{}5o!4fnDTb6?DP=IuwRptWeBsLoV#LAE8WPAq*hx6DB z#DTSV!a^e6L-N1et5&Yf)*;L zP8|bWYFKPU-m~kW>(c($6PE%Vv?~P|13LTnZ`t|T89IWNIF+eKaON$JBi>Ro%r-DCESnA!4e99ZeBXlm~MbhK^=y~<0 zxAlJ>OuA~julP_UwM75keKk~`hg$b<9s64EP))&F=Ws}S$;n!Ut=(1BvuG8wvnLhb z$-z0@gbx8__etl!{3j_V?BKx_oLMBLFQA+R1;MqL-LKBW0AfAu?7}@G&rBY1t9R}c@QD(nra#6_MYIT_<{*d7L>PshIl4wO3foMv9DF^EhtOpE z%Fu;BUJoEJz$GET+=0|_bZKX&+)25mfgs;pGG2o3LlIcb-RH+KIGgGHnk=B@P&!(a z+}9B9#E@EJXohc7MzSZi4w3n1p#7+D%!s=^kS0~NnBWEv1l9qH))Hl7XE(Av(pMp` zpwM;aluQXI*iGb1OQ?L0BsQ%pM~9BG%(8Kgynfjrb}OHDx&ZSb$G)4ZvU!JJj~2Z{ zw`nKVfenn?o2qf<#GXP8@*_1d9sq=QIesK~i)qvOiqg`Ysc@^B+U6B6W(yv88bCNv|B zZRl8P43|X_Ybn%K*e-tZsd03RsPn1Wy3z1Wx=Wwkt1d;QTzbzftCTd4SSIMLtKT8* zzSI4C-w3|PTwKYQzJCAcRZaG^Hx>3?*IOp_k0fXuu=Vhj4dI)Nr<<-bzG?7#Th#PG zDZcyiHi?ayz0GRwf5w-d_YbdQH2>#_0QRMRO+GT9>NyVVpmJjq_y&}^qqD4+!Ya!*V}K<>Mq=%f1t4?x)? z7MYU6lRj_}=TU5ZLi-m068ahoY!rGg8H@ALc@71*9U_}5#+)oir-Ddi_@dGI7O+j? z6wWNJZrP1*I*?_HycI^)amZA(b0{uc6lD(9mG2+6L+>Q^WtR=QULO{&6<0Bd0Q62; z%t1i>*mh-8aHSK5)mUKn?!>l}7s(5yayX|(Lc|Io-x|x)ZGb*VhG%pQ)Jy_bJl6B@ zH1ES4$&~&L>(_@DoFDU7N}wwv!)$Kek*ucdo*D&*yY#7{4V^dhfRE z-A;9lgcENL?s(;V;<*RT(l|4WX!wP<-TLDJ4n%^arc`{9MN}<9BJD0c>O+YmPuTyx zLz2<=0j6_GNfoqtl4l+)9ndjPc8hso_?=^$UK$5hGn#v5dJghex)0rAQH;!_D|c^o zeX2GR>uoRZ#k2oyy~!))eDw_*4{e-Lm^;#+VkT_qzyxNM(K*^|?)ka<`&{-)zFaF8 zLCw~XWNXxZB<*&*dfo=sXiDQ|f2&^~^1_ln70@wo)}Pq?i8@Gl*(QZ;mA@hX?ZxPK zbP-$v0EYb*A!mxq#J1LzdZc5r{c)$sAWBVrsl<3e>=DIir36`6(^fDrP+Nb>O6VjO zA95jIs!6x~V4VwG7q76!1`@(6V`W<@%|;8S+4wY)jK?25q5h&bo~`x(+{{T)%ah&{ zcp8D_KzB%zUv|F;(|V*EZMq39ATbSAR#jyksQ94t?2Rv85sgEvSn_mB)Qv;vN7e+F zrZ=I-V5~n*o?m(zI*QPBU%x&C3y%_hr=TG1r%#`dR8c{8$wbr8BpIu?Q{6cV_3ryT zy)>Z@pmjFDdsOm=FM=A)rP%x0NMM$9?CiI4a&qYFbCJ^AsDo@YH4NRL&oBuAz0-I< zjhdbw4{R~IITJ%Mt|=ur7>oJ#_VnyPj|o_uf6PF=!i_}l!IT%!x_8a3>A#DqGQxk$ zYiZ;Z|0V? zc2+-X&rp7Yr7@>SWvYiq))WW+`L%Y!CzYW`+2Y=f*DOD@r^`>U%8s4y;90*=d?CjU z(+t#N)=o7YP7qz1Kb;)PQK^0H#}?_vr$y{@huA|d&ntY72KHnHdT^E_$SId2R*H_DTB}bTUDXs>vF-&xzC3_`ybT0@_4KL)Kk^(X}KT zYD>UFbX7o?B%zABIMBdRGKNNS8RkUm=$80H)U=}F7NX%9&)xZaGZB>juPGsxt?Qtc zxrKYjlpK0d$9@cP1EX1-&;x<$g(O>T){&lpDr$VzxLW zG;-Cw*94@x8G4$xj`h-3liR@-AJ)>kd-khZza2y=fCVou%pm$7AhK$@fy9j-S+czn znr_yn2oF~D3TfZW6y0hr*2fYiVzyJ{{Gkh%_p8q}3NS;aC{9NJZ}s#P3!-al65=eSe7Lz{1hb|r`Q!uUfT?Mlj^^ZfWmgC3R^ zFE_>?Jw|^LOGY!cQXHn-tdTeO=K5=0?yuFt9Q#_Y*BHE6{pJj1UW$1`ibaEs_oj^! zJtB{H%sub4Soy0p<2#GD-G#lWk?;Q4P4whHQ8iZkVb>Gw9!q;}c-Sd5?(V9be#>D9JH#KZ_~oBsVf>q=c0HRJIuube4y8Zz3B zq6Lku2Q=bRFjme2KJHZzWGyLUv;B__E^;hikxl2)yIPt(1y@1E!G}?_=_XbcJAry( zk|@i66$osmWMviioppp2!BI%EK_!+(N}@4K+)fc72N5@{xib_N3lTa=I^O z$4rnv$Ost%(lDLG=__14gor@!Uft7K(wvSKjECrYOu9`^z|h{$yY?LW0a=w+x&bc}iP|E+Z#TH_9M?ZkS{xMx2x2l>a2Iizac74CJ8h^& zP_F;56_8a+b{mqs31;WnH;4B%HKhOpu6LLD`BOsrwYVOAfl_^6;a#7X3$ITuo{Bbjoa7LhHNV36 zwx`(hzztXHYG!wNj`YohzjL7!*Wo-U68D(;qOLi^*=*yEb-wExs#b_ocBWH&?eX%^ zp!m6Terd>Yx>#mfgOR~yxn_*}F#7bnk7jo>bwuz!;agf3E*^WpZ&i6qO&{)g*5x)) ziZ1WrLn^i8w{bOc7U3EuY7}UgbFQG%JM~`nd0E<^GW0)qqI@6H)sq`gT*}%3XF$#< zEy(;t&PBjIL9q5@Rxb+Iro~Iaz2uw1z8?U+etI?}iEL z>mcUFCAqddJ1a{d2GWwqwqmbCXvg<3VHO?*PBVVpy(JN8;C$pLUqaa0tchA); zO|VKpQ?w&$`Y!nZ3?AvFl|$)52e=QdLiGNp_`aEe_*=ub>j5BJuDsoruGoZr-|e>#Qw`o=pslr zjO#z8@80JN3P0?59g9z0^(l6~F7|r%C0;tH9GLdGDLtH&FGMlbk)W`anA`j^<6B5$ zRUqkT@PzP{hS+Q00!6UqI&)hM??@rgYq#wll#uW6NJ#{K$qf1;LVQSJ%%)bYeeGCG zy9F6gkT_+{aYbx-D-HHWcW|ZZw#+NTh#bZ z-kRb9AZUWSK#R6A;lu9=ktcPZ2Am|5KEB;31FBl%7n_wZuCt?{c)8{g=M+?ar5(9N z{{E#54Ca6QC?oBLOE*?rbZD}#Q;FZS(d*O|s=z~|J@h>ydGiCE+d9`pKF|~#Ig%cF zH0|`!WVItB>3-NKRU;X%=ANF$u7|;fZY>rSnfBwV4SxYM`eW`xHHC*<$kpl4Y zipsHBoK2J)H^FH_Y5zMUC}?w`i3DbC$w#I&L(qU6b=j=5cV4~}hoa4-RqBbSOer<1 z{)vR!?Y@cw3X5G#!3yuY3ZN)utWRz{OJvGG#*RH-TZWH%6ZF{V<#nYlpCcG1kWHHM zC+$W!a}UqCHT<(^m2O~K28s3|6>`wX5Rf6bSk8(vgReM5m}GngK{*&zLfi(V3&okm zC)ti++xRuM-aIb7dXJ|0OiD%(k@j4sEL!oe7GPJF(D2fq(WUL`;kwBhh;ZG4Sep_w z+<~QN{K;S@JSDwcx_iy7Cw_EH*BuAOd!@vbb)=_x(w&;iJ{woS43^EX1r(8Fb`As+ zfg@j#--qb?wiUXcS`i&^1F+bZbH$jcrV=9+0Q~{V{F6@ZIASoWvzK$E?3)+wCAKc0 z!i*1ZkgTzzfg-C8gFZ!an4oJr{x&NV`rEO$&BwmB7&akMg-BO`*_FtgJ$>;+(KgV&d6A$Rc+ zmjQus@9aq{J7RJ>ns{&y@pyqZ;)EwrQ3~opR3CCc&*aDZ`ul0>ru}yo z8IW-uKTkvCeQ`c&iV#oft$f{tgP62G}x6Y$(XqVX-gp23i)> z7a=J|WiWc>)G*T{aw1_t8=}M|t{IR>IIvja7E$k#IVY9o3B_?`pny}^ST=3iA=w^L zceG6%$7Uv&T9VGPSBB6%P`(3lV5}WdY86eW`=aCch@X6t5q2!6wwoTYJb2~8xXkUu z#kFQJGmGvaeXKud#o1d6txlzfzT4SA^RxY@0Hf`SeAx|Y?X>5;3Udt4H(WUzJJxWR zyMOC#|H_ZjqARttXbf-NS<%2xL%pBn4`17G2Gz=shadY zL|GN}B6k-eVS&!5P9;GjbQ!hWh>N?jx9dhDQ}3RsKb!Nt*(G{$^=N_lybgulXWh*MaJMmlg+0u z)gSrcHi;5V>`e8yZ{PZS-R!@;;@bA|1=r?NX^wtGhYDux1s7fKJpk1 zgbopw56YMaS)S0w2_xUBappGH2?3$1)W);BGPX(np1EJ)MqXb|uICx31TxsY(Wja@ zm66x0nTMf(Oa zA~b}gtcc!4Zt1SW@3n>tuFNzdU+xRL4Jwek_QAO5A@9zhyJ z;6<$9ra0&FCQ{khOY&FKN#j8a<8q14;>4@Ry(nmeRZ7K!-KLLtpGP zNKfWYLUllN14r;cx$GIWco?v~1wN!}1TICruVZZUQG1JvO1|~(?a)w)_(mS4prD{^ zo*T!o0>-NNGj#UfeXs}AuP8>+@kXa}Avrc#ovTr{yoKRFI}YWu%E=m>0s=K%5=(Yu zFlM&ZEn{KFJMViMd<^OcP)B6*6CBaU$eD>pPhFnsVh=7{8*G1Ic>=W@0k+gW;UXim z?U6|Pyt1PN_eBM6(}&@aHiROF#3XRh&G3i!DCp5PNx>Vg{SPlcw`mn3xVO(36il7u zBE`~5Yzl};yx7xvV)$$QPLN6etSmW@`4!*+0&o>d?!PtN?zRyjb>%o$D7#_NBM@0_ z%qe`BiA~?Zk@;La#yInRY?+A!;+BQI(+vOvYPWrXrR0%<7dXJd-`a?i3|7Q7*r{yz{TJa8T!u5X@7}%R zkRYH%*w6_Hm(>?(o_3m?56M2w`y^+pIn`Ba^F0+h1nX-H*Ki3_5gb1lpWQsoit z*y&o>K3BT#@R5gWVwq$0(iqR5Uoxm@9CX47brfhZDW*W^uH?C5Un#YWO@2h7m2&D|h&Kr~%;U@YQjb(Kdyd7R z*P-vA$WY~Z?mp{)grsgX^juNZno_PidO8d}CN(j*>df;cV%Pvqh0j&Np&e3l|8g`n zw}=aGO-5Omt38fOOtG<>G9ZV8hAS)_G^hdIU^mTPjz$m?)cB9JQbvkAZ){+dtKWT~ z3I8U5kLdf;F%CmOJ8C?XhN(5 zq;y2>5LCJkfo-;*M1uM-Vz&&IQ%bXcfhf*7;sbu}F@FhykkQc>C=<87I&XD~sPAKd ze%wg45K2%F01)yi)zQeckWKQT%Eb1oJL`|O5&!>l;SX3BA_lX78hQOzoGOxz=B9ncY9AQG;Fay>c|x z;ZLrI)#)ULhHXv_vu?8e@z?6=S1Hk+pxQ(i*85xeP45lL46kv`6?8u-DWj^-dH+6t z)hGAQKliE<>qC_rz~#W@@S#X(HDCZJ)8llPn>Xkqdz2LTl86>gvf<#1o6)gAqDQtRUnFDgou635UgkU^IS z3!tQ7JaAAj8Y)q?3D?DrM@A^WA$LeI?!c3Ve5xVUZL@{QHu5Ws&JtW7Tu)Grc9Lpr zrHlX4;;0u);HNTeB=yi5ks^}RHC!<#enfGr{+e{fKLq6f-LD=1Ko|RhZl^*g21LG) zya(kI*>*4udY`g9Xd&+TvzwxDlYw>GD13`x>Q$Y+>Z2TTw8z2a=&7P z7G?e63?J>QTd@(W60yfEzK$4lUXr}fnQ@G_`M1yi;p;u%v3}q7aqX#1B}s)Msf=W+ zq!5)&Mj~6o-jt$}GLn!@Hf3)~3fU#uiR`^){f|rE&+|P0=lAKkU*E4+eX9F@-|zQz zo!5CD=W!h8^73EJj<>mk@9hcJN&V*=A7EM00TcU&{gD{PqdkEp8kx(5Y(`{*eITEO zRLVOJiWJ@IGjHZc4n!@QqX&%rT^UDP7pHWP#*5`;7DQgjo#~=T*qb|qCymewR5f~R|q5TyaEuqdKx56cMlH@c|oXaJXl}e`uqp_5qCi%jBXl% z^v{8l{VL#TIk7n<{mSue4H_dJP=jeehNoSw3f5cocR(`dp5+QGsorI}8D(?osXzqY zj1`$wq9U!HNGvpLr!OC$oUSYV@+Dcs>cad{x-DBShh`#7beD{N+;eLOZv|kZ$PQ<> z^G|7sj%4pkjSVXZQAEwqX)Y7t5_vhkQrv!jf{bx>gp6m7YdQa zY)CWU^gEz_%Lh4iXpP${-+@mrZ+&?2jC=oV-tfHD(@v_6 zRTfTt^G9D_X1*5nW6frVXNO|wlg~sr3Vz+AaiT5iTOL#3AdTBYQL46`J(cju6zSN( zBl_ba)0-%M{i&PMfee9fCtmfIb4?jA$^8~+nD(P=Fth@m2O+?E|X7-)Px{~`=e zBHTnJi-E1QXweae;d6ap5(Q&*-+K$ave?srQ+KYv9gBSZ`Z@rp&=HiE>(U6afc-}O zWF3{#HXDdj3V4tsxd1l~`#x8~m5c2X`W9pFNqLcBITBhw2J-4gtdT;DEp+{W+LqY; zSHFd&JqM=QKb^DfIU0`x5czL~RFMW8 z)eg^Gn?-@}7Wm`!E7UX?RvFh!=0D-szGKd^3C<2qFfefaD9N-WWJLJe!RLboMns*MYUU)zleH~X*$v40 z`^w714<=%ExuiJ8?je^ooCEiE_@Qf@)}G~kIlUnvD5tldlLD~bw;69kFEyJgYrVET zzc#04H`GU;x?d4|_CmR_B}*EOzM1Q3+2qo-QM4<$bN!QLpy=La%D3~o*J=ip)h$Al zww9AY2g*0QRaE>_kv#lQZpZ8`PP!$bcf3mO<3=7lb!vJj4frZyOrgHuv*=K(AMCsTf0bP${|PNN3d<7qhNfHLpUQ;3#@nFs%1 zQ>NxOiI|szzzjq*uLFN@27u)|{~NPrS=F2#bAyQ9ZTd6YVi5=-p_r3?EkG;^Ca>rV zL8$nMeiZf}%s5ORAd)?<07kg$u(x>iG@+}ZXWoV;VG&`TqZlB9@qA1ZC$|+@uUmac+rTIm2uYtS~({)8z)@U54`)=Qo3*UBFSve^4pIicHg8w~l#X-#94l6^i4t+DI>f5<3_5 zEfoaw7+Jra#k;g#@6<(MVTu-qMY|HgTR9`E(fBx0e?DG5452i11gQq>bV_1qRm;&S zMM9Iht^7*9{rs6O7j(I^hj_I#W3a)i6+ylo$RpewZzED(fzQLR6v6R#A2$nESA*6~ zkOv>#r>FuX0zcWK#)5A{=C*i^O>{$KeW6a%8x7x~Wv>NB8<-l-x^tMi2>8JC?HC!H zPU9xZDX3dT4-Q)+u1Cz$@)Yjo`pg`yXPQJc!wJ2C02u=`ns?Znf7V z1j4?WHlaI)0~$J!%P6X5tTWV3Yw!NCyL;7;vGcaY=3k}gyz$TRZ=v4))GxrGJz6K` zV21TtQ+qm3e<{?EnFqEz8q_cD(6b-n9G+Qq?aR?0qi1z={>uxTp(4$D&!ggBB!eSk z+1S+cR2a0;WPsxv3GSo}#Q!NM5alsUK2Ga&*LirZ5PofS2J$LkFhp!#EeJTP0M*2Q z+!m;i#(@F}xRUS9jnC8t*E61h_9UCKb^wXk%0?(ZG>-2Q>9SQJ$psvQ3ch2L5L_d< zYq=xPOvSIQp>&KxWB>Z4_CqU;=j7}Rc>O1ql&64YE z(9I!sV;G~Sno>#BOvrwf$A>J*G()Ipg5)$^+Ywf@ET`Y}tIp8C=dKebHOkjm zL6||C;vHsxpB9=!-6{3j;0)xrVyXmSK|S%KFMqaV8VBjEx7anr=VXKZ;`S`SFl z1rT>#@9Zo^Fxc`0qFcgk(S<5PpZ6g$2pm_Rd(FbZl@K52)x2GQfvaLKjL=&Q~YvTyp)mbh231OY5i75F0}X zXjmI`z@7xj$jA0@4vIF*PG6ljdS93dEa8PlRth5YPl%;N0XA>lwrzR5yesk-GPHAX zwskR%&9wgl9)BT1>@ZsS$^xIDO(Duf!v8)_k`T_DO=Rep2o~EFj6DNSe?R6Mp`1E} z9yEx18WX=!s)7Rl@Y=<&>R_bu@|BVR6{z>Z>J>!iRNXQ(@)@7Kr6m|{=$?*8J=nw@ zcY+wfY8*lH=LZ?_H86%AVhGMQ2;f5{zok3?&yi3IgdwYr3)F;K9LCP1E|*7HL9H5vv6vz4x!6$}=po4`2KoEDqL5qnktnJ#o-MZPKcq#LBcziy(%OoZomy}8 z1m|ujei=F?i}+4VEs#t@X5`<^k7`noAYG^=*MEdpxib;#;{$M)&tvj8uG<4R2hP@? zfZhtA_%a&3m6Q(mS~9X5!zk1AbEKm`fFd{&v^aM@r4l{+HyFT!)F=d3c33@+A7r81 ziwkzR$t&PRHw{5s{QMytJ}W{o@m|8>EgxC&Nwh#~TN93@?{7~V8 z*FpX6!i|>?4@^CI#ZlbB-hDQwZBN@8yEoig#_}Ny2SN{3Hmh8_q+IY>b(!q9Wwrc{ zkpjyk>wl{Yk!?y|-s}Lf##a)9E`-fzNHPx!38|;313j=`oVQ5s+6#+Xz)7{&XZ2E* z35bT$fXc3_Q5pp_VC;L@+1c0l(T%yCuInxS02DCAlo!AUfgdthhuK`ee!!L8M;c;K zs9=QA8yiNlQEw*z6b6=o!H7UaQYzVrIZ7X(mAQ|3yY*Uv%p`83aVAk-xakEM_)S0s z=rOAWA($2+NYsXE=oYpU4L;U}p{JKx;wK<;iVyFRZ9+??zJVz2eNGcTRz`kHUVUjs zSF0tBF8;|rq4O;K@h(qm&^@v4_RpbXAzN@%Wg1*KsGU4Eu?oX}+ zx%il+)T+alRrVl%5|OHyG?gjjfJ>|a5?{L~to;+g|C9A=&b6ugdFGh(o-aJ5z^BOU zYHV1;`WkKE0zU}MiY@^uObaZvwV41IJi~V@)=C(o?>Lf}a}R}T8=9#}`Z@4DCe6Z3 z50`3P5o6<|+H?2AY56TLr)-e{!x2S<#u(Q>kdZ$KXIJ^P;YxI}ybW|10{wb;9aM1~ zKv_r{je>K-XRCQYf+iDh#nhZW!+ZlVzRTT)dq6DY@-+;#A`lzS#(2Ll5XHf;@XSdZ z2ZlzbArhITvVY9s=%H+M+P~W_b^eW2S&I!Fx~2k)d;_8@q*jQ#tw$`+sA9a6(bN2c zN;+*lwLxyv53I=iwL*teS#%=NgXmyqAG>>SYQ0+QFJY>^m%n(e^82TPE9S8jf84!p z1Wq|*4lF_OMm1P@PFi1Le$BN9GpS()wW(cQ@ftTX04H5Jl;ba9;k_~R6GNGwJ zP40l2D+|4o$e7}FWQL(aHWAG@j)N~B7HP*Kv4q0yTsu}Xxgu0&Mzuq}4hBfTiM$8R z?-#msWWR>i7(#G*nWbpzc{XAcaLuDU=izFM|F|Mm*{E+^r3Rq-l|(gx*iX35?dXQy zrQ~35MOH4NY5Sd!x(!PpOa*G=)1M5gZ>;OS#xLLl6R37#n#e^65xK0`_P>x%mc69= zfKHRdq%RJ9%si&A*TG`2?1}I(^!59^9%?XY>20zsed`TNwAcw$hFm87j&|qP#=~_u z%3u3Oka*x>0OscGXYtDS3CA1&bGgUvI4(Q}2~vh$$i>_s_LE z-MdFpGQda#q+?CXN0=u3mBw578qlXxQ#pOpX)F;qoDJn{?4vA{<% z?aq3784g;+5iY3`$157hhwHmgn-?J?I}Vzgt9>0{1He|xNz#N<9nw9$NyVl0krajA z31N?E1t9`mM{ezDM`9dmI8?ut+L?&8r1(T@D6RfgTJRFBqja0m4nh?t9uS`X-xOI6 zA6|=811khaN`X1LtOQKZ&Lp+fvQ>4iI5?S>)<6aZdO5MPKLZ&GS*dtRNe4C)p(34O zOK*-}j$S$$H>$PoZM#6O+B4+&4XiuKW#Yw>2?=z5vEBQ{7d}1&l0I5m*oTRQfWjg5^afK6SHu?IYtS0PfCm>dK0atg|eYjHqbs`OJ& zmM@I}RN20Po$uq*%5?f80-vLKaDeT4k0A#2gA4CG-9O(L-ZXLdyyKzErF|!CR`qPH z&0*I!Pk2zJtWjm1$wN}bQ0YUJD`_*=ux6~iIK4vAW^ab)Kz|%L0>~>WPKFn%8Dmzb z0>_>&k;E$;NAgFU_HRJ8CW(*5VAI`_@yfKjXaxWmB$R1RmlCZrIJ_~*R6!ODK^)j7~8ptIzd5+Y4P*N5PJv@pZ1Tk^%GI&p$_B*t^yb(_QO{v@HCi^ zN~?5X7l-6;)7p=C0`mQq`_Wy(x-Ucly|Nv7;se1;7cYv)zc9M#39Nr1h7Q1$n$<6= zf`u2<_YsdgyXzz(k}BECAV$Sp_$^OBTB*MwX<}(*r2+R!VwVGbv?CEv1DC-hOKL9oO!uO9kGE ze$dlvWlcY85z2`4mvQ!`jC%tvh!8+X!B2V#&{BRPvRvpY+Y!Ow3N=5QO9{7XMEYu2 z=fM2L}DZ6^9^ z#AO5U`Lm8zWJjxa)_?=E&4`Um1!NFG&kG?vNs6%-!c$(`S38L5n)Iduzh#g&kk_Mj(U9lr3=BFn!~&q zD{J1d-7~iJqoUheCrmqaenfgIx*3EE`;N z-l#Hp)#n7CB(XY^iCWA2iA>3%;jX)5IOl(FxfRvaKb8|5(ILLd_PuSeu>v0-RjdGu z@!o0KEloMi0Rfu;rTBUVt})D)8D9Tox!Hv9UV&hf@-Kx;B{hD?K7MgH51W@1ONXEoG zC*+_VE1Ir@EOC_WqTy4VgfE-x8h%!GuE!%+RD3Df2`$C;qgn>XE(uILKUgbD3h3fbakyEM&;!s-TD%=2Bad8FR?Hh z4J$s?_gO5p(CeRqx7mH?_0jdSSQ!s1F!F=``(R(6!57We;o;i_lOXa}o0Zi+EUK&9 ziLF37_009h;3orZwnzW=9Xsw5X9hyU&apf}2223u6HXFNhSUVLQZ-aOrb8`zaXdJy zupK*j%b;aDOpL2fya?Q9HJI5&G`j^R+?^epDbVLCLgxGy;3K-r*U;iXuh5&e9d0B@ zke5sx>ysnv{qqQs=*_NB@rd_uSS$Af^ErwE6}-rzkYTLJ2)=Bn!NY)7FW#pq&fo7m zl#Wj6;YFOyfLd zC!Yy%x4rbC!k?T5Q1P5=I0BJGzu&XUd~}__W#5b`fDf*Bw%m%AWf=kZOPaO>ry+GC zI?cOrs(8`vga`tC{a{pm@W$W(?B=TaS(ozw3a8`Wh^uL$T65ehk_ShPgS_>rIAfl| zX6JyhIZf4!Ro2C}YY)Vi4c%6cN{JZTYJnzOeiX$@+4c9OWq21Uv05WaiqKD<;C5_K z6E-<}Iz*d<$EDX*ci;Pg_6!Gp`;fjKqCHz$D?;4XJ$w2bpO6Ss?5zsxRG{#79+T)5 zcxN~QLG?H)U^z@d4sD>+(8jpKyFWl`4GvO3+2mSdD8ou)0G9nkagl*s3yAFo3h3aS z3$6(R6vaa-WBWb#5N9dMWaxFTGLWdIfkWwJNx;MIJ3#!;dW7yn>Os67yx0#MFwP@y z2j(h-F8U$u0)NgPC9@nIP8vM>yJ(~&Uob@bj0_8xG>%L%0&$lvM@*d@I~`i5aY zod*UW+JYIA@fmV5$i83<;(s!|N=7w-o`d3v-cFYj1D`9*f;%=le3;2SH}uSeA=PDd z9+gVFpnZh=x}e+Yhh-TXSxa^!bZ(X9+9jy5y11j$=;g)n^oaSp0UKzOz9znvdGqF@ zu1nlGkq%Z3v#7^=?Ze7L(4o__lbP$ zIml`PaF@@QR#v)5E18ZJK#oK_KctEuE(`#gB3Za=3Y4y-y;t;<&{|Pr$%W@)#X=gA zD{0JnBxBW~tyBi!2%#_|*)sUuJ^iLjHyu9=0lBR}=M-MV=H@IB_fWjT3c-lC3klcC z4eYQKzYeO`N!6vEet3Pm5OH!HvnW9P>y-AR$(P!Dyovv$+oyw(8mX5!_zwF0XTDmKl zv2EK2H)MvI%1M2-&fFiRe0<|CyZv6?2~F5&r7^CX?|wM)&UugU!CS$Z%WfaDvk@ez zGkHA%H0O717I^b*2&&fT$fV)0+Uk1)4z1nI+1$7@50G56Bb7oj=9rjx3`vO#fuTSe zsE}G3txUd+xCel|4QZF)a)EPqQ^gXm*if?H@)nYP_?q0gP3VV9uay)CQUrB(O(Ay* z$pM}WdC@Zd>e%|>=*yo;t9*r??d$00G-R66U^6do?EFfrwSKp4>Fk-;?tEOEDK2Lk zTswTr@uHgbV;Teg)V0xc>w`vDQdf2h~{=SE!FO*W0~RI|mo20ruthroyU_Al9$Cq=;I>?g>ahih8k zU52IfX=L4>yN91pG^Bvnu^|-!pIA-6ZB43lX=X(~I>LMVevGOQ|LC-f>&kf34 z4Z#TsS`|`-zusVN{nv{J5o(_JUFk#;1)hjG`|TgX8)+5O=mP%(Umjo?KuL==_^Y3j zeBt7|Dyj6zDolkI`en%*tiDKLZ$t6QlH%(q%i#*zVDtZ892Hz>NMPX0DLzUc(q8|+UN_dF zoNFnO%y0YH(N%r{tJ@hgeH=%(See|Pu|8U}twZ3I$V+{ECMoZaOGt+j#d33r%n=O+X zkhLzoGLLWG+(yX=lwb=Djs7=UAVtJVouKHDN?d)d@Oqf@|F{_BzPsPuE33F;`D+<} z&Qz6NUpDZt&M=dP-xN?ClBnc+X7DS2__X}+S;dQ1hrg}|ds=Jf?|#0hfnWWs4^=J& zt}8x4ZB%)3xu{Ir$%BqAGpiN@Zmb-YTs0px{+WB3O^svWl%vl4U2Q?f4MPW)Rtg@? zr8nsLu1m}R-5dLo{l;UbWadW2|9g^V)N|lHT^SZf_a3t6A558`Vp)}QCMO_GkfPYz zc-MPM_amywh^b*BGuB&&*}B@XVES457xq~)eyvy9;w{PZ@!rphdIu`~ir;->Dw?Mo z&mMI5-mKNR^8@>st9_ua`f=x1eIZ+?2YKIcQ+89Yl{FvCTjJ`Ih14Me@cI8*Q797V zlgIj1Gq%rU&QvI=tR~#LgxhK-w0u=o2OVFrgQm{bP<3D2`I+BaAz=#$zz`Ad>-s#w ztA8XMuIJBueeY-4)ac{98k4)TGmEyINsh^?s+Frd7uJ0pU759Vxgd*<&VPOW(@sBy z^rZ;$w;xf8ti}EO3QyJF2d$~#GqSVTw>KqFIWm6p?jJH0YgjDmj#$QBX1<(YzH5$U z^(j6ogs=Q)Ek`w_VbAN!hkqnqFSjth+nD)o;FW`5OUbHH#guxcr!8yjD=Cy`sdHr6 z|L4UJ_1pjTir9k9_N+wreai#BfV4d6u=@(`EqZ+`92MN@^mV8oP=}0-32U_A!mjm!q0>74{WtYObAWA0n=ZZX-StNIGH^Y2eV zN*rD#dC5cTrLTy*IjlUdcjQ3vDvQUCsWsAH^=q#-WXTTY7Fmxp+?sOzhR4c*$OdZ(;D2JDLO4j;bC zda=jr_260Sm%nXRPzYa5z94>^cCmZAT`!M=FiW(MV3qC9c40Tu6!}sAnv=#mtRi%# zB!n)ye|#-*MLu~CR7-dTA3agJap_n8`-jMu)xPDw#(t;#8gP64>--^`j`35HpDjLS z>}X{!NSV79cQQ7MvM1zuOSHDaGKzPy@~+SOPc57{-r4%8Z%*1iz%)a&LH*z_c?lN- zM)h|&32lez^;Dx%vcC(eg9m_|GEIjwFUIaGv=&~uOHvje67_; zd$K6}ldtDdG4n{(b*kGLUG=DFZj18O&W75LGT4+QET<6uZmb+}GogK7;euJ&PWMf< z;x@72IW#@OZqLYBp*8KU%c&97c|Lep5{FZ+C@nXZg z-!zFyEzO3?_O_9hO7Wd>%a!Bgi!3Cc*HR0{-oLYZq?aq_S^t%}@B9=LII6--ymiDSh4_rRWp-v+1>#gtVb(4(&}By_r_;CXRCg zY~75mjJBeo%P1b2zBSjoRyML(EM`>9W`V0}PBOxjGbe8c*M|`0o)Wv7;vGGsJ02zC zy73y26BB!skUOcIY(U|x@qG8cUc*|=jqENiS*6NG^Yove8^)H0W=O3g*I*iYzWPxo z?LkXFh~i5+b{Sbk%obCTonG5Vuy?vwHoLIbvQ zQ>(})IbOJtT;E}yEvKq#WKP9-_Tt4S^;8Xe|F$%a7txzc7u!3y>L1a+Sn^cN)vH;r z;&)KtfUKeDE9UwFQ-O5?9~($d!=(!dBJ0IVb~k(oyY2vrf|Wk)7DojYJjRH zF1IFLHR2{)a^uq1tujV$yAFMgvV^EfKMUG7+ugo^;(u+$4Og zGa1M7jdl4L)$}F>_3V7>C6_)%HxnF^m#WLk-TnMx_AO3-(yr6B*mVP6LzH#(KI z{fa$TKPqn{S@KlU)w}3=MT&-sbx!{kbD5+|+Nq6Sr#v~He?3^=&w|dxeJvMLF;7#4 zOFhr#!}~bGTdD_4f-?o_bMIWR7E&KwQ+9I&`4r(XNpMgA-*RTJ_R|IAH)>gCwW4ye zY%YJ<(qH(0E@k*A?uCS%n?j?HAs1sK)sVbw92SU0&eg#Wx=R`m>Se|GBcI@ALASJI|b0Kmqg{E1B9H(N~DO%=L#9E4WcnBs$c|pon#qo)F{7 zQfOi%mCYZ0!nsS_lkbFb!l`s}@vPJnIl<}MvKagtR_IcF))DiO@=B+!0elnq_vcpSt@ulJH`oNiwh$$sVxjC$-pi&$!KWNhR}MR z>HA8)XKuQE-x~d=&p2)!_Ud)YXFYeHCV#x&z9%vuqTr5p`kyoEUC;5q9G5R2p6(p( zn40mPU!ayr5-6clGLm2V^4B@a)VKEA+h1awxNtIibrmm*Yq<9%iGw;R(n=M6%`t~hX7g~B35a0|GB@yntuy*7vIsFSkCHSNn_5eenh9lN?mB8 zI&$+|QRc=<0VU(a9T6CMk-DOaY3c5!FPJRdTII#e{iMeL_eGoHF>2RyMAn#)Gb&!l z>s#=oPB-}A9mVi{OcxgGul}~;j!w>04@~)yO6jjy7 zi)mX%^9AGXsm?fe@it#EJ|wy)&>;0HmCsfk%fXWC($~Lg>K>EfqcGB+VeP5u@jQ}d z7TC3PmnxF|f)f&?xLYj4N-@e#4c=Sxt$wItGy=-rA2#`927!7kjF>2&+VIo0e>SC{ z7F(eio_sxA@!y+?Q2-$-Dzjrzi`je5kG z{vR$tp$kD3RxK}x6hRL^0gwFbN&onBm90rPTtOrYL94(3SPcs+tE`n(Cj2^Kq#ll_ ztp}PE?BdQ8Ke=~r`B5}5V8l@k%my+GL9{+E;v37z%035%TMP0%qzf0pb^8KhyzG%~f#r@mS^rq0S zU%yhDEfTlefPnb^enU{96nMdLd+h2er=r5@^BEma26%+&q79n`RR9-;)rdOew)LV9 z+W_-xpkTzj3(d=+M)k_ge0ZUC^ zt<($LX1s#OLGmRplfTt6DJNF@9z1Jjlxx0VlHHbh<<8B_pH0qPqKB+d)KFFm><@D| z#AqtUd34|LqEV%qh%bx^hMxzgtRfgWuBOYZwa-^iZ!&g;4Ft{j9D3Z*kegh%X)&gj zk3QQ37+LxYb2AP34h~fY;^N}6($b*lmk zZ|e`sJ9pkL47&(*NBF3D*7Z?Z-_p~I#`H4G0gOJs&ra6i_m`mYSoQhdlz`se-V~^* z;Txw264w_rf50gauod3@;jcg<&d z=zU<_Tv)m#3}Wac{l*z?og$ z6MxJ*G_GdaG}-^pV|5%#`xD&${Pw?p8sW?>_DHt&K^Z_?NTLx;F$ ztib5ZT3nc&fY>Ms7`BpX9$!}fgf$l&nzRMl?_-aVg>U`KTY(cK9_`j!Zxv~18?($} zZ)W~_;qFuhA#x&}b$7_>PbS93ocdo64>V;am(1L_al=p0E(@Lv(fJD#iTe`?*?R(d zEoa)=n~$-VyCKZ}3f~bfjraGdg(8o_c}FdOy6D(AcxY+UyUD*lq3MjxH372N>Umo3 z*Ke2Uih;N6laRk)jX&nfZUmQLqOo;B9=o30>kd=DDed)bEalAeq1oed55}hsO5Yha z8hbOM^j6D@^M%HLie4F|zg0LX3W$F%5`7$QSZd2&e6Dhbt< zXuUmoYkZq7_lrtT{ij@uf+T}Wo|s)pggC(m-+S)ZvnLi*YG{kp%B?%WoJfU*wDxB9 z^asCxTN8_7u(Z!556ur=yQQHKg2rj=&QW~IGexNxU}Bca>r}5DcOSz(MBcu zy|aPpNm?aSG+KfMU1L36LW`N`QO)KC)l$P%Ij@d>tb{NE1QzGU;z#4QKc(df4VvpX zbQFKT9;8)r-_xXHC-ts9AqT^v#HPj50p3M5kIy7u{j<1C4cit382)>q{f}SKA3%1i z^mvM@r<)sRe%AKTJsWM)xMG`GERsG|m3f&7ZwCG%6X*09twYq9D|wR)D;IW{xy-#YiYekx$jZ(zdOtdNrXJ}qnD zagBSJl)Go#jCgn;OW5G6nOqMm+3&hOIFeIJhevy46%_g~gvfC0)$QR(p?R^p!of;Y zoaXb;okGEpH&ox7p%Y{$Z=atp7g(#t6JPU^v*&4`^y4r6C*5Yx-%UyT&`+SVv z{@W34Q%G;pF=IWW;H<+Nw%54mJWfNgryjN1T>J{2+p-y%Gj$#_*9$8u2})#{W_3I^ zYM2mAOwrPAH2>`b0>=Yd54*MpJ58}`(yTjiWzS*U7CF{>B&N2ume;)hCBmq;yL(ml zJl(VNJ}SnKK#t~*h=^d`vQ`&7adJKg!js88EE8Q0nVUBgz*nyhZ2_Az9f8j&a1YcS zX!0J4O>OHNKw3WzmCWkgMDQ#~Xd`q)m%@Ae z7|2^PzwsU*FxMl`afC0a9+5phQRypW5Mvlz=Wq1Tcm*xp`4h7tn$| zx-iz@F>Wk@1XNj`-cFi<>y~!osi98zUPHmlEqo?S@z8=MMQL&+Yv6Ncx#Z?!}VT@1<^dq>Sq6bv${kn!l9Rr3EZRyxpqg zU;d5B7kvD+ylS?*VAs`=*bKrfGYbn#Hx~%cHDGh&;BWe&LcirQ<|`+Q-aNW!-DZzn zI8nw?xiYu&@sWfo=n8J6uL+uf@JXtwoy|uAF{rmLu{He@NMjQ?`(k5a#6fSdbh5!X zs;amvo%`l~tReXV?WRx6pZ4MOEBEC%Z_#X~P&JFa9NXKgpV>Ufq~m)OgY`g<*1bJP z%=oDkRPZ1}gQtvI^KzBK%0fi*gDihOa-UK$tv+Yn7oYwW4QiREHo0o^nDSVMfa=tu zATR%|Lv3$B;Q==(K0(X5j~dZm4a~!w=awNy?HLS|ju}hw`2%YNQ~8cfM*NT6{@=e8 z=0pChRjQOLVdkCctldB>Pil|y=M0w~pQrXOkf>U$nV$|9WLko;}VZ1o;-406n6Ida5F%>m$u3+&@tJw^!VQ$H&5R1-wWY?{>tMi5)e82 zjEggT&vxz6_jvV|O_PJsO8UAV|Fs4`!%hBKfsN(ED)a|fgBVqLRgH^Q3k{LtkEXGQ zlX$}mAOZQ^JY=t9P6g43ED`fVUl)UY82jeUWu%?31EM*8&5f*?$Fk07()^sA>8z_Lo!d61m8 zU2y8V^&)1QQHelfg%lK*sXucsOhy*Fo*9CvMnc#l(9O~!v^UZxwLu>U*Y*SZ3M z$EdC}F~ae!@135JBtEzKE4OqmJ`er*WZ%6P;cQ)|UWEgkjChs!7coW@{E)&No=(X|0KLo|9|`=VCg$Xg2H z<7cRLF4?GJSZJ{cTGvKb%u(#Q4sQ7PWW=5$r8ALZi|+IT5zU}3`}yCg$|wC2{Uv@& z9@ASmt)~!CZzMIL_xAbVbGD7S2RAQ0NJse^-qzj!j;`|3qiRqQZpiK3Q>eMOdQ%}s z^SYZ#T60ye57mc#71VR?TE6wh3~O|!VqrTu?p}}Bk;`)YialjGSM;JN>^baz}8jd437Y-(W%~?Zq{xqWC*T85<_7 zCN24mPd!=WrHFj|RxH1pN!3%!+{<|(@Yq27$?PTAoI-f^6Fi^(?NzlLxm(^`fQuPx zep6Lhx5%?s)mNOgd7Czo(nnkTlZ#Y#P^$!!;pr6~5le|mVS8Vv*aIHtI;=9lXs+WR zcd_vD@^+Z1JItrzNEKY+zjq3rq6VF1-}c1bjK9(e0+6cBKx#}}oZ&ccP-Pv9)gca> z=k@I)_xUZdTAz7&`?xIJO8WduU;fa+ReQV=VmB;IXh=%B&DlF#RXDT#J1f>&PiKWE z*ONT?kyYWV)4~fYw!HGZ$?3JfYPaKpfJIkkFwJA&@Q2;v;p0Esnyk; z7X%KfRzC_^qq^*s)_>rZ$!Ve4oEpz>d+2U1$;;0=Z}eagnEbAp)t8WcMr{^SmtJJl z-#}zHk`>5>yyo=z+l*4G^l4UVY$^3FQ)Op&OAX_dGx{?@N^}V zUXoB#)fyz`QjacVWMsH^4dyS}69-BqJBDZ^A?10IT$mR6fZt+zxQ$6j2k*MSvgqT- zld)d)n1g(eZfeGsg_-#Z6fXsCTT0(pG8eGr+6u=|dgbguR{%{|j@xNbJZVu0=}$I+9q{cJ8Fz9%D96HfVr_N3Vd0^?*_%~k5MXD4TbzLRJJ>w~mkk$Nb8+#Y zH(u423@_8C|9SLJSk4G%aU9ZtlQusx7&p=J z?;4-RQ+L|L9wcSLcQsy~)EGzFOit*_)CdtyHk ztIo{C^jayP>?8*3*&zo#U5Uz228v3d8~uDQk?!Qe-e7+vriRqF#)ee``q(krgtTh+ zjZJ5pn`;6D!n;Ppw-A1VyqyI&SklHy3qo%M|_)yM$*IgIw>xkPfT)pEQzIR&HSKLgF4m*vz2H8{Jk%LJT{|@H#ac$(!lf)tg#v$K1%V z*lgZtR6f|+z?R*gBw7h=mMYT8{hwaX+vj7D9G&rPKKPUGRJmO+HCQjd{I0N*CfU}7 zZSHlAx0@{r?ybtgbW|>Y4+ncgcGrZ3t4}=-Y(2I&hAZ1mw#$c__W9r-bNzRNrQ3Hu zBqoNX9E?q9nv<}?Z>IqNqeaeYYR8Sb#&-Ie9*z(oHGFj}L`A%ss0=N&{bs(1h&4EYZYFfCZ^g zex4li^w?@Uj)Pf!Gf(eTFi1zOs3pc;NL^A9f)soH*D;56R?R?fI3ePmvCUiEMYAW- z9&61MNw`79E1m|-*+jnHF=6fP;}Z#;Q(yi;=bVAJz$XvzSz{Vc4&3E&X-a~4ra>bagzFaK$t&4p(c+_n6!BdN`W z7H29c7Yt$QYJgH)R90l|hTiXmz6!(ByM=s%g!;VE&C?%3hOkiZslBCRm`{^m5Ow%)la`jfOoX)E|qQ$fLl3{pO66l4> z8XCsEl8Vf-7)pRVS8=nzxH|@t~*OvrmKJ>Hf zrTbfST)UAy{gO>x|4Giu>u-y%b4{Ml7AQH9l--ZKK-$M7D}Y^beegWyNmaw^ysDcE z6RWm|m<$JYi5*rfc);sYjs!_7k)Iu9ea z$Ib`=pH06=a&uWr+S%oz^A!xmdd%zBAA_}ZA1h{$$I?kB74|bp3)j3al#XxhXIk2+ zw8UIj7i(I(?xCWY872=l7!X)GIo4G7Zz=8Rsqx?&0ab(|O2!t-2eSt%p z&VXS|0C#y)Q`4%x6?Yw(E(OLlXJ4{A>qxfat=tLu;@Jak%{S|8hH@j(6ppM7oPj)j zA;qEP{b~9wYpreqr67>QU85?$p93}Hbkf&%ZRGH=Bu%sQrSJM911jE6{p+_TrliPX zFhMG?bS-o5O`oUJPyWdg|99|uPm4`fhfOA@aHGGgw&xCwU)OD(jg`;CpDYX5Sh@0A z&Y?idGtk+;#fbEKfk;naTIUI9ZO6`?bxeDSM%T3{6up+$)u)>-vr@Z~Zv}KXy}M=T zcfn@+VEmD&%%9wn%pC;dP{q^*;CH_zzLn49~ ze%Ixfc8#TW^8o+<{aJk>G-$qGC%&o55)}?`^HkK!OelED`gwKlinwsbXOGJ!$g17C z>2t|7V*iM=f={Nv(pQ}x+~Xc_8}alAOX)PX+eQT-Eg%ZY6^{{=28{}stFj;gqxrsZ z+h6v`JLX+lH(QPK*9snJkT;a_XO)i)@eTaCtK>(BlunAwqh`;I%qL)LD57Tf_EWA+s{^Fy?%qYfS>xwwf^O=iS>feY<(pOO{AqmOeqHJ zfDl!~B7p>WbOBPT4Jvv2;)3&cqFJ!sdLHscbYq&ki%T&#BGLwx|8sKURRi-%g@G=~ zT5)^K!ZbfZQ=f(3!9MXYNzC^r_JJE*)jEXrct5A>!`NB7KtJ}V?R)pelP65lR=CE5 zV}9BZA)&>TDKVVVe&k_dH7YBkN?^{jMex9U zR-{(Hg3r>^dWGH0)ICD@67o)qQVg&5LJNegYcTGIhu!VG=Vlf98VuP1zSj;aEkA1Y zS!n5>ojGMW9E`bAO+TgqQF(iMUO#h?{K2VOp@osnc#j{?HOZ~V3SFL_jF2Bl4W5>=As>V6V6@ z3YrqKr=v)VC$6erF;hy_@Qt3Y(R!wD`y(YaVqDCt`9}ZdL5n?2s(L!wyZqMO&s~)+ z5sTR}eNBt*uXA-S%I_MToi8mfuLToCPEj!mnTMD(awZivA9Ad4RGd0X_v};0>qx}& z*VrG-+}sLaJ$Qy=5(_y+fVauQ*i`c7cYfsBuwnQ{Rsh19_lp-XIXNmoQ}?*grNZstOW$xE>}ZC9&gc9uW{w1%@Jz#2m9oX^oHnCIA~x z*DKB2ny-eOB1Q%+$XKEHVzp1R^cWGpHEvmYZd0pk> zYH{%af2P=GZA;L_9IM$RJ)IA|Yz+B!Ece#van7ZW(6u8;10I=xyUsdt-n(Pt&HtQHGN1sfXj$vqF6FZrWKV&-QLNy6F<9S))MJY5wO% z#vj4r1mU6%{oS&Jn*Dzvt2l0QJ>B^15)p{uHvr~sHa0L`fKgqp#>^jsY`J;G<)So~<` z+{x1FrbaP(k^DI;3XZ z!@y>=Q{aTCMH#cO2iJ|INYnrIlgUx;FBWjt@I0tS8{4VF1sz1_-8OVq^VH)o~J6 zwd0hES2`B=eZV{bdUNa1l0#-N@1gOV$6qIu7wh4IHI(H>L(^CPoqCyKgIi=M`iwn$ zd+4wDNtzcs>zLJ&c2OS^6YufTH>3xHaaZ4v2b-9uJe9xKqS7PI17hOlFTIu^zlZ$r z;`@rjHibBz+Gqnlj1@RSOU`1F=c1)r3mN6vWB?%=W*Daq+0RMNbODaZ0jWO_%+d}0 zA3vOcHN35r`xbL;>dILTJ2SzvV?cgGtgf86LimoHpb^nGp~YSEs#9xrc}>!Clcc3L z@_+-QC|0?CEjCJMaImm~s+l(wyp-jXE0<@@Pd28)#`&yCBgbD5pQ@WDil3alx|!w2 z=3Os*su)k(2erQ8S1^38^>){bLt-Vl(v;=cvJY39yPDb^D*2vRwqT^`3kLAQt)&}5 zf3ZA(PXUd2k|UGDgdEubBF>uRswI-74PE8kevN8>+u-JpPHSJN35j2`vD~%%AvfnS zrlS>A{9@w$FLW)Dg$pxu?>S1zHTk*V)+&a0R`x?npv@K~HJbshx!L4j5cK3|{e-4`$c@`|@=B_K}`L>QvIadx#ZiK@+JH&cEtaHx(u^fHU;s zNQIH^(kEv!sWzzXmz#c4*>ai5?V|TjMXIG@pOZ|=qkIbX7$dBxtC(#6KqtH%GlbMc zI`n9_8eBWl1LG!OP|pb%A*j>3qE+x;AH8t)dt6Oae3YEn&9@p>=00c5YCq0rCi57A zxtOHL>U@LAT!Nhy%>(*vR)#e%O?xOcTla`~%IYFt|UdRc%4YX`zr6Rvn^-sRnH~-hG zqXH?z=Al2= zskId3tF|^H1GI(=j6E*)8K5+>q87mpvZx#7{V;icCSCrJ3b ztc*;UK|-b|!Is+U9p>8iO{C|~mk&2x_#1M5fX1n8?Q8T@AMiYI{&ntjnN8CwOEG~r35{k|vsyV`>+z_NOyp@K z%f@-UvE0q{Z(r*=zSiZ(lhnoPLmaH+ESs}$7xmPX)};LG86LIEr)ga^iTM;FS-Y~w z!x&7GgxEZncZ&RZRvI96>7pSH6rPi_u5Y3j(6$T!fsjm(vYUTf8jQR(^vOb7E?cF( z70TJ$W1Q9%)6mPsn%JT#CnuJwVI}v1cc$0Pzur~+v7DaV0}U(TtI=_>9<8^^^7#_1 z^FupyzX@;&GH-EjDpz$H7K=&H@06sVIQVMc(fCoZPrYvC<+0vLk0V-cYMNki@`jc+ z_)#}^P3)d}ZG31fb-4Uj=}gOtDz@n}Ig=}w=cHaTs7J$x)OYh{lj@Y^M-dL-M>&pe zLoBdDXYKO`{t^YZ+&N(8Uf(r!WKr?aRJ_v0hG1CL*a<+{#W+ z?wfpU>D9;v>%^zEvZe0d>%Z3SQ`dUI;ChZaQq{QO#vPs;l21Gs_ltfD-=*Z$t|j@D zk4r~E*zZI^u=)<(&>(eA>7C=fi9$#1WNbD(d#SocczZcVHr9ynnl?U_rqJ2R9klwt zm?V=KZ&@S{MUQ-o=4iE{XmHum{y9P}hey{y8AxldA$YEv!HtVe$Px#KMjoC|Z8IMC z|I&OFd46G+Rzgf{t%8e*x81eGG`gnPf%B6`5;KHdK0lTln(|epqPXTRe8bIlcJvqD z<-@Ia&#YoG@UzquzN?%l+b8!!F?DX$jmTGN8DUy|e#UcQI)1EgtBtDYrnz036Z~D& zV)`nw6^9HLp4`#?a|Hh2eBm(c!JG*%aBt|E6ERGyw8zx1X8*RoC7%zsCODN*yK+vx zYE#a$OAegwYE6y&;cjc6U!RJ^c6dfE$V6m9y{p8>|Jclmc)G1o33BrZPBE=!mp!#4 zCERlzxa(&vyo-v8S2sK@)Yg23C`Lh{EEb&C60Xv6Y70d}HjH4J!3MAfck#ws#j=F$ zFa8#~MAp`w))rg8GJGme#lW1B!tv2^Dz4F+E%CnxGS`3I%@@-lq#TnK77=qbTXk|- za|dnBr572xXZeCPHU4~VUcRtZDs$$-dt({nWfUK+fjXFd+^y41dIs6zihoNhHIBVn z1Krc!tHE*7X8z{U_U8jT#{93oZi)OIKP$T^m(Z_c?%h7ep(Xj`MEdpyu8;o_NjVNr z6d!yR1=QgGSF42_JNcAo7rj*ZTUkEa zDelm?WbQgsbPI{hi7&T&)t<+ag0Xx|*4T=O{=Bp|v&rd6x819$(WT(PSJsq&?QTph zKnNm09u%UEu66MD+H<;%HFrL?ptzXM42Nc?^)t<$yw-c?^Vm6*kJLoLH%;S2Xt(To z_~;cPllY@-APGN zSmk??vPVLQld>J5hW5YS_V+-UP4*ye4fZ)@ovU1!(9o{&smd4V#o!BOqia~9rB|pr z@;4kiMx53#<)z1b)ck8>;RX~vzRm`a`}3xuUb*t?9y^0tI&a$H*xB!+NM^mhm1{;% zZ(PQa$xyf{dqYT=KLwACwvHB&J#3XJXP;Sky3=QfS7BK2TFuLs zUpDgg^OVhCXX--Df_|}%CYiRs#{pM#B9f4e9+0nYK#EB%?v6GQ2K_r6fRsw65fi16 zH3v1lm)-Gwkfa?EC0$$|A7W=zN4?=Goe&4IN$nyKIFetxe04BXlBW0WHYX|yPLMVe zvcGQtO$^^m1EmlxBV11Lf1d}O;P~s=3*TkJJMVCc^wrH}A}rU;v$bM^p4=<^ZKMR}U#!FYz~ zRPxHJ^aB7hw7+_Q9Scxl=?Mu!Nd|^M#E}LSYhaN;l3S(bLmBd6u8iWHR z>zOLCai8w_=7)Zb8MIcqQkr}+^+;PKU8e{% z414lCmB&Y&YE$SqewS%Do~z8#Sq7CXRI zp9a@|-;BW^VjeqvpbS(lwM+#JjixD*hmzlVq^~Rp` zhsAZvzfYV__KK={fljvvfbeL6tI^QWF+AK^w3~R3hJ)^^T(0ggXh+%i)|?c7!z z)ElVv&+$S(aQ|$d98=;#1|_|E5>%)EfNWb?`x{wCvn?KB3Icp12d;SO@N9+eD(aQI z5?|K5*VbSC>v?3T<1BdP(kgR=jc{;rk>3qjiO^9B5&YHF4T8KU(+gz7MbCp+5LMPPp
    ;h#bu`$VN_|3krTjwyU6!{f;P+RQBIz*IY8W~?({`?YGQL`G4f(WjqrG0DPz9f<~=VVA;AjDvqTOX)!0eqZ7?bq0~4bK`aT0k zbcq!62Ny^QK{PoPaMFFtcTwHXabwzbr+7>ffdRWPFnyekV9EMDRe;~FsHkWJR-TrU zV)`gJuV(T)(p!DR=A@oxeNEyNhfw?YF;zzYZ~Iz!y{(|j4YNMT|5SUOZ=_nNtqdwX ztRNQYJ^zK($}@XxL6aP1Lmf7?|7K+_XkBIBKX-{Hig%DUWvX%fkyV_vo+*M=>IHyo zivd!-U`jhLub{957brz)oTfMLh2(NvNw^5nQQtHD$qh33Ur#@weDb#W-6?>4x}o4f zBpF2H_G%&4omdXq2Tbbml(W4k{$AKigM!tX9m{tE6ZBcqw3$lU{QyP4!a?Fy2Mt@_ zY+e9O%x>{C@|<@nW&fN?b=t&%E-QS$aX^s}a9XBV*ygT$uf^^rvKa~3bZ}UtlH;D# zB%fh!3PTn%@*iy088Lt3nGJe@Jop@856V7N$H16ZmA2~Bh>=1Gk9H=;?^j$@U*P!u zd1B}@_RCsAS^8IQhNDwHK(&4yKrd7t+9w*0K_MZu_pq0Xr+vFgPB+k?O;Y0ES3bYZ z3E$~oUg&79kjy&x|F%q*D_drcSRE}Z0-VZ>Y1|638_fcf(0-P&CU zbJcFd`#XZ(6aI5vm3@#F5+Q}(>Lx&j?D#Wb)=nY@dy}7&oa`j?^}^IlM5lwpL2_;y z9g#FD${0S|+sHPaeO06cI2IO`()c|SqZ9WK}E7ww!vx5X+23P2>xM(4(t^68-eXi@^@&rI1QzT zOJ0?YMR5-ooY-OV2o3i+Og5>{M$u`9t>G3ShF&MSi@&z8qdUJ~BPQY4Sq z;KaVCc_5`!NFO~OsH2j59D>;$xX4T?nEUWWp!Q2Q%v%3NW}S!-OsIfKqzY{rE#oJV zb>~(V_`Skss@nX0knrkj;I9Pri0x0jEsxF|_eZIQ3z;MLd<`N>0T|N@QH1i=B40>a z5sTrDYqAa*{uX~Uwp#v7UcnM#OazapegA^L6v;}6b;IazwuQ{nEprp-47xbv?)Y%n z(SI8}NC7cYS!g6$um^C#5LWaecravrxBFW`pHnQxQ8Yy~-&tD}N~SPvcn`_xk#p6q zZIzU;v4sO~G#u&aCUqDtG}DPT83N935#M{MKyJMZ=|m0{{z$#eU$hDTX+Fx{0(0wk za!)uDYA-A)j!L;J*vPMAtM!z``EZ6PG`)=z#aUF!(+MtQEq+1q=J4Szmb{TydlX;q z+DMMqYplnLdw~fbu@_UjmYDkYju^Q5O#0CPI5WqQjw?#htCpz#OyKs4zlL>V2+_tb z^Z_RN?P$th_81{AQWNAhgD|^CR05CNYi8Gjj_c1jfA@5W^%{O=U0ACN$5p{3;Z>!I zH2q-lUe$Ug;Mo#%6MLW;AGNnKW<7(z;so3+@uZe@{ zd#?uvwKAQ3N; z_JwB8E5@8ounNw`$dp8{{J55?-92wPC5xAR<5OgiD1{~50FjeHNQ`s8S+4Ino;Uxh zYm0^+f!m?wN*q5AcJKc6g;c@xvb1NzhDvizI05AM3skJj3KbKW;tp5sRfpTLhq6ML z&^#|?t@cJn5nAh4cW>ugw;3kN;W*jVJ(4=O?{x5iSE=y1n}KL*(8FP>ZoQ^lN&G@e zt!TP%j{Y|rorgNGY}zdLFyF=*S?|a;YWW3OhXt)n$MN493Aed>5h;wHwjU z6bkx%lD|oCF#8LWg^oXAp-2qMCuv`V^~scodz?mO#M`RB2N7EVxBzNBM!?&%pDZa> zbpbLJ_xVS=dudIg9{mBz!9(-~S*!9rNiTO<*Mgb8^5UIMjQStnTo(^F;vG(P zZExvrFv*Vd9;8ItQNE7y+*q6rtb)m}`8@5Rkp9hF-AyV9<_NB(lz2;EU*>`(Kq3^7 zh${F!U#}=TAqd}IwhdGJc}Jk6*rNQr9s_0SV;WS9GCkBxujD%uK8w2O;^`DQ{5O2+GpmbVG$ z9jw18RF%l3QY2oN&U+(a-4Qa$Jc}`~H5lS>A^KqzW$l}&RWGl8`d|8M0N%7=_ppIN zRzuss2U|hCz+B8~zyCM)#h%J%%R7Qc z=~8B?{Q(=#3sgqvbg=KBsnY2@aSWMyyg&5&VjX`!_z0fiWtOw-b)#Ow=3q$*wb8O0 z;9a>io6!$vFa~lz?u~8f3~zBNOQ-tvEl*1sb$!b-Rslen^qpI_)85Q&GGK{@Mn>Hc z!+ARH1lDVE-!mvAe)(rp>s^V&wJr+^4}A?rHlC~1d+0p}9sYUKTkA*(4j2#Z2B>e~ z-pZbQbV>xA*G3f}6yM<#=sPdD%+F5}(CvPNw9=E5GY`&!by?5fqx6||r>UcX>Z$q? z1N>F6c})VIt7hwFcc{(hkGK>_x~Hn>I|9#6o^HB@(b?Z2=+;}KSHnJ-y*{+%`sU!c z2W`b~SA|!eJlv^yw(}WDW?EX>Ly9dC_IrJh$spT~$vi4Y2Y1B7J0CWMU(oxcR+)71 z&jyV92U?p91@47G>%oKSTbS$9F??Q!cOr=`;SS)@O0=3oYR)*?OyvLd(0w0QmLRie z=n{{z@6l8c)qBsmVG}LET7v{LMZDZx zY3ne;N_77rg#cM>B)&fW@W9bci^W&BpRb;5;IFMfx7>f3z|fkeGwhUO1IXT$14Jn> zJj%Z;as-qz7IH;iMwv*`&fUnK5IW~xxhD~e$8~UdmgWI2xn%;pw3CMZX{ofFHJ(YN4Jk)ntR@gp3P z1?aWcln15pi0wT=!yqeAW?-4UQASXz!pI&~LclP?BAa4xOC``Ns{7R6BC#dsFzgQZ zNhPm?K~CT`yssJCF74|tV%SNYwb$Ln9{Z$Q_pVFZKe&gTURuhDVNecpdl>)*)Ss^3 z@l4aQT00pLo&-A@aOMxyAZOVKgcjKZU3lgGD$Lr~ikS-nqNa;MN1F1BCmTzX@2A`# zbQG76*mK-*EA3B#x%jfZu3$mum;m>^P#rn9h;;&M*5X3NV)8h*(Y4?JW!~n33e0YQ zMoq5VzC+vPoi;&}RBMUD*&^4*?~ccJ7eWLT1i{v2zdy_h5ri zrUt?hy5wh*P}>_|tD*@H99a^7D=AJR<|c6jcZ8W-AuZkcT8zy&=|G^-P4=Ec)+%P0 zoK*g_#s1TDTpr*mlUa=Ws#(?2=q-BJqS+ClVy9&fP7kTa=K2%Zlqp^`R$dGKF~nb1 zhvo3caK4Op%}elFJU|fV2|A&Qe?Y&3s_lNP-cVho|2gUGE(3tVprYyj%h5~kr6ekg ztGRBBty@A2&8k^yFb5?~M9@W7TOu%Hm;9fETKKKFOB|mh*YW0WfS2(;$2uG&$Z(nV z*GyfUo*dshi5bsf^1f5pMn2!u-vjwg3PnaK5kz*X+6p;wu1H%mQ}U3G8ofD#O$>}+ z$>JV@FfB~MEj(1*hhs;tAdUxgcpvH?@-f3ib*?`Jn@p3p>ZT6Ic2jHgVopi6LG@uT z6ei6DI?S_!l>S8B2?>vSa6;q(pONNJpV)#GDF`dgaLyHdgVj~8(Lwa+($4ma_TB}j zOVnBnnpg}WOv5*$^GBm9B%2XTbLy9(`GS;aw&!NQ?(9{V=+EnM-IESFf`5x)Ptg<; zeNSG6`Q=KjgXZ1EGaK;-7)5Wm14I*eYAtAUDZhy>Ow$tM#N%QAxL1C_>+$^=z5zkA8szQnX&_=p+bK^}R;Ob6&czA43gvbiBA z>qhD2z0LaKJG{)#z0L|{QnhI%QqBEd5uoFs;xb&Plfm)-jsL|);8bRa89)_(TgW!* zB_+`heGlOS73g5F=!{7kXO7NV-6KsdR%^OP--6ALG?Rmi;ZbNK74}6J-`CiWM=qA! z)VSb8@8YmAcqEZOWs*&&T-LBm{Zu;soFf@n`B1x3%ExTqQ!@%D_oP&NL-b@Pfm!|@ zraciFL+bdfI!zw#ch%u$l55m!hBVu!c&%>^P2lc1=f#C_A$;cVCP`!mSTsvrtd9s(+6$h*ajSfh zwC-qRXo!%PpEV^|*Rgv`(QR&o60UMkWuo7@ylzKysS)FxA_3_-M)>p9ZO2iLIjSY) z!M0^;Qzbzk`^1){_By#ae~n*4T?HpA{uS-RKM7t(9BsVG4BHIoK}SEjD15=SsRljd zlXjR}zuAPp=9R=2VBi8!@)zUvBeOu0zAUw`d)|zqvA2}nm~=^bF1+x3FfvFNFm&{4 zvkL-fzIk}awQN8j1FY4C-De-k3E@45G^Z?OK6_r*mZt>g)IjxTbsuUZWDj>08Ux05FTkyS+f$86pvExh zAb`4?cD;$Xd1{bSAi)>8feNDlSpJ!Wrv_#s7JvvtPCnd|p00qZUjmQTf$?DV4x=wB zDKnf0WsY5}Y%LU9*YS(UGRuFx@?SHDFm{FUji$Y;sS9C5!$GSpUChrZ{r&r9u4MNz z`-bTB+7+7FIp4Q%E^tgNv#Ce1pQtrON>UVPFOj!KZ+#2&NHDS;(Y`Ae!=7L&{PI1y z=WBE|D;+Bl3%E?v6wA#)gIJdZ&p>6-^cD_hQ`q~E&9Y-_Dsg0j;zGXKRh9B3fB%?2 z)<9ps12|y1zj@_nT5em?b}Tt=&2iTe#zW0~3;mp2ISoz%}Tva}Jz!-%0DHZKSo#QVJ${cU{+5wGO@PE8|YU`836?ciczP4G?E z<{BnRg4fDk(!oT`5%w@v&H|is?%nU8k)nj(Dm*0Hx(lv!UO1mGm-}A2j!;z4W7!8H6ZXiT_Tgj6l3uADc3?Z~&3d9C6h-PDB5LI~ z;I{TOD_4;J!0W!}T9$;-TOd?JmOD7DTUO#^O7uaP9>3L0mg)yjsMo@AP-oBm#FMR9QRaMQUb`$-APRrB1-%_b#iA5%z$M3#gg&f%`F>2VT z`58$v&pu#(q(as04B#Gwly<>y4Yo8~H@$_@>e0I@OZyAg+QqVD|10}{9Sr0b-o0Hy zTVEP+-%j=~kq}m?a5%^;o%X(l!!)fj@=&L+)~QbQq0STdxp%N1g46$IBsI04PesPH zg}3TCC6Rb<$yfDU=c+2|RjX zZcW!YNijT7SSW*A{KgM1l+@3k)9WgpE5l!N(nNy1IyHn{3oTvX~IT) zqV{V!4a89T8Kr1$Ix}Af%sxweNz*sANURU#cb-%14CSImFqu3MZh0DV0EQ5f@KSDT z_NPh3szm2_Wr!Qgw^dj9L<{J-+hMbX&YCw6`jYg87Ax#|!GmV1i6!sB@u^!P?D}@nYT^{%Ky3dIBXtB+%=)|~!b?(aqmYsmJCy!Aobl~f z?jw1%(|-HyIRAr|`@a20U)I1rjwlt@Ayo6tC}tp2j<>w3Hg5+e$8?o$J-n9M%5N+` zn2F`uGLZa@=(?P+tgT2MP(qYJEfs1@R>Q_cIxO=Ts0gPUiQ<_`+yNcqp>5r$erF2% zEs^46%oF6prZ!bCo%nj;@!4x0VHGS6-;W=pd6A?KR9vv^P(vS092y$()*U7uYMun> zI(z$hMx@;yt^2&2wVijy%G(ir(CK7rhh(vJpm_bL zQH|HL>8#b+d`L0sR>ig5-(<&Yl3+FmwXc66%AdvfJ%jOE`%v=WLm||T;cKt%GC8_w z-({kga4RW_;SQGk^#~Kcuc%*&Qcg-oZjWm{SnTrHCG{ z;A`DGa1^gsH5~a8q~B5{r`r_9qb>SgROWr0%kj;s;{caqvZ_BNtLGuczqVAE9Fs5w z#S<}U!sW;V5aa}k@Pj)#pSK$K&H*kg>L-~tVG2&^o`9{lo`Ff!IVv7`sCwTl?=uV(cKhRcXm6n!z>s}{f zk{MpMhUNcZGuWzy-FWq!*p0d{7Jim4=4}6S`R)pq5ome# zHsGZD(e~X{6g2*bShhOcv0Uzv;wjtdX?m`Z#8c*YWUc0OFnhSHaTejKJ!r97(7*KM zIWHJaxf-F>Vt4bTP$QdDbmj#Blr>(m19;3k($`{KsDs~t0D zw^!#q2bDfKdeveXXgpz4HGe~nSus|I4W6)K3ZA%OTC(3nK^Z&;)A96uiQXJyG;G?n zMfkn{8pr&tD90Jn?08bYIzm;$#4p-|Ax8FtWGcUky%JkGi;e7cn&$UYiv?3Z)bVG> z&+uq;D9Gvrkjo3B2fON^8HYQ)2+^Spm!wg~lec`1$Z-oZESgj5Hjk+PX6Ng4@FNqy z70Idu3eumE{37lzbQ+Mp4~_U8>GZ*cc)I;h z4F2i9949!fwv+4PKfC$d3xT`Z2jreX&-b-@dA2%eks@cez2~oU>>Z`)kM~szp`d7A zKX2z}obR-Cwp*0@mzXqUMKDcXu}WW>u)>)s5o)QJdfh#*j`0oZ98BM!tix92y9jnq z9xP0oMjN;lQ~V(Glei$Qp-P;n@JnlUQjH%}&4odqscP}rJET3w#{Su7n4n&#fL&^5w`*v zwVQM4>j+<`Wv7DK#}gP5R``a0aR_-n{mi#J`|S9u_Z%Ss0ShRhSHPq^5H&^DE=J}6 z3OmYfDV3fU!MQdr(nvC8OV|p#Z~E+Kh0!O`z&(mYbDJWVq-#|A*iM}3nq8HtO`hlV z70C+#?e7j437LfD?CI|}0yHuR(kay&?Qk!d%I`1CY0{#&F1cL7?f@FY!I>NwI4q02 zl8JwwL1@-*33KXgt#YWi=!GY}C4MZe82!!-lWo{ow&PY#i?|Ha)YN|FtVNL-V|Zhx z+?=MF3?)&M_JP`4;+9KEI%x@xsmNmxav6e3kYrNN_jLZ8!;~fK9x<+R>2M8^DAQ76 z=gn)zBU`p2+c4qCxtiaNgjA#fV;Xj{Q8+ZwU&0J>F7Fw4-q8awVV%S!zAXy07qR}x zo`>SVY^caCLuC(OSQ@QxiG~(8VjB#qjZAdQ>ya}IGSmqkx2ZV8GG;+dGZQ)02Vjb} zcUZNLET?R>?n$DeJl!j?_dxt>lF81{j}cBsUS~Hs?i_36c0%adVjA={vE{APazqH+ zHa17}N1%x@i-t%km!NcQIm3aRz%kl)$w~G4ErN)K!_;-$tM2#2UHhg0 z!$v24H!-&2kVgNg!uK-HCrRLcb`Ovhg<#Ym}v(UDaBG3>sAH zKjwp^)t$`l#OI8=gyxZeZ6SbtW@nt5vZ5n+_X~Xd2J2)Xc@+Cv#+}Rn@x-0zvx8{l zse$p+6`9fx_( zWm#c>1Zu4X`t;3u20c1>g-s2Vk_E{R)apvxE9y6MX-<#ZM2-EBp@vtM6Mi z;NRAkoBRAwT9rt;Y~-&s6RAua&lbT4p%lSea_^X58&La&& zC>`g2es!1g=#b9x%y}fGo@bX{nT}w0?xaKZ8Brokss9Klz+Q9y4O$2KyxRPEFBfWT?p!e70@R=YS~Bx1*&Cmocdb>Pz`};@0t^Jj6uP3 zLddsYvjV!!kF4gyJW3aScOy~3q&L0niOA?MyDhD%5af$XPVc8;nm9v#<*U8H-SH>d zOHXk0xG2mIDBr|D8VDJlbaPfL4z&wp@hr}R7p3fv*6G#LVNmT4t-<)onoTK)?O4HS zr@4#C>A!VG@kI>DfrDgRK|&!L`c`dwCJEkMX`gN+ZVG?jf~x8eepd>H?A9uo;1bm6 z7)&(0h^BZd^!%)!NB!BaM$mD)r<9x_6@(0#;ACxqH%k0 zRX)_Kocbh7Fq9tsp>TXz^l2ML>Bya)g|z~tvtBPcK6oZAC0Ps*VsX8fyzT#nl7E%rrd|>Cw2;jo1H0IZS7Y)1PqXZITS4`#tAPlWyuf^;+rpu3H2{GjtZA82sF29BCX1R}5^+HD}F@E_i zgbL*7oz>5q&r+c4!wIH@q>EgJYnD;rf?%Mbp&^i8pHuuI;VAfJZ8UWbE zgnqpyMaK5q$`Ap{VqbGz%`?@9*;>VIk1$Urnmp3h21l2vQIwJT z8Vf+j=x?CAr^|8Us>A9y@OySb_w+F8Xtlj=#p!n~&^@gHor?^4z`(k9BSUmQgn)l} zeK*Nw)JU z`*kW~Z8}&}NmN+Aj>$1ZayeQDlfg-YoGWcuVR>!YIor#mLda^@$~U{}RqYidL7*KV zFscrbFi&v_2_y%1?IVPWN;;C1Y^0=n^W^K)_Ar6Xw$)NcrWf7O1*y%WH$)?+D2{~| zUlrb17h2w<#^DD-PQqJpu}}<)!4GNg8X(N>IZ-@GE_5pGTxQSWSdAk=<}mg|m!8rA zBsj5by>fWd3K(DbmeSI*409byU@Dh@Mc;o6@?G6|N8ac*IG+#vSf4yuLJ}!!DRr7h zBKw;E{c1FWigFVe&Lz6xc(h zvJFcy#c2E^&mf6^Lc}3w>%s5)j^8J>C~1n&B4*k4D|bwnWxK*gmu=t)XLy{cQ(iEz zD>@(a0?2vFvwGgU&!rQRjtivMR|j&Y)6Yn--Eps8jwn~t(uxNTpzVV8-o8GkWosnY z4#h14b00wIz#^$+S01JzNu2`&Zy{%ewd%b)#i*hvnsXysOMqhpDWj4cX)gYyfl4~^ zcT{2vNDj*b$p0(%9-y!Eft0(ot;Uf-;|Tq~7Y@F%h`bTBg*(`TdF?M-#*Cc}^58Jl z-lhq~ARHZOYxNyRgouaVmlsZ38cWhd567yN5p$Q5C+ZQAA0488c`J}8&cCFCsCWM8 za9zwMomzDU;5Fbd+QKbevGF$?;Q$AxrDk`7%BtnrS4P9hYLpoZ3%eq1!en&q_q3mh zwU5f%5@94)CnSNfknRI#U^uwtTxp(N1hm^#fE`AbY4DhE49O8Ps09lr3!~wA4ZtWj zypjWyr&WVm8_>)7*LC5b4aEre-S~|zz`lbrbn>emHO&%uRS0|!MEjOLCatl|u z3N@K-J863m<;r&^3do}s$QP57Yy1d#HFtJWbIO&wf79-F2w$p{ZE(NrJv>^^g@&RN zNyjV1t5!Jq0)Qb7$0#1S+w&J9KYu??no6U?p_3Y=I1^B>t;8xIcb(UOgbhQf|M|(` zZZ`~rM3lF}sBAuvI6d%l6(EBGl&uso#+8qpfVqLNu33E%fTKlFp8D&PZ4sFT{(}Yh z?+?ncuse%kQRsgVH1=$vfX*b;SP4qAbRpuUs$*faEh3y$&6%tI8pfqXvfo)|1|rn2 zg}5P*feB6Fmj+G{(6*}?^;KBd@K|ntT+6hZd=Of zwCBZhc@P8s(g56$mFq2+OwQ@C`fDK@WjSBY=%_Hl-S;`<+BJ?b@ZBb1oz0~~uC4bw zF<3K|9c-8{rQfB+NY7OXepuBWi#w|KG6^;@EzMpf*os#1J4ItVr$ge4GHJW5y#~v* z4GWm$d0pYhBOW^9_;tv7aR%Ox9QLj4TCq}-YFIzzAE!N20!4|qK`l6W$SK?%pcRq> z2If$Mq%)C2C^jo-X=#0F0Hwp^cwf#Xm1q(!>o;GDK)Su`8{CESnMse%sp&P6AzNi7 zUrZDovF|YXajx9uvFVh8?$n<69n$S zdZyw^cYh0YyXYms;B3)J>DsZ;PP4>Y1@^mJoYF&Ysx;ym%4GPC+tYEqKUMgCRQLc@ zXIm#Ie%UtuLB*JNAXA;~cYx1#+Vs-U2Z|^pM>etZu^Dnw9EQ)23Qj@BY6qMQi@gKv zmd23{$OZt0b#TU*#BoQqx4(bAztR-%yaPrK2dtgf+&@V&Y{m+6g6^#iXA*k8P%foS zb3VPiwNbo`l2b_8VeN%rYuaIZlBQZF`qN|LBfXz7-8;wY-?|MNqL-|KPWnzZDob~& zO#0y}0XLk?%gE-;0E0T({l45kt{7|%7dhesq5*r$g&?Ti>F2a_p9g3;kp!?%mYO;# zZJasTA0J=IfucN=85Yu=fiX!rwxft~CRFmlF5q#^s?2K~j};)e{r8I$ZN{8zyJVas zgU_$3e);Z?{$h>5l`$uVy%inRrj_f1;5rqo8?B%CW30qzP!csGIt%1tyS`&~w`Q}W z3xD0BJz45fv0QIo>%2gOy}>D+*EC$vY0IV-kMXuj)|k^~hZ9@*0<j7dM1uI z;9?@5;>Rg+pc$lQn)2rXo3``g()9&o?L+VJHgq{yollP+_`yWkGVqU{E{%gnG2XI9 z4p|^uo^97`&N)dFIrzvO(uni5Z52j~V zDm$NUM^|k>LFUnG<=fKo2!zA(fXjtTJpk*6Nd_~iJ9qy{rq@A^6PylQa?hJ+PXumg)gJ?2Z7{(T<3ZE%=gG+$YwdPx59-{wjT3cgY^Ln ztGh#6^Qi)kVyWfnI^htpOlIp>Hv3#Q6zy8%C?ib70J)#oQfIuo8zz3-?dROGz~dz| z!-c*9q#5aeBU=DjGn2h1ySuw~fFHMnO8FC8q;mm0TxI`E4it``dVI3So3vDh`H^y8 zf2;q#OZ+&~Td$lps@&&uscI89&$TeW74X?{mHuki%h*p>g(bWSmCF)?ZZ1#%S5j<)aw+y35?Q5k4yW-KKO8h|Yc{-RFtd=f9_bPE+1I5aU@ylopaFti(nr z%58{(sr}%#=3VB11Db@S%uwS6N@ApdDT0>z&6}3di#G$PQ+vK^*iqi{n3#=Xdpq(2 zSjoSG&_%nof+$+0?UXPSnmgaTS4gG79coeEK-;xkyAB|8I8;x<2 z3{tLA+`1OjR`}hf$Q{AJY{P~4kYFAzJyCesrKKtNbhKIN7iqgAwh3B{lax_R5-SQG zw^%PJ0|(*tFBUgK1AS&#u$Xc!0>U$eb)^~dOI&;eE*iOB7I($*702g}oTXmQaB%Fon{d3atto6l9%_p?gpZz?iu5USoVSNK{+8ONr;fZ{IMJ&GS^ zez`pO0qq|>dGth%h3nfm@%|C>W|(y0n>T~xL?>Dsh(145$gTfbw2u=Y6SjpxOiX+w zDhG-VP;kTtBBA7k2vBcufUEvOUnU`fHh6-dqp5wPbCeeCSzcN>Hl5a1=i$F{g_UDO`yP8Q}`Eo+^at_E~#v^X0blN=wQOR6rP$- zLoHeS8^cgaLHu>8r0znqbBGFEOxgl^cunqyx2`V-m1--!FJ%NdjOJ4YG$r^e{UR$0 zJXt@R^`AXax{@k+C0qdAL-KHa=**SA8RzV@3c>IZ%o9QTUXrZ;Xgr-VEpLt{rX-mw z_IUiP>CTp>&yO&R`#;!X{LyaVXXym@^Le|buoPPpy<^xpiMgE5aH*U!QcW0XkSM;o zw2vxo97P6M*Nu6R_3ZhItOqn}FSH}qvkxfX9(9dK-6aD`UCS(RSo-6YJaE`AKYR8J z5?KOZny&-Jj;+jeMCvW5XZt`|9(vvtc)_hd?&74c+W`Y0%cxcZT0AdC%#Q`cmpc5VkoW!7ts^p2QJQ& zv!gtpi|8tJjhVOy7sDv!PUAriJ@~Rp>Y_k+x0DUr-?Hr$7a(uC -Q;|dAkeL6Y} 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%0Dnr64kqN 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�=H2qOqM@Vfpa4QdxoKtaib$xHHW(3{}@oa{E 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%0DP9Z|wQwXIdDD%H`byA6~~hI!bY* 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

    qanBK5C!?-!zFX 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

    0f!iQH!3-&>NR3NF#2oXhqY$z^I+w? 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:BNf-`d|Dc*I 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�lk+bHDddE4GoRarophKf;c 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

    2xXbke0}p4g&R=k59=8yE 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

    ^$w2 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 CONTROL(ADAPTER TRIMMING & (ADAPTER TRIMMING & MERGING)(COMPLEXITY (COMPLEXITY FILTERING)(HOST REMOVAL)(RUN MERGING)TAXONOMIC CLASSIFICATIONSUMMARY STATISTICSfastpfastpAdapterRemovalBBDukPRINSEQ++Short ReadsAll ReadsProfileMultiple databasesLog FilesLong ReadsBowtie2samtoolsstatssamtoolsstatscatminimap2FiltlongMultiQCKronaPorechopBrackenBrackenTaxpastaDIAMONDFastQCfalcoFastQCfalcoFastQCfalcoFastQCfalco(LENGTH (LENGTH FILTERING)tsvhtml(OPTIONAL STEP)html + d="m -519.98638,169.80106 2.80633,0.93544 -0.93543,-2.80634 z" + id="path1461-3-8-1" /> From 5feebf8d697265d4d9503c8852348509ec8c48e1 Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Fri, 3 Mar 2023 09:12:11 +0100 Subject: [PATCH 701/789] Fix linting issues --- assets/email_template.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/assets/email_template.html b/assets/email_template.html index f40addd..af9bb07 100644 --- a/assets/email_template.html +++ b/assets/email_template.html @@ -4,7 +4,7 @@ - + nf-core/taxprofiler Pipeline Report From 6d9cdd3c780bf5a7ae92a3a1483d5c4cf5ecaceb Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Fri, 3 Mar 2023 09:15:21 +0100 Subject: [PATCH 702/789] And the other file --- .github/PULL_REQUEST_TEMPLATE.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md index ae4285a..333c4f1 100644 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -15,8 +15,7 @@ Learn more about contributing: [CONTRIBUTING.md](https://github.com/nf-core/taxp - [ ] This comment contains a description of changes (with reason). - [ ] If you've fixed a bug or added code that should be tested, add tests! -- [ ] If you've added a new tool - have you followed the pipeline conventions in the [contribution docs](https://github.com/nf-core/taxprofiler/tree/master/.github/CONTRIBUTING.md) -- [ ] If necessary, also make a PR on the nf-core/taxprofiler _branch_ on the [nf-core/test-datasets](https://github.com/nf-core/test-datasets) repository. +- [ ] If you've added a new tool - have you followed the pipeline conventions in the [contribution docs](https://github.com/nf-core/taxprofiler/tree/master/.github/CONTRIBUTING.md)- [ ] If necessary, also make a PR on the nf-core/taxprofiler _branch_ on the [nf-core/test-datasets](https://github.com/nf-core/test-datasets) repository. - [ ] Make sure your code lints (`nf-core lint`). - [ ] Ensure the test suite passes (`nextflow run . -profile test,docker --outdir `). - [ ] Usage Documentation in `docs/usage.md` is updated. From c66c67524cfb5b11723ad8926edfa07a39bbcbac Mon Sep 17 00:00:00 2001 From: "James A. Fellows Yates" Date: Fri, 3 Mar 2023 13:33:41 +0100 Subject: [PATCH 703/789] Update nextflow.config Co-authored-by: Sofia Stamouli <91951607+sofstam@users.noreply.github.com> --- nextflow.config | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/nextflow.config b/nextflow.config index 827b70f..c4567a9 100644 --- a/nextflow.config +++ b/nextflow.config @@ -102,7 +102,7 @@ params { shortread_hostremoval_index = null longread_hostremoval_index = null save_hostremoval_index = false - save_hostremoval_bam = false + save_hostremoval_bam = false save_hostremoval_unmapped = false From f0f89eb08252a4b06979ac91162e15ea4abaf676 Mon Sep 17 00:00:00 2001 From: "James A. Fellows Yates" Date: Fri, 3 Mar 2023 14:58:21 +0100 Subject: [PATCH 704/789] Apply suggestions from code review Co-authored-by: Sofia Stamouli <91951607+sofstam@users.noreply.github.com> --- docs/output.md | 2 +- nextflow.config | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/output.md b/docs/output.md index 2c02879..0a2e2d0 100644 --- a/docs/output.md +++ b/docs/output.md @@ -21,7 +21,7 @@ The pipeline is built using [Nextflow](https://www.nextflow.io/) and processes d - [Bowtie2](#bowtie2) - Host removal for Illumina reads - [minimap2](#minimap2) - Host removal for Nanopore reads - [SAMtools stats](#samtools-stats) - Statistics from host removal -- [SAMtools bam2fq](#samtools-fastq) - Converts unmapped BAM file to fastq format (minimap2 only) +- [SAMtools bam2fq](#samtools-bam2fq) - Converts unmapped BAM file to fastq format (minimap2 only) - [Bracken](#bracken) - Taxonomic classifier using k-mers and abundance estimations - [Kraken2](#kraken2) - Taxonomic classifier using exact k-mer matches - [KrakenUniq](#krakenuniq) - Taxonomic classifier that combines the k-mer-based classification and the number of unique k-mers found in each species diff --git a/nextflow.config b/nextflow.config index c4567a9..e08a1dc 100644 --- a/nextflow.config +++ b/nextflow.config @@ -305,7 +305,7 @@ manifest { description = """Taxonomic classification and profiling of shotgun metagenomic data""" mainScript = 'main.nf' nextflowVersion = '!>=22.10.1' - version = '1.0.0' + version = '1.0.0' doi = '' } From a5138ed6e0250eeb91ece5b2fb03c4037240fb83 Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Mon, 6 Mar 2023 08:17:50 +0100 Subject: [PATCH 705/789] Fix ugly warn when KAIJU2TABLE not run --- conf/modules.config | 4 +-- subworkflows/local/profiling.nf | 26 +++++++++---------- .../local/standardisation_profiles.nf | 10 +++---- 3 files changed, 20 insertions(+), 20 deletions(-) diff --git a/conf/modules.config b/conf/modules.config index defef95..41b3717 100644 --- a/conf/modules.config +++ b/conf/modules.config @@ -486,7 +486,7 @@ process { ext.args = { "${meta.db_params}" } } - withName: '.*PROFILING:KAIJU_KAIJU2TABLE' { + withName: 'KAIJU_KAIJU2TABLE_SINGLE' { ext.prefix = params.perform_runmerging ? { "${meta.id}_${meta.db_name}.kaijutable" } : { "${meta.id}_${meta.run_accession}_${meta.db_name}.kaijutable" } publishDir = [ path: { "${params.outdir}/kaiju/${meta.db_name}/" }, @@ -495,7 +495,7 @@ process { ] } - withName: '.*STANDARDISATION_PROFILES:KAIJU_KAIJU2TABLE' { + withName: 'KAIJU_KAIJU2TABLE_COMBINED' { ext.prefix = { "kaiju_${meta.id}_combined_reports" } publishDir = [ path: { "${params.outdir}/kaiju/" }, diff --git a/subworkflows/local/profiling.nf b/subworkflows/local/profiling.nf index 28ca7e8..85885fc 100644 --- a/subworkflows/local/profiling.nf +++ b/subworkflows/local/profiling.nf @@ -2,19 +2,19 @@ // Run profiling // -include { MALT_RUN } from '../../modules/nf-core/malt/run/main' -include { MEGAN_RMA2INFO as MEGAN_RMA2INFO_TSV } from '../../modules/nf-core/megan/rma2info/main' -include { KRAKEN2_KRAKEN2 } from '../../modules/nf-core/kraken2/kraken2/main' -include { KRAKEN2_STANDARD_REPORT } from '../../modules/local/kraken2_standard_report' -include { BRACKEN_BRACKEN } from '../../modules/nf-core/bracken/bracken/main' -include { CENTRIFUGE_CENTRIFUGE } from '../../modules/nf-core/centrifuge/centrifuge/main' -include { CENTRIFUGE_KREPORT } from '../../modules/nf-core/centrifuge/kreport/main' -include { METAPHLAN3_METAPHLAN3 } from '../../modules/nf-core/metaphlan3/metaphlan3/main' -include { KAIJU_KAIJU } from '../../modules/nf-core/kaiju/kaiju/main' -include { KAIJU_KAIJU2TABLE } from '../../modules/nf-core/kaiju/kaiju2table/main' -include { DIAMOND_BLASTX } from '../../modules/nf-core/diamond/blastx/main' -include { MOTUS_PROFILE } from '../../modules/nf-core/motus/profile/main' -include { KRAKENUNIQ_PRELOADEDKRAKENUNIQ } from '../../modules/nf-core/krakenuniq/preloadedkrakenuniq/main' +include { MALT_RUN } from '../../modules/nf-core/malt/run/main' +include { MEGAN_RMA2INFO as MEGAN_RMA2INFO_TSV } from '../../modules/nf-core/megan/rma2info/main' +include { KRAKEN2_KRAKEN2 } from '../../modules/nf-core/kraken2/kraken2/main' +include { KRAKEN2_STANDARD_REPORT } from '../../modules/local/kraken2_standard_report' +include { BRACKEN_BRACKEN } from '../../modules/nf-core/bracken/bracken/main' +include { CENTRIFUGE_CENTRIFUGE } from '../../modules/nf-core/centrifuge/centrifuge/main' +include { CENTRIFUGE_KREPORT } from '../../modules/nf-core/centrifuge/kreport/main' +include { METAPHLAN3_METAPHLAN3 } from '../../modules/nf-core/metaphlan3/metaphlan3/main' +include { KAIJU_KAIJU } from '../../modules/nf-core/kaiju/kaiju/main' +include { KAIJU_KAIJU2TABLE as KAIJU_KAIJU2TABLE_SINGLE } from '../../modules/nf-core/kaiju/kaiju2table/main' +include { DIAMOND_BLASTX } from '../../modules/nf-core/diamond/blastx/main' +include { MOTUS_PROFILE } from '../../modules/nf-core/motus/profile/main' +include { KRAKENUNIQ_PRELOADEDKRAKENUNIQ } from '../../modules/nf-core/krakenuniq/preloadedkrakenuniq/main' workflow PROFILING { take: diff --git a/subworkflows/local/standardisation_profiles.nf b/subworkflows/local/standardisation_profiles.nf index ce1ef23..26355b7 100644 --- a/subworkflows/local/standardisation_profiles.nf +++ b/subworkflows/local/standardisation_profiles.nf @@ -3,7 +3,7 @@ // include { BRACKEN_COMBINEBRACKENOUTPUTS } from '../../modules/nf-core/bracken/combinebrackenoutputs/main' -include { KAIJU_KAIJU2TABLE } from '../../modules/nf-core/kaiju/kaiju2table/main' +include { KAIJU_KAIJU2TABLE as KAIJU_KAIJU2TABLE_COMBINED } from '../../modules/nf-core/kaiju/kaiju2table/main' include { KRAKENTOOLS_COMBINEKREPORTS as KRAKENTOOLS_COMBINEKREPORTS_KRAKEN } from '../../modules/nf-core/krakentools/combinekreports/main' include { KRAKENTOOLS_COMBINEKREPORTS as KRAKENTOOLS_COMBINEKREPORTS_CENTRIFUGE } from '../../modules/nf-core/krakentools/combinekreports/main' include { METAPHLAN3_MERGEMETAPHLANTABLES } from '../../modules/nf-core/metaphlan3/mergemetaphlantables/main' @@ -103,9 +103,9 @@ workflow STANDARDISATION_PROFILES { [[id:it[0]], it[1]] } - KAIJU_KAIJU2TABLE ( ch_profiles_for_kaiju, ch_input_databases.kaiju.map{it[1]}, params.kaiju_taxon_rank) - ch_multiqc_files = ch_multiqc_files.mix( KAIJU_KAIJU2TABLE.out.summary ) - ch_versions = ch_versions.mix( KAIJU_KAIJU2TABLE.out.versions ) + KAIJU_KAIJU2TABLE_COMBINED ( ch_profiles_for_kaiju, ch_input_databases.kaiju.map{it[1]}, params.kaiju_taxon_rank) + ch_multiqc_files = ch_multiqc_files.mix( KAIJU_KAIJU2TABLE_COMBINED.out.summary ) + ch_versions = ch_versions.mix( KAIJU_KAIJU2TABLE_COMBINED.out.versions ) // Kraken2 @@ -151,7 +151,7 @@ workflow STANDARDISATION_PROFILES { MOTUS_MERGE ( ch_profiles_for_motus, ch_input_databases.motus.map{it[1]}, motu_version ) ch_versions = ch_versions.mix( MOTUS_MERGE.out.versions ) - + emit: taxpasta = TAXPASTA_MERGE.out.merged_profiles versions = ch_versions From 1f1c63bb510e9e21a5c862481f8bc2d763cb2ce1 Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Mon, 6 Mar 2023 09:47:26 +0100 Subject: [PATCH 706/789] Start fixing FastQC/Falco display in MultiQC --- assets/multiqc_config.yml | 24 ++++++++++++++++++++---- 1 file changed, 20 insertions(+), 4 deletions(-) diff --git a/assets/multiqc_config.yml b/assets/multiqc_config.yml index 71b56fd..e6f1a85 100644 --- a/assets/multiqc_config.yml +++ b/assets/multiqc_config.yml @@ -39,6 +39,10 @@ sp: diamond: contents: "diamond v" num_lines: 10 + fastqc/data: + fn_re: ".*[fastqc|falco]_data.txt" + fastqc/zip: + fn: "*_fastqc.zip" #extra_fn_clean_exts: # - '_fastp' @@ -49,11 +53,17 @@ top_modules: - "fastqc": name: "FastQC (pre-Trimming)" path_filters: - - "*raw_*fastqc.zip" + - "*raw*" + path_filters_exclude: + - "*falco*" + - "*processed*" - "fastqc": name: "Falco (pre-Trimming)" path_filters: - - "*_raw_falco_*_report.html" + - "*raw*" + - "*[falco]*" + path_filters_exclude: + - "*processed*" - "fastp" - "adapterRemoval" - "porechop": @@ -61,11 +71,17 @@ top_modules: - "fastqc": name: "FastQC (post-Trimming)" path_filters: - - "*_processed_*fastqc.zip" + - "*processed*" + path_filters_exclude: + - "*falco*" + - "*raw*" - "fastqc": name: "Falco (post-Trimming)" path_filters: - - "*_processed_falco_*_report.html" + - "*processed*" + - "*falco*" + path_filters_exclude: + - "*raw*" - "bbduk" - "prinseqplusplus" - "filtlong" From 9ed384e0f2805ab9f1f4312be7d63ac25a2b9732 Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Mon, 6 Mar 2023 10:37:09 +0100 Subject: [PATCH 707/789] Collapse FALCO and FASTQC sections, move FALCO/FASTQC sections together --- assets/multiqc_config.yml | 103 ++++++++++---------------------------- 1 file changed, 27 insertions(+), 76 deletions(-) diff --git a/assets/multiqc_config.yml b/assets/multiqc_config.yml index e6f1a85..50c18a1 100644 --- a/assets/multiqc_config.yml +++ b/assets/multiqc_config.yml @@ -51,37 +51,23 @@ sp: top_modules: - "fastqc": - name: "FastQC (pre-Trimming)" + name: "FastQC / Falco (pre-Trimming)" path_filters: - "*raw*" path_filters_exclude: - - "*falco*" - "*processed*" + extra: "If used in this run, Falco is a drop-in replacement for FastQC producing the same output, written by Guilherme de Sena Brandine and Andrew D. Smith." - "fastqc": - name: "Falco (pre-Trimming)" + name: "FastQC / Falco (post-Trimming)" path_filters: - - "*raw*" - - "*[falco]*" - path_filters_exclude: - "*processed*" + path_filters_exclude: + - "*raw*" + extra: "If used in this run, Falco is a drop-in replacement for FastQC producing the same output, written by Guilherme de Sena Brandine and Andrew D. Smith." - "fastp" - "adapterRemoval" - "porechop": extra: "ℹ️: if you get the error message 'Error - was not able to plot data.' this means that porechop did not detect any adapters and therefore no statistics generated." - - "fastqc": - name: "FastQC (post-Trimming)" - path_filters: - - "*processed*" - path_filters_exclude: - - "*falco*" - - "*raw*" - - "fastqc": - name: "Falco (post-Trimming)" - path_filters: - - "*processed*" - - "*falco*" - path_filters_exclude: - - "*raw*" - "bbduk" - "prinseqplusplus" - "filtlong" @@ -121,19 +107,20 @@ top_modules: #It is not possible to set placement for custom kraken and centrifuge columns. table_columns_placement: - FastQC (pre-Trimming): + FastQC / Falco (pre-Trimming): total_sequences: 100 avg_sequence_length: 110 median_sequence_length: 120 percent_duplicates: 130 percent_gc: 140 percent_fails: 150 - Falco (pre-Trimming): + FastQC / Falco (post-Trimming): total_sequences: 200 avg_sequence_length: 210 - percent_duplicates: 220 - percent_gc: 230 - percent_fails: 240 + median_sequence_length: 220 + percent_duplicates: 230 + percent_gc: 240 + percent_fails: 250 fastp: pct_adapter: 300 pct_surviving: 310 @@ -157,19 +144,6 @@ table_columns_placement: Middle Split Percent: 460 Filtlong: Target bases: 500 - FastQC (post-Trimming): - total_sequences: 600 - avg_sequence_length: 610 - median_sequence_length: 620 - percent_duplicates: 630 - percent_gc: 640 - percent_fails: 650 - Falco (post-Trimming): - total_sequences: 700 - avg_sequence_length: 710 - percent_duplicates: 720 - percent_gc: 730 - percent_fails: 740 BBDuk: Input reads: 800 Total Removed bases percent: 810 @@ -221,25 +195,18 @@ table_columns_placement: "Number of ext-mOTUs": 1880 table_columns_visible: - FastQC (pre-Trimming): + FastQC / Falco (pre-Trimming): total_sequences: True avg_sequence_length: True percent_duplicates: True percent_gc: True percent_fails: False - Falco (pre-Trimming): + FastQC / Falco (post-Trimming): total_sequences: True avg_sequence_length: True - percent_duplicates: True - percent_gc: True + percent_duplicates: False + percent_gc: False percent_fails: False - fastp: - pct_adapter: True - pct_surviving: True - pct_duplication: False - after_filtering_gc_content: False - after_filtering_q30_rate: False - after_filtering_q30_bases: False porechop: Input reads: False Start Trimmed: @@ -248,6 +215,13 @@ table_columns_visible: End Trimmed Percent: True Middle Split: False Middle Split Percent: True + fastp: + pct_adapter: True + pct_surviving: True + pct_duplication: False + after_filtering_gc_content: False + after_filtering_q30_rate: False + after_filtering_q30_bases: False Filtlong: Target bases: True Adapter Removal: @@ -255,18 +229,6 @@ table_columns_visible: percent_aligned: True percent_collapsed: True percent_discarded: False - FastQC (post-Trimming): - total_sequences: True - avg_sequence_length: True - percent_duplicates: False - percent_gc: False - percent_fails: False - Falco (post-Trimming): - total_sequences: True - avg_sequence_length: True - percent_duplicates: False - percent_gc: False - percent_fails: False BBDuk: Input reads: False Total Removed bases Percent: False @@ -294,25 +256,13 @@ table_columns_visible: motus: False table_columns_name: - FastQC (pre-Trimming): + FastQC / Falco (pre-Trimming): total_sequences: "Nr. Input Reads" avg_sequence_length: "Length Input Reads" percent_gc: "% GC Input Reads" percent_duplicates: "% Dups Input Reads" percent_fails: "% Failed Input Reads" - Falco (pre-Trimming): - total_sequences: "Nr. Input Reads" - avg_sequence_length: "Length Input Reads" - percent_gc: "% GC Input Reads" - percent_duplicates: "% Dups Input Reads" - percent_fails: "% Failed Input Reads" - FastQC (post-Trimming): - total_sequences: "Nr. Processed Reads" - avg_sequence_length: "Length Processed Reads" - percent_gc: "% GC Processed Reads" - percent_duplicates: "% Dups Processed Reads" - percent_fails: "% Failed Processed Reads" - Falco (post-Trimming): + FastQC / Falco (post-Trimming): total_sequences: "Nr. Processed Reads" avg_sequence_length: "Length Processed Reads" percent_gc: "% GC Processed Reads" @@ -330,7 +280,8 @@ extra_fn_clean_exts: - ".bbduk" - ".unmapped" - "_filtered" - - "_processed" + - type: remove + pattern: "_falco" section_comments: general_stats: "By default, all read count columns are displayed as millions (M) of reads." From 4938549d65d53c79d53cd1d3908294102e4968d9 Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Mon, 6 Mar 2023 10:41:32 +0100 Subject: [PATCH 708/789] Clarify some documentation --- docs/output.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/docs/output.md b/docs/output.md index 0a2e2d0..0620292 100644 --- a/docs/output.md +++ b/docs/output.md @@ -35,19 +35,21 @@ The pipeline is built using [Nextflow](https://www.nextflow.io/) and processes d - [MultiQC](#multiqc) - Aggregate report describing results and QC from the whole pipeline - [Pipeline information](#pipeline-information) - Report metrics generated during the workflow execution -### FastQC or falco +### FastQC or Falco

    Output files - `fastqc/` - - `*_fastqc.html`: FastQC report containing quality metrics. - - `*_fastqc.zip`: Zip archive containing the FastQC report, tab-delimited data file and plot images. + - `*_fastqc.html`: FastQC or Falco report containing quality metrics. + - `*_fastqc.zip`: Zip archive containing the FastQC report, tab-delimited data file and plot images (FastQC only).
    [FastQC](http://www.bioinformatics.babraham.ac.uk/projects/fastqc/) gives general quality metrics about your sequenced reads. It provides information about the quality score distribution across your reads, per base sequence content (%A/T/G/C), adapter contamination and overrepresented sequences. For further reading and documentation see the [FastQC help pages](http://www.bioinformatics.babraham.ac.uk/projects/fastqc/Help/). +If preprocessing is turned on, nf-core/taxprofiler runs FastQC/Falco twice -once before and once after adapter removal/read merging, to allow evaluation of the performance of these preprocessing steps. Note in the General Stats table, the columns of these two instances of FastQC/Falco are placed next to each other to make it easier to evaluate. However, the columns of the actual preprocessing steps (e.g., fastp or AdapterRemoval) will be displayed _after_ the two FastQC/Falco columns, even if they were run 'between' the two FastQC/Falco jobs in the pipeline itself. + > ℹ️ Falco produces identical output to FastQC but in the `falco/` directory. ![MultiQC - FastQC sequence counts plot](images/mqc_fastqc_counts.png) @@ -56,8 +58,6 @@ The pipeline is built using [Nextflow](https://www.nextflow.io/) and processes d ![MultiQC - FastQC adapter content plot](images/mqc_fastqc_adapter.png) -> **NB:** The FastQC plots displayed in the MultiQC report shows _untrimmed_ reads. They may contain adapter sequence and potentially regions with low quality. - ### fastp [fastp](https://github.com/OpenGene/fastp) is a FASTQ pre-processing tool for quality control, trimmming of adapters, quality filtering and other features. From a2a1b9cbf01a695d912583ea4dbcb71c7a7fc33f Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Mon, 6 Mar 2023 10:42:30 +0100 Subject: [PATCH 709/789] Phrasing tweak --- docs/output.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/output.md b/docs/output.md index 0620292..357194c 100644 --- a/docs/output.md +++ b/docs/output.md @@ -48,7 +48,7 @@ The pipeline is built using [Nextflow](https://www.nextflow.io/) and processes d [FastQC](http://www.bioinformatics.babraham.ac.uk/projects/fastqc/) gives general quality metrics about your sequenced reads. It provides information about the quality score distribution across your reads, per base sequence content (%A/T/G/C), adapter contamination and overrepresented sequences. For further reading and documentation see the [FastQC help pages](http://www.bioinformatics.babraham.ac.uk/projects/fastqc/Help/). -If preprocessing is turned on, nf-core/taxprofiler runs FastQC/Falco twice -once before and once after adapter removal/read merging, to allow evaluation of the performance of these preprocessing steps. Note in the General Stats table, the columns of these two instances of FastQC/Falco are placed next to each other to make it easier to evaluate. However, the columns of the actual preprocessing steps (e.g., fastp or AdapterRemoval) will be displayed _after_ the two FastQC/Falco columns, even if they were run 'between' the two FastQC/Falco jobs in the pipeline itself. +If preprocessing is turned on, nf-core/taxprofiler runs FastQC/Falco twice -once before and once after adapter removal/read merging, to allow evaluation of the performance of these preprocessing steps. Note in the General Stats table, the columns of these two instances of FastQC/Falco are placed next to each other to make it easier to evaluate. However, the columns of the actual preprocessing steps (i.e, fastp, AdapterRemoval, and Porechop) will be displayed _after_ the two FastQC/Falco columns, even if they were run 'between' the two FastQC/Falco jobs in the pipeline itself. > ℹ️ Falco produces identical output to FastQC but in the `falco/` directory. From 735212c9eeea3fb94b2d526e6335bf7b081ffdb9 Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Mon, 6 Mar 2023 10:47:36 +0100 Subject: [PATCH 710/789] Fix the non-updated KAIJU2TABLE name --- subworkflows/local/profiling.nf | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/subworkflows/local/profiling.nf b/subworkflows/local/profiling.nf index 85885fc..858d3aa 100644 --- a/subworkflows/local/profiling.nf +++ b/subworkflows/local/profiling.nf @@ -272,10 +272,10 @@ workflow PROFILING { ch_versions = ch_versions.mix( KAIJU_KAIJU.out.versions.first() ) ch_raw_classifications = ch_raw_classifications.mix( KAIJU_KAIJU.out.results ) - KAIJU_KAIJU2TABLE ( KAIJU_KAIJU.out.results, ch_input_for_kaiju.db, params.kaiju_taxon_rank) - ch_versions = ch_versions.mix( KAIJU_KAIJU2TABLE.out.versions ) - ch_multiqc_files = ch_multiqc_files.mix( KAIJU_KAIJU2TABLE.out.summary ) - ch_raw_profiles = ch_raw_profiles.mix( KAIJU_KAIJU2TABLE.out.summary ) + KAIJU_KAIJU2TABLE_SINGLE ( KAIJU_KAIJU_SINGLE.out.results, ch_input_for_kaiju.db, params.kaiju_taxon_rank) + ch_versions = ch_versions.mix( KAIJU_KAIJU2TABLE_SINGLE.out.versions ) + ch_multiqc_files = ch_multiqc_files.mix( KAIJU_KAIJU2TABLE_SINGLE.out.summary ) + ch_raw_profiles = ch_raw_profiles.mix( KAIJU_KAIJU2TABLE_SINGLE.out.summary ) } if ( params.run_diamond ) { From 6e64c2b5a9cdabf47c52f275443791cb47dc6b6f Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Mon, 6 Mar 2023 10:50:36 +0100 Subject: [PATCH 711/789] Fix copy paste error --- subworkflows/local/profiling.nf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/subworkflows/local/profiling.nf b/subworkflows/local/profiling.nf index 858d3aa..0f9951e 100644 --- a/subworkflows/local/profiling.nf +++ b/subworkflows/local/profiling.nf @@ -272,7 +272,7 @@ workflow PROFILING { ch_versions = ch_versions.mix( KAIJU_KAIJU.out.versions.first() ) ch_raw_classifications = ch_raw_classifications.mix( KAIJU_KAIJU.out.results ) - KAIJU_KAIJU2TABLE_SINGLE ( KAIJU_KAIJU_SINGLE.out.results, ch_input_for_kaiju.db, params.kaiju_taxon_rank) + KAIJU_KAIJU2TABLE_SINGLE ( KAIJU_KAIJU.out.results, ch_input_for_kaiju.db, params.kaiju_taxon_rank) ch_versions = ch_versions.mix( KAIJU_KAIJU2TABLE_SINGLE.out.versions ) ch_multiqc_files = ch_multiqc_files.mix( KAIJU_KAIJU2TABLE_SINGLE.out.summary ) ch_raw_profiles = ch_raw_profiles.mix( KAIJU_KAIJU2TABLE_SINGLE.out.summary ) From 2d9dede6d41cc8d96f5f610ec8528c2249f30e56 Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Mon, 6 Mar 2023 12:59:08 +0100 Subject: [PATCH 712/789] Improve python regex --- assets/multiqc_config.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/assets/multiqc_config.yml b/assets/multiqc_config.yml index 50c18a1..2e88ebd 100644 --- a/assets/multiqc_config.yml +++ b/assets/multiqc_config.yml @@ -40,7 +40,7 @@ sp: contents: "diamond v" num_lines: 10 fastqc/data: - fn_re: ".*[fastqc|falco]_data.txt" + fn_re: ".*(fastqc|falco)_data.txt$" fastqc/zip: fn: "*_fastqc.zip" From b5a2983c5f6fa148f4ceb9824b77f05d5bfea9a4 Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Tue, 7 Mar 2023 11:06:35 +0100 Subject: [PATCH 713/789] Make modules entries consistent --- conf/modules.config | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/conf/modules.config b/conf/modules.config index 41b3717..e74e1a9 100644 --- a/conf/modules.config +++ b/conf/modules.config @@ -196,8 +196,8 @@ process { publishDir = [ path: { "${params.outdir}/bowtie2/build" }, mode: params.publish_dir_mode, - enabled: params.save_hostremoval_index, - pattern: 'bowtie2' + pattern: 'bowtie2', + enabled: params.save_hostremoval_index ] } @@ -213,14 +213,14 @@ process { [ path: { "${params.outdir}/bowtie2/align" }, mode: params.publish_dir_mode, - enabled: params.save_hostremoval_bam, - pattern: '*.bam' + pattern: '*.bam', + enabled: params.save_hostremoval_bam ], [ path: { "${params.outdir}/bowtie2/align" }, mode: params.publish_dir_mode, - enabled: params.save_hostremoval_unmapped, - pattern: '*.fastq.gz' + pattern: '*.fastq.gz', + enabled: params.save_hostremoval_unmapped ] ] } @@ -230,8 +230,8 @@ process { publishDir = [ path: { "${params.outdir}/minimap2/index" }, mode: params.publish_dir_mode, - enabled: params.save_hostremoval_index, - pattern: '*.mmi' + pattern: '*.mmi', + enabled: params.save_hostremoval_index ] } @@ -240,8 +240,8 @@ process { publishDir = [ path: { "${params.outdir}/minimap2/align" }, mode: params.publish_dir_mode, - enabled: params.save_hostremoval_bam, - pattern: '*.bam' + pattern: '*.bam', + enabled: params.save_hostremoval_bam ] } @@ -255,8 +255,8 @@ process { publishDir = [ path: { "${params.outdir}/samtools/bam2fq" }, mode: params.publish_dir_mode, - enabled: params.save_hostremoval_unmapped, - pattern: '*.fq.gz' + pattern: '*.fq.gz', + enabled: params.save_hostremoval_unmapped ] } @@ -446,13 +446,13 @@ process { } withName: CENTRIFUGE_CENTRIFUGE { + ext.args = { "${meta.db_params}" } + ext.prefix = params.perform_runmerging ? { "${meta.id}_${meta.db_name}.centrifuge" } : { "${meta.id}_${meta.run_accession}_${meta.db_name}.centrifuge" } publishDir = [ path: { "${params.outdir}/centrifuge/${meta.db_name}/" }, mode: params.publish_dir_mode, pattern: '*.{txt,sam,gz}' ] - ext.args = { "${meta.db_params}" } - ext.prefix = params.perform_runmerging ? { "${meta.id}_${meta.db_name}.centrifuge" } : { "${meta.id}_${meta.run_accession}_${meta.db_name}.centrifuge" } } withName: CENTRIFUGE_KREPORT { @@ -477,13 +477,13 @@ process { } withName: KAIJU_KAIJU { + ext.args = { "${meta.db_params}" } ext.prefix = params.perform_runmerging ? { "${meta.id}_${meta.db_name}.kaiju" } : { "${meta.id}_${meta.run_accession}_${meta.db_name}.kaiju" } publishDir = [ path: { "${params.outdir}/kaiju/${meta.db_name}/" }, mode: params.publish_dir_mode, pattern: '*.tsv' ] - ext.args = { "${meta.db_params}" } } withName: 'KAIJU_KAIJU2TABLE_SINGLE' { From 8ca9fad3b1a6387e921852a5358fdef9133aeba6 Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Tue, 7 Mar 2023 11:09:25 +0100 Subject: [PATCH 714/789] move errorStrategy to config --- conf/base.config | 13 +++++++++++++ conf/modules.config | 3 --- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/conf/base.config b/conf/base.config index 2f63669..7c454dc 100644 --- a/conf/base.config +++ b/conf/base.config @@ -60,6 +60,19 @@ process { withName:CUSTOM_DUMPSOFTWAREVERSIONS { cache = false } + + withName: BRACKEN_BRACKEN { + errorStrategy = 'ignore' + } + + withName: CENTRIFUGE_KREPORT { + errorStrategy = {task.exitStatus == 255 ? 'ignore' : 'retry'} + } + + withName: KRAKENTOOLS_COMBINEKREPORTS_CENTRIFUGE { + errorStrategy = { task.exitStatus in [255,1] ? 'ignore' : 'retry' } + } + withName: MEGAN_RMA2INFO_TSV { cpus = { check_max( 1 , 'cpus' ) } memory = { check_max( 6.GB * task.attempt, 'memory' ) } diff --git a/conf/modules.config b/conf/modules.config index e74e1a9..ee1a3d2 100644 --- a/conf/modules.config +++ b/conf/modules.config @@ -354,7 +354,6 @@ process { } withName: BRACKEN_BRACKEN { - errorStrategy = 'ignore' ext.args = { "${meta.db_params}" } ext.prefix = params.perform_runmerging ? { "${meta.id}_${meta.db_name}.bracken" } : { "${meta.id}_${meta.run_accession}_${meta.db_name}.bracken" } publishDir = [ @@ -456,7 +455,6 @@ process { } withName: CENTRIFUGE_KREPORT { - errorStrategy = {task.exitStatus == 255 ? 'ignore' : 'retry'} ext.args = { "${meta.db_params}" } ext.prefix = params.perform_runmerging ? { "${meta.id}_${meta.db_name}.centrifuge" } : { "${meta.id}_${meta.run_accession}_${meta.db_name}.centrifuge" } publishDir = [ @@ -467,7 +465,6 @@ process { } withName: KRAKENTOOLS_COMBINEKREPORTS_CENTRIFUGE { - errorStrategy = { task.exitStatus in [255,1] ? 'ignore' : 'retry' } ext.prefix = { "centrifuge_${meta.id}_combined_reports" } publishDir = [ path: { "${params.outdir}/centrifuge/" }, From e92196cd12fc693dd9c205b8a417cd63582f61f7 Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Tue, 7 Mar 2023 11:10:10 +0100 Subject: [PATCH 715/789] Remove left over comment --- assets/multiqc_config.yml | 5 ----- 1 file changed, 5 deletions(-) diff --git a/assets/multiqc_config.yml b/assets/multiqc_config.yml index 2e88ebd..f13d775 100644 --- a/assets/multiqc_config.yml +++ b/assets/multiqc_config.yml @@ -44,11 +44,6 @@ sp: fastqc/zip: fn: "*_fastqc.zip" -#extra_fn_clean_exts: -# - '_fastp' -# - '.pe.settings' -# - '.se.settings' - top_modules: - "fastqc": name: "FastQC / Falco (pre-Trimming)" From 91a7a03f4836fab8ef303a19784442997cae34ff Mon Sep 17 00:00:00 2001 From: "James A. Fellows Yates" Date: Tue, 7 Mar 2023 11:27:19 +0100 Subject: [PATCH 716/789] Apply suggestions from code review Co-authored-by: FriederikeHanssen --- docs/usage.md | 2 +- lib/WorkflowTaxprofiler.groovy | 5 ----- 2 files changed, 1 insertion(+), 6 deletions(-) diff --git a/docs/usage.md b/docs/usage.md index 3a45752..10c5ce6 100644 --- a/docs/usage.md +++ b/docs/usage.md @@ -17,7 +17,7 @@ Both contain metadata and paths to the data of your input samples and databases. When running nf-core/taxprofiler, every step and tool is 'opt in'. To run a given classifier or profiler you must make sure to supply both a database in your `.csv` and supply `--run_` flag to your command. Omitting either will result in the profiling tool not executing. -nf-core/profiler also includes optional pre-processing (adapter clipping, merge running etc.) or post-processing (visualisation) steps. These are also opt in with a `--perform_` flag. In some cases, the pre- and post-processing steps may also require additional files. Please check the parameters tab of this documentation for more information. +nf-core/taxprofiler also includes optional pre-processing (adapter clipping, merge running etc.) or post-processing (visualisation) steps. These are also opt in with a `--perform_` flag. In some cases, the pre- and post-processing steps may also require additional files. Please check the parameters tab of this documentation for more information. Please see the rest of this page for information about how to prepare input samplesheets and databases and how to run Nextflow pipelines. See the [parameters](https://nf-co.re/taxprofiler/parameters) documentation for more information about specific options the pipeline also offers. diff --git a/lib/WorkflowTaxprofiler.groovy b/lib/WorkflowTaxprofiler.groovy index 7bf44c9..10504bf 100755 --- a/lib/WorkflowTaxprofiler.groovy +++ b/lib/WorkflowTaxprofiler.groovy @@ -12,11 +12,6 @@ class WorkflowTaxprofiler { public static void initialise(params, log) { genomeExistsError(params, log) - // TODO update as necessary - //if (!params.fasta) { - // log.error "Genome fasta file not specified with e.g. '--fasta genome.fa' or via a detectable config file." - // System.exit(1) - //} } // From 5c8e2b492cb606d009c79a564b41bfb385f3cd5b Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Tue, 7 Mar 2023 11:41:57 +0100 Subject: [PATCH 717/789] Syncronise local modules with other generic container modules --- modules/local/kraken2_standard_report.nf | 6 +++--- modules/local/krona_cleanup.nf | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/modules/local/kraken2_standard_report.nf b/modules/local/kraken2_standard_report.nf index 4169c3a..fcd2c32 100644 --- a/modules/local/kraken2_standard_report.nf +++ b/modules/local/kraken2_standard_report.nf @@ -2,10 +2,10 @@ process KRAKEN2_STANDARD_REPORT { tag "$meta.id" label 'process_single' - conda "conda-forge::sed=4.8" + conda "conda-forge::sed=4.7" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://containers.biocontainers.pro/s3/SingImgsRepo/biocontainers/v1.2.0_cv2/biocontainers_v1.2.0_cv2.img' : - 'biocontainers/biocontainers:v1.2.0_cv2' }" + 'https://depot.galaxyproject.org/singularity/ubuntu:20.04' : + 'ubuntu:20.04' }" input: tuple val(meta), path(report) diff --git a/modules/local/krona_cleanup.nf b/modules/local/krona_cleanup.nf index f13dcc8..082c22b 100644 --- a/modules/local/krona_cleanup.nf +++ b/modules/local/krona_cleanup.nf @@ -4,8 +4,8 @@ process KRONA_CLEANUP { conda "conda-forge::sed=4.7" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://containers.biocontainers.pro/s3/SingImgsRepo/biocontainers/v1.2.0_cv1/biocontainers_v1.2.0_cv1.img' : - 'biocontainers/biocontainers:v1.2.0_cv1' }" + 'https://depot.galaxyproject.org/singularity/ubuntu:20.04' : + 'ubuntu:20.04' }" input: tuple val(meta), path(krona, stageAs: 'uncleaned.krona.txt') From 98bc6910d51b161696de404e1b3667dec6e8c3d8 Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Tue, 7 Mar 2023 11:47:54 +0100 Subject: [PATCH 718/789] Update authors and remove left over comment --- nextflow.config | 2 +- subworkflows/local/db_check.nf | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/nextflow.config b/nextflow.config index e08a1dc..80038ea 100644 --- a/nextflow.config +++ b/nextflow.config @@ -300,7 +300,7 @@ dag { manifest { name = 'nf-core/taxprofiler' - author = """nf-core community""" + author = """James A. Fellows Yates, Sofia Stamouli, Moritz E. Beber, Lauri Mesilaakso, Thomas A. Christensen II, Jianhong Ou, Mahwash Jamy, Maxime Borry, Rafal Stepien, Tanja Normark""" homePage = 'https://github.com/nf-core/taxprofiler' description = """Taxonomic classification and profiling of shotgun metagenomic data""" mainScript = 'main.nf' diff --git a/subworkflows/local/db_check.nf b/subworkflows/local/db_check.nf index 35240ed..21ed21d 100644 --- a/subworkflows/local/db_check.nf +++ b/subworkflows/local/db_check.nf @@ -63,8 +63,8 @@ def validate_db_rows(LinkedHashMap row){ def expected_headers = ['tool', 'db_name', 'db_params', 'db_path'] if ( !row.keySet().containsAll(expected_headers) ) exit 1, "[nf-core/taxprofiler] ERROR: Invalid database input sheet - malformed column names. Please check input TSV. Column names should be: ${expected_keys.join(", ")}" - // valid tools specified// TIFNISIH LIST - def expected_tools = [ "bracken", "centrifuge", "diamond", "kaiju", "kraken2", "krakenuniq", "malt", "metaphlan3", "motus" ] + // valid tools specified + def expected_tools = [ "bracken", "centrifuge", "diamond", "kaiju", "kraken2", "krakenuniq", "malt", "metaphlan3", "motus" ] if ( !expected_tools.contains(row.tool) ) exit 1, "[nf-core/taxprofiler] ERROR: Invalid tool name. Please see documentation for all supported profilers. Error in: ${row}" // detect quotes in params From 54e885723340b67bd9f366c047599c5f88034eb3 Mon Sep 17 00:00:00 2001 From: "James A. Fellows Yates" Date: Tue, 7 Mar 2023 13:06:32 +0100 Subject: [PATCH 719/789] Reduce number of tests to check just each tool option is tested --- .github/workflows/ci.yml | 7 ------- 1 file changed, 7 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index ea98e78..0af37b5 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -32,16 +32,9 @@ jobs: - "--perform_longread_qc false" - "--perform_shortread_qc false" - "--shortread_qc_tool fastp" - - "--shortread_qc_tool fastp --shortread_qc_mergepairs --shortread_qc_includeunmerged" - - "--shortread_qc_tool fastp --shortread_qc_mergepairs" - "--shortread_qc_tool adapterremoval" - - "--shortread_qc_tool adapterremoval --shortread_qc_mergepairs --shortread_qc_includeunmerged" - - "--shortread_qc_tool adapterremoval --shortread_qc_mergepairs" - "--shortread_complexityfilter_tool bbduk" - "--shortread_complexityfilter_tool prinseqplusplus" - - "--perform_runmerging" - - "--perform_runmerging --shortread_qc_mergepairs" - - "--shortread_complexityfilter false --perform_shortread_hostremoval" steps: - name: Check out pipeline code From 6dbeb5913a7947b870a953728152f2c16f313715 Mon Sep 17 00:00:00 2001 From: "James A. Fellows Yates" Date: Tue, 7 Mar 2023 13:18:58 +0100 Subject: [PATCH 720/789] Remove left over skips --- .github/workflows/ci.yml | 2 -- 1 file changed, 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 0af37b5..8959844 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -29,8 +29,6 @@ jobs: - "latest-everything" parameters: - "--preprocessing_qc_tool falco" - - "--perform_longread_qc false" - - "--perform_shortread_qc false" - "--shortread_qc_tool fastp" - "--shortread_qc_tool adapterremoval" - "--shortread_complexityfilter_tool bbduk" From f3ac1d2a217f1278eb3df60b6ff3a2e95a67520a Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Tue, 7 Mar 2023 14:01:09 +0100 Subject: [PATCH 721/789] Update License to match nextflow.conifg [skip ci] --- LICENSE | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/LICENSE b/LICENSE index 67b5fb5..7d74b6c 100644 --- a/LICENSE +++ b/LICENSE @@ -1,6 +1,6 @@ MIT License -Copyright (c) nf-core community +Copyright (c) James A. Fellows Yates, Sofia Stamouli, Moritz E. Beber, Lauri Mesilaakso, Thomas A. Christensen II, Jianhong Ou, Mahwash Jamy, Maxime Borry, Rafal Stepien, Tanja Normark Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal From f92a405554d94d71e5e8550d87bab9a1aa657537 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alex=20H=C3=BCbner?= Date: Fri, 10 Mar 2023 12:36:52 +0100 Subject: [PATCH 722/789] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 1e43ab8..3d18227 100644 --- a/README.md +++ b/README.md @@ -18,7 +18,7 @@ The pipeline is built using [Nextflow](https://www.nextflow.io), a workflow tool On release, automated continuous integration tests run the pipeline on a full-sized dataset on the AWS cloud infrastructure. This ensures that the pipeline runs on AWS, has sensible resource allocation defaults set to run on real-world datasets, and permits the persistent storage of results to benchmark between pipeline releases and other analysis sources.The results obtained from the full-sized test can be viewed on the [nf-core website](https://nf-co.re/taxprofiler/results). -The nf-core/taxprofiler CI test dataset uses sequencing data from [Maixer et al. (2021) Curr. Bio.](https://doi.org/10.1016/j.cub.2021.09.031). The AWS full test dataset uses sequencing data and reference genomes from [Meslier (2022) _Sci. Data_](https://doi.org/10.1038/s41597-022-01762-z) +The nf-core/taxprofiler CI test dataset uses sequencing data from [Maixner et al. (2021) Curr. Bio.](https://doi.org/10.1016/j.cub.2021.09.031). The AWS full test dataset uses sequencing data and reference genomes from [Meslier (2022) _Sci. Data_](https://doi.org/10.1038/s41597-022-01762-z) ## Pipeline summary From c2ad4210515762d846059d1e21f6e0efa534a040 Mon Sep 17 00:00:00 2001 From: "Moritz E. Beber" Date: Tue, 7 Mar 2023 12:30:02 +0100 Subject: [PATCH 723/789] refactor: simplify DB validation --- subworkflows/local/db_check.nf | 52 +++++++++++++--------------------- 1 file changed, 19 insertions(+), 33 deletions(-) diff --git a/subworkflows/local/db_check.nf b/subworkflows/local/db_check.nf index 21ed21d..ff9c3b2 100644 --- a/subworkflows/local/db_check.nf +++ b/subworkflows/local/db_check.nf @@ -28,9 +28,9 @@ workflow DB_CHECK { // Normal checks for within-row validity, so can be moved to separate functions parsed_samplesheet = Channel.fromPath(dbsheet) .splitCsv ( header:true, sep:',' ) - .map { - validate_db_rows(it) - create_db_channels(it) + .map { row -> + validate_db_rows(row) + return [ row.subMap(['tool', 'db_name', 'db_params']), file(row.db_path) ] } ch_dbs_for_untar = parsed_samplesheet @@ -54,41 +54,27 @@ workflow DB_CHECK { versions = ch_versions // channel: [ versions.yml ] } -def validate_db_rows(LinkedHashMap row){ +def validate_db_rows(LinkedHashMap row) { - // check minimum number of columns - if (row.size() < 4) exit 1, "[nf-core/taxprofiler] ERROR: Invalid database input sheet - malformed row (e.g. missing column). See documentation for more information. Error in: ${row}" + // check minimum number of columns + if (row.size() < 4) exit 1, "[nf-core/taxprofiler] ERROR: Invalid database input sheet - malformed row (e.g. missing column). See documentation for more information. Error in: ${row}" - // all columns there - def expected_headers = ['tool', 'db_name', 'db_params', 'db_path'] - if ( !row.keySet().containsAll(expected_headers) ) exit 1, "[nf-core/taxprofiler] ERROR: Invalid database input sheet - malformed column names. Please check input TSV. Column names should be: ${expected_keys.join(", ")}" + // all columns there + def expected_headers = ['tool', 'db_name', 'db_params', 'db_path'] + if ( !row.keySet().containsAll(expected_headers) ) exit 1, "[nf-core/taxprofiler] ERROR: Invalid database input sheet - malformed column names. Please check input TSV. Column names should be: ${expected_keys.join(", ")}" - // valid tools specified - def expected_tools = [ "bracken", "centrifuge", "diamond", "kaiju", "kraken2", "krakenuniq", "malt", "metaphlan3", "motus" ] - if ( !expected_tools.contains(row.tool) ) exit 1, "[nf-core/taxprofiler] ERROR: Invalid tool name. Please see documentation for all supported profilers. Error in: ${row}" + // valid tools specified + def expected_tools = [ "bracken", "centrifuge", "diamond", "kaiju", "kraken2", "krakenuniq", "malt", "metaphlan3", "motus" ] + if ( !expected_tools.contains(row.tool) ) exit 1, "[nf-core/taxprofiler] ERROR: Invalid tool name. Please see documentation for all supported profilers. Error in: ${row}" - // detect quotes in params - if ( row.db_params.contains('"') ) exit 1, "[nf-core/taxprofiler] ERROR: Invalid database db_params entry. No quotes allowed. Error in: ${row}" - if ( row.db_params.contains("'") ) exit 1, "[nf-core/taxprofiler] ERROR: Invalid database db_params entry. No quotes allowed. Error in: ${row}" + // detect quotes in params + if ( row.db_params.contains('"') ) exit 1, "[nf-core/taxprofiler] ERROR: Invalid database db_params entry. No quotes allowed. Error in: ${row}" + if ( row.db_params.contains("'") ) exit 1, "[nf-core/taxprofiler] ERROR: Invalid database db_params entry. No quotes allowed. Error in: ${row}" - // check if any form of bracken params, that it must have `;` - if ( row.tool == 'bracken' && row.db_params && !row.db_params.contains(";") ) exit 1, "[nf-core/taxprofiler] ERROR: Invalid database db_params entry. Bracken requires a semi-colon if passing parameter. Error in: ${row}" + // check if any form of bracken params, that it must have `;` + if ( row.tool == 'bracken' && row.db_params && !row.db_params.contains(";") ) exit 1, "[nf-core/taxprofiler] ERROR: Invalid database db_params entry. Bracken requires a semi-colon if passing parameter. Error in: ${row}" -} - -def create_db_channels(LinkedHashMap row) { - def meta = [:] - meta.tool = row.tool - meta.db_name = row.db_name - meta.db_params = row.db_params - - def array = [] - if (!file(row.db_path, type: 'dir').exists()) { - exit 1, "ERROR: Please check input samplesheet -> database path could not be found!\n${row.db_path}" - } - array = [ meta, file(row.db_path) ] + // ensure that the database directory exists + if (!file(row.db_path, type: 'dir').exists()) exit 1, "ERROR: Please check input samplesheet -> database path could not be found!\n${row.db_path}" - return array } - - From aa2410a871f04e59ed14bc410f6b83cb2738c411 Mon Sep 17 00:00:00 2001 From: "Moritz E. Beber" Date: Tue, 7 Mar 2023 12:35:47 +0100 Subject: [PATCH 724/789] style: use named parameters for closure --- subworkflows/local/db_check.nf | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/subworkflows/local/db_check.nf b/subworkflows/local/db_check.nf index ff9c3b2..76a9e1e 100644 --- a/subworkflows/local/db_check.nf +++ b/subworkflows/local/db_check.nf @@ -34,8 +34,8 @@ workflow DB_CHECK { } ch_dbs_for_untar = parsed_samplesheet - .branch { - untar: it[1].toString().endsWith(".tar.gz") + .branch { db_meta, db -> + untar: db.name.endsWith(".tar.gz") skip: true } From b90433f3c24bb6e59e5d98e8e4681869fd203a31 Mon Sep 17 00:00:00 2001 From: "Moritz E. Beber" Date: Tue, 7 Mar 2023 12:38:50 +0100 Subject: [PATCH 725/789] style: use parameters for filter closure --- subworkflows/local/db_check.nf | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/subworkflows/local/db_check.nf b/subworkflows/local/db_check.nf index 76a9e1e..70e1e02 100644 --- a/subworkflows/local/db_check.nf +++ b/subworkflows/local/db_check.nf @@ -41,9 +41,7 @@ workflow DB_CHECK { // Filter the channel to untar only those databases for tools that are selected to be run by the user. ch_input_untar = ch_dbs_for_untar.untar - .filter { - params["run_${it[0]['tool']}"] - } + .filter { db_meta, db -> params["run_${db_meta.tool}"] } UNTAR (ch_input_untar) ch_versions = ch_versions.mix(UNTAR.out.versions.first()) From 0bcea6c993233ffbf31738ce27589110f0ac2617 Mon Sep 17 00:00:00 2001 From: "Moritz E. Beber" Date: Tue, 7 Mar 2023 12:40:05 +0100 Subject: [PATCH 726/789] style: use parameter for branch closure --- subworkflows/local/input_check.nf | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/subworkflows/local/input_check.nf b/subworkflows/local/input_check.nf index 57061f1..e3cd0b4 100644 --- a/subworkflows/local/input_check.nf +++ b/subworkflows/local/input_check.nf @@ -12,9 +12,9 @@ workflow INPUT_CHECK { parsed_samplesheet = SAMPLESHEET_CHECK ( samplesheet ) .csv .splitCsv ( header:true, sep:',' ) - .branch { - fasta: it['fasta'] != '' - nanopore: it['instrument_platform'] == 'OXFORD_NANOPORE' + .branch { row -> + fasta: row.fasta != '' + nanopore: row.instrument_platform == 'OXFORD_NANOPORE' fastq: true } From d17dce5590d5b5c7366ebc5aa6f67331268e9a3d Mon Sep 17 00:00:00 2001 From: "Moritz E. Beber" Date: Tue, 7 Mar 2023 13:25:24 +0100 Subject: [PATCH 727/789] style: use subMap and early returns --- subworkflows/local/input_check.nf | 33 +++++++++++-------------------- 1 file changed, 12 insertions(+), 21 deletions(-) diff --git a/subworkflows/local/input_check.nf b/subworkflows/local/input_check.nf index e3cd0b4..37e3575 100644 --- a/subworkflows/local/input_check.nf +++ b/subworkflows/local/input_check.nf @@ -37,49 +37,40 @@ workflow INPUT_CHECK { // Function to get list of [ meta, [ fastq_1, fastq_2 ] ] def create_fastq_channel(LinkedHashMap row) { // create meta map - def meta = [:] - meta.id = row.sample - meta.run_accession = row.run_accession - meta.instrument_platform = row.instrument_platform - meta.single_end = row.single_end.toBoolean() - meta.is_fasta = false + def meta = row.subMap(['sample', 'run_accession', 'instrument_platform']) + meta.single_end = row.single_end.toBoolean() + meta.is_fasta = false // add path(s) of the fastq file(s) to the meta map - def fastq_meta = [] if (!file(row.fastq_1).exists()) { exit 1, "ERROR: Please check input samplesheet -> Read 1 FastQ file does not exist!\n${row.fastq_1}" } + if (meta.single_end) { - fastq_meta = [ meta, [ file(row.fastq_1) ] ] + return [ meta, [ file(row.fastq_1) ] ] } else { if (meta.instrument_platform == 'OXFORD_NANOPORE') { if (row.fastq_2 != '') { exit 1, "ERROR: Please check input samplesheet -> For Oxford Nanopore reads Read 2 FastQ should be empty!\n${row.fastq_2}" } - fastq_meta = [ meta, [ file(row.fastq_1) ] ] + return [ meta, [ file(row.fastq_1) ] ] } else { if (!file(row.fastq_2).exists()) { exit 1, "ERROR: Please check input samplesheet -> Read 2 FastQ file does not exist!\n${row.fastq_2}" } - fastq_meta = [ meta, [ file(row.fastq_1), file(row.fastq_2) ] ] + return [ meta, [ file(row.fastq_1), file(row.fastq_2) ] ] } - } - return fastq_meta -}// Function to get list of [ meta, fasta ] +} + +// Function to get list of [ meta, fasta ] def create_fasta_channel(LinkedHashMap row) { - def meta = [:] - meta.id = row.sample - meta.run_accession = row.run_accession - meta.instrument_platform = row.instrument_platform + def meta = row.subMap(['sample', 'run_accession', 'instrument_platform']) meta.single_end = true meta.is_fasta = true - def array = [] if (!file(row.fasta).exists()) { exit 1, "ERROR: Please check input samplesheet -> FastA file does not exist!\n${row.fasta}" } - array = [ meta, [ file(row.fasta) ] ] - - return array + return [ meta, [ file(row.fasta) ] ] } From 07db3c93e28ab504ecd131a0fa1675bb5d73b729 Mon Sep 17 00:00:00 2001 From: "Moritz E. Beber" Date: Tue, 7 Mar 2023 13:40:21 +0100 Subject: [PATCH 728/789] style: use map addition instead of cloning --- subworkflows/local/longread_preprocessing.nf | 20 +++++--------------- 1 file changed, 5 insertions(+), 15 deletions(-) diff --git a/subworkflows/local/longread_preprocessing.nf b/subworkflows/local/longread_preprocessing.nf index 961417d..f37449b 100644 --- a/subworkflows/local/longread_preprocessing.nf +++ b/subworkflows/local/longread_preprocessing.nf @@ -20,33 +20,23 @@ workflow LONGREAD_PREPROCESSING { PORECHOP_PORECHOP ( reads ) ch_processed_reads = PORECHOP_PORECHOP.out.reads - .map { - meta, reads -> - def meta_new = meta.clone() - meta_new['single_end'] = 1 - [ meta_new, reads ] - } + .map { meta, reads -> [ meta + [single_end: 1], reads ] } ch_versions = ch_versions.mix(PORECHOP_PORECHOP.out.versions.first()) ch_multiqc_files = ch_multiqc_files.mix( PORECHOP_PORECHOP.out.log ) } else if ( params.longread_qc_skipadaptertrim && !params.longread_qc_skipqualityfilter) { - ch_processed_reads = FILTLONG ( reads.map{ meta, reads -> [meta, [], reads ]} ) + ch_processed_reads = FILTLONG ( reads.map { meta, reads -> [meta, [], reads ] } ) ch_versions = ch_versions.mix(FILTLONG.out.versions.first()) ch_multiqc_files = ch_multiqc_files.mix( FILTLONG.out.log ) } else { PORECHOP_PORECHOP ( reads ) ch_clipped_reads = PORECHOP_PORECHOP.out.reads - .map { - meta, reads -> - def meta_new = meta.clone() - meta_new['single_end'] = 1 - [ meta_new, reads ] - } - - ch_processed_reads = FILTLONG ( ch_clipped_reads.map{ meta, reads -> [meta, [], reads ]} ).reads + .map { meta, reads -> [ meta + [single_end: 1], reads ] } + + ch_processed_reads = FILTLONG ( ch_clipped_reads.map { meta, reads -> [meta, [], reads ] } ).reads ch_versions = ch_versions.mix(PORECHOP_PORECHOP.out.versions.first()) ch_versions = ch_versions.mix(FILTLONG.out.versions.first()) From 5380bc18ec2d0cec0ff5e1cc7f4d369190903071 Mon Sep 17 00:00:00 2001 From: "Moritz E. Beber" Date: Tue, 7 Mar 2023 13:48:38 +0100 Subject: [PATCH 729/789] fix: channels should match 1:1 without remaining elements --- subworkflows/local/longread_hostremoval.nf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/subworkflows/local/longread_hostremoval.nf b/subworkflows/local/longread_hostremoval.nf index 63fce58..83660fe 100644 --- a/subworkflows/local/longread_hostremoval.nf +++ b/subworkflows/local/longread_hostremoval.nf @@ -46,7 +46,7 @@ workflow LONGREAD_HOSTREMOVAL { ch_versions = ch_versions.mix( SAMTOOLS_INDEX.out.versions.first() ) bam_bai = MINIMAP2_ALIGN.out.bam - .join(SAMTOOLS_INDEX.out.bai, remainder: true) + .join(SAMTOOLS_INDEX.out.bai) SAMTOOLS_STATS ( bam_bai, reference ) ch_versions = ch_versions.mix(SAMTOOLS_STATS.out.versions.first()) From 7c1133efb8bd921b0fed8445985dad0235506076 Mon Sep 17 00:00:00 2001 From: "Moritz E. Beber" Date: Tue, 7 Mar 2023 14:57:53 +0100 Subject: [PATCH 730/789] add more comments and slight style changes --- subworkflows/local/longread_hostremoval.nf | 2 + subworkflows/local/profiling.nf | 53 +++++++++---------- .../local/standardisation_profiles.nf | 1 + workflows/taxprofiler.nf | 1 + 4 files changed, 30 insertions(+), 27 deletions(-) diff --git a/subworkflows/local/longread_hostremoval.nf b/subworkflows/local/longread_hostremoval.nf index 83660fe..f9ad593 100644 --- a/subworkflows/local/longread_hostremoval.nf +++ b/subworkflows/local/longread_hostremoval.nf @@ -45,6 +45,8 @@ workflow LONGREAD_HOSTREMOVAL { SAMTOOLS_INDEX ( MINIMAP2_ALIGN.out.bam ) ch_versions = ch_versions.mix( SAMTOOLS_INDEX.out.versions.first() ) + // FIXME: This join is performed using entire maps as keys. + // Please replace with joining on specific keys instead. bam_bai = MINIMAP2_ALIGN.out.bam .join(SAMTOOLS_INDEX.out.bai) diff --git a/subworkflows/local/profiling.nf b/subworkflows/local/profiling.nf index 0f9951e..4d89464 100644 --- a/subworkflows/local/profiling.nf +++ b/subworkflows/local/profiling.nf @@ -35,10 +35,7 @@ workflow PROFILING { ch_input_for_profiling = reads .map { meta, reads -> - def meta_new = meta.clone() - pairtype = meta_new['single_end'] ? '_se' : '_pe' - meta_new['id'] = meta_new['id'] + pairtype - [meta_new, reads] + [meta + [id: "${meta.id}${meta.single_end ? '_se' : '_pe'}"], reads] } .combine(databases) .branch { @@ -68,34 +65,35 @@ workflow PROFILING { // MALT: We groupTuple to have all samples in one channel for MALT as database // loading takes a long time, so we only want to run it once per database ch_input_for_malt = ch_input_for_profiling.malt - .map { - meta, reads, db_meta, db -> + .map { + meta, reads, db_meta, db -> - // Reset entire input meta for MALT to just database name, - // as we don't run run on a per-sample basis due to huge datbaases - // so all samples are in one run and so sample-specific metadata - // unnecessary. Set as database name to prevent `null` job ID and prefix. - def temp_meta = [ id: meta['db_name'] ] + // Reset entire input meta for MALT to just database name, + // as we don't run run on a per-sample basis due to huge datbaases + // so all samples are in one run and so sample-specific metadata + // unnecessary. Set as database name to prevent `null` job ID and prefix. + def temp_meta = [ id: meta['db_name'] ] - // Extend database parameters to specify whether to save alignments or not - def new_db_meta = db_meta.clone() - def sam_format = params.malt_save_reads ? ' --alignments ./ -za false' : "" - new_db_meta['db_params'] = db_meta['db_params'] + sam_format + // Extend database parameters to specify whether to save alignments or not + def new_db_meta = db_meta.clone() + def sam_format = params.malt_save_reads ? ' --alignments ./ -za false' : "" + new_db_meta['db_params'] = db_meta['db_params'] + sam_format - // Combine reduced sample metadata with updated database parameters metadata, - // make sure id is db_name for publishing purposes. - def new_meta = temp_meta + new_db_meta - new_meta['id'] = new_meta['db_name'] + // Combine reduced sample metadata with updated database parameters metadata, + // make sure id is db_name for publishing purposes. + def new_meta = temp_meta + new_db_meta + new_meta['id'] = new_meta['db_name'] - [ new_meta, reads, db ] + [ new_meta, reads, db ] - } - .groupTuple(by: [0,2]) - .multiMap { - it -> - reads: [ it[0], it[1].flatten() ] - db: it[2] - } + } + // FIXME: Groups elements in the channel using the meta map as key. Replace with grouping on specific keys. + .groupTuple(by: [0,2]) + .multiMap { + meta, reads, db -> + reads: [ meta, reads.flatten() ] + db: db + } MALT_RUN ( ch_input_for_malt.reads, ch_input_for_malt.db ) @@ -323,6 +321,7 @@ workflow PROFILING { meta, reads, db_meta, db -> [[id: db_meta.db_name, single_end: meta.single_end], reads, db_meta, db] } + // FIXME: Groups elements in the channel using the meta map as key. Replace with grouping on specific keys. .groupTuple(by: [0,2,3]) .multiMap { single_meta, reads, db_meta, db -> diff --git a/subworkflows/local/standardisation_profiles.nf b/subworkflows/local/standardisation_profiles.nf index 26355b7..560d660 100644 --- a/subworkflows/local/standardisation_profiles.nf +++ b/subworkflows/local/standardisation_profiles.nf @@ -30,6 +30,7 @@ workflow STANDARDISATION_PROFILES { meta_new.tool = meta.tool == 'metaphlan3' ? 'metaphlan' : meta.tool == 'malt' ? 'megan6' : meta.tool [meta_new, profile] } + // FIXME: Groups elements in the channel using the meta map as key. Replace with grouping on specific keys. .groupTuple () .map { [ it[0], it[1].flatten() ] } diff --git a/workflows/taxprofiler.nf b/workflows/taxprofiler.nf index e44015f..fff52e4 100644 --- a/workflows/taxprofiler.nf +++ b/workflows/taxprofiler.nf @@ -197,6 +197,7 @@ workflow TAXPROFILER { meta_new.remove('run_accession') [ meta_new, reads ] } + // FIXME: Groups elements in the channel using the meta map as key. Replace with grouping on specific keys. .groupTuple() .map { meta, reads -> From 246da8a7b0a23aa2f9ab0ab50fff308ae5ea63cc Mon Sep 17 00:00:00 2001 From: "Moritz E. Beber" Date: Thu, 9 Mar 2023 15:12:13 +0100 Subject: [PATCH 731/789] chore: remove fixme comments --- subworkflows/local/longread_hostremoval.nf | 2 -- subworkflows/local/profiling.nf | 2 -- subworkflows/local/standardisation_profiles.nf | 1 - workflows/taxprofiler.nf | 1 - 4 files changed, 6 deletions(-) diff --git a/subworkflows/local/longread_hostremoval.nf b/subworkflows/local/longread_hostremoval.nf index f9ad593..83660fe 100644 --- a/subworkflows/local/longread_hostremoval.nf +++ b/subworkflows/local/longread_hostremoval.nf @@ -45,8 +45,6 @@ workflow LONGREAD_HOSTREMOVAL { SAMTOOLS_INDEX ( MINIMAP2_ALIGN.out.bam ) ch_versions = ch_versions.mix( SAMTOOLS_INDEX.out.versions.first() ) - // FIXME: This join is performed using entire maps as keys. - // Please replace with joining on specific keys instead. bam_bai = MINIMAP2_ALIGN.out.bam .join(SAMTOOLS_INDEX.out.bai) diff --git a/subworkflows/local/profiling.nf b/subworkflows/local/profiling.nf index 4d89464..e9440b3 100644 --- a/subworkflows/local/profiling.nf +++ b/subworkflows/local/profiling.nf @@ -87,7 +87,6 @@ workflow PROFILING { [ new_meta, reads, db ] } - // FIXME: Groups elements in the channel using the meta map as key. Replace with grouping on specific keys. .groupTuple(by: [0,2]) .multiMap { meta, reads, db -> @@ -321,7 +320,6 @@ workflow PROFILING { meta, reads, db_meta, db -> [[id: db_meta.db_name, single_end: meta.single_end], reads, db_meta, db] } - // FIXME: Groups elements in the channel using the meta map as key. Replace with grouping on specific keys. .groupTuple(by: [0,2,3]) .multiMap { single_meta, reads, db_meta, db -> diff --git a/subworkflows/local/standardisation_profiles.nf b/subworkflows/local/standardisation_profiles.nf index 560d660..26355b7 100644 --- a/subworkflows/local/standardisation_profiles.nf +++ b/subworkflows/local/standardisation_profiles.nf @@ -30,7 +30,6 @@ workflow STANDARDISATION_PROFILES { meta_new.tool = meta.tool == 'metaphlan3' ? 'metaphlan' : meta.tool == 'malt' ? 'megan6' : meta.tool [meta_new, profile] } - // FIXME: Groups elements in the channel using the meta map as key. Replace with grouping on specific keys. .groupTuple () .map { [ it[0], it[1].flatten() ] } diff --git a/workflows/taxprofiler.nf b/workflows/taxprofiler.nf index fff52e4..e44015f 100644 --- a/workflows/taxprofiler.nf +++ b/workflows/taxprofiler.nf @@ -197,7 +197,6 @@ workflow TAXPROFILER { meta_new.remove('run_accession') [ meta_new, reads ] } - // FIXME: Groups elements in the channel using the meta map as key. Replace with grouping on specific keys. .groupTuple() .map { meta, reads -> From fa1c779536d9dce8f49d3bbeafaaf3c0d5259e66 Mon Sep 17 00:00:00 2001 From: "Moritz E. Beber" Date: Thu, 9 Mar 2023 15:43:58 +0100 Subject: [PATCH 732/789] fix: insert `id` key again --- subworkflows/local/input_check.nf | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/subworkflows/local/input_check.nf b/subworkflows/local/input_check.nf index 37e3575..0db3592 100644 --- a/subworkflows/local/input_check.nf +++ b/subworkflows/local/input_check.nf @@ -65,9 +65,10 @@ def create_fastq_channel(LinkedHashMap row) { // Function to get list of [ meta, fasta ] def create_fasta_channel(LinkedHashMap row) { - def meta = row.subMap(['sample', 'run_accession', 'instrument_platform']) - meta.single_end = true - meta.is_fasta = true + def meta = row.subMap(['sample', 'run_accession', 'instrument_platform']) + meta.id = meta.sample + meta.single_end = true + meta.is_fasta = true if (!file(row.fasta).exists()) { exit 1, "ERROR: Please check input samplesheet -> FastA file does not exist!\n${row.fasta}" From 7104b12e3be77b92abc08c6dd1c064d707de1663 Mon Sep 17 00:00:00 2001 From: "Moritz E. Beber" Date: Thu, 9 Mar 2023 15:46:04 +0100 Subject: [PATCH 733/789] Update subworkflows/local/longread_preprocessing.nf Co-authored-by: James A. Fellows Yates --- subworkflows/local/longread_preprocessing.nf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/subworkflows/local/longread_preprocessing.nf b/subworkflows/local/longread_preprocessing.nf index f37449b..30963ec 100644 --- a/subworkflows/local/longread_preprocessing.nf +++ b/subworkflows/local/longread_preprocessing.nf @@ -36,7 +36,7 @@ workflow LONGREAD_PREPROCESSING { ch_clipped_reads = PORECHOP_PORECHOP.out.reads .map { meta, reads -> [ meta + [single_end: 1], reads ] } - ch_processed_reads = FILTLONG ( ch_clipped_reads.map { meta, reads -> [meta, [], reads ] } ).reads + ch_processed_reads = FILTLONG ( ch_clipped_reads.map { meta, reads -> [ meta, [], reads ] } ).reads ch_versions = ch_versions.mix(PORECHOP_PORECHOP.out.versions.first()) ch_versions = ch_versions.mix(FILTLONG.out.versions.first()) From bb7323e25df05b251667f2ae0ecf61f1de0bc4c6 Mon Sep 17 00:00:00 2001 From: "Moritz E. Beber" Date: Sat, 11 Mar 2023 11:34:47 +0100 Subject: [PATCH 734/789] fix: restore setting id on FASTQ meta --- subworkflows/local/input_check.nf | 1 + 1 file changed, 1 insertion(+) diff --git a/subworkflows/local/input_check.nf b/subworkflows/local/input_check.nf index 0db3592..5764b72 100644 --- a/subworkflows/local/input_check.nf +++ b/subworkflows/local/input_check.nf @@ -38,6 +38,7 @@ workflow INPUT_CHECK { def create_fastq_channel(LinkedHashMap row) { // create meta map def meta = row.subMap(['sample', 'run_accession', 'instrument_platform']) + meta.id = meta.sample meta.single_end = row.single_end.toBoolean() meta.is_fasta = false From 5e400c8c8962079ac94e8570e5db70d31d752985 Mon Sep 17 00:00:00 2001 From: "James A. Fellows Yates" Date: Sat, 11 Mar 2023 20:06:59 +0100 Subject: [PATCH 735/789] Apply suggestions from code review --- subworkflows/local/db_check.nf | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/subworkflows/local/db_check.nf b/subworkflows/local/db_check.nf index 70e1e02..5cafae0 100644 --- a/subworkflows/local/db_check.nf +++ b/subworkflows/local/db_check.nf @@ -59,10 +59,10 @@ def validate_db_rows(LinkedHashMap row) { // all columns there def expected_headers = ['tool', 'db_name', 'db_params', 'db_path'] - if ( !row.keySet().containsAll(expected_headers) ) exit 1, "[nf-core/taxprofiler] ERROR: Invalid database input sheet - malformed column names. Please check input TSV. Column names should be: ${expected_keys.join(", ")}" + if ( !row.keySet().containsAll(expected_headers) ) exit 1, "[nf-core/taxprofiler] ERROR: Invalid database input sheet - malformed column names. Please check input TSV. Column names should be: ${expected_headers.join(", ")}" // valid tools specified - def expected_tools = [ "bracken", "centrifuge", "diamond", "kaiju", "kraken2", "krakenuniq", "malt", "metaphlan3", "motus" ] + def expected_tools = [ "bracken", "centrifuge", "diamond", "kaiju", "kraken2", "krakenuniq", "malt", "metaphlan3", "motus" ] if ( !expected_tools.contains(row.tool) ) exit 1, "[nf-core/taxprofiler] ERROR: Invalid tool name. Please see documentation for all supported profilers. Error in: ${row}" // detect quotes in params From e49668005f997c279490c68cc1b0808d080e01f9 Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Sun, 12 Mar 2023 08:35:45 +0100 Subject: [PATCH 736/789] Update docs based on feedback and add missing results directories --- docs/output.md | 44 +++++++++++++++++++++++++++------ docs/usage.md | 4 ++- nextflow_schema.json | 36 ++++++++++++++++----------- subworkflows/local/profiling.nf | 3 +-- 4 files changed, 61 insertions(+), 26 deletions(-) diff --git a/docs/output.md b/docs/output.md index 357194c..bddd755 100644 --- a/docs/output.md +++ b/docs/output.md @@ -35,14 +35,18 @@ The pipeline is built using [Nextflow](https://www.nextflow.io/) and processes d - [MultiQC](#multiqc) - Aggregate report describing results and QC from the whole pipeline - [Pipeline information](#pipeline-information) - Report metrics generated during the workflow execution +![](images/taxprofiler_tube.png) + ### FastQC or Falco
    Output files -- `fastqc/` - - `*_fastqc.html`: FastQC or Falco report containing quality metrics. - - `*_fastqc.zip`: Zip archive containing the FastQC report, tab-delimited data file and plot images (FastQC only). +- `{fastqc,falco}/` + - {raw,preprocessed} + - `*html`: FastQC or Falco report containing quality metrics in HTML format. + - `*.txt`: FastQC or Falco report containing quality metrics in TXT format. + - `*.zip`: Zip archive containing the FastQC report, tab-delimited data file and plot images (FastQC only).
    @@ -186,9 +190,12 @@ It is used with nf-core/taxprofiler to allow removal of 'host' (e.g. human) and/ Output files - `bowtie2/` - - `.bam`: BAM file containing reads that aligned against the user-supplied reference genome as well as unmapped reads - - `.bowtie2.log`: log file about the mapped reads - - `.unmapped.fastq.gz`: the off-target reads from the mapping that is used in downstream steps. + - `build/` + - `*.bt2`: Bowtie2 indicies of reference genome, only if `--save_hostremoval_index` supplied. + - `align/` + - `.bam`: BAM file containing reads that aligned against the user-supplied reference genome as well as unmapped reads + - `.bowtie2.log`: log file about the mapped reads + - `.unmapped.fastq.gz`: the off-target reads from the mapping that is used in downstream steps. @@ -210,7 +217,10 @@ It is used with nf-core/taxprofiler to allow removal of 'host' (e.g. human) or o Output files - `minimap2` - - `.bam`: Alignment file in BAM format containing both mapped and unmapped reads. + - `build/` + - `*.mmi2`: minimap2 indicies of reference genome, only if `--save_hostremoval_index` supplied. + - `align/` + - `.bam`: Alignment file in BAM format containing both mapped and unmapped reads. @@ -243,13 +253,31 @@ This directory will be present and contain the unmapped reads from the `.fastq`
    Output files -- `samtoolsstats` +- `samtools/stats` - `.stats`: File containing samtools stats output.
    In most cases you do not need to check this file, as it is rendered in the MultiQC run report. +### Run Merging + +nf-core/taxprofiler offers the option to merge FASTQ files of multiple sequencing runs or libraries that derive from the same sample, as specified in the input samplesheet. + +This is the last preprocessing step, so if you have multiple runs or libraries (and run merging turned on), this will represent the final reads that will go into classification/profiling steps. + +
    +Output files + +- `run_merging/` + - `*.fastq.gz`: Concatenated FASTQ files on a per-sample basis + +
    + +Note that you will only find samples that went through the run merging step in this directory. For samples that had a single run or library will not go through this step of the pipeline and thus will not be present in this directory. + +⚠️ You must make sure to turn on the saving of the reads from the previous preprocessing step you may have turned on, if you have single-run or library reads in your pipeline run, and wish to save the final reads that go into classification/profiling! + ### Bracken [Bracken](https://ccb.jhu.edu/software/bracken/) (Bayesian Reestimation of Abundance with Kraken) is a highly accurate statistical method that computes the abundance of species in DNA sequences from a metagenomics sample. Braken uses the taxonomy labels assigned by Kraken, a highly accurate metagenomics classification algorithm, to estimate the number of reads originating from each species present in a sample. diff --git a/docs/usage.md b/docs/usage.md index 10c5ce6..a38931e 100644 --- a/docs/usage.md +++ b/docs/usage.md @@ -89,7 +89,9 @@ The pipeline takes the paths and specific classification/profiling parameters of > ⚠️ To allow user freedom, nf-core/taxprofiler does not check for mandatory or the validity of non-file database parameters for correct execution of the tool - excluding options offered via pipeline level parameters! Please validate your database parameters (cross-referencing [parameters](https://nf-co.re/taxprofiler/parameters, and the given tool documentation) before submitting the database sheet! For example, if you don't use the default read length - Bracken will require `-r ` in the `db_params` column. -An example database sheet can look as follows, where 5 tools are being used, and `malt` and `kraken2` will be used against two databases each. This is because specifying `bracken` implies first running `kraken2` on the same database. +An example database sheet can look as follows, where 7 tools are being used, and `malt` and `kraken2` will be used against two databases each. + +`kraken2` will be run twice even though only having a single 'dedicated' database because specifying `bracken` implies first running `kraken2` on the `bracken` database, as required by `bracken`. ```console tool,db_name,db_params,db_path diff --git a/nextflow_schema.json b/nextflow_schema.json index 2a72303..417549e 100644 --- a/nextflow_schema.json +++ b/nextflow_schema.json @@ -67,7 +67,7 @@ "save_preprocessed_reads": { "type": "boolean", "fa_icon": "fas fa-save", - "description": "Save reads from adapter clipping/pair-merging, length filtering for both short and long reads", + "description": "Save reads from samples that went through the adapter clipping, pair-merging, and length filtering steps for both short and long reads", "help_text": "This saves the FASTQ output from the following tools:\n\n- fastp\n- AdapterRemoval\n- Porechop\n- Filtlong\n\nThese reads will be a mixture of: adapter clipped, quality trimmed, pair-merged, and length filtered, depending on the parameters you set." } }, @@ -116,7 +116,8 @@ "type": "string", "default": "None", "description": "Specify a list of all possible adapters to trim. Overrides --shortread_qc_adapter1/2. Formats: .txt (AdapterRemoval) or .fasta. (fastp).", - "help_text": "Allows to supply a file with a list of adapter (combinations) to remove from all files. \n\nOverrides the --shortread_qc_adapter1/--shortread_qc_adapter2 parameters . \n\nFor AdapterRemoval this consists of a two column table with a `.txt` extension: first column represents forward strand, second column for reverse strand. You must supply all possible combinations, one per line, and this list is applied to all files. See AdapterRemoval documentation for more information.\n\nFor fastp this consists of a standard FASTA format with a `.fasta`/`.fa`/`.fna`/`.fas` extension. The adapter sequence in this file should be at least 6bp long, otherwise it will be skipped. fastp trims the adapters present in the FASTA file one by one.\n\n> Modifies AdapterRemoval parameter: --adapter-list\n> Modifies fastp parameter: --adapter_fasta" + "help_text": "Allows to supply a file with a list of adapter (combinations) to remove from all files. \n\nOverrides the --shortread_qc_adapter1/--shortread_qc_adapter2 parameters . \n\nFor AdapterRemoval this consists of a two column table with a `.txt` extension: first column represents forward strand, second column for reverse strand. You must supply all possible combinations, one per line, and this list is applied to all files. See AdapterRemoval documentation for more information.\n\nFor fastp this consists of a standard FASTA format with a `.fasta`/`.fa`/`.fna`/`.fas` extension. The adapter sequence in this file should be at least 6bp long, otherwise it will be skipped. fastp trims the adapters present in the FASTA file one by one.\n\n> Modifies AdapterRemoval parameter: --adapter-list\n> Modifies fastp parameter: --adapter_fasta", + "fa_icon": "fas fa-th-list" }, "shortread_qc_mergepairs": { "type": "boolean", @@ -194,7 +195,7 @@ "save_complexityfiltered_reads": { "type": "boolean", "fa_icon": "fas fa-save", - "description": "Save complexity filtered short-reads", + "description": "Save reads from samples that went through the complexity filtering step", "help_text": "Specify whether to save the final complexity filtered reads in your results directory (`--outdir`)." } }, @@ -302,7 +303,7 @@ "save_hostremoval_unmapped": { "type": "boolean", "fa_icon": "fas fa-save", - "description": "Save unmapped reads in FASTQ format from host removal", + "description": "Save reads from samples that went through the host-removal step", "help_text": "Save only the reads NOT mapped to the reference genome in FASTQ format (as exported from `samtools view` and `bam2fq`).\n\nThis can be useful if you wish to perform other analyses on the off-target reads from the host mapping, such as manual profiling or _de novo_ assembly." } }, @@ -323,8 +324,8 @@ "save_runmerged_reads": { "type": "boolean", "fa_icon": "fas fa-save", - "description": "Save run-concatenated input FASTQ files for each sample", - "help_text": "Save the run- and library-concatenated reads of a given sample in FASTQ format." + "description": "Save reads from samples that went through the run-merging step", + "help_text": "Save the run- and library-concatenated reads of a given sample in FASTQ format.\n\n> \u26a0\ufe0f Only samples that went through the run-merging step of the pipeline will be stored in the resulting directory. \n\nIf you wish to save the files that go to the classification/profiling steps for samples that _did not_ go through run merging, you must supply the appropriate upstream `--save_` flag.\n\n" } }, "fa_icon": "fas fa-clipboard-check" @@ -427,7 +428,7 @@ }, "run_bracken": { "type": "boolean", - "description": "Post-process kraken2 reports with Bracken.", + "description": "Turn on Bracken (and the required Kraken2 prerequisite step).", "fa_icon": "fas fa-toggle-on" }, "run_malt": { @@ -513,34 +514,39 @@ "standardisation_taxpasta_format": { "type": "string", "default": "tsv", - "fa_icon": "fas fa-file", + "fa_icon": "fas fa-pastafarianism", "description": "The desired output format.", "enum": ["tsv", "csv", "arrow", "parquet", "biom"] }, "taxpasta_taxonomy_dir": { "type": "string", "description": "The path to a directory containing taxdump files.", - "help_text": "This arguments provides the path to the directory containing taxdump files. At least nodes.dmp and names.dmp are required. A merged.dmp file is optional. \n\nModifies tool parameter(s):\n-taxpasta: `--taxpasta_taxonomy_dir`" + "help_text": "This arguments provides the path to the directory containing taxdump files. At least nodes.dmp and names.dmp are required. A merged.dmp file is optional. \n\nModifies tool parameter(s):\n-taxpasta: `--taxpasta_taxonomy_dir`", + "fa_icon": "fas fa-tree" }, "taxpasta_add_name": { "type": "boolean", "description": "Add the taxon name to the output.", - "help_text": "The standard output format of taxpasta is a two-column table including the read counts and the integer taxonomic ID. The taxon name can be added as additional information to the output table.\n\nModifies tool parameter(s):\n- taxpasta: `--taxpasta_add_name`" + "help_text": "The standard output format of taxpasta is a two-column table including the read counts and the integer taxonomic ID. The taxon name can be added as additional information to the output table.\n\nModifies tool parameter(s):\n- taxpasta: `--taxpasta_add_name`", + "fa_icon": "fas fa-tag" }, "taxpasta_add_rank": { "type": "boolean", "description": "Add the taxon rank to the output.", - "help_text": "The standard output format of taxpasta is a two-column table including the read counts and the integer taxonomic ID. The taxon rank can be added as additional information to the output table.\n\nModifies tool parameter(s):\n- taxpasta: `--taxpasta_add_rank`" + "help_text": "The standard output format of taxpasta is a two-column table including the read counts and the integer taxonomic ID. The taxon rank can be added as additional information to the output table.\n\nModifies tool parameter(s):\n- taxpasta: `--taxpasta_add_rank`", + "fa_icon": "fas fa-sort-amount-down-alt" }, "taxpasta_add_lineage": { "type": "boolean", - "description": "Add the taxon's entire lineage to the output.", - "help_text": "\nThe standard output format of taxpasta is a two-column table including the read counts and the integer taxonomic ID. The taxon's entire lineage with the taxon names separated by semi-colons can be added as additional information to the output table.\n\nModifies tool parameter(s):\n- taxpasta: `--taxpasta_add_lineage`\n" + "description": "Add the taxon's entire name lineage to the output.", + "help_text": "\nThe standard output format of taxpasta is a two-column table including the read counts and the integer taxonomic ID. The taxon's entire lineage with the taxon names separated by semi-colons can be added as additional information to the output table.\n\nModifies tool parameter(s):\n- taxpasta: `--taxpasta_add_lineage`\n", + "fa_icon": "fas fa-link" }, "taxpasta_add_idlineage": { "type": "boolean", - "description": "Add the taxon's entire lineage to the output.", - "help_text": "\nThe standard output format of taxpasta is a two-column table including the read counts and the integer taxonomic ID. The taxon's entire lineage with the taxon identifiers separated by semi-colons can be added as additional information to the output table.\n\nModifies tool parameter(s):\n- taxpasta: `--taxpasta_add_idlineage`\n" + "description": "Add the taxon's entire ID lineage to the output.", + "help_text": "\nThe standard output format of taxpasta is a two-column table including the read counts and the integer taxonomic ID. The taxon's entire lineage with the taxon identifiers separated by semi-colons can be added as additional information to the output table.\n\nModifies tool parameter(s):\n- taxpasta: `--taxpasta_add_idlineage`\n", + "fa_icon": "fas fa-link" } }, "fa_icon": "fas fa-chart-line" diff --git a/subworkflows/local/profiling.nf b/subworkflows/local/profiling.nf index e9440b3..d328a9c 100644 --- a/subworkflows/local/profiling.nf +++ b/subworkflows/local/profiling.nf @@ -117,12 +117,11 @@ workflow PROFILING { } - if ( params.run_kraken2 ) { + if ( params.run_kraken2 || params.run_bracken ) { // Have to pick first element of db_params if using bracken, // as db sheet for bracken must have ; sep list to // distinguish between kraken and bracken parameters ch_input_for_kraken2 = ch_input_for_profiling.kraken2 - .dump(tag: "ch_input_for_kraken2_b4") .map { meta, reads, db_meta, db -> def db_meta_new = db_meta.clone() From 95f9bf1fa9bb3ca021e4d9ef1dee6e8174f3451c Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Sun, 12 Mar 2023 08:43:56 +0100 Subject: [PATCH 737/789] Update credits section --- README.md | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 3d18227..676a3da 100644 --- a/README.md +++ b/README.md @@ -77,11 +77,16 @@ The nf-core/taxprofiler pipeline comes with documentation about the pipeline [us ## Credits -nf-core/taxprofiler was originally written by nf-core community. +nf-core/taxprofiler was originally written by [James A. Fellows Yates](https://github.com/jfy133), [Moritz Beber](https://github.com/Midnighter), and [Sofia Stamouli](https://github.com/sofsam). -We thank the following people for their extensive assistance in the development of this pipeline: +We thank the following people for their contributions to the development of this pipeline: -[James A. Fellows Yates](https://github.com/jfy133), [Moritz Beber](https://github.com/Midnighter), [Lauri Mesilaakso](https://github.com/ljmesi), [Sofia Stamouli](https://github.com/sofsam), [Maxime Borry](https://github.com/maxibor),[Thomas A. Christensen II](https://github.com/MillironX), [Jianhong Ou](https://github.com/jianhong), [Rafal Stepien](https://github.com/rafalstepien), [Mahwash Jamy](https://github.com/mjamy). +[Lauri Mesilaakso](https://github.com/ljmesi), [Tanja Normark](https://github.com/talnor), [Maxime Borry](https://github.com/maxibor),[Thomas A. Christensen II](https://github.com/MillironX), [Jianhong Ou](https://github.com/jianhong), [Rafal Stepien](https://github.com/rafalstepien), [Mahwash Jamy](https://github.com/mjamy), and the [nf-core/community](https://nf-co.re/community). + +We also are grateful for the feedback and comments from: + +- [Alex Hübner](https://github.com/alexhbnr) +- Lili Andersson-Li ## Contributions and Support From 6266ee782dc8240933554238aa2e38ab90e5d7e1 Mon Sep 17 00:00:00 2001 From: "James A. Fellows Yates" Date: Sun, 12 Mar 2023 11:08:31 +0100 Subject: [PATCH 738/789] Update README.md Co-authored-by: Sofia Stamouli <91951607+sofstam@users.noreply.github.com> --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 676a3da..a6dc165 100644 --- a/README.md +++ b/README.md @@ -86,7 +86,7 @@ We thank the following people for their contributions to the development of this We also are grateful for the feedback and comments from: - [Alex Hübner](https://github.com/alexhbnr) -- Lili Andersson-Li +- [LilyAnderssonLee](https://github.com/LilyAnderssonLee) ## Contributions and Support From 7f6e162e1cac133104203636f2005f99f8e18b87 Mon Sep 17 00:00:00 2001 From: "James A. Fellows Yates" Date: Sun, 12 Mar 2023 11:08:37 +0100 Subject: [PATCH 739/789] Update docs/output.md Co-authored-by: Sofia Stamouli <91951607+sofstam@users.noreply.github.com> --- docs/output.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/output.md b/docs/output.md index bddd755..4ef6770 100644 --- a/docs/output.md +++ b/docs/output.md @@ -218,7 +218,7 @@ It is used with nf-core/taxprofiler to allow removal of 'host' (e.g. human) or o - `minimap2` - `build/` - - `*.mmi2`: minimap2 indicies of reference genome, only if `--save_hostremoval_index` supplied. + - `*.mmi2`: minimap2 indices of reference genome, only if `--save_hostremoval_index` supplied. - `align/` - `.bam`: Alignment file in BAM format containing both mapped and unmapped reads. From 9550c76c2554b6b2a24c681631ee769deb07fe21 Mon Sep 17 00:00:00 2001 From: "James A. Fellows Yates" Date: Sun, 12 Mar 2023 11:11:05 +0100 Subject: [PATCH 740/789] Update README.md --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index a6dc165..ba08835 100644 --- a/README.md +++ b/README.md @@ -88,6 +88,8 @@ We also are grateful for the feedback and comments from: - [Alex Hübner](https://github.com/alexhbnr) - [LilyAnderssonLee](https://github.com/LilyAnderssonLee) +Credit and thanks also goes to [Zandra Fagernäs](https://github.com/ZandraFagernas) for the logo. + ## Contributions and Support If you would like to contribute to this pipeline, please see the [contributing guidelines](.github/CONTRIBUTING.md). From 213f4e4f23747bf2a4efd15e50259147b1b9d335 Mon Sep 17 00:00:00 2001 From: sofstam Date: Mon, 13 Mar 2023 08:58:59 +0100 Subject: [PATCH 741/789] Updata taxpasta --- modules.json | 172 ++++++++++++++++++------ modules/nf-core/taxpasta/merge/main.nf | 6 +- modules/nf-core/taxpasta/merge/meta.yml | 2 +- 3 files changed, 132 insertions(+), 48 deletions(-) diff --git a/modules.json b/modules.json index d1899a4..c42e1a9 100644 --- a/modules.json +++ b/modules.json @@ -8,217 +8,301 @@ "adapterremoval": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "bbmap/bbduk": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "bowtie2/align": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "bowtie2/build": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "bracken/bracken": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "bracken/combinebrackenoutputs": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "cat/fastq": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "centrifuge/centrifuge": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "centrifuge/kreport": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "custom/dumpsoftwareversions": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "diamond/blastx": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "falco": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": ["modules"], + "installed_by": [ + "modules" + ], "patch": "modules/nf-core/falco/falco.diff" }, "fastp": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "fastqc": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "filtlong": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "gunzip": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "kaiju/kaiju": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "kaiju/kaiju2krona": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "kaiju/kaiju2table": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "kraken2/kraken2": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "krakentools/combinekreports": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "krakentools/kreport2krona": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "krakenuniq/preloadedkrakenuniq": { "branch": "master", "git_sha": "a6eb17f65b3ee5761c25c075a6166c9f76733cee", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "krona/ktimporttaxonomy": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "krona/ktimporttext": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "malt/run": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "megan/rma2info": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "metaphlan3/mergemetaphlantables": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "metaphlan3/metaphlan3": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "minimap2/align": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "minimap2/index": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "motus/merge": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "motus/profile": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "multiqc": { "branch": "master", "git_sha": "ee80d14721e76e2e079103b8dcd5d57129e584ba", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "porechop/porechop": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": ["modules"], + "installed_by": [ + "modules" + ], "patch": "modules/nf-core/porechop/porechop/porechop-porechop.diff" }, "prinseqplusplus": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "samtools/bam2fq": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "samtools/index": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "samtools/stats": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "samtools/view": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "taxpasta/merge": { "branch": "master", - "git_sha": "fe58454add6225d2b7468e6d72a3a1f6a3149638", - "installed_by": ["modules"] + "git_sha": "ffa9641ee18f88aff974257cb50ba3cf8f7d143c", + "installed_by": [ + "modules" + ] }, "untar": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] } } } } } -} +} \ No newline at end of file diff --git a/modules/nf-core/taxpasta/merge/main.nf b/modules/nf-core/taxpasta/merge/main.nf index 46aea29..5882425 100644 --- a/modules/nf-core/taxpasta/merge/main.nf +++ b/modules/nf-core/taxpasta/merge/main.nf @@ -2,10 +2,10 @@ process TAXPASTA_MERGE { tag "$meta.id" label 'process_single' - conda "bioconda::taxpasta=0.2.0" + conda "bioconda::taxpasta=0.2.3" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/taxpasta:0.2.0--pyhdfd78af_0': - 'quay.io/biocontainers/taxpasta:0.2.0--pyhdfd78af_0' }" + 'https://depot.galaxyproject.org/singularity/taxpasta:0.2.3--pyhdfd78af_0': + 'quay.io/biocontainers/taxpasta:0.2.3--pyhdfd78af_0' }" input: diff --git a/modules/nf-core/taxpasta/merge/meta.yml b/modules/nf-core/taxpasta/merge/meta.yml index 79d301f..ed89e62 100644 --- a/modules/nf-core/taxpasta/merge/meta.yml +++ b/modules/nf-core/taxpasta/merge/meta.yml @@ -14,7 +14,7 @@ tools: homepage: "https://taxpasta.readthedocs.io/" documentation: "https://taxpasta.readthedocs.io/" tool_dev_url: "https://github.com/taxprofiler/taxpasta" - doi: "" + licence: "['Apache-2.0']" input: From 8ecb655952882a0158801b4253df8fb51409f7c0 Mon Sep 17 00:00:00 2001 From: sofstam Date: Mon, 13 Mar 2023 09:11:53 +0100 Subject: [PATCH 742/789] Prettier --- modules.json | 170 +++++++++++++-------------------------------------- 1 file changed, 43 insertions(+), 127 deletions(-) diff --git a/modules.json b/modules.json index c42e1a9..1a5cd64 100644 --- a/modules.json +++ b/modules.json @@ -8,301 +8,217 @@ "adapterremoval": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "bbmap/bbduk": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "bowtie2/align": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "bowtie2/build": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "bracken/bracken": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "bracken/combinebrackenoutputs": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "cat/fastq": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "centrifuge/centrifuge": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "centrifuge/kreport": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "custom/dumpsoftwareversions": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "diamond/blastx": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "falco": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": [ - "modules" - ], + "installed_by": ["modules"], "patch": "modules/nf-core/falco/falco.diff" }, "fastp": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "fastqc": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "filtlong": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "gunzip": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "kaiju/kaiju": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "kaiju/kaiju2krona": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "kaiju/kaiju2table": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "kraken2/kraken2": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "krakentools/combinekreports": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "krakentools/kreport2krona": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "krakenuniq/preloadedkrakenuniq": { "branch": "master", "git_sha": "a6eb17f65b3ee5761c25c075a6166c9f76733cee", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "krona/ktimporttaxonomy": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "krona/ktimporttext": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "malt/run": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "megan/rma2info": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "metaphlan3/mergemetaphlantables": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "metaphlan3/metaphlan3": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "minimap2/align": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "minimap2/index": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "motus/merge": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "motus/profile": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "multiqc": { "branch": "master", "git_sha": "ee80d14721e76e2e079103b8dcd5d57129e584ba", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "porechop/porechop": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": [ - "modules" - ], + "installed_by": ["modules"], "patch": "modules/nf-core/porechop/porechop/porechop-porechop.diff" }, "prinseqplusplus": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "samtools/bam2fq": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "samtools/index": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "samtools/stats": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "samtools/view": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "taxpasta/merge": { "branch": "master", "git_sha": "ffa9641ee18f88aff974257cb50ba3cf8f7d143c", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "untar": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] } } } } } -} \ No newline at end of file +} From eaef6ac9bcfef0ae173919e45178415b9d3526fa Mon Sep 17 00:00:00 2001 From: "James A. Fellows Yates" Date: Mon, 13 Mar 2023 10:57:36 +0100 Subject: [PATCH 743/789] Apply suggestions from code review --- CHANGELOG.md | 2 +- nextflow_schema.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 92b9541..c055527 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,7 +3,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). -## v1.0.0 - Dodgy Dachshund [date] +## v1.0.0 - Dodgy Dachshund [2023-03-13] Initial release of nf-core/taxprofiler, created with the [nf-core](https://nf-co.re/) template. diff --git a/nextflow_schema.json b/nextflow_schema.json index 417549e..c13fdbc 100644 --- a/nextflow_schema.json +++ b/nextflow_schema.json @@ -16,7 +16,7 @@ "type": "string", "format": "file-path", "mimetype": "text/csv", - "pattern": "^\\S+\\.(csv|yaml|yml)$", + "pattern": "^\\S+\\.(csv)$", "schema": "assets/schema_input.json", "description": "Path to comma-separated file containing information about the samples and libraries/runs.", "help_text": "You will need to create a design file with information about the samples and libraries/runs you want to running in your pipeline run. Use this parameter to specify its location. It has to be a comma-separated file with 6 columns, and a header row. See [usage docs](https://nf-co.re/taxprofiler/usage#samplesheet-input).", From 1347f27c11d7c0815f82cbbba94961fcb0bdf9bb Mon Sep 17 00:00:00 2001 From: sofstam Date: Mon, 13 Mar 2023 12:21:37 +0100 Subject: [PATCH 744/789] Update changelog after release --- CHANGELOG.md | 10 ++++++++++ nextflow.config | 2 +- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index c055527..0bfa518 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,16 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## dev + +### `Added` + +### `Fixed` + +### `Dependencies` + +### `Deprecated` + ## v1.0.0 - Dodgy Dachshund [2023-03-13] Initial release of nf-core/taxprofiler, created with the [nf-core](https://nf-co.re/) template. diff --git a/nextflow.config b/nextflow.config index 80038ea..05cd7ea 100644 --- a/nextflow.config +++ b/nextflow.config @@ -305,7 +305,7 @@ manifest { description = """Taxonomic classification and profiling of shotgun metagenomic data""" mainScript = 'main.nf' nextflowVersion = '!>=22.10.1' - version = '1.0.0' + version = '1.1.0dev' doi = '' } From 577d27042353208dbe4c65293b9bfd4f29735f1c Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Fri, 17 Mar 2023 10:14:40 +0100 Subject: [PATCH 745/789] Deactivate saving of reads and other large files for full tests --- conf/test_full.config | 92 +++++++++++++++++++++---------------------- 1 file changed, 46 insertions(+), 46 deletions(-) diff --git a/conf/test_full.config b/conf/test_full.config index e8bcb31..e540df7 100644 --- a/conf/test_full.config +++ b/conf/test_full.config @@ -19,52 +19,52 @@ params { // Genome references hostremoval_reference = 'ftp://ftp.ncbi.nlm.nih.gov/genomes/all/GCA/000/819/615/GCA_000819615.1_ViralProj14015/GCA_000819615.1_ViralProj14015_genomic.fna.gz' - save_preprocessed_reads = true - - perform_shortread_qc = true - shortread_qc_mergepairs = true - perform_shortread_complexityfilter = true - save_complexityfiltered_reads = true - - perform_longread_qc = true - perform_shortread_hostremoval = true - perform_longread_hostremoval = true - save_hostremoval_index = true - save_hostremoval_bam = true - save_hostremoval_unmapped = true - - perform_runmerging = true - save_runmerged_reads = true - - run_centrifuge = true - centrifuge_save_reads = true - - run_diamond = true - - run_kaiju = true - - run_kraken2 = true - kraken2_save_reads = true - kraken2_save_readclassification = true - kraken2_save_minimizers = true - - run_krakenuniq = true - krakenuniq_save_reads = true - krakenuniq_save_readclassifications = true - - run_bracken = true - - run_malt = true - malt_save_reads = true - malt_generate_megansummary = true - - run_metaphlan3 = true - - run_motus = true - motus_save_mgc_read_counts = true - - run_profile_standardisation = true - run_krona = true + save_preprocessed_reads = false + + perform_shortread_qc = true + shortread_qc_mergepairs = true + perform_shortread_complexityfilter = false + save_complexityfiltered_reads = false + + perform_longread_qc = true + perform_shortread_hostremoval = true + perform_longread_hostremoval = true + save_hostremoval_index = false + save_hostremoval_bam = false + save_hostremoval_unmapped = false + + perform_runmerging = true + save_runmerged_reads = false + + run_centrifuge = true + centrifuge_save_reads = false + + run_diamond = true + + run_kaiju = true + + run_kraken2 = true + kraken2_save_reads = false + kraken2_save_readclassification = false + kraken2_save_minimizers = false + + run_krakenuniq = true + krakenuniq_save_reads = false + krakenuniq_save_readclassifications = false + + run_bracken = true + + run_malt = true + malt_save_reads = false + malt_generate_megansummary = true + + run_metaphlan3 = true + + run_motus = true + motus_save_mgc_read_counts = true + + run_profile_standardisation = true + run_krona = true } cleanup = true From 142ff2f09943c603fb39e87ce13700d72cbf07aa Mon Sep 17 00:00:00 2001 From: "James A. Fellows Yates" Date: Fri, 17 Mar 2023 10:26:38 +0100 Subject: [PATCH 746/789] Apply suggestions from code review --- conf/test_full.config | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/conf/test_full.config b/conf/test_full.config index e540df7..e0673e0 100644 --- a/conf/test_full.config +++ b/conf/test_full.config @@ -53,16 +53,15 @@ params { krakenuniq_save_readclassifications = false run_bracken = true - run_malt = true malt_save_reads = false malt_generate_megansummary = true - + run_metaphlan3 = true - + run_motus = true motus_save_mgc_read_counts = true - + run_profile_standardisation = true run_krona = true } From fbecfb6f3384d0c1c42c1333e2682ac174b37adb Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Fri, 17 Mar 2023 20:47:09 +0100 Subject: [PATCH 747/789] Fix broken check for host read removal index --- CHANGELOG.md | 3 +++ workflows/taxprofiler.nf | 3 ++- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0bfa518..bd053cc 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### `Fixed` +- [#269](https://github.com/nf-core/taxprofiler/pull/269/files) Reduced output files in AWS full test output due to very large files +- [#270](https://github.com/nf-core/taxprofiler/pull/270/files) Fixed warning for host removal index parameter, and improved index checks (♥ to @prototaxites for reporting, fix by @jfy133) + ### `Dependencies` ### `Deprecated` diff --git a/workflows/taxprofiler.nf b/workflows/taxprofiler.nf index e44015f..25c8d76 100644 --- a/workflows/taxprofiler.nf +++ b/workflows/taxprofiler.nf @@ -35,7 +35,8 @@ if (params.shortread_qc_includeunmerged && !params.shortread_qc_mergepairs) exit if (params.shortread_complexityfilter_tool == 'fastp' && ( params.perform_shortread_qc == false || params.shortread_qc_tool != 'fastp' )) exit 1, "ERROR: [nf-core/taxprofiler] cannot use fastp complexity filtering if preprocessing not turned on and/or tool is not fastp. Please specify --perform_shortread_qc and/or --shortread_qc_tool 'fastp'" if (params.perform_shortread_hostremoval && !params.hostremoval_reference) { exit 1, "ERROR: [nf-core/taxprofiler] --shortread_hostremoval requested but no --hostremoval_reference FASTA supplied. Check input." } -if (!params.hostremoval_reference && params.hostremoval_reference_index) { exit 1, "ERROR: [nf-core/taxprofiler] --shortread_hostremoval_index provided but no --hostremoval_reference FASTA supplied. Check input." } +if (params.perform_shortread_hostremoval && !params.hostremoval_reference && params.shortread_hostremoval_index) { exit 1, "ERROR: [nf-core/taxprofiler] --shortread_hostremoval_index provided but no --hostremoval_reference FASTA supplied. Check input." } +if (params.perform_longread_hostremoval && !params.hostremoval_reference && params.longread_hostremoval_index) { exit 1, "ERROR: [nf-core/taxprofiler] --longread_hostremoval_index provided but no --hostremoval_reference FASTA supplied. Check input." } if (params.hostremoval_reference ) { ch_reference = file(params.hostremoval_reference) } if (params.shortread_hostremoval_index ) { ch_shortread_reference_index = Channel.fromPath(params.shortread_hostremoval_index).map{[[], it]} } else { ch_shortread_reference_index = [] } From b0939c3ae9ba08f462c52021def775fcd49aa22a Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Fri, 17 Mar 2023 21:03:54 +0100 Subject: [PATCH 748/789] Standardised taxon table and mOTU database docs improvement --- CHANGELOG.md | 2 ++ docs/usage.md | 8 ++++++-- nextflow_schema.json | 11 +++++++---- 3 files changed, 15 insertions(+), 6 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0bfa518..4e9c808 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### `Fixed` +- [#271](https://github.com/nf-core/taxprofiler/pull/271/files) Improved standardised table generation documentation nd mOTUs manual database download tutorial (♥ to @prototaxites for reporting, fix by @jfy133) + ### `Dependencies` ### `Deprecated` diff --git a/docs/usage.md b/docs/usage.md index a38931e..ee36dca 100644 --- a/docs/usage.md +++ b/docs/usage.md @@ -294,7 +294,9 @@ nf-core/taxprofiler supports generation of Krona interactive pie chart plots for ##### Multi-Table Generation -In addition to per-sample profiles, the pipeline also supports generation of 'native' multi-sample taxonomic profiles (i.e., those generated by the taxonomic profiling tools themselves or additional utility scripts provided by the tool authors). +The main multiple-sample table from nf-core/taxprofiler is from a dedicated standalone tool originally developed for the pipeline - [Taxpasta](https://taxpasta.readthedocs.io/en/latest/). When providing `--run_profile_standardisation`, every classifier/profiler and database combination will get a standardised and multi-sample taxon table in the [`taxpasta/`](https://nf-co.re/taxprofiler/output) directory. These tables are structured in the same way, to facilitate comparison between the the results of the classifier/profiler + +In addition to per-sample profiles and standardised Taxpasta output, the pipeline also supports generation of 'native' multi-sample taxonomic profiles (i.e., those generated by the taxonomic profiling tools themselves or additional utility scripts provided by the tool authors), when providing `--run_profile_standardisation` to your pipeline. These are executed on a per-database level. I.e., you will get a multi-sample taxon table for each database you provide for each tool and will be placed in the same directory as the directories containing the per-sample profiles. @@ -307,7 +309,7 @@ The following tools will produce multi-sample taxon tables: - **MetaPhlAn3** (via MetaPhlAn's `merge_metaphlan_tables.py` script) - **mOTUs** (via the `motus merge` command) -Note that the multi-sample tables from these folders are not inter-operable with each other as they can have different formats. +Note that the multi-sample tables from the 'native' tools in each folders are [not inter-operable](https://taxpasta.readthedocs.io/en/latest/tutorials/getting-started/) with each other as they can have different formats and can contain additional and different data. In this case we refer you to use the standardised and merged output from Taxpasta, as described above. ### Updating the pipeline @@ -792,6 +794,8 @@ More information on the MetaPhlAn3 database can be found [here](https://github.c mOTUs does not provide the ability to construct custom databases. Therefore we recommend to use the the prebuilt database of marker genes provided by the developers. +> ⚠️ **Do not change the directory name of the resulting database if moving to a central location** The database name of `db_mOTU/` is hardcoded in the mOTUs tool + To do this you need to have `mOTUs` installed on your machine. ```bash diff --git a/nextflow_schema.json b/nextflow_schema.json index c13fdbc..1941893 100644 --- a/nextflow_schema.json +++ b/nextflow_schema.json @@ -467,15 +467,18 @@ }, "motus_use_relative_abundance": { "type": "boolean", - "description": "Turn on printing relative abundance instead of counts." + "description": "Turn on printing relative abundance instead of counts.", + "fa_icon": "fas fa-percent" }, "motus_save_mgc_read_counts": { "type": "boolean", - "description": "Turn on saving the mgc reads count." + "description": "Turn on saving the mgc reads count.", + "fa_icon": "fas fa-save" }, "motus_remove_ncbi_ids": { "type": "boolean", - "description": "Turn on removing NCBI taxonomic IDs." + "description": "Turn on removing NCBI taxonomic IDs.", + "fa_icon": "fas fa-address-card" } }, "fa_icon": "fas fa-align-center" @@ -490,7 +493,7 @@ "type": "boolean", "fa_icon": "fas fa-toggle-on", "description": "Turn on standardisation of taxon tables across profilers", - "help_text": "Turns on standardisation of output OTU tables across all tools; each into a TSV format following the following scheme:\n\n|TAXON | SAMPLE_A | SAMPLE_B |\n|-------------|----------------|-----------------|\n| taxon_a | 32 | 123 |\n| taxon_b | 1 | 5 |\n\nThis currently only is generated for mOTUs." + "help_text": "Turns on standardisation of output OTU tables across all tools.\n\nThis happens in two forms, firstly - if available - by a given classifiers/profilers 'native' profile merger and standardisation (for Bracken, Kaiju, Kraken, Centrifuge, MetaPhlAn3, mOTUs), and secondly for _all_ classifier/profilers in the pipeline using [`taxpasta`](https://taxpasta.readthedocs.io).\n\nIn the latter case, taxpasta generates a standardised output as follows:\n\n|TAXON | SAMPLE_A | SAMPLE_B |\n|-------------|----------------|-----------------|\n| taxon_a | 32 | 123 |\n| taxon_b | 1 | 5 |\n\nwhereas all other 'native' tools have varying format outputs. See pipeline [output](https://nf-co.re/taxprofiler) documentation for more information." }, "standardisation_motus_generatebiom": { "type": "boolean", From f9af0040bfdb058d422f1a95df391160f0e1d675 Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Fri, 17 Mar 2023 22:30:29 +0100 Subject: [PATCH 749/789] Add multi-run meta information --- subworkflows/local/input_check.nf | 45 ++++++++++++++++++++++++------- 1 file changed, 35 insertions(+), 10 deletions(-) diff --git a/subworkflows/local/input_check.nf b/subworkflows/local/input_check.nf index 5764b72..1c967e2 100644 --- a/subworkflows/local/input_check.nf +++ b/subworkflows/local/input_check.nf @@ -9,35 +9,58 @@ workflow INPUT_CHECK { samplesheet // file: /path/to/samplesheet.csv main: - parsed_samplesheet = SAMPLESHEET_CHECK ( samplesheet ) + + // Table to list, group per sample, detect if sample has multi-run, + // then spread back to per-run rows but with multi-run info added to meta + ch_split_samplesheet = SAMPLESHEET_CHECK ( samplesheet ) .csv .splitCsv ( header:true, sep:',' ) + .map{ + row -> + [ [ row.sample.toString() ], row ] + } + .groupTuple() + .map { + sample, rows -> + def is_multirun = rows.size() > 1 + [ is_multirun, rows ] + } + .transpose(by: 1) + .map { + is_multirun, row -> + row['is_multirun'] = is_multirun + return row + } + + + ch_parsed_samplesheet = ch_split_samplesheet .branch { row -> fasta: row.fasta != '' nanopore: row.instrument_platform == 'OXFORD_NANOPORE' fastq: true } - fastq = parsed_samplesheet.fastq + ch_fastq = ch_parsed_samplesheet.fastq .map { create_fastq_channel(it) } - nanopore = parsed_samplesheet.nanopore + ch_nanopore = ch_parsed_samplesheet.nanopore .map { create_fastq_channel(it) } - fasta = parsed_samplesheet.fasta + ch_fasta = ch_parsed_samplesheet.fasta .map { create_fasta_channel(it) } + .dump(tag: "boop") emit: - fastq = fastq ?: [] // channel: [ val(meta), [ reads ] ] - nanopore = nanopore ?: [] // channel: [ val(meta), [ reads ] ] - fasta = fasta ?: [] // channel: [ val(meta), fasta ] - versions = SAMPLESHEET_CHECK.out.versions // channel: [ versions.yml ] + fastq = ch_fastq ?: [] // channel: [ val(meta), [ reads ] ] + nanopore = ch_nanopore ?: [] // channel: [ val(meta), [ reads ] ] + fasta = ch_fasta ?: [] // channel: [ val(meta), fasta ] + versions = SAMPLESHEET_CHECK.out.versions // channel: [ versions.yml ] } // Function to get list of [ meta, [ fastq_1, fastq_2 ] ] def create_fastq_channel(LinkedHashMap row) { // create meta map - def meta = row.subMap(['sample', 'run_accession', 'instrument_platform']) + def meta = row.subMap(['sample', 'run_accession', 'instrument_platform', 'is_multirun']) meta.id = meta.sample meta.single_end = row.single_end.toBoolean() meta.is_fasta = false @@ -66,7 +89,9 @@ def create_fastq_channel(LinkedHashMap row) { // Function to get list of [ meta, fasta ] def create_fasta_channel(LinkedHashMap row) { - def meta = row.subMap(['sample', 'run_accession', 'instrument_platform']) + + // don't include multi-run information as we don't do FASTA run merging + def meta = row.subMap(['sample', 'run_accession', 'instrument_platform' ]) meta.id = meta.sample meta.single_end = true meta.is_fasta = true From 68d131af34e0e1646c525daa9ee81008abb69f25 Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Fri, 17 Mar 2023 22:30:43 +0100 Subject: [PATCH 750/789] Remove leftover dump --- subworkflows/local/input_check.nf | 1 - 1 file changed, 1 deletion(-) diff --git a/subworkflows/local/input_check.nf b/subworkflows/local/input_check.nf index 1c967e2..c912d14 100644 --- a/subworkflows/local/input_check.nf +++ b/subworkflows/local/input_check.nf @@ -48,7 +48,6 @@ workflow INPUT_CHECK { ch_fasta = ch_parsed_samplesheet.fasta .map { create_fasta_channel(it) } - .dump(tag: "boop") emit: fastq = ch_fastq ?: [] // channel: [ val(meta), [ reads ] ] From 74bc6b7dd3baf97837e1602c08d202ae123123b4 Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Fri, 17 Mar 2023 22:38:05 +0100 Subject: [PATCH 751/789] Logical ordering and improved commenting --- subworkflows/local/input_check.nf | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/subworkflows/local/input_check.nf b/subworkflows/local/input_check.nf index c912d14..a8862b6 100644 --- a/subworkflows/local/input_check.nf +++ b/subworkflows/local/input_check.nf @@ -23,16 +23,16 @@ workflow INPUT_CHECK { .map { sample, rows -> def is_multirun = rows.size() > 1 - [ is_multirun, rows ] + [ rows, is_multirun ] } - .transpose(by: 1) + .transpose(by: 0) .map { - is_multirun, row -> + row, is_multirun -> row['is_multirun'] = is_multirun return row } - + // Split for context-dependent channel generation ch_parsed_samplesheet = ch_split_samplesheet .branch { row -> fasta: row.fasta != '' @@ -40,8 +40,10 @@ workflow INPUT_CHECK { fastq: true } + // Channel generation ch_fastq = ch_parsed_samplesheet.fastq .map { create_fastq_channel(it) } + .dump(tag: "boop") ch_nanopore = ch_parsed_samplesheet.nanopore .map { create_fastq_channel(it) } From 3b90064ba4d50c7010fdb4eb302686a2006f8bf1 Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Wed, 22 Mar 2023 15:39:45 +0100 Subject: [PATCH 752/789] Start adding conditions in modules.conf - non-cat not working --- conf/modules.config | 147 +++++++++++++++++++++--------- nextflow.config | 2 + subworkflows/local/input_check.nf | 3 +- 3 files changed, 107 insertions(+), 45 deletions(-) diff --git a/conf/modules.config b/conf/modules.config index ee1a3d2..5662cb4 100644 --- a/conf/modules.config +++ b/conf/modules.config @@ -71,6 +71,12 @@ process { path: { "${params.outdir}/fastp" }, mode: params.publish_dir_mode, pattern: '*.{log,html,json}' + ], + [ + path: { "${params.outdir}/analysis_ready_reads" }, + mode: params.publish_dir_mode, + pattern: '*.fastq.gz', + enabled: !params.perform_runmerging && !params.perform_shortread_hostremoval && !params.shortread_complexityfilter_tool && !params.perform_shortread_qc && params.save_analysis_ready_reads ] ] } @@ -99,6 +105,12 @@ process { path: { "${params.outdir}/fastp" }, mode: params.publish_dir_mode, pattern: '*.{log,html,json}' + ], + [ + path: { "${params.outdir}/analysis_ready_reads" }, + mode: params.publish_dir_mode, + pattern: '*.fastq.gz', + enabled: !params.perform_runmerging && !params.perform_shortread_hostremoval && !params.shortread_complexityfilter_tool && !params.perform_shortread_qc && params.save_analysis_ready_reads ] ] } @@ -122,6 +134,12 @@ process { path: { "${params.outdir}/adapterremoval" }, mode: params.publish_dir_mode, pattern: '*.settings' + ], + [ + path: { "${params.outdir}/analysis_ready_reads" }, + mode: params.publish_dir_mode, + pattern: '*.fastq.gz', + enabled: !params.perform_runmerging && !params.perform_shortread_hostremoval && !params.shortread_complexityfilter_tool && !params.perform_shortread_qc && params.save_analysis_ready_reads ] ] } @@ -148,6 +166,12 @@ process { path: { "${params.outdir}/adapterremoval" }, mode: params.publish_dir_mode, pattern: '*.settings' + ], + [ + path: { "${params.outdir}/analysis_ready_reads" }, + mode: params.publish_dir_mode, + pattern: '*.fastq.gz', + enabled: !params.perform_runmerging && !params.perform_shortread_hostremoval && !params.shortread_complexityfilter_tool && !params.perform_shortread_qc && params.save_analysis_ready_reads ] ] } @@ -166,6 +190,7 @@ process { mode: params.publish_dir_mode, pattern: '*.log' ] + // TODO ANALYSIS READY ] } @@ -190,14 +215,78 @@ process { pattern: '*.log' ] ] + // TODO ANALYSIS READY + } + + withName: BBMAP_BBDUK { + ext.args = [ + "entropy=${params.shortread_complexityfilter_entropy}", + "entropywindow=${params.shortread_complexityfilter_bbduk_windowsize}", + params.shortread_complexityfilter_bbduk_mask ? "entropymask=t" : "entropymask=f" + ].join(' ').trim() + ext.prefix = { "${meta.id}_${meta.run_accession}" } + publishDir = [ + [ + path: { "${params.outdir}/bbduk/" }, + mode: params.publish_dir_mode, + pattern: '*.{fastq.gz,log}', + enabled: params.save_complexityfiltered_reads + ], + [ + path: { "${params.outdir}/bbduk/" }, + mode: params.publish_dir_mode, + pattern: '*.log' + ], + [ + path: { "${params.outdir}/analysis_ready_reads" }, + mode: params.publish_dir_mode, + pattern: '*.fastq.gz', + enabled: !params.perform_runmerging && !params.perform_shortread_hostremoval && params.shortread_complexityfilter_tool && params.save_analysis_ready_reads + ] + ] + } + + withName: PRINSEQPLUSPLUS { + ext.args = [ + params.shortread_complexityfilter_prinseqplusplus_mode == 'dust' ? "-lc_dust=${params.shortread_complexityfilter_prinseqplusplus_dustscore}" : "-lc_entropy=${params.shortread_complexityfilter_entropy}", + "-trim_qual_left=0 -trim_qual_left=0 -trim_qual_window=0 -trim_qual_step=0", + ].join(' ').trim() + ext.prefix = { "${meta.id}_${meta.run_accession}" } + publishDir = [ + [ + path: { "${params.outdir}/prinseqplusplus/" }, + mode: params.publish_dir_mode, + pattern: '*{_good_out.fastq.gz,_good_out_R1.fastq.gz,_good_out_R2.fastq.gz}', + enabled: params.save_complexityfiltered_reads + ], + [ + path: { "${params.outdir}/prinseqplusplus/" }, + mode: params.publish_dir_mode, + pattern: '*.log' + ], + [ + path: { "${params.outdir}/analysis_ready_reads" }, + mode: params.publish_dir_mode, + pattern: '*.fastq.gz', + enabled: !params.perform_runmerging && !params.perform_shortread_hostremoval && params.shortread_complexityfilter_tool && params.save_analysis_ready_reads + ] + ] } withName: BOWTIE2_BUILD { publishDir = [ + [ path: { "${params.outdir}/bowtie2/build" }, mode: params.publish_dir_mode, pattern: 'bowtie2', enabled: params.save_hostremoval_index + ], + [ + path: { "${params.outdir}/analysis_ready_reads" }, + mode: params.publish_dir_mode, + pattern: '*.fastq.gz', + enabled: !params.perform_runmerging && !params.perform_shortread_hostremoval && !params.shortread_complexityfilter_tool && !params.perform_shortread_qc && params.save_analysis_ready_reads + ] ] } @@ -221,6 +310,12 @@ process { mode: params.publish_dir_mode, pattern: '*.fastq.gz', enabled: params.save_hostremoval_unmapped + ], + [ + path: { "${params.outdir}/analysis_ready_reads" }, + mode: params.publish_dir_mode, + pattern: '*.fastq.gz', + saveAs: { (( !params.perform_runmerging | params.perform_runmerging && !${meta.is_multirun} ) && params.perform_shortread_hostremoval && params.save_analysis_ready_reads ) ? it : null } ] ] } @@ -243,6 +338,7 @@ process { pattern: '*.bam', enabled: params.save_hostremoval_bam ] + // TODO ANALYSIS READY READS } withName: SAMTOOLS_VIEW { @@ -269,59 +365,24 @@ process { ] } - withName: BBMAP_BBDUK { - ext.args = [ - "entropy=${params.shortread_complexityfilter_entropy}", - "entropywindow=${params.shortread_complexityfilter_bbduk_windowsize}", - params.shortread_complexityfilter_bbduk_mask ? "entropymask=t" : "entropymask=f" - ].join(' ').trim() - ext.prefix = { "${meta.id}_${meta.run_accession}" } - publishDir = [ - [ - path: { "${params.outdir}/bbduk/" }, - mode: params.publish_dir_mode, - pattern: '*.{fastq.gz,log}', - enabled: params.save_complexityfiltered_reads - ], - [ - path: { "${params.outdir}/bbduk/" }, - mode: params.publish_dir_mode, - pattern: '*.log' - ] - ] - } - - withName: PRINSEQPLUSPLUS { - ext.args = [ - params.shortread_complexityfilter_prinseqplusplus_mode == 'dust' ? "-lc_dust=${params.shortread_complexityfilter_prinseqplusplus_dustscore}" : "-lc_entropy=${params.shortread_complexityfilter_entropy}", - "-trim_qual_left=0 -trim_qual_left=0 -trim_qual_window=0 -trim_qual_step=0", - ].join(' ').trim() - ext.prefix = { "${meta.id}_${meta.run_accession}" } + withName: CAT_FASTQ { + ext.prefix = { "${meta.id}" } publishDir = [ [ - path: { "${params.outdir}/prinseqplusplus/" }, + path: { "${params.outdir}/run_merging/" }, mode: params.publish_dir_mode, - pattern: '*{_good_out.fastq.gz,_good_out_R1.fastq.gz,_good_out_R2.fastq.gz}', - enabled: params.save_complexityfiltered_reads + pattern: '*.fastq.gz', + enabled: params.save_runmerged_reads ], [ - path: { "${params.outdir}/prinseqplusplus/" }, + path: { "${params.outdir}/analysis_ready_reads" }, mode: params.publish_dir_mode, - pattern: '*.log' + pattern: '*.fastq.gz', + enabled: params.perform_runmerging && params.save_analysis_ready_reads ] ] } - withName: CAT_FASTQ { - ext.prefix = { "${meta.id}" } - publishDir = [ - path: { "${params.outdir}/run_merging/" }, - mode: params.publish_dir_mode, - pattern: '*.fastq.gz', - enabled: params.save_runmerged_reads - ] - } - withName: MALT_RUN { ext.args = { "${meta.db_params} -m ${params.malt_mode}" } // one run with multiple samples, so fix ID to just db name to ensure clean log name diff --git a/nextflow.config b/nextflow.config index 05cd7ea..0e6850f 100644 --- a/nextflow.config +++ b/nextflow.config @@ -105,6 +105,8 @@ params { save_hostremoval_bam = false save_hostremoval_unmapped = false + // Publishing final reads going into profiling + save_analysis_ready_reads = false // MALT run_malt = false diff --git a/subworkflows/local/input_check.nf b/subworkflows/local/input_check.nf index a8862b6..f6ac420 100644 --- a/subworkflows/local/input_check.nf +++ b/subworkflows/local/input_check.nf @@ -10,7 +10,7 @@ workflow INPUT_CHECK { main: - // Table to list, group per sample, detect if sample has multi-run, + // Table to list, group per sample, detect if sample has multi-run, // then spread back to per-run rows but with multi-run info added to meta ch_split_samplesheet = SAMPLESHEET_CHECK ( samplesheet ) .csv @@ -43,7 +43,6 @@ workflow INPUT_CHECK { // Channel generation ch_fastq = ch_parsed_samplesheet.fastq .map { create_fastq_channel(it) } - .dump(tag: "boop") ch_nanopore = ch_parsed_samplesheet.nanopore .map { create_fastq_channel(it) } From 102d53bd752bdae0f48bc4151d39ebac1adb3cdd Mon Sep 17 00:00:00 2001 From: sofstam Date: Thu, 23 Mar 2023 15:30:07 +0100 Subject: [PATCH 753/789] Subsitute samtools/bam2fq with samtools/fastq --- docs/output.md | 10 +- modules.json | 177 ++++++++++++++++----- modules/nf-core/samtools/fastq/main.nf | 44 +++++ modules/nf-core/samtools/fastq/meta.yml | 62 ++++++++ nextflow_schema.json | 2 +- subworkflows/local/longread_hostremoval.nf | 8 +- 6 files changed, 250 insertions(+), 53 deletions(-) create mode 100644 modules/nf-core/samtools/fastq/main.nf create mode 100644 modules/nf-core/samtools/fastq/meta.yml diff --git a/docs/output.md b/docs/output.md index 4ef6770..4240b25 100644 --- a/docs/output.md +++ b/docs/output.md @@ -21,7 +21,7 @@ The pipeline is built using [Nextflow](https://www.nextflow.io/) and processes d - [Bowtie2](#bowtie2) - Host removal for Illumina reads - [minimap2](#minimap2) - Host removal for Nanopore reads - [SAMtools stats](#samtools-stats) - Statistics from host removal -- [SAMtools bam2fq](#samtools-bam2fq) - Converts unmapped BAM file to fastq format (minimap2 only) +- [SAMtools fastq](#samtools-fastq) - Converts unmapped BAM file to fastq format (minimap2 only) - [Bracken](#bracken) - Taxonomic classifier using k-mers and abundance estimations - [Kraken2](#kraken2) - Taxonomic classifier using exact k-mer matches - [KrakenUniq](#krakenuniq) - Taxonomic classifier that combines the k-mer-based classification and the number of unique k-mers found in each species @@ -201,7 +201,7 @@ It is used with nf-core/taxprofiler to allow removal of 'host' (e.g. human) and/ By default nf-core/taxprofiler will only provide the `.log` file if host removal is turned on. You will only have a `.bam` file if you specify `--save_hostremoval_bam`. This will contain _both_ mapped and unmapped reads. You will only get FASTQ files if you specify to save `--save_hostremoval_unmapped` - these contain only unmapped reads. -> ℹ️ Unmapped reads in FASTQ are only found in this directory for short-reads, for long-reads see [`samtools/bam2fq/`](#samtools-bam2fq) +> ℹ️ Unmapped reads in FASTQ are only found in this directory for short-reads, for long-reads see [`samtools/fastq/`](#samtools-fastq) > ⚠️ The resulting `.fastq` files may _not_ always be the 'final' reads that go into taxprofiling, if you also run other steps such as run merging etc.. @@ -228,11 +228,11 @@ By default, nf-core/taxprofiler will only provide the `.bam` file containing map > ℹ️ minimap2 is not yet supported as a module in MultiQC and therefore there is no dedicated section in the MultiQC HTML. Rather, alignment statistics to host genome is reported via samtools stats module in MultiQC report. -> ℹ️ Unlike Bowtie2, minimap2 does not produce an unmapped FASTQ file by itself. See [`samtools/bam2fq`](#samtools-bam2fq) +> ℹ️ Unlike Bowtie2, minimap2 does not produce an unmapped FASTQ file by itself. See [`samtools/fastq`](#samtools-fastq) -### SAMtools bam2fq +### SAMtools fastq -[SAMtools bam2fq](http://www.htslib.org/doc/1.1/samtools.html) converts a `.sam`, `.bam`, or `.cram` alignment file to FASTQ format +[SAMtools fastq](http://www.htslib.org/doc/1.1/samtools.html) converts a `.sam`, `.bam`, or `.cram` alignment file to FASTQ format
    Output files diff --git a/modules.json b/modules.json index 1a5cd64..b61b140 100644 --- a/modules.json +++ b/modules.json @@ -8,217 +8,308 @@ "adapterremoval": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "bbmap/bbduk": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "bowtie2/align": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "bowtie2/build": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "bracken/bracken": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "bracken/combinebrackenoutputs": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "cat/fastq": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "centrifuge/centrifuge": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "centrifuge/kreport": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "custom/dumpsoftwareversions": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "diamond/blastx": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "falco": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": ["modules"], + "installed_by": [ + "modules" + ], "patch": "modules/nf-core/falco/falco.diff" }, "fastp": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "fastqc": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "filtlong": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "gunzip": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "kaiju/kaiju": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "kaiju/kaiju2krona": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "kaiju/kaiju2table": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "kraken2/kraken2": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "krakentools/combinekreports": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "krakentools/kreport2krona": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "krakenuniq/preloadedkrakenuniq": { "branch": "master", "git_sha": "a6eb17f65b3ee5761c25c075a6166c9f76733cee", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "krona/ktimporttaxonomy": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "krona/ktimporttext": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "malt/run": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "megan/rma2info": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "metaphlan3/mergemetaphlantables": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "metaphlan3/metaphlan3": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "minimap2/align": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "minimap2/index": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "motus/merge": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "motus/profile": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "multiqc": { "branch": "master", "git_sha": "ee80d14721e76e2e079103b8dcd5d57129e584ba", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "porechop/porechop": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": ["modules"], + "installed_by": [ + "modules" + ], "patch": "modules/nf-core/porechop/porechop/porechop-porechop.diff" }, "prinseqplusplus": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "samtools/bam2fq": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] + }, + "samtools/fastq": { + "branch": "master", + "git_sha": "0f8a77ff00e65eaeebc509b8156eaa983192474b", + "installed_by": [ + "modules" + ] }, "samtools/index": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "samtools/stats": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "samtools/view": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "taxpasta/merge": { "branch": "master", "git_sha": "ffa9641ee18f88aff974257cb50ba3cf8f7d143c", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "untar": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] } } } } } -} +} \ No newline at end of file diff --git a/modules/nf-core/samtools/fastq/main.nf b/modules/nf-core/samtools/fastq/main.nf new file mode 100644 index 0000000..c0b36f6 --- /dev/null +++ b/modules/nf-core/samtools/fastq/main.nf @@ -0,0 +1,44 @@ +process SAMTOOLS_FASTQ { + tag "$meta.id" + label 'process_low' + + conda "bioconda::samtools=1.16.1" + container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? + 'https://depot.galaxyproject.org/singularity/samtools:1.16.1--h6899075_1' : + 'quay.io/biocontainers/samtools:1.16.1--h6899075_1' }" + + input: + tuple val(meta), path(input) + val(interleave) + + output: + tuple val(meta), path("*_{1,2}.fastq.gz") , optional:true, emit: fastq + tuple val(meta), path("*_interleaved.fastq.gz"), optional:true, emit: interleaved + tuple val(meta), path("*_singleton.fastq.gz") , optional:true, emit: singleton + tuple val(meta), path("*_other.fastq.gz") , optional:true, emit: other + path "versions.yml" , emit: versions + + when: + task.ext.when == null || task.ext.when + + script: + def args = task.ext.args ?: '' + def prefix = task.ext.prefix ?: "${meta.id}" + def output = ( interleave && ! meta.single_end ) ? "> ${prefix}_interleaved.fastq.gz" : + meta.single_end ? "-1 ${prefix}_1.fastq.gz -s ${prefix}_singleton.fastq.gz" : + "-1 ${prefix}_1.fastq.gz -2 ${prefix}_2.fastq.gz -s ${prefix}_singleton.fastq.gz" + """ + samtools \\ + fastq \\ + $args \\ + --threads ${task.cpus-1} \\ + -0 ${prefix}_other.fastq.gz \\ + $input \\ + $output + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + samtools: \$(echo \$(samtools --version 2>&1) | sed 's/^.*samtools //; s/Using.*\$//') + END_VERSIONS + """ +} diff --git a/modules/nf-core/samtools/fastq/meta.yml b/modules/nf-core/samtools/fastq/meta.yml new file mode 100644 index 0000000..b1a1ed3 --- /dev/null +++ b/modules/nf-core/samtools/fastq/meta.yml @@ -0,0 +1,62 @@ +name: samtools_fastq +description: Converts a SAM/BAM/CRAM file to FASTQ +keywords: + - bam + - sam + - cram + - fastq +tools: + - samtools: + description: | + SAMtools is a set of utilities for interacting with and post-processing + short DNA sequence read alignments in the SAM, BAM and CRAM formats, written by Heng Li. + These files are generated as output by short read aligners like BWA. + homepage: http://www.htslib.org/ + documentation: http://www.htslib.org/doc/samtools.html + doi: 10.1093/bioinformatics/btp352 + licence: ["MIT"] + +input: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - input: + type: file + description: BAM/CRAM/SAM file + pattern: "*.{bam,cram,sam}" + - interleave: + type: boolean + description: Set true for interleaved fastq file + +output: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - versions: + type: file + description: File containing software versions + pattern: "versions.yml" + - fastq: + type: file + description: Compressed FASTQ file(s) with reads with either the READ1 or READ2 flag set in separate files. + pattern: "*_{1,2}.fastq.gz" + - interleaved: + type: file + description: Compressed FASTQ file with reads with either the READ1 or READ2 flag set in a combined file. Needs collated input file. + pattern: "*_interleaved.fastq.gz" + - singleton: + type: file + description: Compressed FASTQ file with singleton reads + pattern: "*_singleton.fastq.gz" + - other: + type: file + description: Compressed FASTQ file with reads with either both READ1 and READ2 flags set or unset + pattern: "*_other.fastq.gz" + +authors: + - "@priyanka-surana" + - "@suzannejin" diff --git a/nextflow_schema.json b/nextflow_schema.json index 1941893..943d436 100644 --- a/nextflow_schema.json +++ b/nextflow_schema.json @@ -304,7 +304,7 @@ "type": "boolean", "fa_icon": "fas fa-save", "description": "Save reads from samples that went through the host-removal step", - "help_text": "Save only the reads NOT mapped to the reference genome in FASTQ format (as exported from `samtools view` and `bam2fq`).\n\nThis can be useful if you wish to perform other analyses on the off-target reads from the host mapping, such as manual profiling or _de novo_ assembly." + "help_text": "Save only the reads NOT mapped to the reference genome in FASTQ format (as exported from `samtools view` and `fastq`).\n\nThis can be useful if you wish to perform other analyses on the off-target reads from the host mapping, such as manual profiling or _de novo_ assembly." } }, "fa_icon": "fas fa-user-times" diff --git a/subworkflows/local/longread_hostremoval.nf b/subworkflows/local/longread_hostremoval.nf index 83660fe..7242bbd 100644 --- a/subworkflows/local/longread_hostremoval.nf +++ b/subworkflows/local/longread_hostremoval.nf @@ -5,7 +5,7 @@ include { MINIMAP2_INDEX } from '../../modules/nf-core/minimap2/index/main' include { MINIMAP2_ALIGN } from '../../modules/nf-core/minimap2/align/main' include { SAMTOOLS_VIEW } from '../../modules/nf-core/samtools/view/main' -include { SAMTOOLS_BAM2FQ } from '../../modules/nf-core/samtools/bam2fq/main' +include { SAMTOOLS_FASTQ } from '../../modules/nf-core/samtools/fastq/main' include { SAMTOOLS_INDEX } from '../../modules/nf-core/samtools/index/main' include { SAMTOOLS_STATS } from '../../modules/nf-core/samtools/stats/main' @@ -38,8 +38,8 @@ workflow LONGREAD_HOSTREMOVAL { SAMTOOLS_VIEW ( ch_minimap2_mapped , [], [] ) ch_versions = ch_versions.mix( SAMTOOLS_VIEW.out.versions.first() ) - SAMTOOLS_BAM2FQ ( SAMTOOLS_VIEW.out.bam, false ) - ch_versions = ch_versions.mix( SAMTOOLS_BAM2FQ.out.versions.first() ) + SAMTOOLS_FASTQ ( SAMTOOLS_VIEW.out.bam, false ) + ch_versions = ch_versions.mix( SAMTOOLS_FASTQ.out.versions.first() ) // Indexing whole BAM for host removal statistics SAMTOOLS_INDEX ( MINIMAP2_ALIGN.out.bam ) @@ -54,7 +54,7 @@ workflow LONGREAD_HOSTREMOVAL { emit: stats = SAMTOOLS_STATS.out.stats //channel: [val(meta), [reads ] ] - reads = SAMTOOLS_BAM2FQ.out.reads // channel: [ val(meta), [ reads ] ] + reads = SAMTOOLS_FASTQ.out.fastq // channel: [ val(meta), [ reads ] ] versions = ch_versions // channel: [ versions.yml ] mqc = ch_multiqc_files } From 85905127b85df2055fa0b9483068800644086b64 Mon Sep 17 00:00:00 2001 From: sofstam Date: Thu, 23 Mar 2023 15:34:47 +0100 Subject: [PATCH 754/789] Update changelog --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index edcdf11..6d289cb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -12,6 +12,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#271](https://github.com/nf-core/taxprofiler/pull/271/files) Improved standardised table generation documentation nd mOTUs manual database download tutorial (♥ to @prototaxites for reporting, fix by @jfy133) - [#269](https://github.com/nf-core/taxprofiler/pull/269/files) Reduced output files in AWS full test output due to very large files - [#270](https://github.com/nf-core/taxprofiler/pull/270/files) Fixed warning for host removal index parameter, and improved index checks (♥ to @prototaxites for reporting, fix by @jfy133) +- [#274](https://github.com/nf-core/taxprofiler/pull/274/files) Substituted the samtools/bam2fq module with samtools/fastq module (fix by @sofstam) ### `Dependencies` From 6895e457682d27107b33829fe7f2115ee5b10355 Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Thu, 23 Mar 2023 15:46:02 +0100 Subject: [PATCH 755/789] Fix a few conditional bugs and related --- conf/modules.config | 80 ++++++++++++++++++++++++++-------------- docs/output.md | 19 +++++----- nextflow.config | 2 +- workflows/taxprofiler.nf | 9 +++-- 4 files changed, 70 insertions(+), 40 deletions(-) diff --git a/conf/modules.config b/conf/modules.config index 5662cb4..0e7e2ea 100644 --- a/conf/modules.config +++ b/conf/modules.config @@ -73,10 +73,10 @@ process { pattern: '*.{log,html,json}' ], [ - path: { "${params.outdir}/analysis_ready_reads" }, + path: { "${params.outdir}/analysis_ready_fastqs" }, mode: params.publish_dir_mode, pattern: '*.fastq.gz', - enabled: !params.perform_runmerging && !params.perform_shortread_hostremoval && !params.shortread_complexityfilter_tool && !params.perform_shortread_qc && params.save_analysis_ready_reads + enabled: !params.perform_runmerging && !params.perform_shortread_hostremoval && !params.shortread_complexityfilter_tool && params.perform_shortread_qc && params.save_analysis_ready_fastqs ] ] } @@ -107,10 +107,10 @@ process { pattern: '*.{log,html,json}' ], [ - path: { "${params.outdir}/analysis_ready_reads" }, + path: { "${params.outdir}/analysis_ready_fastqs" }, mode: params.publish_dir_mode, pattern: '*.fastq.gz', - enabled: !params.perform_runmerging && !params.perform_shortread_hostremoval && !params.shortread_complexityfilter_tool && !params.perform_shortread_qc && params.save_analysis_ready_reads + enabled: !params.perform_runmerging && !params.perform_shortread_hostremoval && !params.shortread_complexityfilter_tool && params.perform_shortread_qc && params.save_analysis_ready_fastqs ] ] } @@ -136,10 +136,10 @@ process { pattern: '*.settings' ], [ - path: { "${params.outdir}/analysis_ready_reads" }, + path: { "${params.outdir}/analysis_ready_fastqs" }, mode: params.publish_dir_mode, pattern: '*.fastq.gz', - enabled: !params.perform_runmerging && !params.perform_shortread_hostremoval && !params.shortread_complexityfilter_tool && !params.perform_shortread_qc && params.save_analysis_ready_reads + enabled: !params.perform_runmerging && !params.perform_shortread_hostremoval && !params.shortread_complexityfilter_tool && params.perform_shortread_qc && params.save_analysis_ready_fastqs ] ] } @@ -166,12 +166,19 @@ process { path: { "${params.outdir}/adapterremoval" }, mode: params.publish_dir_mode, pattern: '*.settings' - ], + ] + ] + } + + // AdapterRemoval separate output merging + withName: CAT_FASTQ { + ext.prefix = { "${meta.id}_${meta.run_accession}" } + publishDir = [ [ - path: { "${params.outdir}/analysis_ready_reads" }, + path: { "${params.outdir}/analysis_ready_fastqs" }, mode: params.publish_dir_mode, pattern: '*.fastq.gz', - enabled: !params.perform_runmerging && !params.perform_shortread_hostremoval && !params.shortread_complexityfilter_tool && !params.perform_shortread_qc && params.save_analysis_ready_reads + enabled: !params.perform_runmerging && !params.perform_shortread_hostremoval && !params.shortread_complexityfilter_tool && params.perform_shortread_qc && params.save_analysis_ready_fastqs ] ] } @@ -189,8 +196,13 @@ process { path: { "${params.outdir}/porechop" }, mode: params.publish_dir_mode, pattern: '*.log' + ], + [ + path: { "${params.outdir}/analysis_ready_fastqs" }, + mode: params.publish_dir_mode, + pattern: '*_porechopped.fastq.gz', + enabled: !params.perform_runmerging && !params.perform_longread_hostremoval && params.longread_qc_skipqualityfilter && !params.longread_qc_skipadaptertrim && params.perform_longread_qc && params.save_analysis_ready_fastqs ] - // TODO ANALYSIS READY ] } @@ -213,9 +225,14 @@ process { path: { "${params.outdir}/filtlong" }, mode: params.publish_dir_mode, pattern: '*.log' + ], + [ + path: { "${params.outdir}/analysis_ready_fastqs" }, + mode: params.publish_dir_mode, + pattern: '*.fastq.gz', + enabled: !params.perform_runmerging && !params.perform_longread_hostremoval && !params.longread_qc_skipqualityfilter && params.perform_longread_qc && params.save_analysis_ready_fastqs ] ] - // TODO ANALYSIS READY } withName: BBMAP_BBDUK { @@ -238,10 +255,10 @@ process { pattern: '*.log' ], [ - path: { "${params.outdir}/analysis_ready_reads" }, + path: { "${params.outdir}/analysis_ready_fastqs" }, mode: params.publish_dir_mode, pattern: '*.fastq.gz', - enabled: !params.perform_runmerging && !params.perform_shortread_hostremoval && params.shortread_complexityfilter_tool && params.save_analysis_ready_reads + enabled: !params.perform_runmerging && !params.perform_shortread_hostremoval && params.shortread_complexityfilter_tool && params.save_analysis_ready_fastqs ] ] } @@ -265,10 +282,10 @@ process { pattern: '*.log' ], [ - path: { "${params.outdir}/analysis_ready_reads" }, + path: { "${params.outdir}/analysis_ready_fastqs" }, mode: params.publish_dir_mode, pattern: '*.fastq.gz', - enabled: !params.perform_runmerging && !params.perform_shortread_hostremoval && params.shortread_complexityfilter_tool && params.save_analysis_ready_reads + enabled: !params.perform_runmerging && !params.perform_shortread_hostremoval && params.shortread_complexityfilter_tool && params.save_analysis_ready_fastqs ] ] } @@ -282,10 +299,10 @@ process { enabled: params.save_hostremoval_index ], [ - path: { "${params.outdir}/analysis_ready_reads" }, + path: { "${params.outdir}/analysis_ready_fastqs" }, mode: params.publish_dir_mode, pattern: '*.fastq.gz', - enabled: !params.perform_runmerging && !params.perform_shortread_hostremoval && !params.shortread_complexityfilter_tool && !params.perform_shortread_qc && params.save_analysis_ready_reads + enabled: !params.perform_runmerging && !params.perform_shortread_hostremoval && !params.shortread_complexityfilter_tool && !params.perform_shortread_qc && params.save_analysis_ready_fastqs ] ] } @@ -312,10 +329,11 @@ process { enabled: params.save_hostremoval_unmapped ], [ - path: { "${params.outdir}/analysis_ready_reads" }, + path: { "${params.outdir}/analysis_ready_fastqs" }, mode: params.publish_dir_mode, + enabled: params.perform_shortread_hostremoval, pattern: '*.fastq.gz', - saveAs: { (( !params.perform_runmerging | params.perform_runmerging && !${meta.is_multirun} ) && params.perform_shortread_hostremoval && params.save_analysis_ready_reads ) ? it : null } + saveAs: { ( params.perform_runmerging == false || params.perform_runmerging && !meta.is_multirun ) && params.perform_shortread_hostremoval && params.save_analysis_ready_fastqs ? it : null } ] ] } @@ -338,7 +356,6 @@ process { pattern: '*.bam', enabled: params.save_hostremoval_bam ] - // TODO ANALYSIS READY READS } withName: SAMTOOLS_VIEW { @@ -349,10 +366,19 @@ process { withName: SAMTOOLS_BAM2FQ { ext.prefix = { "${meta.id}_${meta.run_accession}.unmapped" } publishDir = [ - path: { "${params.outdir}/samtools/bam2fq" }, - mode: params.publish_dir_mode, - pattern: '*.fq.gz', - enabled: params.save_hostremoval_unmapped + [ + path: { "${params.outdir}/samtools/bam2fq" }, + mode: params.publish_dir_mode, + pattern: '*.fq.gz', + enabled: params.save_hostremoval_unmapped + ], + [ + path: { "${params.outdir}/analysis_ready_fastqs" }, + mode: params.publish_dir_mode, + pattern: '*.fastq.gz', + enabled: params.save_analysis_ready_fastqs, + saveAs: { ( !params.perform_runmerging | params.perform_runmerging && !meta.is_multirun ) && params.perform_longread_hostremoval && params.save_analysis_ready_fastqs ? it : null } + ] ] } @@ -365,7 +391,7 @@ process { ] } - withName: CAT_FASTQ { + withName: MERGE_RUNS { ext.prefix = { "${meta.id}" } publishDir = [ [ @@ -375,10 +401,10 @@ process { enabled: params.save_runmerged_reads ], [ - path: { "${params.outdir}/analysis_ready_reads" }, + path: { "${params.outdir}/analysis_ready_fastqs" }, mode: params.publish_dir_mode, pattern: '*.fastq.gz', - enabled: params.perform_runmerging && params.save_analysis_ready_reads + enabled: params.perform_runmerging && params.save_analysis_ready_fastqs ] ] } diff --git a/docs/output.md b/docs/output.md index 4ef6770..3936344 100644 --- a/docs/output.md +++ b/docs/output.md @@ -102,7 +102,7 @@ You can change the default value for low complexity filtering by using the argum By default nf-core/taxprofiler will only provide the `.settings` file if AdapterRemoval is selected. -You will only find the `.fastq` files in the results directory if you provide ` --save_preprocessed_reads`. If this is selected, you may receive different combinations of `.fastq` files for each sample depending on the input types - e.g. whether you have merged or not, or if you're supplying both single- and paired-end reads. +You will only find the `.fastq` files in the results directory if you provide ` --save_preprocessed_reads`. If this is selected, you may receive different combinations of `.fastq` files for each sample depending on the input types - e.g. whether you have merged or not, or if you're supplying both single- and paired-end reads. Alternatively, if you wish only to have the 'final' reads that go into classification/profiling (i.e., that may have additional processing), do not specify this flag but rather specify `--save_analysis_ready_reads`, in which case the reads will be in the folder `analysis_ready_reads` > ⚠️ The resulting `.fastq` files may _not_ always be the 'final' reads that go into taxprofiling, if you also run other steps such as complexity filtering, host removal, run merging etc.. @@ -121,7 +121,7 @@ You will only find the `.fastq` files in the results directory if you provide ` The output logs are saved in the output folder and are part of MultiQC report.You do not normally need to check these manually. -You will only find the `.fastq` files in the results directory if you provide ` --save_preprocessed_reads`. +You will only find the `.fastq` files in the results directory if you provide ` --save_preprocessed_reads`. Alternatively, if you wish only to have the 'final' reads that go into classification/profiling (i.e., that may have additional processing), do not specify this flag but rather specify `--save_analysis_ready_reads`, in which case the reads will be in the folder `analysis_ready_reads` > ⚠️ We do **not** recommend using Porechop if you are already trimming the adapters with ONT's basecaller Guppy. @@ -140,7 +140,7 @@ It is used in nf-core/taxprofiler for complexity filtering using different algor
    -By default nf-core/taxprofiler will only provide the `.log` file if BBDuk is selected as the complexity filtering tool. You will only find the complexity filtered reads in your results directory if you provide ` --save_complexityfiltered_reads` . +By default nf-core/taxprofiler will only provide the `.log` file if BBDuk is selected as the complexity filtering tool. You will only find the complexity filtered reads in your results directory if you provide ` --save_complexityfiltered_reads`. Alternatively, if you wish only to have the 'final' reads that go into classification/profiling (i.e., that may have additional processing), do not specify this flag but rather specify `--save_analysis_ready_reads`, in which case the reads will be in the folder `analysis_ready_reads` > ⚠️ The resulting `.fastq` files may _not_ always be the 'final' reads that go into taxprofiling, if you also run other steps such as host removal, run merging etc.. @@ -159,7 +159,7 @@ It is used in nf-core/taxprofiler for complexity filtering using different algor -By default nf-core/taxprofiler will only provide the `.log` file if PRINSEQ++ is selected as the complexity filtering tool. You will only find the complexity filtered `.fastq` files in your results directory if you supply ` --save_complexityfiltered_reads` . +By default nf-core/taxprofiler will only provide the `.log` file if PRINSEQ++ is selected as the complexity filtering tool. You will only find the complexity filtered `.fastq` files in your results directory if you supply ` --save_complexityfiltered_reads`. Alternatively, if you wish only to have the 'final' reads that go into classification/profiling (i.e., that may have additional processing), do not specify this flag but rather specify `--save_analysis_ready_reads`, in which case the reads will be in the folder `analysis_ready_reads` > ⚠️ The resulting `.fastq` files may _not_ always be the 'final' reads that go into taxprofiling, if you also run other steps such as host removal, run merging etc.. @@ -176,7 +176,7 @@ By default nf-core/taxprofiler will only provide the `.log` file if PRINSEQ++ is -You will only find the `.fastq` files in the results directory if you provide ` --save_preprocessed_reads`. +You will only find the `.fastq` files in the results directory if you provide ` --save_preprocessed_reads`. Alternatively, if you wish only to have the 'final' reads that go into classification/profiling (i.e., that may have additional processing), do not specify this flag but rather specify `--save_analysis_ready_reads`, in which case the reads will be in the folder `analysis_ready_reads` > ⚠️ We do **not** recommend using Filtlong if you are performing filtering of low quality reads with ONT's basecaller Guppy. @@ -199,7 +199,7 @@ It is used with nf-core/taxprofiler to allow removal of 'host' (e.g. human) and/ -By default nf-core/taxprofiler will only provide the `.log` file if host removal is turned on. You will only have a `.bam` file if you specify `--save_hostremoval_bam`. This will contain _both_ mapped and unmapped reads. You will only get FASTQ files if you specify to save `--save_hostremoval_unmapped` - these contain only unmapped reads. +By default nf-core/taxprofiler will only provide the `.log` file if host removal is turned on. You will only have a `.bam` file if you specify `--save_hostremoval_bam`. This will contain _both_ mapped and unmapped reads. You will only get FASTQ files if you specify to save `--save_hostremoval_unmapped` - these contain only unmapped reads. Alternatively, if you wish only to have the 'final' reads that go into classification/profiling (i.e., that may have additional processing), do not specify this flag but rather specify `--save_analysis_ready_reads`, in which case the reads will be in the folder `analysis_ready_reads` > ℹ️ Unmapped reads in FASTQ are only found in this directory for short-reads, for long-reads see [`samtools/bam2fq/`](#samtools-bam2fq) @@ -242,7 +242,7 @@ By default, nf-core/taxprofiler will only provide the `.bam` file containing map -This directory will be present and contain the unmapped reads from the `.fastq` format from long-read minimap2 host removal, if `--save_hostremoval_unmapped` is supplied +This directory will be present and contain the unmapped reads from the `.fastq` format from long-read minimap2 host removal, if `--save_hostremoval_unmapped` is supplied. Alternatively, if you wish only to have the 'final' reads that go into classification/profiling (i.e., that may have additional processing), do not specify this flag but rather specify `--save_analysis_ready_reads`, in which case the reads will be in the folder `analysis_ready_reads` > ℹ️ For short-read unmapped reads, see [bowtie2](#bowtie2). @@ -264,7 +264,7 @@ In most cases you do not need to check this file, as it is rendered in the Multi nf-core/taxprofiler offers the option to merge FASTQ files of multiple sequencing runs or libraries that derive from the same sample, as specified in the input samplesheet. -This is the last preprocessing step, so if you have multiple runs or libraries (and run merging turned on), this will represent the final reads that will go into classification/profiling steps. +This is the last possible preprocessing step, so if you have multiple runs or libraries (and run merging turned on), this will represent the final reads that will go into classification/profiling steps.
    Output files @@ -274,9 +274,10 @@ This is the last preprocessing step, so if you have multiple runs or libraries (
    + Note that you will only find samples that went through the run merging step in this directory. For samples that had a single run or library will not go through this step of the pipeline and thus will not be present in this directory. -⚠️ You must make sure to turn on the saving of the reads from the previous preprocessing step you may have turned on, if you have single-run or library reads in your pipeline run, and wish to save the final reads that go into classification/profiling! +This directory and it's FASTQ files will only be present if you supply `--save_runmerged_reads`.Alternatively, if you wish only to have the 'final' reads that go into classification/profiling (i.e., that may have additional processing), do not specify this flag but rather specify `--save_analysis_ready_reads`, in which case the reads will be in the folder `analysis_ready_reads` ### Bracken diff --git a/nextflow.config b/nextflow.config index 0e6850f..0590334 100644 --- a/nextflow.config +++ b/nextflow.config @@ -106,7 +106,7 @@ params { save_hostremoval_unmapped = false // Publishing final reads going into profiling - save_analysis_ready_reads = false + save_analysis_ready_fastqs = false // MALT run_malt = false diff --git a/workflows/taxprofiler.nf b/workflows/taxprofiler.nf index e44015f..54a2bad 100644 --- a/workflows/taxprofiler.nf +++ b/workflows/taxprofiler.nf @@ -91,7 +91,7 @@ include { FASTQC } from '../modules/nf-core/fastqc/main' include { FALCO } from '../modules/nf-core/falco/main' include { MULTIQC } from '../modules/nf-core/multiqc/main' include { CUSTOM_DUMPSOFTWAREVERSIONS } from '../modules/nf-core/custom/dumpsoftwareversions/main' -include { CAT_FASTQ } from '../modules/nf-core/cat/fastq/main' +include { CAT_FASTQ as MERGE_RUNS } from '../modules/nf-core/cat/fastq/main' /* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -121,6 +121,9 @@ workflow TAXPROFILER { ) ch_versions = ch_versions.mix(INPUT_CHECK.out.versions) + // Save final FASTA reads if requested, as otherwise no processing occurs on FASTA + + DB_CHECK ( ch_databases ) @@ -210,7 +213,7 @@ workflow TAXPROFILER { skip: true } - ch_reads_runmerged = CAT_FASTQ ( ch_reads_for_cat_branch.cat ).reads + ch_reads_runmerged = MERGE_RUNS ( ch_reads_for_cat_branch.cat ).reads .mix( ch_reads_for_cat_branch.skip ) .map { meta, reads -> @@ -218,7 +221,7 @@ workflow TAXPROFILER { } .mix( INPUT_CHECK.out.fasta ) - ch_versions = ch_versions.mix(CAT_FASTQ.out.versions) + ch_versions = ch_versions.mix(MERGE_RUNS.out.versions) } else { ch_reads_runmerged = ch_shortreads_hostremoved From a3d077fcbcb1ee495db3018d832cfb6a4f349842 Mon Sep 17 00:00:00 2001 From: sofstam Date: Thu, 23 Mar 2023 17:05:34 +0100 Subject: [PATCH 756/789] Prettier --- modules.json | 174 +++++++++++++-------------------------------------- 1 file changed, 44 insertions(+), 130 deletions(-) diff --git a/modules.json b/modules.json index b61b140..65d8b70 100644 --- a/modules.json +++ b/modules.json @@ -8,308 +8,222 @@ "adapterremoval": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "bbmap/bbduk": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "bowtie2/align": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "bowtie2/build": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "bracken/bracken": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "bracken/combinebrackenoutputs": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "cat/fastq": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "centrifuge/centrifuge": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "centrifuge/kreport": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "custom/dumpsoftwareversions": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "diamond/blastx": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "falco": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": [ - "modules" - ], + "installed_by": ["modules"], "patch": "modules/nf-core/falco/falco.diff" }, "fastp": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "fastqc": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "filtlong": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "gunzip": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "kaiju/kaiju": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "kaiju/kaiju2krona": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "kaiju/kaiju2table": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "kraken2/kraken2": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "krakentools/combinekreports": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "krakentools/kreport2krona": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "krakenuniq/preloadedkrakenuniq": { "branch": "master", "git_sha": "a6eb17f65b3ee5761c25c075a6166c9f76733cee", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "krona/ktimporttaxonomy": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "krona/ktimporttext": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "malt/run": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "megan/rma2info": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "metaphlan3/mergemetaphlantables": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "metaphlan3/metaphlan3": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "minimap2/align": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "minimap2/index": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "motus/merge": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "motus/profile": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "multiqc": { "branch": "master", "git_sha": "ee80d14721e76e2e079103b8dcd5d57129e584ba", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "porechop/porechop": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": [ - "modules" - ], + "installed_by": ["modules"], "patch": "modules/nf-core/porechop/porechop/porechop-porechop.diff" }, "prinseqplusplus": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "samtools/bam2fq": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "samtools/fastq": { "branch": "master", "git_sha": "0f8a77ff00e65eaeebc509b8156eaa983192474b", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "samtools/index": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "samtools/stats": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "samtools/view": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "taxpasta/merge": { "branch": "master", "git_sha": "ffa9641ee18f88aff974257cb50ba3cf8f7d143c", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "untar": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] } } } } } -} \ No newline at end of file +} From e274823f735537b91780f05bf1bd64a69e0092ab Mon Sep 17 00:00:00 2001 From: sofstam Date: Mon, 27 Mar 2023 12:42:28 +0200 Subject: [PATCH 757/789] Add conf for samtools/fastq --- conf/modules.config | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/conf/modules.config b/conf/modules.config index ee1a3d2..78d8153 100644 --- a/conf/modules.config +++ b/conf/modules.config @@ -250,12 +250,12 @@ process { ext.prefix = { "${meta.id}_${meta.run_accession}.unmapped" } } - withName: SAMTOOLS_BAM2FQ { + withName: SAMTOOLS_FASTQ { ext.prefix = { "${meta.id}_${meta.run_accession}.unmapped" } publishDir = [ - path: { "${params.outdir}/samtools/bam2fq" }, + path: { "${params.outdir}/samtools/fastq" }, mode: params.publish_dir_mode, - pattern: '*.fq.gz', + pattern: '*.fastq.gz', enabled: params.save_hostremoval_unmapped ] } From 8745fc625c17ac39d6fdc54702164ad056a6cfed Mon Sep 17 00:00:00 2001 From: sofstam Date: Wed, 29 Mar 2023 15:36:20 +0200 Subject: [PATCH 758/789] Correct output file from samtools/fastq --- subworkflows/local/longread_hostremoval.nf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/subworkflows/local/longread_hostremoval.nf b/subworkflows/local/longread_hostremoval.nf index 7242bbd..ff62c30 100644 --- a/subworkflows/local/longread_hostremoval.nf +++ b/subworkflows/local/longread_hostremoval.nf @@ -54,7 +54,7 @@ workflow LONGREAD_HOSTREMOVAL { emit: stats = SAMTOOLS_STATS.out.stats //channel: [val(meta), [reads ] ] - reads = SAMTOOLS_FASTQ.out.fastq // channel: [ val(meta), [ reads ] ] + reads = SAMTOOLS_FASTQ.out.other // channel: [ val(meta), [ reads ] ] versions = ch_versions // channel: [ versions.yml ] mqc = ch_multiqc_files } From 021f5f0a2200c4ea9d5275f3c6fc8ceaf3a74675 Mon Sep 17 00:00:00 2001 From: sofstam Date: Fri, 31 Mar 2023 10:28:36 +0200 Subject: [PATCH 759/789] Remove samtools/bam2fq module --- modules.json | 175 ++++++++++++++++------- modules/nf-core/samtools/bam2fq/main.nf | 56 -------- modules/nf-core/samtools/bam2fq/meta.yml | 55 ------- 3 files changed, 127 insertions(+), 159 deletions(-) delete mode 100644 modules/nf-core/samtools/bam2fq/main.nf delete mode 100644 modules/nf-core/samtools/bam2fq/meta.yml diff --git a/modules.json b/modules.json index 65d8b70..63de285 100644 --- a/modules.json +++ b/modules.json @@ -8,222 +8,301 @@ "adapterremoval": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "bbmap/bbduk": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "bowtie2/align": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "bowtie2/build": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "bracken/bracken": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "bracken/combinebrackenoutputs": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "cat/fastq": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "centrifuge/centrifuge": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "centrifuge/kreport": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "custom/dumpsoftwareversions": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "diamond/blastx": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "falco": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": ["modules"], + "installed_by": [ + "modules" + ], "patch": "modules/nf-core/falco/falco.diff" }, "fastp": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "fastqc": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "filtlong": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "gunzip": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "kaiju/kaiju": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "kaiju/kaiju2krona": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "kaiju/kaiju2table": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "kraken2/kraken2": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "krakentools/combinekreports": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "krakentools/kreport2krona": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "krakenuniq/preloadedkrakenuniq": { "branch": "master", "git_sha": "a6eb17f65b3ee5761c25c075a6166c9f76733cee", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "krona/ktimporttaxonomy": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "krona/ktimporttext": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "malt/run": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "megan/rma2info": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "metaphlan3/mergemetaphlantables": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "metaphlan3/metaphlan3": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "minimap2/align": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "minimap2/index": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "motus/merge": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "motus/profile": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "multiqc": { "branch": "master", "git_sha": "ee80d14721e76e2e079103b8dcd5d57129e584ba", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "porechop/porechop": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": ["modules"], + "installed_by": [ + "modules" + ], "patch": "modules/nf-core/porechop/porechop/porechop-porechop.diff" }, "prinseqplusplus": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": ["modules"] - }, - "samtools/bam2fq": { - "branch": "master", - "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "samtools/fastq": { "branch": "master", "git_sha": "0f8a77ff00e65eaeebc509b8156eaa983192474b", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "samtools/index": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "samtools/stats": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "samtools/view": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "taxpasta/merge": { "branch": "master", "git_sha": "ffa9641ee18f88aff974257cb50ba3cf8f7d143c", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] }, "untar": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] } } } } } -} +} \ No newline at end of file diff --git a/modules/nf-core/samtools/bam2fq/main.nf b/modules/nf-core/samtools/bam2fq/main.nf deleted file mode 100644 index 0b06352..0000000 --- a/modules/nf-core/samtools/bam2fq/main.nf +++ /dev/null @@ -1,56 +0,0 @@ -process SAMTOOLS_BAM2FQ { - tag "$meta.id" - label 'process_low' - - conda "bioconda::samtools=1.16.1" - container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/samtools:1.16.1--h6899075_1' : - 'quay.io/biocontainers/samtools:1.16.1--h6899075_1' }" - - input: - tuple val(meta), path(inputbam) - val split - - output: - tuple val(meta), path("*.fq.gz"), emit: reads - path "versions.yml" , emit: versions - - when: - task.ext.when == null || task.ext.when - - script: - def args = task.ext.args ?: '' - def prefix = task.ext.prefix ?: "${meta.id}" - - if (split){ - """ - samtools \\ - bam2fq \\ - $args \\ - -@ $task.cpus \\ - -1 ${prefix}_1.fq.gz \\ - -2 ${prefix}_2.fq.gz \\ - -0 ${prefix}_other.fq.gz \\ - -s ${prefix}_singleton.fq.gz \\ - $inputbam - - cat <<-END_VERSIONS > versions.yml - "${task.process}": - samtools: \$(echo \$(samtools --version 2>&1) | sed 's/^.*samtools //; s/Using.*\$//') - END_VERSIONS - """ - } else { - """ - samtools \\ - bam2fq \\ - $args \\ - -@ $task.cpus \\ - $inputbam | gzip --no-name > ${prefix}_interleaved.fq.gz - - cat <<-END_VERSIONS > versions.yml - "${task.process}": - samtools: \$(echo \$(samtools --version 2>&1) | sed 's/^.*samtools //; s/Using.*\$//') - END_VERSIONS - """ - } -} diff --git a/modules/nf-core/samtools/bam2fq/meta.yml b/modules/nf-core/samtools/bam2fq/meta.yml deleted file mode 100644 index 319a60c..0000000 --- a/modules/nf-core/samtools/bam2fq/meta.yml +++ /dev/null @@ -1,55 +0,0 @@ -name: samtools_bam2fq -description: | - The module uses bam2fq method from samtools to - convert a SAM, BAM or CRAM file to FASTQ format -keywords: - - bam2fq - - samtools - - fastq -tools: - - samtools: - description: Tools for dealing with SAM, BAM and CRAM files - homepage: None - documentation: http://www.htslib.org/doc/1.1/samtools.html - tool_dev_url: None - doi: "" - licence: ["MIT"] - -input: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - inputbam: - type: file - description: BAM/CRAM/SAM file - pattern: "*.{bam,cram,sam}" - - split: - type: boolean - description: | - TRUE/FALSE value to indicate if reads should be separated into - /1, /2 and if present other, or singleton. - Note: choosing TRUE will generate 4 different files. - Choosing FALSE will produce a single file, which will be interleaved in case - the input contains paired reads. - -output: - - meta: - type: map - description: | - Groovy Map containing sample information - e.g. [ id:'test', single_end:false ] - - versions: - type: file - description: File containing software versions - pattern: "versions.yml" - - reads: - type: file - description: | - FASTQ files, which will be either a group of 4 files (read_1, read_2, other and singleton) - or a single interleaved .fq.gz file if the user chooses not to split the reads. - pattern: "*.fq.gz" - -authors: - - "@lescai" From d6b60643d9d2143e3b539e9856aa4aff4029913d Mon Sep 17 00:00:00 2001 From: sofstam Date: Fri, 31 Mar 2023 10:35:40 +0200 Subject: [PATCH 760/789] Prettier --- modules.json | 170 +++++++++++++-------------------------------------- 1 file changed, 43 insertions(+), 127 deletions(-) diff --git a/modules.json b/modules.json index 63de285..9aa617a 100644 --- a/modules.json +++ b/modules.json @@ -8,301 +8,217 @@ "adapterremoval": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "bbmap/bbduk": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "bowtie2/align": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "bowtie2/build": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "bracken/bracken": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "bracken/combinebrackenoutputs": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "cat/fastq": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "centrifuge/centrifuge": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "centrifuge/kreport": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "custom/dumpsoftwareversions": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "diamond/blastx": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "falco": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": [ - "modules" - ], + "installed_by": ["modules"], "patch": "modules/nf-core/falco/falco.diff" }, "fastp": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "fastqc": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "filtlong": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "gunzip": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "kaiju/kaiju": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "kaiju/kaiju2krona": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "kaiju/kaiju2table": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "kraken2/kraken2": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "krakentools/combinekreports": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "krakentools/kreport2krona": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "krakenuniq/preloadedkrakenuniq": { "branch": "master", "git_sha": "a6eb17f65b3ee5761c25c075a6166c9f76733cee", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "krona/ktimporttaxonomy": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "krona/ktimporttext": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "malt/run": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "megan/rma2info": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "metaphlan3/mergemetaphlantables": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "metaphlan3/metaphlan3": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "minimap2/align": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "minimap2/index": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "motus/merge": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "motus/profile": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "multiqc": { "branch": "master", "git_sha": "ee80d14721e76e2e079103b8dcd5d57129e584ba", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "porechop/porechop": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": [ - "modules" - ], + "installed_by": ["modules"], "patch": "modules/nf-core/porechop/porechop/porechop-porechop.diff" }, "prinseqplusplus": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "samtools/fastq": { "branch": "master", "git_sha": "0f8a77ff00e65eaeebc509b8156eaa983192474b", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "samtools/index": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "samtools/stats": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "samtools/view": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "taxpasta/merge": { "branch": "master", "git_sha": "ffa9641ee18f88aff974257cb50ba3cf8f7d143c", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "untar": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] } } } } } -} \ No newline at end of file +} From 1eeeb8a21460b14eb0baf6e7b9e347b3c6d1de2b Mon Sep 17 00:00:00 2001 From: "James A. Fellows Yates" Date: Tue, 4 Apr 2023 11:19:22 +0200 Subject: [PATCH 761/789] Reduce authors to main + other contributors Due to tower limitation producing ugly warning --- nextflow.config | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/nextflow.config b/nextflow.config index 05cd7ea..bf6d1bc 100644 --- a/nextflow.config +++ b/nextflow.config @@ -300,7 +300,7 @@ dag { manifest { name = 'nf-core/taxprofiler' - author = """James A. Fellows Yates, Sofia Stamouli, Moritz E. Beber, Lauri Mesilaakso, Thomas A. Christensen II, Jianhong Ou, Mahwash Jamy, Maxime Borry, Rafal Stepien, Tanja Normark""" + author = """James A. Fellows Yates, Sofia Stamouli, Moritz E. Beber, and the nf-core/taxprofiler team""" homePage = 'https://github.com/nf-core/taxprofiler' description = """Taxonomic classification and profiling of shotgun metagenomic data""" mainScript = 'main.nf' From 03c3169f10da171715eccb4ad54cc046e871211c Mon Sep 17 00:00:00 2001 From: "James A. Fellows Yates" Date: Tue, 4 Apr 2023 09:41:22 +0000 Subject: [PATCH 762/789] Replace all instance of exit 1 with error for safety and consistency --- subworkflows/local/db_check.nf | 16 ++++++++-------- subworkflows/local/input_check.nf | 8 ++++---- workflows/taxprofiler.nf | 16 ++++++++-------- 3 files changed, 20 insertions(+), 20 deletions(-) diff --git a/subworkflows/local/db_check.nf b/subworkflows/local/db_check.nf index 5cafae0..26ba748 100644 --- a/subworkflows/local/db_check.nf +++ b/subworkflows/local/db_check.nf @@ -22,7 +22,7 @@ workflow DB_CHECK { .map { tool, db_name -> def unique_names = db_name.unique(false) - if ( unique_names.size() < db_name.size() ) exit 1, "[nf-core/taxprofiler] ERROR: Each database for a tool must have a unique name, duplicated detected. Tool: ${tool}, Database name: ${unique_names}" + if ( unique_names.size() < db_name.size() ) error("[nf-core/taxprofiler] ERROR: Each database for a tool must have a unique name, duplicated detected. Tool: ${tool}, Database name: ${unique_names}") } // Normal checks for within-row validity, so can be moved to separate functions @@ -55,24 +55,24 @@ workflow DB_CHECK { def validate_db_rows(LinkedHashMap row) { // check minimum number of columns - if (row.size() < 4) exit 1, "[nf-core/taxprofiler] ERROR: Invalid database input sheet - malformed row (e.g. missing column). See documentation for more information. Error in: ${row}" + if (row.size() < 4) error("[nf-core/taxprofiler] ERROR: Invalid database input sheet - malformed row (e.g. missing column). See documentation for more information. Error in: ${row}") // all columns there def expected_headers = ['tool', 'db_name', 'db_params', 'db_path'] - if ( !row.keySet().containsAll(expected_headers) ) exit 1, "[nf-core/taxprofiler] ERROR: Invalid database input sheet - malformed column names. Please check input TSV. Column names should be: ${expected_headers.join(", ")}" + if ( !row.keySet().containsAll(expected_headers) ) error("[nf-core/taxprofiler] ERROR: Invalid database input sheet - malformed column names. Please check input TSV. Column names should be: ${expected_headers.join(", ")}") // valid tools specified def expected_tools = [ "bracken", "centrifuge", "diamond", "kaiju", "kraken2", "krakenuniq", "malt", "metaphlan3", "motus" ] - if ( !expected_tools.contains(row.tool) ) exit 1, "[nf-core/taxprofiler] ERROR: Invalid tool name. Please see documentation for all supported profilers. Error in: ${row}" + if ( !expected_tools.contains(row.tool) ) error("[nf-core/taxprofiler] ERROR: Invalid tool name. Please see documentation for all supported profilers. Error in: ${row}") // detect quotes in params - if ( row.db_params.contains('"') ) exit 1, "[nf-core/taxprofiler] ERROR: Invalid database db_params entry. No quotes allowed. Error in: ${row}" - if ( row.db_params.contains("'") ) exit 1, "[nf-core/taxprofiler] ERROR: Invalid database db_params entry. No quotes allowed. Error in: ${row}" + if ( row.db_params.contains('"') ) error("[nf-core/taxprofiler] ERROR: Invalid database db_params entry. No quotes allowed. Error in: ${row}") + if ( row.db_params.contains("'") ) error("[nf-core/taxprofiler] ERROR: Invalid database db_params entry. No quotes allowed. Error in: ${row}") // check if any form of bracken params, that it must have `;` - if ( row.tool == 'bracken' && row.db_params && !row.db_params.contains(";") ) exit 1, "[nf-core/taxprofiler] ERROR: Invalid database db_params entry. Bracken requires a semi-colon if passing parameter. Error in: ${row}" + if ( row.tool == 'bracken' && row.db_params && !row.db_params.contains(";") ) error("[nf-core/taxprofiler] ERROR: Invalid database db_params entry. Bracken requires a semi-colon if passing parameter. Error in: ${row}") // ensure that the database directory exists - if (!file(row.db_path, type: 'dir').exists()) exit 1, "ERROR: Please check input samplesheet -> database path could not be found!\n${row.db_path}" + if (!file(row.db_path, type: 'dir').exists()) error("ERROR: Please check input samplesheet -> database path could not be found!\n${row.db_path}") } diff --git a/subworkflows/local/input_check.nf b/subworkflows/local/input_check.nf index 5764b72..2388173 100644 --- a/subworkflows/local/input_check.nf +++ b/subworkflows/local/input_check.nf @@ -44,7 +44,7 @@ def create_fastq_channel(LinkedHashMap row) { // add path(s) of the fastq file(s) to the meta map if (!file(row.fastq_1).exists()) { - exit 1, "ERROR: Please check input samplesheet -> Read 1 FastQ file does not exist!\n${row.fastq_1}" + error("ERROR: Please check input samplesheet -> Read 1 FastQ file does not exist!\n${row.fastq_1}") } if (meta.single_end) { @@ -52,12 +52,12 @@ def create_fastq_channel(LinkedHashMap row) { } else { if (meta.instrument_platform == 'OXFORD_NANOPORE') { if (row.fastq_2 != '') { - exit 1, "ERROR: Please check input samplesheet -> For Oxford Nanopore reads Read 2 FastQ should be empty!\n${row.fastq_2}" + error("ERROR: Please check input samplesheet -> For Oxford Nanopore reads Read 2 FastQ should be empty!\n${row.fastq_2}") } return [ meta, [ file(row.fastq_1) ] ] } else { if (!file(row.fastq_2).exists()) { - exit 1, "ERROR: Please check input samplesheet -> Read 2 FastQ file does not exist!\n${row.fastq_2}" + error("ERROR: Please check input samplesheet -> Read 2 FastQ file does not exist!\n${row.fastq_2}") } return [ meta, [ file(row.fastq_1), file(row.fastq_2) ] ] } @@ -72,7 +72,7 @@ def create_fasta_channel(LinkedHashMap row) { meta.is_fasta = true if (!file(row.fasta).exists()) { - exit 1, "ERROR: Please check input samplesheet -> FastA file does not exist!\n${row.fasta}" + error("ERROR: Please check input samplesheet -> FastA file does not exist!\n${row.fasta}") } return [ meta, [ file(row.fasta) ] ] } diff --git a/workflows/taxprofiler.nf b/workflows/taxprofiler.nf index 25c8d76..cf888e2 100644 --- a/workflows/taxprofiler.nf +++ b/workflows/taxprofiler.nf @@ -24,19 +24,19 @@ for (param in checkPathParamList) { if (param) { file(param, checkIfExists: true if ( params.input ) { ch_input = file(params.input, checkIfExists: true) } else { - exit 1, "Input samplesheet not specified" + error("Input samplesheet not specified") } -if (params.databases) { ch_databases = file(params.databases, checkIfExists: true) } else { exit 1, 'Input database sheet not specified!' } +if (params.databases) { ch_databases = file(params.databases, checkIfExists: true) } else { error('Input database sheet not specified!') } if (!params.shortread_qc_mergepairs && params.run_malt ) log.warn "[nf-core/taxprofiler] MALT does not accept uncollapsed paired-reads. Pairs will be profiled as separate files." -if (params.shortread_qc_includeunmerged && !params.shortread_qc_mergepairs) exit 1, "ERROR: [nf-core/taxprofiler] cannot include unmerged reads when merging is not turned on. Please specify --shortread_qc_mergepairs" +if (params.shortread_qc_includeunmerged && !params.shortread_qc_mergepairs) error("ERROR: [nf-core/taxprofiler] cannot include unmerged reads when merging is not turned on. Please specify --shortread_qc_mergepairs") -if (params.shortread_complexityfilter_tool == 'fastp' && ( params.perform_shortread_qc == false || params.shortread_qc_tool != 'fastp' )) exit 1, "ERROR: [nf-core/taxprofiler] cannot use fastp complexity filtering if preprocessing not turned on and/or tool is not fastp. Please specify --perform_shortread_qc and/or --shortread_qc_tool 'fastp'" +if (params.shortread_complexityfilter_tool == 'fastp' && ( params.perform_shortread_qc == false || params.shortread_qc_tool != 'fastp' )) error("ERROR: [nf-core/taxprofiler] cannot use fastp complexity filtering if preprocessing not turned on and/or tool is not fastp. Please specify --perform_shortread_qc and/or --shortread_qc_tool 'fastp'") -if (params.perform_shortread_hostremoval && !params.hostremoval_reference) { exit 1, "ERROR: [nf-core/taxprofiler] --shortread_hostremoval requested but no --hostremoval_reference FASTA supplied. Check input." } -if (params.perform_shortread_hostremoval && !params.hostremoval_reference && params.shortread_hostremoval_index) { exit 1, "ERROR: [nf-core/taxprofiler] --shortread_hostremoval_index provided but no --hostremoval_reference FASTA supplied. Check input." } -if (params.perform_longread_hostremoval && !params.hostremoval_reference && params.longread_hostremoval_index) { exit 1, "ERROR: [nf-core/taxprofiler] --longread_hostremoval_index provided but no --hostremoval_reference FASTA supplied. Check input." } +if (params.perform_shortread_hostremoval && !params.hostremoval_reference) { error("ERROR: [nf-core/taxprofiler] --shortread_hostremoval requested but no --hostremoval_reference FASTA supplied. Check input.") } +if (params.perform_shortread_hostremoval && !params.hostremoval_reference && params.shortread_hostremoval_index) { error("ERROR: [nf-core/taxprofiler] --shortread_hostremoval_index provided but no --hostremoval_reference FASTA supplied. Check input.") } +if (params.perform_longread_hostremoval && !params.hostremoval_reference && params.longread_hostremoval_index) { error("ERROR: [nf-core/taxprofiler] --longread_hostremoval_index provided but no --hostremoval_reference FASTA supplied. Check input.") } if (params.hostremoval_reference ) { ch_reference = file(params.hostremoval_reference) } if (params.shortread_hostremoval_index ) { ch_shortread_reference_index = Channel.fromPath(params.shortread_hostremoval_index).map{[[], it]} } else { ch_shortread_reference_index = [] } @@ -45,7 +45,7 @@ if (params.longread_hostremoval_index ) { ch_longread_reference_index = fi if (params.diamond_save_reads ) log.warn "[nf-core/taxprofiler] DIAMOND only allows output of a single format. As --diamond_save_reads supplied, only aligned reads in SAM format will be produced, no taxonomic profiles will be available." if (params.run_malt && params.run_krona && !params.krona_taxonomy_directory) log.warn "[nf-core/taxprofiler] Krona can only be run on MALT output if path to Krona taxonomy database supplied to --krona_taxonomy_directory. Krona will not be executed in this run for MALT." -if (params.run_bracken && !params.run_kraken2) exit 1, 'ERROR: [nf-core/taxprofiler] You are attempting to run Bracken without running kraken2. This is not possible! Please set --run_kraken2 as well.' +if (params.run_bracken && !params.run_kraken2) error('ERROR: [nf-core/taxprofiler] You are attempting to run Bracken without running kraken2. This is not possible! Please set --run_kraken2 as well.') /* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ From 59f8d75e9e73ee4b3f9d6139dcb3bae494956fc4 Mon Sep 17 00:00:00 2001 From: "James A. Fellows Yates" Date: Tue, 4 Apr 2023 09:43:01 +0000 Subject: [PATCH 763/789] update CHAGENLGO --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index edcdf11..a827e9e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -12,6 +12,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#271](https://github.com/nf-core/taxprofiler/pull/271/files) Improved standardised table generation documentation nd mOTUs manual database download tutorial (♥ to @prototaxites for reporting, fix by @jfy133) - [#269](https://github.com/nf-core/taxprofiler/pull/269/files) Reduced output files in AWS full test output due to very large files - [#270](https://github.com/nf-core/taxprofiler/pull/270/files) Fixed warning for host removal index parameter, and improved index checks (♥ to @prototaxites for reporting, fix by @jfy133) +- [#275](https://github.com/nf-core/taxprofiler/pull/275/files) Replaced function used for error reporting to more Nextflow friendly method (fix by @jfy133) ### `Dependencies` From 5eee462b5a7c0b2cc9285e394eefeb677e11e29d Mon Sep 17 00:00:00 2001 From: "James A. Fellows Yates" Date: Tue, 4 Apr 2023 11:45:06 +0200 Subject: [PATCH 764/789] Update LICENSE --- LICENSE | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/LICENSE b/LICENSE index 7d74b6c..694c995 100644 --- a/LICENSE +++ b/LICENSE @@ -1,6 +1,6 @@ MIT License -Copyright (c) James A. Fellows Yates, Sofia Stamouli, Moritz E. Beber, Lauri Mesilaakso, Thomas A. Christensen II, Jianhong Ou, Mahwash Jamy, Maxime Borry, Rafal Stepien, Tanja Normark +Copyright (c) James A. Fellows Yates, Sofia Stamouli, Moritz E. Beber, and the nf-core/taxprofiler team Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal From ca9c0cf8fdb6e88ca9bfe3ff6cdcd6d3426d71fe Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Tue, 4 Apr 2023 15:52:23 +0200 Subject: [PATCH 765/789] Further fixes --- conf/modules.config | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/conf/modules.config b/conf/modules.config index 0e7e2ea..32024d9 100644 --- a/conf/modules.config +++ b/conf/modules.config @@ -76,7 +76,7 @@ process { path: { "${params.outdir}/analysis_ready_fastqs" }, mode: params.publish_dir_mode, pattern: '*.fastq.gz', - enabled: !params.perform_runmerging && !params.perform_shortread_hostremoval && !params.shortread_complexityfilter_tool && params.perform_shortread_qc && params.save_analysis_ready_fastqs + enabled: !params.perform_runmerging && !params.perform_shortread_hostremoval && !params.perform_shortread_complexityfilter && params.perform_shortread_qc && params.save_analysis_ready_fastqs ] ] } @@ -109,8 +109,8 @@ process { [ path: { "${params.outdir}/analysis_ready_fastqs" }, mode: params.publish_dir_mode, - pattern: '*.fastq.gz', - enabled: !params.perform_runmerging && !params.perform_shortread_hostremoval && !params.shortread_complexityfilter_tool && params.perform_shortread_qc && params.save_analysis_ready_fastqs + pattern: params.shortread_qc_mergepairs ? '*merged.fastq.gz' : '*.fastp.fastq.gz', + enabled: !params.perform_runmerging && !params.perform_shortread_hostremoval && !params.perform_shortread_complexityfilter && params.perform_shortread_qc && params.save_analysis_ready_fastqs ] ] } @@ -138,8 +138,8 @@ process { [ path: { "${params.outdir}/analysis_ready_fastqs" }, mode: params.publish_dir_mode, - pattern: '*.fastq.gz', - enabled: !params.perform_runmerging && !params.perform_shortread_hostremoval && !params.shortread_complexityfilter_tool && params.perform_shortread_qc && params.save_analysis_ready_fastqs + pattern: '*truncated.fastq.gz', + enabled: !params.perform_runmerging && !params.perform_shortread_hostremoval && !params.perform_shortread_complexityfilter && params.perform_shortread_qc && params.save_analysis_ready_fastqs ] ] } @@ -166,6 +166,12 @@ process { path: { "${params.outdir}/adapterremoval" }, mode: params.publish_dir_mode, pattern: '*.settings' + ], + [ + path: { "${params.outdir}/analysis_ready_fastqs" }, + mode: params.publish_dir_mode, + pattern: '*{truncated.fastq,singleton.truncated}.gz', + enabled: !params.perform_runmerging && !params.perform_shortread_hostremoval && !params.perform_shortread_complexityfilter && params.perform_shortread_qc && !params.shortread_qc_mergepairs && params.save_analysis_ready_fastqs ] ] } @@ -178,7 +184,7 @@ process { path: { "${params.outdir}/analysis_ready_fastqs" }, mode: params.publish_dir_mode, pattern: '*.fastq.gz', - enabled: !params.perform_runmerging && !params.perform_shortread_hostremoval && !params.shortread_complexityfilter_tool && params.perform_shortread_qc && params.save_analysis_ready_fastqs + enabled: !params.perform_runmerging && !params.perform_shortread_hostremoval && !params.perform_shortread_complexityfilter && params.perform_shortread_qc && params.save_analysis_ready_fastqs ] ] } From e5e0aab59d60ac44ac44908cfaa6eb90c71b4cef Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Tue, 4 Apr 2023 16:29:37 +0200 Subject: [PATCH 766/789] More tweaks --- conf/modules.config | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/conf/modules.config b/conf/modules.config index 32024d9..905d6f2 100644 --- a/conf/modules.config +++ b/conf/modules.config @@ -339,6 +339,7 @@ process { mode: params.publish_dir_mode, enabled: params.perform_shortread_hostremoval, pattern: '*.fastq.gz', + // Don't know why `!` doesn't work here, but `== false` makes it work... saveAs: { ( params.perform_runmerging == false || params.perform_runmerging && !meta.is_multirun ) && params.perform_shortread_hostremoval && params.save_analysis_ready_fastqs ? it : null } ] ] @@ -381,9 +382,10 @@ process { [ path: { "${params.outdir}/analysis_ready_fastqs" }, mode: params.publish_dir_mode, - pattern: '*.fastq.gz', + pattern: '*.fq.gz', enabled: params.save_analysis_ready_fastqs, - saveAs: { ( !params.perform_runmerging | params.perform_runmerging && !meta.is_multirun ) && params.perform_longread_hostremoval && params.save_analysis_ready_fastqs ? it : null } + // Don't know why `!` doesn't work here, but `== false` makes it work... + saveAs: { ( !params.perform_runmerging || params.perform_runmerging && !meta.is_multirun ) && params.perform_longread_hostremoval && params.save_analysis_ready_fastqs ? it : null } ] ] } From c47b9e55fa85e75e39f992a8743c22db551c03c1 Mon Sep 17 00:00:00 2001 From: sofstam Date: Tue, 4 Apr 2023 18:01:02 +0200 Subject: [PATCH 767/789] Mix reads in emit --- subworkflows/local/longread_hostremoval.nf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/subworkflows/local/longread_hostremoval.nf b/subworkflows/local/longread_hostremoval.nf index ff62c30..f05e6a6 100644 --- a/subworkflows/local/longread_hostremoval.nf +++ b/subworkflows/local/longread_hostremoval.nf @@ -54,7 +54,7 @@ workflow LONGREAD_HOSTREMOVAL { emit: stats = SAMTOOLS_STATS.out.stats //channel: [val(meta), [reads ] ] - reads = SAMTOOLS_FASTQ.out.other // channel: [ val(meta), [ reads ] ] + reads = SAMTOOLS_FASTQ.out.fastq.mix( SAMTOOLS_FASTQ.out.other) // channel: [ val(meta), [ reads ] ] versions = ch_versions // channel: [ versions.yml ] mqc = ch_multiqc_files } From 94e88d788da1979d7b59562b79de671422797854 Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Tue, 4 Apr 2023 18:36:37 +0200 Subject: [PATCH 768/789] Everywhere account when no-runmerging for single libs --- conf/modules.config | 41 ++++++++++++++++++++++------------------- 1 file changed, 22 insertions(+), 19 deletions(-) diff --git a/conf/modules.config b/conf/modules.config index 905d6f2..1d9a890 100644 --- a/conf/modules.config +++ b/conf/modules.config @@ -76,7 +76,9 @@ process { path: { "${params.outdir}/analysis_ready_fastqs" }, mode: params.publish_dir_mode, pattern: '*.fastq.gz', - enabled: !params.perform_runmerging && !params.perform_shortread_hostremoval && !params.perform_shortread_complexityfilter && params.perform_shortread_qc && params.save_analysis_ready_fastqs + enabled: params.save_analysis_ready_fastqs, + // Don't know why `!` doesn't work here, but `== false` makes it work... + saveAs: { ( params.perform_runmerging == false || params.perform_runmerging && !meta.is_multirun ) && !params.perform_shortread_hostremoval && !params.perform_shortread_complexityfilter && params.perform_shortread_qc && params.save_analysis_ready_fastqs ? it : null } ] ] } @@ -110,7 +112,8 @@ process { path: { "${params.outdir}/analysis_ready_fastqs" }, mode: params.publish_dir_mode, pattern: params.shortread_qc_mergepairs ? '*merged.fastq.gz' : '*.fastp.fastq.gz', - enabled: !params.perform_runmerging && !params.perform_shortread_hostremoval && !params.perform_shortread_complexityfilter && params.perform_shortread_qc && params.save_analysis_ready_fastqs + enabled: params.save_analysis_ready_fastqs, + saveAs: { ( params.perform_runmerging == false || params.perform_runmerging && !meta.is_multirun ) && !params.perform_shortread_hostremoval && !params.perform_shortread_complexityfilter && params.perform_shortread_qc && params.save_analysis_ready_fastqs ? it : null } ] ] } @@ -139,7 +142,8 @@ process { path: { "${params.outdir}/analysis_ready_fastqs" }, mode: params.publish_dir_mode, pattern: '*truncated.fastq.gz', - enabled: !params.perform_runmerging && !params.perform_shortread_hostremoval && !params.perform_shortread_complexityfilter && params.perform_shortread_qc && params.save_analysis_ready_fastqs + enabled: params.save_analysis_ready_fastqs, + saveAs: { ( params.perform_runmerging == false || params.perform_runmerging && !meta.is_multirun ) && !params.perform_shortread_hostremoval && !params.perform_shortread_complexityfilter && params.perform_shortread_qc && params.save_analysis_ready_fastqs ? it : null } ] ] } @@ -171,7 +175,8 @@ process { path: { "${params.outdir}/analysis_ready_fastqs" }, mode: params.publish_dir_mode, pattern: '*{truncated.fastq,singleton.truncated}.gz', - enabled: !params.perform_runmerging && !params.perform_shortread_hostremoval && !params.perform_shortread_complexityfilter && params.perform_shortread_qc && !params.shortread_qc_mergepairs && params.save_analysis_ready_fastqs + enabled: params.save_analysis_ready_fastqs, + saveAs: { ( params.perform_runmerging == false || params.perform_runmerging && !meta.is_multirun ) && !params.perform_shortread_hostremoval && !params.perform_shortread_complexityfilter && params.perform_shortread_qc && !params.shortread_qc_mergepairs && params.save_analysis_ready_fastqs ? it : null} ] ] } @@ -184,7 +189,8 @@ process { path: { "${params.outdir}/analysis_ready_fastqs" }, mode: params.publish_dir_mode, pattern: '*.fastq.gz', - enabled: !params.perform_runmerging && !params.perform_shortread_hostremoval && !params.perform_shortread_complexityfilter && params.perform_shortread_qc && params.save_analysis_ready_fastqs + enabled: params.save_analysis_ready_fastqs, + saveAs: { ( params.perform_runmerging == false || params.perform_runmerging && !meta.is_multirun ) && !params.perform_shortread_hostremoval && !params.perform_shortread_complexityfilter && params.perform_shortread_qc && params.save_analysis_ready_fastqs ? it : null } ] ] } @@ -207,7 +213,8 @@ process { path: { "${params.outdir}/analysis_ready_fastqs" }, mode: params.publish_dir_mode, pattern: '*_porechopped.fastq.gz', - enabled: !params.perform_runmerging && !params.perform_longread_hostremoval && params.longread_qc_skipqualityfilter && !params.longread_qc_skipadaptertrim && params.perform_longread_qc && params.save_analysis_ready_fastqs + enabled: params.save_analysis_ready_fastqs, + saveAs: { ( params.perform_runmerging == false || params.perform_runmerging && !meta.is_multirun ) && !params.perform_longread_hostremoval && params.longread_qc_skipqualityfilter && !params.longread_qc_skipadaptertrim && params.perform_longread_qc && params.save_analysis_ready_fastqs ? it : null } ] ] } @@ -236,7 +243,8 @@ process { path: { "${params.outdir}/analysis_ready_fastqs" }, mode: params.publish_dir_mode, pattern: '*.fastq.gz', - enabled: !params.perform_runmerging && !params.perform_longread_hostremoval && !params.longread_qc_skipqualityfilter && params.perform_longread_qc && params.save_analysis_ready_fastqs + enabled: params.save_analysis_ready_fastqs, + saveAs: { ( params.perform_runmerging == false || params.perform_runmerging && !meta.is_multirun ) && !params.perform_longread_hostremoval && !params.longread_qc_skipqualityfilter && params.perform_longread_qc && params.save_analysis_ready_fastqs ? it : null } ] ] } @@ -252,7 +260,7 @@ process { [ path: { "${params.outdir}/bbduk/" }, mode: params.publish_dir_mode, - pattern: '*.{fastq.gz,log}', + pattern: '*.{fastq.gz}', enabled: params.save_complexityfiltered_reads ], [ @@ -264,7 +272,8 @@ process { path: { "${params.outdir}/analysis_ready_fastqs" }, mode: params.publish_dir_mode, pattern: '*.fastq.gz', - enabled: !params.perform_runmerging && !params.perform_shortread_hostremoval && params.shortread_complexityfilter_tool && params.save_analysis_ready_fastqs + enabled: params.save_analysis_ready_fastqs, + saveAs: { ( params.perform_runmerging == false || params.perform_runmerging && !meta.is_multirun ) && !params.perform_shortread_hostremoval && params.shortread_complexityfilter_tool && params.save_analysis_ready_fastqs ? it : null } ] ] } @@ -290,8 +299,9 @@ process { [ path: { "${params.outdir}/analysis_ready_fastqs" }, mode: params.publish_dir_mode, - pattern: '*.fastq.gz', - enabled: !params.perform_runmerging && !params.perform_shortread_hostremoval && params.shortread_complexityfilter_tool && params.save_analysis_ready_fastqs + pattern: '*{_good_out.fastq.gz,_good_out_R1.fastq.gz,_good_out_R2.fastq.gz}', + enabled: params.save_analysis_ready_fastqs, + saveAs: { ( params.perform_runmerging == false || params.perform_runmerging && !meta.is_multirun ) && !params.perform_shortread_hostremoval && params.shortread_complexityfilter_tool && params.save_analysis_ready_fastqs ? it : null } ] ] } @@ -303,12 +313,6 @@ process { mode: params.publish_dir_mode, pattern: 'bowtie2', enabled: params.save_hostremoval_index - ], - [ - path: { "${params.outdir}/analysis_ready_fastqs" }, - mode: params.publish_dir_mode, - pattern: '*.fastq.gz', - enabled: !params.perform_runmerging && !params.perform_shortread_hostremoval && !params.shortread_complexityfilter_tool && !params.perform_shortread_qc && params.save_analysis_ready_fastqs ] ] } @@ -339,7 +343,7 @@ process { mode: params.publish_dir_mode, enabled: params.perform_shortread_hostremoval, pattern: '*.fastq.gz', - // Don't know why `!` doesn't work here, but `== false` makes it work... + enabled: params.save_analysis_ready_fastqs, saveAs: { ( params.perform_runmerging == false || params.perform_runmerging && !meta.is_multirun ) && params.perform_shortread_hostremoval && params.save_analysis_ready_fastqs ? it : null } ] ] @@ -384,7 +388,6 @@ process { mode: params.publish_dir_mode, pattern: '*.fq.gz', enabled: params.save_analysis_ready_fastqs, - // Don't know why `!` doesn't work here, but `== false` makes it work... saveAs: { ( !params.perform_runmerging || params.perform_runmerging && !meta.is_multirun ) && params.perform_longread_hostremoval && params.save_analysis_ready_fastqs ? it : null } ] ] From ce97a1124e69e62068b7a2495bf5cb6461100f1e Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Sat, 15 Apr 2023 12:48:52 +0200 Subject: [PATCH 769/789] Add final documentation --- CHANGELOG.md | 2 ++ docs/output.md | 33 +++++++++++++++++++++++++-------- docs/usage.md | 2 ++ nextflow_schema.json | 6 ++++++ 4 files changed, 35 insertions(+), 8 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0bfa518..bab11f4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### `Added` +- [#272](https://github.com/nf-core/taxprofiler/pull/272) - Add saving of final 'analysis-ready-reads' to dedicated directory. (❤️ to @alexhbnr for reporting, added by @jfy133) + ### `Fixed` ### `Dependencies` diff --git a/docs/output.md b/docs/output.md index 3936344..741a23c 100644 --- a/docs/output.md +++ b/docs/output.md @@ -22,6 +22,7 @@ The pipeline is built using [Nextflow](https://www.nextflow.io/) and processes d - [minimap2](#minimap2) - Host removal for Nanopore reads - [SAMtools stats](#samtools-stats) - Statistics from host removal - [SAMtools bam2fq](#samtools-bam2fq) - Converts unmapped BAM file to fastq format (minimap2 only) +- [Analysis Ready Reads](#analysis-read-reads) - Optional results directory containing the final processed reads used as input for classification/profiling. - [Bracken](#bracken) - Taxonomic classifier using k-mers and abundance estimations - [Kraken2](#kraken2) - Taxonomic classifier using exact k-mer matches - [KrakenUniq](#krakenuniq) - Taxonomic classifier that combines the k-mer-based classification and the number of unique k-mers found in each species @@ -102,7 +103,7 @@ You can change the default value for low complexity filtering by using the argum By default nf-core/taxprofiler will only provide the `.settings` file if AdapterRemoval is selected. -You will only find the `.fastq` files in the results directory if you provide ` --save_preprocessed_reads`. If this is selected, you may receive different combinations of `.fastq` files for each sample depending on the input types - e.g. whether you have merged or not, or if you're supplying both single- and paired-end reads. Alternatively, if you wish only to have the 'final' reads that go into classification/profiling (i.e., that may have additional processing), do not specify this flag but rather specify `--save_analysis_ready_reads`, in which case the reads will be in the folder `analysis_ready_reads` +You will only find the `.fastq` files in the results directory if you provide ` --save_preprocessed_reads`. If this is selected, you may receive different combinations of `.fastq` files for each sample depending on the input types - e.g. whether you have merged or not, or if you're supplying both single- and paired-end reads. Alternatively, if you wish only to have the 'final' reads that go into classification/profiling (i.e., that may have additional processing), do not specify this flag but rather specify `--save_analysis_ready_reads`, in which case the reads will be in the folder `analysis_ready_reads`. > ⚠️ The resulting `.fastq` files may _not_ always be the 'final' reads that go into taxprofiling, if you also run other steps such as complexity filtering, host removal, run merging etc.. @@ -121,7 +122,7 @@ You will only find the `.fastq` files in the results directory if you provide ` The output logs are saved in the output folder and are part of MultiQC report.You do not normally need to check these manually. -You will only find the `.fastq` files in the results directory if you provide ` --save_preprocessed_reads`. Alternatively, if you wish only to have the 'final' reads that go into classification/profiling (i.e., that may have additional processing), do not specify this flag but rather specify `--save_analysis_ready_reads`, in which case the reads will be in the folder `analysis_ready_reads` +You will only find the `.fastq` files in the results directory if you provide ` --save_preprocessed_reads`. Alternatively, if you wish only to have the 'final' reads that go into classification/profiling (i.e., that may have additional processing), do not specify this flag but rather specify `--save_analysis_ready_reads`, in which case the reads will be in the folder `analysis_ready_reads`. > ⚠️ We do **not** recommend using Porechop if you are already trimming the adapters with ONT's basecaller Guppy. @@ -140,7 +141,7 @@ It is used in nf-core/taxprofiler for complexity filtering using different algor -By default nf-core/taxprofiler will only provide the `.log` file if BBDuk is selected as the complexity filtering tool. You will only find the complexity filtered reads in your results directory if you provide ` --save_complexityfiltered_reads`. Alternatively, if you wish only to have the 'final' reads that go into classification/profiling (i.e., that may have additional processing), do not specify this flag but rather specify `--save_analysis_ready_reads`, in which case the reads will be in the folder `analysis_ready_reads` +By default nf-core/taxprofiler will only provide the `.log` file if BBDuk is selected as the complexity filtering tool. You will only find the complexity filtered reads in your results directory if you provide ` --save_complexityfiltered_reads`. Alternatively, if you wish only to have the 'final' reads that go into classification/profiling (i.e., that may have additional processing), do not specify this flag but rather specify `--save_analysis_ready_reads`, in which case the reads will be in the folder `analysis_ready_reads`. > ⚠️ The resulting `.fastq` files may _not_ always be the 'final' reads that go into taxprofiling, if you also run other steps such as host removal, run merging etc.. @@ -159,7 +160,7 @@ It is used in nf-core/taxprofiler for complexity filtering using different algor -By default nf-core/taxprofiler will only provide the `.log` file if PRINSEQ++ is selected as the complexity filtering tool. You will only find the complexity filtered `.fastq` files in your results directory if you supply ` --save_complexityfiltered_reads`. Alternatively, if you wish only to have the 'final' reads that go into classification/profiling (i.e., that may have additional processing), do not specify this flag but rather specify `--save_analysis_ready_reads`, in which case the reads will be in the folder `analysis_ready_reads` +By default nf-core/taxprofiler will only provide the `.log` file if PRINSEQ++ is selected as the complexity filtering tool. You will only find the complexity filtered `.fastq` files in your results directory if you supply ` --save_complexityfiltered_reads`. Alternatively, if you wish only to have the 'final' reads that go into classification/profiling (i.e., that may have additional processing), do not specify this flag but rather specify `--save_analysis_ready_reads`, in which case the reads will be in the folder `analysis_ready_reads`. > ⚠️ The resulting `.fastq` files may _not_ always be the 'final' reads that go into taxprofiling, if you also run other steps such as host removal, run merging etc.. @@ -176,7 +177,7 @@ By default nf-core/taxprofiler will only provide the `.log` file if PRINSEQ++ is -You will only find the `.fastq` files in the results directory if you provide ` --save_preprocessed_reads`. Alternatively, if you wish only to have the 'final' reads that go into classification/profiling (i.e., that may have additional processing), do not specify this flag but rather specify `--save_analysis_ready_reads`, in which case the reads will be in the folder `analysis_ready_reads` +You will only find the `.fastq` files in the results directory if you provide ` --save_preprocessed_reads`. Alternatively, if you wish only to have the 'final' reads that go into classification/profiling (i.e., that may have additional processing), do not specify this flag but rather specify `--save_analysis_ready_reads`, in which case the reads will be in the folder `analysis_ready_reads`. > ⚠️ We do **not** recommend using Filtlong if you are performing filtering of low quality reads with ONT's basecaller Guppy. @@ -199,7 +200,7 @@ It is used with nf-core/taxprofiler to allow removal of 'host' (e.g. human) and/ -By default nf-core/taxprofiler will only provide the `.log` file if host removal is turned on. You will only have a `.bam` file if you specify `--save_hostremoval_bam`. This will contain _both_ mapped and unmapped reads. You will only get FASTQ files if you specify to save `--save_hostremoval_unmapped` - these contain only unmapped reads. Alternatively, if you wish only to have the 'final' reads that go into classification/profiling (i.e., that may have additional processing), do not specify this flag but rather specify `--save_analysis_ready_reads`, in which case the reads will be in the folder `analysis_ready_reads` +By default nf-core/taxprofiler will only provide the `.log` file if host removal is turned on. You will only have a `.bam` file if you specify `--save_hostremoval_bam`. This will contain _both_ mapped and unmapped reads. You will only get FASTQ files if you specify to save `--save_hostremoval_unmapped` - these contain only unmapped reads. Alternatively, if you wish only to have the 'final' reads that go into classification/profiling (i.e., that may have additional processing), do not specify this flag but rather specify `--save_analysis_ready_reads`, in which case the reads will be in the folder `analysis_ready_reads`. > ℹ️ Unmapped reads in FASTQ are only found in this directory for short-reads, for long-reads see [`samtools/bam2fq/`](#samtools-bam2fq) @@ -242,10 +243,26 @@ By default, nf-core/taxprofiler will only provide the `.bam` file containing map -This directory will be present and contain the unmapped reads from the `.fastq` format from long-read minimap2 host removal, if `--save_hostremoval_unmapped` is supplied. Alternatively, if you wish only to have the 'final' reads that go into classification/profiling (i.e., that may have additional processing), do not specify this flag but rather specify `--save_analysis_ready_reads`, in which case the reads will be in the folder `analysis_ready_reads` +This directory will be present and contain the unmapped reads from the `.fastq` format from long-read minimap2 host removal, if `--save_hostremoval_unmapped` is supplied. Alternatively, if you wish only to have the 'final' reads that go into classification/profiling (i.e., that may have additional processing), do not specify this flag but rather specify `--save_analysis_ready_reads`, in which case the reads will be in the folder `analysis_ready_reads`. > ℹ️ For short-read unmapped reads, see [bowtie2](#bowtie2). +### Analysis Ready Reads + +> ℹ️ This optional results directory will only be present in the pipeline results when supplying `--save_analysis_ready_reads`. + +
    +Output files + +- `samtoolsstats` + - `_{fq,fastq}.gz`: Final reads that underwent preprocessing that were sent for classification/profiling. + +
    + +The results directory will contain the 'final' processed reads used as input for classification/profiling. It will _only_ include the output of the _last step of any combinations of preprocessing steps that may have been specified in the run configuration. For example, if you perform the read QC and host-removal preprocessing steps, the final reads that are sent to classification/profiling are the host-removed FASTQ files - this will be the ones present in this directory. + +> ⚠️ If you turn off all preprocessing steps, then no results will be present in this directory. This happens independtly for short- and long-reads. I.e. you will only have FASTQ files for short reads in this directory if you skip all long-read preprocessing. + ### SAMtools stats [SAMtools stats](http://www.htslib.org/doc/samtools-stats.html) collects statistics from a `.sam`, `.bam`, or `.cram` alignment file and outputs in a text format. @@ -277,7 +294,7 @@ This is the last possible preprocessing step, so if you have multiple runs or li Note that you will only find samples that went through the run merging step in this directory. For samples that had a single run or library will not go through this step of the pipeline and thus will not be present in this directory. -This directory and it's FASTQ files will only be present if you supply `--save_runmerged_reads`.Alternatively, if you wish only to have the 'final' reads that go into classification/profiling (i.e., that may have additional processing), do not specify this flag but rather specify `--save_analysis_ready_reads`, in which case the reads will be in the folder `analysis_ready_reads` +This directory and it's FASTQ files will only be present if you supply `--save_runmerged_reads`.Alternatively, if you wish only to have the 'final' reads that go into classification/profiling (i.e., that may have additional processing), do not specify this flag but rather specify `--save_analysis_ready_reads`, in which case the reads will be in the folder `analysis_ready_reads`. ### Bracken diff --git a/docs/usage.md b/docs/usage.md index a38931e..4d584d9 100644 --- a/docs/usage.md +++ b/docs/usage.md @@ -168,6 +168,8 @@ nf-core/taxprofiler offers four main preprocessing steps for preprocessing raw s - [**Host read-removal**](#host-read-removal): removal of reads aligning to reference genome(s) of a host. - [**Run merging**](#run-merging): concatenation of multiple FASTQ chunks/sequencing runs/libraries of a sample. +> ℹ️ You can save the 'final' reads used for classification/profiling from any combination of these steps with `--save_analysis_ready_reads`. + #### Read Processing Raw sequencing read processing in the form of adapter clipping and paired-end read merging can be activated via the `--perform_shortread_qc` or `--perform_longread_qc` flags. diff --git a/nextflow_schema.json b/nextflow_schema.json index c13fdbc..14bdfd6 100644 --- a/nextflow_schema.json +++ b/nextflow_schema.json @@ -69,6 +69,12 @@ "fa_icon": "fas fa-save", "description": "Save reads from samples that went through the adapter clipping, pair-merging, and length filtering steps for both short and long reads", "help_text": "This saves the FASTQ output from the following tools:\n\n- fastp\n- AdapterRemoval\n- Porechop\n- Filtlong\n\nThese reads will be a mixture of: adapter clipped, quality trimmed, pair-merged, and length filtered, depending on the parameters you set." + }, + "save_analysis_ready_fastqs": { + "type": "boolean", + "fa_icon": "fas fa-save", + "description": "Save only the final reads from all read processing steps (that are sent to classification/profiling) in results directory.", + "help_text": "This flag will generate the directory `results/analysis_read_reads` that contains the reads from the last preprocessing (QC, host removal, run merging etc.) step of the pipeline run. \n\nThis can be useful if you wish to re-use the final cleaned-up and prepared reads - the data actually used for the actual classification/profiling steps of the pipeline - for other analyses or purposes (e.g., to reduce redundant preprocessing between different pipelines, e.g. [nf-core/mag](https://nf-co.re/mag)).\n\nIn most cases this will be preferred over similar parameters e.g. ` --save_preprocessed_reads` or ` --save_complexityfiltered_reads`, unless you wish to explore in more detail the output of each specific preprocessing step independently.\n\nNote if you do no preprocessing of any kind, nothing will be present in this directory. " } }, "fa_icon": "fas fa-users-cog" From 3f34603c00da28553c074e8ce086d245257ed641 Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Sat, 15 Apr 2023 12:54:07 +0200 Subject: [PATCH 770/789] Prettier --- docs/output.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/docs/output.md b/docs/output.md index 741a23c..b7c7490 100644 --- a/docs/output.md +++ b/docs/output.md @@ -259,7 +259,7 @@ This directory will be present and contain the unmapped reads from the `.fastq` -The results directory will contain the 'final' processed reads used as input for classification/profiling. It will _only_ include the output of the _last step of any combinations of preprocessing steps that may have been specified in the run configuration. For example, if you perform the read QC and host-removal preprocessing steps, the final reads that are sent to classification/profiling are the host-removed FASTQ files - this will be the ones present in this directory. +The results directory will contain the 'final' processed reads used as input for classification/profiling. It will _only_ include the output of the \_last step of any combinations of preprocessing steps that may have been specified in the run configuration. For example, if you perform the read QC and host-removal preprocessing steps, the final reads that are sent to classification/profiling are the host-removed FASTQ files - this will be the ones present in this directory. > ⚠️ If you turn off all preprocessing steps, then no results will be present in this directory. This happens independtly for short- and long-reads. I.e. you will only have FASTQ files for short reads in this directory if you skip all long-read preprocessing. @@ -291,7 +291,6 @@ This is the last possible preprocessing step, so if you have multiple runs or li - Note that you will only find samples that went through the run merging step in this directory. For samples that had a single run or library will not go through this step of the pipeline and thus will not be present in this directory. This directory and it's FASTQ files will only be present if you supply `--save_runmerged_reads`.Alternatively, if you wish only to have the 'final' reads that go into classification/profiling (i.e., that may have additional processing), do not specify this flag but rather specify `--save_analysis_ready_reads`, in which case the reads will be in the folder `analysis_ready_reads`. From ee031ebf9197a3e6b572d96b965c45cc614ecd1a Mon Sep 17 00:00:00 2001 From: "James A. Fellows Yates" Date: Thu, 20 Apr 2023 12:58:23 +0200 Subject: [PATCH 771/789] Apply suggestions from code review Co-authored-by: Sofia Stamouli <91951607+sofstam@users.noreply.github.com> --- docs/output.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/output.md b/docs/output.md index b7c7490..c562527 100644 --- a/docs/output.md +++ b/docs/output.md @@ -255,13 +255,13 @@ This directory will be present and contain the unmapped reads from the `.fastq` Output files - `samtoolsstats` - - `_{fq,fastq}.gz`: Final reads that underwent preprocessing that were sent for classification/profiling. + - `_{fq,fastq}.gz`: Final reads that underwent preprocessing and were sent for classification/profiling. -The results directory will contain the 'final' processed reads used as input for classification/profiling. It will _only_ include the output of the \_last step of any combinations of preprocessing steps that may have been specified in the run configuration. For example, if you perform the read QC and host-removal preprocessing steps, the final reads that are sent to classification/profiling are the host-removed FASTQ files - this will be the ones present in this directory. +The results directory will contain the 'final' processed reads used as input for classification/profiling. It will _only_ include the output of the \_last step of any combinations of preprocessing steps that may have been specified in the run configuration. For example, if you perform the read QC and host-removal preprocessing steps, the final reads that are sent to classification/profiling are the host-removed FASTQ files - those will be the ones present in this directory. -> ⚠️ If you turn off all preprocessing steps, then no results will be present in this directory. This happens independtly for short- and long-reads. I.e. you will only have FASTQ files for short reads in this directory if you skip all long-read preprocessing. +> ⚠️ If you turn off all preprocessing steps, then no results will be present in this directory. This happens independently for short- and long-reads. I.e. you will only have FASTQ files for short reads in this directory if you skip all long-read preprocessing. ### SAMtools stats @@ -293,7 +293,7 @@ This is the last possible preprocessing step, so if you have multiple runs or li Note that you will only find samples that went through the run merging step in this directory. For samples that had a single run or library will not go through this step of the pipeline and thus will not be present in this directory. -This directory and it's FASTQ files will only be present if you supply `--save_runmerged_reads`.Alternatively, if you wish only to have the 'final' reads that go into classification/profiling (i.e., that may have additional processing), do not specify this flag but rather specify `--save_analysis_ready_reads`, in which case the reads will be in the folder `analysis_ready_reads`. +This directory and its FASTQ files will only be present if you supply `--save_runmerged_reads`.Alternatively, if you wish only to have the 'final' reads that go into classification/profiling (i.e., that may have additional processing), do not specify this flag but rather specify `--save_analysis_ready_reads`, in which case the reads will be in the folder `analysis_ready_reads`. ### Bracken From 105bac7bb9882561e2fc96db7b02a7ca3e06640b Mon Sep 17 00:00:00 2001 From: "James A. Fellows Yates" Date: Thu, 20 Apr 2023 12:59:33 +0200 Subject: [PATCH 772/789] Apply suggestions from code review --- docs/output.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/output.md b/docs/output.md index c562527..0fde197 100644 --- a/docs/output.md +++ b/docs/output.md @@ -259,7 +259,7 @@ This directory will be present and contain the unmapped reads from the `.fastq` -The results directory will contain the 'final' processed reads used as input for classification/profiling. It will _only_ include the output of the \_last step of any combinations of preprocessing steps that may have been specified in the run configuration. For example, if you perform the read QC and host-removal preprocessing steps, the final reads that are sent to classification/profiling are the host-removed FASTQ files - those will be the ones present in this directory. +The results directory will contain the 'final' processed reads used as input for classification/profiling. It will _only_ include the output of the _last_ step of any combinations of preprocessing steps that may have been specified in the run configuration. For example, if you perform the read QC and host-removal preprocessing steps, the final reads that are sent to classification/profiling are the host-removed FASTQ files - those will be the ones present in this directory. > ⚠️ If you turn off all preprocessing steps, then no results will be present in this directory. This happens independently for short- and long-reads. I.e. you will only have FASTQ files for short reads in this directory if you skip all long-read preprocessing. From 5d90c775e9baeaef3325126d3a1a531eee42f214 Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Thu, 20 Apr 2023 14:57:51 +0200 Subject: [PATCH 773/789] Logic safety! --- conf/modules.config | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/conf/modules.config b/conf/modules.config index 6c5f227..c3cb136 100644 --- a/conf/modules.config +++ b/conf/modules.config @@ -78,7 +78,7 @@ process { pattern: '*.fastq.gz', enabled: params.save_analysis_ready_fastqs, // Don't know why `!` doesn't work here, but `== false` makes it work... - saveAs: { ( params.perform_runmerging == false || params.perform_runmerging && !meta.is_multirun ) && !params.perform_shortread_hostremoval && !params.perform_shortread_complexityfilter && params.perform_shortread_qc && params.save_analysis_ready_fastqs ? it : null } + saveAs: { ( params.perform_runmerging == false || ( params.perform_runmerging && !meta.is_multirun ) ) && !params.perform_shortread_hostremoval && !params.perform_shortread_complexityfilter && params.perform_shortread_qc && params.save_analysis_ready_fastqs ? it : null } ] ] } @@ -113,7 +113,7 @@ process { mode: params.publish_dir_mode, pattern: params.shortread_qc_mergepairs ? '*merged.fastq.gz' : '*.fastp.fastq.gz', enabled: params.save_analysis_ready_fastqs, - saveAs: { ( params.perform_runmerging == false || params.perform_runmerging && !meta.is_multirun ) && !params.perform_shortread_hostremoval && !params.perform_shortread_complexityfilter && params.perform_shortread_qc && params.save_analysis_ready_fastqs ? it : null } + saveAs: { ( params.perform_runmerging == false || ( params.perform_runmerging && !meta.is_multirun ) ) && !params.perform_shortread_hostremoval && !params.perform_shortread_complexityfilter && params.perform_shortread_qc && params.save_analysis_ready_fastqs ? it : null } ] ] } @@ -143,7 +143,7 @@ process { mode: params.publish_dir_mode, pattern: '*truncated.fastq.gz', enabled: params.save_analysis_ready_fastqs, - saveAs: { ( params.perform_runmerging == false || params.perform_runmerging && !meta.is_multirun ) && !params.perform_shortread_hostremoval && !params.perform_shortread_complexityfilter && params.perform_shortread_qc && params.save_analysis_ready_fastqs ? it : null } + saveAs: { ( params.perform_runmerging == false || ( params.perform_runmerging && !meta.is_multirun ) ) && !params.perform_shortread_hostremoval && !params.perform_shortread_complexityfilter && params.perform_shortread_qc && params.save_analysis_ready_fastqs ? it : null } ] ] } @@ -176,7 +176,7 @@ process { mode: params.publish_dir_mode, pattern: '*{truncated.fastq,singleton.truncated}.gz', enabled: params.save_analysis_ready_fastqs, - saveAs: { ( params.perform_runmerging == false || params.perform_runmerging && !meta.is_multirun ) && !params.perform_shortread_hostremoval && !params.perform_shortread_complexityfilter && params.perform_shortread_qc && !params.shortread_qc_mergepairs && params.save_analysis_ready_fastqs ? it : null} + saveAs: { ( params.perform_runmerging == false || ( params.perform_runmerging && !meta.is_multirun ) ) && !params.perform_shortread_hostremoval && !params.perform_shortread_complexityfilter && params.perform_shortread_qc && !params.shortread_qc_mergepairs && params.save_analysis_ready_fastqs ? it : null} ] ] } @@ -190,7 +190,7 @@ process { mode: params.publish_dir_mode, pattern: '*.fastq.gz', enabled: params.save_analysis_ready_fastqs, - saveAs: { ( params.perform_runmerging == false || params.perform_runmerging && !meta.is_multirun ) && !params.perform_shortread_hostremoval && !params.perform_shortread_complexityfilter && params.perform_shortread_qc && params.save_analysis_ready_fastqs ? it : null } + saveAs: { ( params.perform_runmerging == false || ( params.perform_runmerging && !meta.is_multirun ) ) && !params.perform_shortread_hostremoval && !params.perform_shortread_complexityfilter && params.perform_shortread_qc && params.save_analysis_ready_fastqs ? it : null } ] ] } @@ -214,7 +214,7 @@ process { mode: params.publish_dir_mode, pattern: '*_porechopped.fastq.gz', enabled: params.save_analysis_ready_fastqs, - saveAs: { ( params.perform_runmerging == false || params.perform_runmerging && !meta.is_multirun ) && !params.perform_longread_hostremoval && params.longread_qc_skipqualityfilter && !params.longread_qc_skipadaptertrim && params.perform_longread_qc && params.save_analysis_ready_fastqs ? it : null } + saveAs: { ( params.perform_runmerging == false || ( params.perform_runmerging && !meta.is_multirun ) ) && !params.perform_longread_hostremoval && params.longread_qc_skipqualityfilter && !params.longread_qc_skipadaptertrim && params.perform_longread_qc && params.save_analysis_ready_fastqs ? it : null } ] ] } @@ -244,7 +244,7 @@ process { mode: params.publish_dir_mode, pattern: '*.fastq.gz', enabled: params.save_analysis_ready_fastqs, - saveAs: { ( params.perform_runmerging == false || params.perform_runmerging && !meta.is_multirun ) && !params.perform_longread_hostremoval && !params.longread_qc_skipqualityfilter && params.perform_longread_qc && params.save_analysis_ready_fastqs ? it : null } + saveAs: { ( params.perform_runmerging == false || ( params.perform_runmerging && !meta.is_multirun ) ) && !params.perform_longread_hostremoval && !params.longread_qc_skipqualityfilter && params.perform_longread_qc && params.save_analysis_ready_fastqs ? it : null } ] ] } @@ -273,7 +273,7 @@ process { mode: params.publish_dir_mode, pattern: '*.fastq.gz', enabled: params.save_analysis_ready_fastqs, - saveAs: { ( params.perform_runmerging == false || params.perform_runmerging && !meta.is_multirun ) && !params.perform_shortread_hostremoval && params.shortread_complexityfilter_tool && params.save_analysis_ready_fastqs ? it : null } + saveAs: { ( params.perform_runmerging == false || ( params.perform_runmerging && !meta.is_multirun ) ) && !params.perform_shortread_hostremoval && params.shortread_complexityfilter_tool && params.save_analysis_ready_fastqs ? it : null } ] ] } @@ -301,7 +301,7 @@ process { mode: params.publish_dir_mode, pattern: '*{_good_out.fastq.gz,_good_out_R1.fastq.gz,_good_out_R2.fastq.gz}', enabled: params.save_analysis_ready_fastqs, - saveAs: { ( params.perform_runmerging == false || params.perform_runmerging && !meta.is_multirun ) && !params.perform_shortread_hostremoval && params.shortread_complexityfilter_tool && params.save_analysis_ready_fastqs ? it : null } + saveAs: { ( params.perform_runmerging == false || ( params.perform_runmerging && !meta.is_multirun ) ) && !params.perform_shortread_hostremoval && params.shortread_complexityfilter_tool && params.save_analysis_ready_fastqs ? it : null } ] ] } @@ -344,7 +344,7 @@ process { enabled: params.perform_shortread_hostremoval, pattern: '*.fastq.gz', enabled: params.save_analysis_ready_fastqs, - saveAs: { ( params.perform_runmerging == false || params.perform_runmerging && !meta.is_multirun ) && params.perform_shortread_hostremoval && params.save_analysis_ready_fastqs ? it : null } + saveAs: { ( params.perform_runmerging == false || ( params.perform_runmerging && !meta.is_multirun ) ) && params.perform_shortread_hostremoval && params.save_analysis_ready_fastqs ? it : null } ] ] } From f476b49d29dd312cfa6d5b6e14f8008d6c0b2a3c Mon Sep 17 00:00:00 2001 From: "James A. Fellows Yates" Date: Thu, 20 Apr 2023 15:05:49 +0200 Subject: [PATCH 774/789] Add team sectionb --- README.md | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index ba08835..d46c8e1 100644 --- a/README.md +++ b/README.md @@ -80,15 +80,29 @@ The nf-core/taxprofiler pipeline comes with documentation about the pipeline [us nf-core/taxprofiler was originally written by [James A. Fellows Yates](https://github.com/jfy133), [Moritz Beber](https://github.com/Midnighter), and [Sofia Stamouli](https://github.com/sofsam). We thank the following people for their contributions to the development of this pipeline: + +### Team -[Lauri Mesilaakso](https://github.com/ljmesi), [Tanja Normark](https://github.com/talnor), [Maxime Borry](https://github.com/maxibor),[Thomas A. Christensen II](https://github.com/MillironX), [Jianhong Ou](https://github.com/jianhong), [Rafal Stepien](https://github.com/rafalstepien), [Mahwash Jamy](https://github.com/mjamy), and the [nf-core/community](https://nf-co.re/community). +- [Lauri Mesilaakso](https://github.com/ljmesi) +- [Tanja Normark](https://github.com/talnor) +- [Maxime Borry](https://github.com/maxibor) +- [Thomas A. Christensen II](https://github.com/MillironX) +- [Jianhong Ou](https://github.com/jianhong) +- [Rafal Stepien](https://github.com/rafalstepien) +- [Mahwash Jamy](https://github.com/mjamy). + +### Acknowledgments We also are grateful for the feedback and comments from: +- The general [nf-core/community](https://nf-co.re/community) + +And specifically to + - [Alex Hübner](https://github.com/alexhbnr) -- [LilyAnderssonLee](https://github.com/LilyAnderssonLee) +- [Lily Andersson Lee](https://github.com/LilyAnderssonLee) -Credit and thanks also goes to [Zandra Fagernäs](https://github.com/ZandraFagernas) for the logo. +❤️ also goes to [Zandra Fagernäs](https://github.com/ZandraFagernas) for the logo. ## Contributions and Support From 31e3c21dcbf359de0606f9d04439558c3c922d24 Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Thu, 20 Apr 2023 15:10:39 +0200 Subject: [PATCH 775/789] Make all saveAs conditions consistent --- conf/modules.config | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/conf/modules.config b/conf/modules.config index c3cb136..f909b4e 100644 --- a/conf/modules.config +++ b/conf/modules.config @@ -388,7 +388,7 @@ process { mode: params.publish_dir_mode, pattern: '*.fq.gz', enabled: params.save_analysis_ready_fastqs, - saveAs: { ( !params.perform_runmerging || params.perform_runmerging && !meta.is_multirun ) && params.perform_longread_hostremoval && params.save_analysis_ready_fastqs ? it : null } + saveAs: { ( params.perform_runmerging == false || params.perform_runmerging && !meta.is_multirun ) && params.perform_longread_hostremoval && params.save_analysis_ready_fastqs ? it : null } ] ] } From 4f7e2eed8c900891bdb24ca17a3ff8554884285a Mon Sep 17 00:00:00 2001 From: nf-core-bot Date: Thu, 20 Apr 2023 13:11:19 +0000 Subject: [PATCH 776/789] [automated] Fix linting with Prettier --- CHANGELOG.md | 1 - 1 file changed, 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index ec19144..73c5337 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -15,7 +15,6 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#274](https://github.com/nf-core/taxprofiler/pull/274/files) Substituted the samtools/bam2fq module with samtools/fastq module (fix by @sofstam) - [#275](https://github.com/nf-core/taxprofiler/pull/275/files) Replaced function used for error reporting to more Nextflow friendly method (fix by @jfy133) - ### `Dependencies` ### `Deprecated` From 0ed110c529977d6e16158b94f1adf39d75a7b7db Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Thu, 20 Apr 2023 15:20:26 +0200 Subject: [PATCH 777/789] BUmp Kraken2 nf-core module to prevent huge logs --- modules.json | 2 +- modules/nf-core/kraken2/kraken2/main.nf | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/modules.json b/modules.json index 9aa617a..f69c777 100644 --- a/modules.json +++ b/modules.json @@ -103,7 +103,7 @@ }, "kraken2/kraken2": { "branch": "master", - "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", + "git_sha": "7c695e0147df1157413e06246d9b0094617d3e6b", "installed_by": ["modules"] }, "krakentools/combinekreports": { diff --git a/modules/nf-core/kraken2/kraken2/main.nf b/modules/nf-core/kraken2/kraken2/main.nf index 1b9e760..5901064 100644 --- a/modules/nf-core/kraken2/kraken2/main.nf +++ b/modules/nf-core/kraken2/kraken2/main.nf @@ -31,7 +31,7 @@ process KRAKEN2_KRAKEN2 { 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 readclassification_option = save_reads_assignment ? "--output ${prefix}.kraken2.classifiedreads.txt" : "" + def readclassification_option = save_reads_assignment ? "--output ${prefix}.kraken2.classifiedreads.txt" : "--output /dev/null" def compress_reads_command = save_output_fastqs ? "pigz -p $task.cpus *.fastq" : "" """ From 1eb951715f03cc873dc76ff788aef14da441ddb8 Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Thu, 20 Apr 2023 15:57:57 +0200 Subject: [PATCH 778/789] MultiQC optimisations for DIAMOND and Falco --- assets/multiqc_config.yml | 3 +-- workflows/taxprofiler.nf | 7 ++++++- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/assets/multiqc_config.yml b/assets/multiqc_config.yml index f13d775..deaf219 100644 --- a/assets/multiqc_config.yml +++ b/assets/multiqc_config.yml @@ -37,8 +37,7 @@ run_modules: sp: diamond: - contents: "diamond v" - num_lines: 10 + fn_re: ".*.diamond.log$" fastqc/data: fn_re: ".*(fastqc|falco)_data.txt$" fastqc/zip: diff --git a/workflows/taxprofiler.nf b/workflows/taxprofiler.nf index 25c8d76..8a9a3f3 100644 --- a/workflows/taxprofiler.nf +++ b/workflows/taxprofiler.nf @@ -270,7 +270,12 @@ workflow TAXPROFILER { ch_multiqc_files = ch_multiqc_files.mix(CUSTOM_DUMPSOFTWAREVERSIONS.out.mqc_yml.collect()) if ( params.preprocessing_qc_tool == 'falco' ) { - ch_multiqc_files = ch_multiqc_files.mix(FALCO.out.txt.collect{it[1]}.ifEmpty([])) + // only mix in files acutally used by MultiQC + ch_multiqc_files = ch_multiqc_files.mix(FALCO.out.txt + .map { meta, reports -> reports } + .flatten() + .filter { path -> path.name.endsWith('_data.txt')} + .ifEmpty([])) } else { ch_multiqc_files = ch_multiqc_files.mix(FASTQC.out.zip.collect{it[1]}.ifEmpty([])) } From 59f31469c36b22a3b8081c44875d8856dab0890e Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Thu, 20 Apr 2023 16:01:22 +0200 Subject: [PATCH 779/789] Update CHANGELOG --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6d289cb..bff1c9a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -13,6 +13,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#269](https://github.com/nf-core/taxprofiler/pull/269/files) Reduced output files in AWS full test output due to very large files - [#270](https://github.com/nf-core/taxprofiler/pull/270/files) Fixed warning for host removal index parameter, and improved index checks (♥ to @prototaxites for reporting, fix by @jfy133) - [#274](https://github.com/nf-core/taxprofiler/pull/274/files) Substituted the samtools/bam2fq module with samtools/fastq module (fix by @sofstam) +- [#286](https://github.com/nf-core/taxprofiler/pull/286/files) Runtime optimisation of MultiQC step via improved log file processing (fix by @Midnighter & @jfy133) ### `Dependencies` From d06ac3713d6b43516ee1fcc709b222d124662eb0 Mon Sep 17 00:00:00 2001 From: "James A. Fellows Yates" Date: Fri, 21 Apr 2023 05:55:14 +0200 Subject: [PATCH 780/789] Update README.md Co-authored-by: Sofia Stamouli <91951607+sofstam@users.noreply.github.com> --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index d46c8e1..d1f2418 100644 --- a/README.md +++ b/README.md @@ -89,7 +89,7 @@ We thank the following people for their contributions to the development of this - [Thomas A. Christensen II](https://github.com/MillironX) - [Jianhong Ou](https://github.com/jianhong) - [Rafal Stepien](https://github.com/rafalstepien) -- [Mahwash Jamy](https://github.com/mjamy). +- [Mahwash Jamy](https://github.com/mjamy) ### Acknowledgments From 386b1c9dfdaa8060d22ad6c173fce7f1fdb16894 Mon Sep 17 00:00:00 2001 From: nf-core-bot Date: Fri, 21 Apr 2023 03:56:12 +0000 Subject: [PATCH 781/789] [automated] Fix linting with Prettier --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index d1f2418..218cfe1 100644 --- a/README.md +++ b/README.md @@ -80,7 +80,7 @@ The nf-core/taxprofiler pipeline comes with documentation about the pipeline [us nf-core/taxprofiler was originally written by [James A. Fellows Yates](https://github.com/jfy133), [Moritz Beber](https://github.com/Midnighter), and [Sofia Stamouli](https://github.com/sofsam). We thank the following people for their contributions to the development of this pipeline: - + ### Team - [Lauri Mesilaakso](https://github.com/ljmesi) From e000ac3038555c8bb9ca414b523158ed9c29b19d Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Fri, 21 Apr 2023 06:09:49 +0200 Subject: [PATCH 782/789] Misssing changelog manual prettier [skip ci] --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 73c5337..7817114 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -14,6 +14,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [#270](https://github.com/nf-core/taxprofiler/pull/270/files) Fixed warning for host removal index parameter, and improved index checks (♥ to @prototaxites for reporting, fix by @jfy133) - [#274](https://github.com/nf-core/taxprofiler/pull/274/files) Substituted the samtools/bam2fq module with samtools/fastq module (fix by @sofstam) - [#275](https://github.com/nf-core/taxprofiler/pull/275/files) Replaced function used for error reporting to more Nextflow friendly method (fix by @jfy133) +- [#285](https://github.com/nf-core/taxprofiler/pull/285/files) Fixed overly large log files in Kraken2 output (♥ to @prototaxites for reporting, fix by @Midnighter & @jfy133) ### `Dependencies` From ee76a5f38b5c05edbad7b607faf118bb187762c3 Mon Sep 17 00:00:00 2001 From: "James A. Fellows Yates" Date: Fri, 21 Apr 2023 13:44:03 +0200 Subject: [PATCH 783/789] Update conf/modules.config Co-authored-by: Sofia Stamouli <91951607+sofstam@users.noreply.github.com> --- conf/modules.config | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/conf/modules.config b/conf/modules.config index f909b4e..25480ea 100644 --- a/conf/modules.config +++ b/conf/modules.config @@ -388,7 +388,7 @@ process { mode: params.publish_dir_mode, pattern: '*.fq.gz', enabled: params.save_analysis_ready_fastqs, - saveAs: { ( params.perform_runmerging == false || params.perform_runmerging && !meta.is_multirun ) && params.perform_longread_hostremoval && params.save_analysis_ready_fastqs ? it : null } + saveAs: { ( params.perform_runmerging == false || ( params.perform_runmerging && !meta.is_multirun) ) && params.perform_longread_hostremoval && params.save_analysis_ready_fastqs ? it : null } ] ] } From 70dd7cade992d05b848de6ea41752a98e8546811 Mon Sep 17 00:00:00 2001 From: "Moritz E. Beber" Date: Thu, 30 Mar 2023 16:49:22 +0200 Subject: [PATCH 784/789] feat: introduce sample batches for krakenuniq --- nextflow.config | 1 + subworkflows/local/profiling.nf | 24 ++++++++++++++---------- 2 files changed, 15 insertions(+), 10 deletions(-) diff --git a/nextflow.config b/nextflow.config index 827d182..c155769 100644 --- a/nextflow.config +++ b/nextflow.config @@ -125,6 +125,7 @@ params { krakenuniq_ram_chunk_size = '16G' krakenuniq_save_reads = false // added directly to module in profiling.nf krakenuniq_save_readclassifications = false // added directly to module in profiling.nf + krakenuniq_batch_size = 20 // Bracken run_bracken = false diff --git a/subworkflows/local/profiling.nf b/subworkflows/local/profiling.nf index d328a9c..760353a 100644 --- a/subworkflows/local/profiling.nf +++ b/subworkflows/local/profiling.nf @@ -315,16 +315,20 @@ workflow PROFILING { if ( params.run_krakenuniq ) { ch_input_for_krakenuniq = ch_input_for_profiling.krakenuniq - .map { - meta, reads, db_meta, db -> - [[id: db_meta.db_name, single_end: meta.single_end], reads, db_meta, db] - } - .groupTuple(by: [0,2,3]) - .multiMap { - single_meta, reads, db_meta, db -> - reads: [ single_meta + db_meta, reads.flatten() ] - db: db - } + .map { + meta, reads, db_meta, db -> + [[id: db_meta.db_name, single_end: meta.single_end], reads, db_meta, db] + } + .groupTuple(by: [0,2,3]) + .flatMap { single_meta, reads, db_meta, db -> + def batches = reads.collate(params.krakenuniq_batch_size) + return batches.colect { batch -> [ single_meta + db_meta, batch.flatten(), db ]} + } + .multiMap { + meta, reads, db -> + reads: [ meta, reads ] + db: db + } // Hardcode to _always_ produce the report file (which is our basic output, and goes into) KRAKENUNIQ_PRELOADEDKRAKENUNIQ ( ch_input_for_krakenuniq.reads, ch_input_for_krakenuniq.db, params.krakenuniq_ram_chunk_size, params.krakenuniq_save_reads, true, params.krakenuniq_save_readclassifications ) ch_multiqc_files = ch_multiqc_files.mix( KRAKENUNIQ_PRELOADEDKRAKENUNIQ.out.report ) From 17a9493e6dd501486afc438b2d94e1dd0fe726cf Mon Sep 17 00:00:00 2001 From: "Moritz E. Beber" Date: Thu, 30 Mar 2023 16:51:41 +0200 Subject: [PATCH 785/789] fix: remove typo --- subworkflows/local/profiling.nf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/subworkflows/local/profiling.nf b/subworkflows/local/profiling.nf index 760353a..7f8b943 100644 --- a/subworkflows/local/profiling.nf +++ b/subworkflows/local/profiling.nf @@ -322,7 +322,7 @@ workflow PROFILING { .groupTuple(by: [0,2,3]) .flatMap { single_meta, reads, db_meta, db -> def batches = reads.collate(params.krakenuniq_batch_size) - return batches.colect { batch -> [ single_meta + db_meta, batch.flatten(), db ]} + return batches.collect { batch -> [ single_meta + db_meta, batch.flatten(), db ]} } .multiMap { meta, reads, db -> From 2725fe15a9afbc40cfecdb15235021f10b2794e3 Mon Sep 17 00:00:00 2001 From: "Moritz E. Beber" Date: Sat, 1 Apr 2023 15:18:46 +0200 Subject: [PATCH 786/789] docs: create a schema entry for the new parameter --- nextflow_schema.json | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/nextflow_schema.json b/nextflow_schema.json index 803e213..9c0d1b7 100644 --- a/nextflow_schema.json +++ b/nextflow_schema.json @@ -432,6 +432,13 @@ "description": "Turn on saving of KrakenUniq per-read taxonomic assignment file", "help_text": "Save a text file that contains a list of each read that had a taxonomic assignment, with information on specific taxonomic taxonomic assignment that that read recieved.\n\n> Modifies tool parameter(s):\n> - krakenuniq: `--output`" }, + "krakenuniq_batch_size": { + "type": "integer", + "default": 20, + "fa_icon": "far fa-window-restore", + "description": "Set the batch size for KrakenUniq", + "help_text": "Specify the batch size for KrakenUniq. The reference database for KrakenUniq is loaded into memory once in a process and then used to classify many samples. This parameter determines for how many samples at a time." + }, "run_bracken": { "type": "boolean", "description": "Turn on Bracken (and the required Kraken2 prerequisite step).", From 49086d9475826fa9edf3b021dec1927d465b14e0 Mon Sep 17 00:00:00 2001 From: "Moritz E. Beber" Date: Tue, 4 Apr 2023 12:40:27 +0200 Subject: [PATCH 787/789] docs: add changelog entry [skip ci] --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0e91599..85a760d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### `Added` +- [#276](https://github.com/nf-core/taxprofiler/pull/276) Implemented batching in the KrakenUniq samples processing. - [#272](https://github.com/nf-core/taxprofiler/pull/272) - Add saving of final 'analysis-ready-reads' to dedicated directory. (❤️ to @alexhbnr for reporting, added by @jfy133) ### `Fixed` From 08f06b9982f31aaf0e7ed5af6a79c8584170fb0d Mon Sep 17 00:00:00 2001 From: "Moritz E. Beber" Date: Sat, 22 Apr 2023 21:18:58 +0200 Subject: [PATCH 788/789] Apply suggestions from code review Co-authored-by: James A. Fellows Yates --- CHANGELOG.md | 2 +- nextflow_schema.json | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 85a760d..65b53cf 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,7 +7,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### `Added` -- [#276](https://github.com/nf-core/taxprofiler/pull/276) Implemented batching in the KrakenUniq samples processing. +- [#276](https://github.com/nf-core/taxprofiler/pull/276) Implemented batching in the KrakenUniq samples processing. (added by @Midnighter) - [#272](https://github.com/nf-core/taxprofiler/pull/272) - Add saving of final 'analysis-ready-reads' to dedicated directory. (❤️ to @alexhbnr for reporting, added by @jfy133) ### `Fixed` diff --git a/nextflow_schema.json b/nextflow_schema.json index 9c0d1b7..23f10c8 100644 --- a/nextflow_schema.json +++ b/nextflow_schema.json @@ -436,8 +436,8 @@ "type": "integer", "default": 20, "fa_icon": "far fa-window-restore", - "description": "Set the batch size for KrakenUniq", - "help_text": "Specify the batch size for KrakenUniq. The reference database for KrakenUniq is loaded into memory once in a process and then used to classify many samples. This parameter determines for how many samples at a time." + "description": "Specify the number samples for each KrakenUniq run", + "help_text": "Specify the batch size for KrakenUniq. The reference database for KrakenUniq is loaded into memory once in a process and then used to classify many samples. When you have many samples, a single KrakenUniq run can be rather slow. Alternatively, we can split up KrakenUniq runs for a 'batch' of samples, allowing a balance between shared using a database for multiple samples, but also faster parallelised KrakenUniq runs. This parameter determines for how many samples at a time." }, "run_bracken": { "type": "boolean", From 66a166dbdc8cfd71cde975ccc3828822c37d3ed8 Mon Sep 17 00:00:00 2001 From: "Moritz E. Beber" Date: Sat, 22 Apr 2023 21:23:27 +0200 Subject: [PATCH 789/789] docs: tweak parameter schema description --- nextflow_schema.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/nextflow_schema.json b/nextflow_schema.json index 23f10c8..60c22df 100644 --- a/nextflow_schema.json +++ b/nextflow_schema.json @@ -436,8 +436,8 @@ "type": "integer", "default": 20, "fa_icon": "far fa-window-restore", - "description": "Specify the number samples for each KrakenUniq run", - "help_text": "Specify the batch size for KrakenUniq. The reference database for KrakenUniq is loaded into memory once in a process and then used to classify many samples. When you have many samples, a single KrakenUniq run can be rather slow. Alternatively, we can split up KrakenUniq runs for a 'batch' of samples, allowing a balance between shared using a database for multiple samples, but also faster parallelised KrakenUniq runs. This parameter determines for how many samples at a time." + "description": "Specify the number of samples for each KrakenUniq run", + "help_text": "Specify the batch size for KrakenUniq. The reference database for KrakenUniq is loaded into memory once per nextflow process and then used to classify many samples. When you have many samples, a single KrakenUniq run can be rather slow. Alternatively, we can split up KrakenUniq runs for a 'batch' of samples, allowing a balance between shared use of database for multiple samples, but also faster parallelised KrakenUniq runs. This parameter determines for how many samples at a time." }, "run_bracken": { "type": "boolean",

    KBL`_zkUo8?SB^-{7uyU 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�FE)1&Z@Z(b^uYs{ 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

DYKQ!rL|L|~+@2kiu=|KJ)w4`+ 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 + + +taxfindertaxprofiler/ diff --git a/workflows/taxprofiler.nf b/workflows/taxprofiler.nf index b8b953b..2b78573 100644 --- a/workflows/taxprofiler.nf +++ b/workflows/taxprofiler.nf @@ -87,6 +87,7 @@ def multiqc_report = [] workflow TAXPROFILER { ch_versions = Channel.empty() + ch_taxprofiler_logo = Channel.fromPath("$projectDir/docs/images/nf-core-taxprofiler_logo_custom_light.png") /* SUBWORKFLOW: Read in samplesheet, validate and stage input files @@ -224,6 +225,8 @@ workflow TAXPROFILER { ch_multiqc_files = ch_multiqc_files.mix(CUSTOM_DUMPSOFTWAREVERSIONS.out.mqc_yml.collect()) ch_multiqc_files = ch_multiqc_files.mix(FASTQC.out.zip.collect{it[1]}.ifEmpty([])) + ch_multiqc_files = ch_multiqc_files.mix(ch_taxprofiler_logo.ifEmpty([])) + if (params.perform_shortread_clipmerge) { ch_multiqc_files = ch_multiqc_files.mix( SHORTREAD_PREPROCESSING.out.mqc.collect{it[1]}.ifEmpty([]) ) } From 792e2d019b94eb0d1f43da355350f8a066ecf0a2 Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Tue, 31 May 2022 13:06:48 +0200 Subject: [PATCH 222/789] Fix merge error in schema --- nextflow_schema.json | 1 + 1 file changed, 1 insertion(+) diff --git a/nextflow_schema.json b/nextflow_schema.json index 179daea..c38e5d1 100644 --- a/nextflow_schema.json +++ b/nextflow_schema.json @@ -427,5 +427,6 @@ "longread_qc_targetnbases": { "type": "integer", "default": 500000000 + } } } From e916c91de3306518fab7f5b3d1773e7cbe86aea8 Mon Sep 17 00:00:00 2001 From: JIANHONG OU Date: Tue, 31 May 2022 07:57:15 -0400 Subject: [PATCH 223/789] Delete null/pipeline_info directory --- null/pipeline_info/execution_trace_2022-05-21_11-05-12.txt | 1 - 1 file changed, 1 deletion(-) delete mode 100644 null/pipeline_info/execution_trace_2022-05-21_11-05-12.txt diff --git a/null/pipeline_info/execution_trace_2022-05-21_11-05-12.txt b/null/pipeline_info/execution_trace_2022-05-21_11-05-12.txt deleted file mode 100644 index 6b739ac..0000000 --- a/null/pipeline_info/execution_trace_2022-05-21_11-05-12.txt +++ /dev/null @@ -1 +0,0 @@ -task_id hash native_id name status exit submit duration realtime %cpu peak_rss peak_vmem rchar wchar From 4d77b47e8d3400c6f348afcf8a2c8c653d1fd8e4 Mon Sep 17 00:00:00 2001 From: JIANHONG OU Date: Tue, 31 May 2022 08:47:38 -0400 Subject: [PATCH 224/789] create a new test profile config for mOTUs. --- .github/workflows/ci.yml | 4 +++- conf/test.config | 2 +- conf/test_motus.config | 41 ++++++++++++++++++++++++++++++++ conf/test_nopreprocessing.config | 2 +- docs/usage.md | 9 +++++++ nextflow.config | 1 + 6 files changed, 56 insertions(+), 3 deletions(-) create mode 100644 conf/test_motus.config diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 689a193..01c5535 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -42,6 +42,8 @@ jobs: - "--perform_runmerging" - "--perform_runmerging --shortread_clipmerge_mergepairs" - "--shortread_complexityfilter false --perform_shortread_hostremoval" + # Test different profiles + profile: ["test", "test_motus"] steps: - name: Check out pipeline code @@ -70,4 +72,4 @@ jobs: # For example: adding multiple test runs with different parameters # Remember that you can parallelise this by using strategy.matrix run: | - nextflow run ${GITHUB_WORKSPACE} -profile test,docker --outdir ./results ${{ matrix.parameters }} + nextflow run ${GITHUB_WORKSPACE} -profile ${{ matrix.profile }},docker --outdir ./results ${{ matrix.parameters }} diff --git a/conf/test.config b/conf/test.config index cf983ab..3a6d265 100644 --- a/conf/test.config +++ b/conf/test.config @@ -37,7 +37,7 @@ params { run_metaphlan3 = true run_centrifuge = true run_diamond = true - run_motus = true + run_motus = false } process { diff --git a/conf/test_motus.config b/conf/test_motus.config new file mode 100644 index 0000000..c645154 --- /dev/null +++ b/conf/test_motus.config @@ -0,0 +1,41 @@ +/* +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Nextflow config file for running minimal tests +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Defines input files and everything required to run a fast and simple pipeline test. + + Use as follows: + nextflow run nf-core/taxprofiler -profile test, --outdir + +---------------------------------------------------------------------------------------- +*/ + +params { + config_profile_name = 'mOTUs Test profile' + config_profile_description = 'Minimal test to check mOTUs function' + + // Limit resources so that this can run on GitHub Actions + max_cpus = 2 + max_memory = '6.GB' + max_time = '6.h' + + // Input data + // TODO nf-core: Specify the paths to your test data on nf-core/test-datasets + // TODO nf-core: Give any required params for the test so that command line flags are not needed + input = 'https://raw.githubusercontent.com/nf-core/test-datasets/taxprofiler/samplesheet.csv' + databases = 'https://raw.githubusercontent.com/nf-core/test-datasets/taxprofiler/database.csv' + perform_shortread_clipmerge = false + perform_longread_clip = false + perform_shortread_complexityfilter = false + perform_shortread_hostremoval = false + perform_longread_hostremoval = false + perform_runmerging = false + hostremoval_reference = 'https://raw.githubusercontent.com/nf-core/test-datasets/modules/data/genomics/homo_sapiens/genome/genome.fasta' + run_kaiju = false + run_kraken2 = false + run_malt = false + run_metaphlan3 = false + run_centrifuge = false + run_diamond = false + run_motus = true +} diff --git a/conf/test_nopreprocessing.config b/conf/test_nopreprocessing.config index 7658a2d..e52319f 100644 --- a/conf/test_nopreprocessing.config +++ b/conf/test_nopreprocessing.config @@ -37,7 +37,7 @@ params { run_metaphlan3 = true run_centrifuge = true run_diamond = true - run_motus = true + run_motus = false } process { diff --git a/docs/usage.md b/docs/usage.md index 54ffce0..3172b30 100644 --- a/docs/usage.md +++ b/docs/usage.md @@ -77,6 +77,7 @@ kraken2,db1,,///kraken2/testdb-kraken2.tar.gz kraken2,db2,--quick,///kraken2/testdb-kraken2.tar.gz centrifuge,db1,,///centrifuge/minigut_cf.tar.gz metaphlan3,db1,,///metaphlan3/metaphlan_database/ +motus,db_mOTU,,///motus/motus_database/ ``` Column specifications are as follows: @@ -131,6 +132,14 @@ Expected (uncompressed) database files for each tool are as follows: - **DIAMOND** output of `diamond makedb`. Note: requires building with taxonomy files to generate taxonomic profile. See [DIAMOND documentation](https://github.com/bbuchfink/diamond/wiki/3.-Command-line-options#makedb-options). A file named: - `.dmnd` +- **mOTUs** is composed of code and database together. The mOTUs tools + [`downloadDB`](https://github.com/motu-tool/mOTUs/blob/master/motus/downloadDB.py) + is used to prepare the mOTUs database and create a file with the version information. + The database download step can be time consuming and the database will be consisting + with same release version of the mOTUs tools. The database for same version tools + can be thus reused for multiple runs. Users can download the database once and + assign the database with the table. User can also set the parameter + `download_motus_db` and let the pipeline download the database automatically. ## Running the pipeline diff --git a/nextflow.config b/nextflow.config index 524c249..98e6cc5 100644 --- a/nextflow.config +++ b/nextflow.config @@ -193,6 +193,7 @@ profiles { test_full { includeConfig 'conf/test_full.config' } test_noprofiling { includeConfig 'conf/test_noprofiling.config' } test_nopreprocessing { includeConfig 'conf/test_nopreprocessing.config' } + test_motus { includeConfig 'conf/test_motus.config' } } // Load igenomes.config if required From f0eb88cbe265e8f4a83577bcba10b614659605f8 Mon Sep 17 00:00:00 2001 From: JIANHONG OU Date: Tue, 31 May 2022 08:57:00 -0400 Subject: [PATCH 225/789] add mOTUs to modules.config --- conf/modules.config | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/conf/modules.config b/conf/modules.config index 5d8398e..c2a3d85 100644 --- a/conf/modules.config +++ b/conf/modules.config @@ -337,6 +337,20 @@ process { ] } + withName: MOTUS_DOWNLOADDB { + publishDir = [ + path: { "${params.outdir}/motus/db/${meta.db_name}" }, + mode: params.publish_dir_mode + ] + } + + withName: MOTUS_PROFILE { + publishDir = [ + path: { "${params.outdir}/motus/${meta.db_name}" }, + mode: params.publish_dir_mode + ] + } + withName: CUSTOM_DUMPSOFTWAREVERSIONS { publishDir = [ path: { "${params.outdir}/pipeline_info" }, From 16ec5bf74af50fbdcf675463d6ab030ae00d56b7 Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Tue, 31 May 2022 20:11:19 +0200 Subject: [PATCH 226/789] Update parameter names --- conf/modules.config | 8 ++++---- conf/test_nopreprocessing.config | 4 ++-- conf/test_noprofiling.config | 4 ++-- modules.json | 2 +- modules/nf-core/modules/filtlong/main.nf | 7 ++++--- workflows/taxprofiler.nf | 6 +++--- 6 files changed, 16 insertions(+), 15 deletions(-) diff --git a/conf/modules.config b/conf/modules.config index 797a209..164fe91 100644 --- a/conf/modules.config +++ b/conf/modules.config @@ -54,7 +54,7 @@ process { params.shortread_qc_skipadaptertrim ? "--disable_adapter_trimming" : "", params.shortread_qc_adapter1 ? "--adapter_sequence ${params.shortread_qc_adapter1}" : "", // filtering options - "--length_required ${params.shortread_clipmerge_minlength}", + "--length_required ${params.shortread_qc_minlength}", (params.perform_shortread_complexityfilter && params.shortread_complexityfilter_tool == 'fastp') ? "--low_complexity_filter --complexity_threshold ${params.shortread_complexityfilter_fastp_threshold}" : '' ].join(' ').trim() ext.prefix = { "${meta.id}_${meta.run_accession}" } @@ -75,7 +75,7 @@ process { params.shortread_qc_adapter1 ? "--adapter_sequence ${params.shortread_qc_adapter1}" : "", params.shortread_qc_adapter2 ? "--adapter_sequence_r2 ${params.shortread_qc_adapter2}" : "--detect_adapter_for_pe", // filtering options - "--length_required ${params.shortread_clipmerge_minlength}", + "--length_required ${params.shortread_qc_minlength}", params.perform_shortread_complexityfilter && params.shortread_complexityfilter_tool == 'fastp' ? "--low_complexity_filter --complexity_threshold ${params.shortread_complexityfilter_fastp_threshold}" : '' ].join(' ').trim() ext.prefix = { "${meta.id}_${meta.run_accession}" } @@ -141,9 +141,9 @@ process { "--target_bases ${params.longread_qc_targetnbases}" ] .join(' ').trim() - ext.prefix = { "${meta.id}_${meta.run_accession}" } + ext.prefix = { "${meta.id}_${meta.run_accession}_filtered" } publishDir = [ - path: { "${params.outdir}/porechop" }, + path: { "${params.outdir}/filtlong" }, mode: params.publish_dir_mode, pattern: '*.fastq.gz', enabled: params.save_preprocessed_reads diff --git a/conf/test_nopreprocessing.config b/conf/test_nopreprocessing.config index e8d4ed9..60cdde8 100644 --- a/conf/test_nopreprocessing.config +++ b/conf/test_nopreprocessing.config @@ -24,8 +24,8 @@ params { // TODO nf-core: Give any required params for the test so that command line flags are not needed input = 'https://raw.githubusercontent.com/nf-core/test-datasets/taxprofiler/samplesheet.csv' databases = 'https://raw.githubusercontent.com/nf-core/test-datasets/taxprofiler/database.csv' - perform_shortread_clipmerge = false - perform_longread_clip = false + perform_shortread_qc = false + perform_longread_qc = false perform_shortread_complexityfilter = false perform_shortread_hostremoval = false perform_longread_hostremoval = false diff --git a/conf/test_noprofiling.config b/conf/test_noprofiling.config index f908651..379aaae 100644 --- a/conf/test_noprofiling.config +++ b/conf/test_noprofiling.config @@ -24,8 +24,8 @@ params { // TODO nf-core: Give any required params for the test so that command line flags are not needed input = 'https://raw.githubusercontent.com/nf-core/test-datasets/taxprofiler/samplesheet.csv' databases = 'https://raw.githubusercontent.com/nf-core/test-datasets/taxprofiler/database.csv' - perform_shortread_clipmerge = true - perform_longread_clip = true + perform_shortread_qc = true + perform_longread_qc = true perform_shortread_complexityfilter = true perform_shortread_hostremoval = true perform_longread_hostremoval = true diff --git a/modules.json b/modules.json index 9520707..b27939b 100644 --- a/modules.json +++ b/modules.json @@ -37,7 +37,7 @@ "git_sha": "e745e167c1020928ef20ea1397b6b4d230681b4d" }, "filtlong": { - "git_sha": "e745e167c1020928ef20ea1397b6b4d230681b4d" + "git_sha": "723852bf3d3b12059b2f53da8bc055206f3019d7" }, "kaiju/kaiju": { "git_sha": "8856f127c58f6af479128be8b8df4d42e442ddbe" diff --git a/modules/nf-core/modules/filtlong/main.nf b/modules/nf-core/modules/filtlong/main.nf index 0e6fdd5..9dbf05b 100644 --- a/modules/nf-core/modules/filtlong/main.nf +++ b/modules/nf-core/modules/filtlong/main.nf @@ -11,7 +11,7 @@ process FILTLONG { tuple val(meta), path(shortreads), path(longreads) output: - tuple val(meta), path("${meta.id}_lr_filtlong.fastq.gz"), emit: reads + tuple val(meta), path("*.fastq.gz"), emit: reads path "versions.yml" , emit: versions when: @@ -20,13 +20,14 @@ process FILTLONG { script: def args = task.ext.args ?: '' def prefix = task.ext.prefix ?: "${meta.id}" - def short_reads = meta.single_end ? "-1 $shortreads" : "-1 ${shortreads[0]} -2 ${shortreads[1]}" + def short_reads = !shortreads ? "" : meta.single_end ? "-1 $shortreads" : "-1 ${shortreads[0]} -2 ${shortreads[1]}" + if ("$longreads" == "${prefix}.fastq.gz") error "Longread FASTQ input and output names are the same, set prefix in module configuration to disambiguate!" """ filtlong \\ $short_reads \\ $args \\ $longreads \\ - | gzip -n > ${prefix}_lr_filtlong.fastq.gz + | gzip -n > ${prefix}.fastq.gz cat <<-END_VERSIONS > versions.yml "${task.process}": diff --git a/workflows/taxprofiler.nf b/workflows/taxprofiler.nf index a6ddaa3..1c48fd6 100644 --- a/workflows/taxprofiler.nf +++ b/workflows/taxprofiler.nf @@ -20,11 +20,11 @@ for (param in checkPathParamList) { if (param) { file(param, checkIfExists: true if (params.input ) { ch_input = file(params.input) } else { exit 1, 'Input samplesheet not specified!' } if (params.databases) { ch_databases = file(params.databases) } else { exit 1, 'Input database sheet not specified!' } -if (params.shortread_clipmerge_mergepairs && params.run_malt ) log.warn "[nf-core/taxprofiler] MALT does not accept uncollapsed paired-reads. Pairs will be profiled as separate files." -if (params.shortread_clipmerge_excludeunmerged && !params.shortread_clipmerge_mergepairs) exit 1, "ERROR: [nf-core/taxprofiler] cannot include unmerged reads when merging not turned on. Please specify --shortread_clipmerge_mergepairs" +if (params.shortread_qc_mergepairs && params.run_malt ) log.warn "[nf-core/taxprofiler] MALT does not accept uncollapsed paired-reads. Pairs will be profiled as separate files." +if (params.shortread_qc_excludeunmerged && !params.shortread_qc_mergepairs) exit 1, "ERROR: [nf-core/taxprofiler] cannot include unmerged reads when merging not turned on. Please specify --shortread_qc_mergepairs" if ( (params.longread_qc_run_clip || params.longread_qc_run_filter) & !params.perform_longread_qc ) exit 1, "ERROR: [nf-core/taxprofiler] --longread_qc_run_clip or --longread_qc_run_filter requested but quality-control not turned on. Please specify --perform_long_qc" -if (params.shortread_complexityfilter_tool == 'fastp' && ( params.perform_shortread_clipmerge == false || params.shortread_clipmerge_tool != 'fastp' )) exit 1, "ERROR: [nf-core/taxprofiler] cannot use fastp complexity filtering if preprocessing not turned on and/or tool is not fastp. Please specify --perform_shortread_clipmerge and/or --shortread_clipmerge_tool 'fastp'" +if (params.shortread_complexityfilter_tool == 'fastp' && ( params.perform_shortread_qc == false || params.shortread_qc_tool != 'fastp' )) exit 1, "ERROR: [nf-core/taxprofiler] cannot use fastp complexity filtering if preprocessing not turned on and/or tool is not fastp. Please specify --perform_shortread_qc and/or --shortread_qc_tool 'fastp'" if (params.perform_shortread_hostremoval && !params.hostremoval_reference) { exit 1, "ERROR: [nf-core/taxprofiler] --shortread_hostremoval requested but no --hostremoval_reference FASTA supplied. Check input." } if (!params.hostremoval_reference && params.hostremoval_reference_index) { exit 1, "ERROR: [nf-core/taxprofiler] --shortread_hostremoval_index provided but no --hostremoval_reference FASTA supplied. Check input." } From fa70a413cb85cc10c63b47195fbdb5b3c4e49192 Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Tue, 31 May 2022 21:12:09 +0200 Subject: [PATCH 227/789] Use finally working filtlong module --- modules.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules.json b/modules.json index b27939b..fe25bed 100644 --- a/modules.json +++ b/modules.json @@ -37,7 +37,7 @@ "git_sha": "e745e167c1020928ef20ea1397b6b4d230681b4d" }, "filtlong": { - "git_sha": "723852bf3d3b12059b2f53da8bc055206f3019d7" + "git_sha": "089f761f0bf79c4a486f1df9b6205f650196a2c1" }, "kaiju/kaiju": { "git_sha": "8856f127c58f6af479128be8b8df4d42e442ddbe" From d3d28da1b18d60fa406e9c175f25d49396245084 Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Thu, 2 Jun 2022 11:53:53 +0200 Subject: [PATCH 228/789] Update after review --- conf/modules.config | 4 ++-- conf/test.config | 4 ++-- nextflow.config | 4 ++-- nextflow_schema.json | 4 ++-- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/conf/modules.config b/conf/modules.config index 164fe91..09b2ed9 100644 --- a/conf/modules.config +++ b/conf/modules.config @@ -137,8 +137,8 @@ process { withName: FILTLONG { ext.args = [ "--min_length ${params.longread_qc_minlength}", - "--keep_percent ${params.longread_qc_keepbppercent}", - "--target_bases ${params.longread_qc_targetnbases}" + "--keep_percent ${params.longread_qc_keep_percent}", + "--target_bases ${params.longread_qc_target_bases}" ] .join(' ').trim() ext.prefix = { "${meta.id}_${meta.run_accession}_filtered" } diff --git a/conf/test.config b/conf/test.config index 6af771c..d6fc7fe 100644 --- a/conf/test.config +++ b/conf/test.config @@ -24,8 +24,8 @@ params { // TODO nf-core: Give any required params for the test so that command line flags are not needed input = 'https://raw.githubusercontent.com/nf-core/test-datasets/taxprofiler/samplesheet.csv' databases = 'https://raw.githubusercontent.com/nf-core/test-datasets/taxprofiler/database.csv' - perform_shortread_qc = true - perform_longread_qc = false + perform_shortread_qc = true + perform_longread_qc = true perform_shortread_complexityfilter = true perform_shortread_hostremoval = true perform_longread_hostremoval = true diff --git a/nextflow.config b/nextflow.config index 5e9b385..d8f80ab 100644 --- a/nextflow.config +++ b/nextflow.config @@ -68,8 +68,8 @@ params { longread_qc_run_clip = false longread_qc_run_filter = false longread_qc_minlength = 1000 - longread_qc_keepbppercent = 90 - longread_qc_targetnbases = 500000000 + longread_qc_keep_percent = 90 + longread_qc_target_bases = 500000000 save_preprocessed_reads = false diff --git a/nextflow_schema.json b/nextflow_schema.json index c38e5d1..e3cc558 100644 --- a/nextflow_schema.json +++ b/nextflow_schema.json @@ -420,11 +420,11 @@ "type": "integer", "default": 1000 }, - "longread_qc_keepbppercent": { + "longread_qc_keep_percent": { "type": "integer", "default": 90 }, - "longread_qc_targetnbases": { + "longread_qc_target_bases": { "type": "integer", "default": 500000000 } From 2838c136bda47ad24d36b5ebb174998d58c57348 Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Thu, 2 Jun 2022 12:51:39 +0200 Subject: [PATCH 229/789] Prettier --- modules.json | 2 +- nextflow_schema.json | 45 +++++++------------------------------------- 2 files changed, 8 insertions(+), 39 deletions(-) diff --git a/modules.json b/modules.json index 5cad32e..9d918b3 100644 --- a/modules.json +++ b/modules.json @@ -80,4 +80,4 @@ } } } -} \ No newline at end of file +} diff --git a/nextflow_schema.json b/nextflow_schema.json index e7b495d..f0093b1 100644 --- a/nextflow_schema.json +++ b/nextflow_schema.json @@ -10,10 +10,7 @@ "type": "object", "fa_icon": "fas fa-terminal", "description": "Define where the pipeline should find input data and save output data.", - "required": [ - "input", - "outdir" - ], + "required": ["input", "outdir"], "properties": { "input": { "type": "string", @@ -176,14 +173,7 @@ "description": "Method used to save pipeline results to output directory.", "help_text": "The Nextflow `publishDir` option specifies which intermediate files should be saved to the output directory. This option tells the pipeline what method should be used to move these files. See [Nextflow docs](https://www.nextflow.io/docs/latest/process.html#publishdir) for details.", "fa_icon": "fas fa-copy", - "enum": [ - "symlink", - "rellink", - "link", - "copy", - "copyNoFollow", - "move" - ], + "enum": ["symlink", "rellink", "link", "copy", "copyNoFollow", "move"], "hidden": true }, "email_on_fail": { @@ -295,10 +285,7 @@ "shortread_clipmerge_tool": { "type": "string", "default": "fastp", - "enum": [ - "fastp", - "adapterremoval" - ] + "enum": ["fastp", "adapterremoval"] }, "shortread_clipmerge_skipadaptertrim": { "type": "boolean" @@ -340,10 +327,7 @@ "shortread_complexityfilter_prinseqplusplus_mode": { "type": "string", "default": "entropy", - "enum": [ - "entropy", - "dust" - ] + "enum": ["entropy", "dust"] }, "shortread_complexityfilter_prinseqplusplus_dustscore": { "type": "number", @@ -399,14 +383,7 @@ "kaiju_taxon_name": { "type": "string", "default": "species", - "enum": [ - "phylum", - "class", - "order", - "family", - "genus", - "species" - ] + "enum": ["phylum", "class", "order", "family", "genus", "species"] }, "run_diamond": { "type": "boolean" @@ -414,15 +391,7 @@ "diamond_output_format": { "type": "string", "default": "tsv", - "enum": [ - "blast", - "xml", - "txt", - "daa", - "sam", - "tsv", - "paf" - ] + "enum": ["blast", "xml", "txt", "daa", "sam", "tsv", "paf"] }, "longread_hostremoval_index": { "type": "string", @@ -448,4 +417,4 @@ "type": "boolean" } } -} \ No newline at end of file +} From 3313b90453ed0e4bf2571a28d1436427a05b90f7 Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Fri, 3 Jun 2022 13:50:48 +0200 Subject: [PATCH 230/789] Fix JSOn schema --- nextflow_schema.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/nextflow_schema.json b/nextflow_schema.json index a82ff9e..2c00348 100644 --- a/nextflow_schema.json +++ b/nextflow_schema.json @@ -418,7 +418,7 @@ "longread_qc_target_bases": { "type": "integer", "default": 500000000 - } + }, "malt_save_reads": { "type": "boolean" }, From d48b3be5a780d87b30c8f9ce189a062676cc601a Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Fri, 3 Jun 2022 13:55:17 +0200 Subject: [PATCH 231/789] Tweak DIAMOND save_reads message --- nextflow.config | 2 +- workflows/taxprofiler.nf | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/nextflow.config b/nextflow.config index 11cbfc0..e5b8a1d 100644 --- a/nextflow.config +++ b/nextflow.config @@ -124,7 +124,7 @@ params { // diamond run_diamond = false diamond_output_format = 'tsv' // TSV is only format with taxonomic information apparently - diamond_save_reads = false // this will override diamound output format so no taxonomic profile is generated! + diamond_save_reads = false // this will override default diamond output format so no taxonomic profile is generated! } // Load base.config by default for all pipelines diff --git a/workflows/taxprofiler.nf b/workflows/taxprofiler.nf index 6a05dbe..f29a366 100644 --- a/workflows/taxprofiler.nf +++ b/workflows/taxprofiler.nf @@ -33,7 +33,7 @@ if (params.hostremoval_reference ) { ch_reference = file(params.hostre if (params.shortread_hostremoval_index ) { ch_shortread_reference_index = file(params.shortread_hostremoval_index ) } else { ch_shortread_reference_index = [] } if (params.longread_hostremoval_index ) { ch_longread_reference_index = file(params.longread_hostremoval_index ) } else { ch_longread_reference_index = [] } -if (params.diamond_save_reads ) log.warn "[nf-core/taxprofiler] DIAMOND only allows output of a single format. Only aligned reads in SAM format will be produced, no taxonomic profiles will be available." +if (params.diamond_save_reads ) log.warn "[nf-core/taxprofiler] DIAMOND only allows output of a single format. As --diamond_save_reads supplied, only aligned reads in SAM format will be produced, no taxonomic profiles will be available." /* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ From c8a59adbceb8790c02f49a31e95a89347ed2fc04 Mon Sep 17 00:00:00 2001 From: JIANHONG OU Date: Fri, 3 Jun 2022 14:13:58 -0400 Subject: [PATCH 232/789] remove the database auto-download for mOTUs. --- .github/workflows/ci.yml | 54 +++++++++++++++++-- conf/modules.config | 7 --- conf/test_motus.config | 2 +- docs/usage.md | 3 +- modules.json | 3 -- .../nf-core/modules/motus/downloaddb/main.nf | 39 -------------- .../nf-core/modules/motus/downloaddb/meta.yml | 39 -------------- nextflow.config | 2 - nextflow_schema.json | 8 --- subworkflows/local/db_check.nf | 17 ------ 10 files changed, 53 insertions(+), 121 deletions(-) delete mode 100644 modules/nf-core/modules/motus/downloaddb/main.nf delete mode 100644 modules/nf-core/modules/motus/downloaddb/meta.yml diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 16a39a6..0088181 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -42,8 +42,6 @@ jobs: - "--perform_runmerging" - "--perform_runmerging --shortread_qc_mergepairs" - "--shortread_complexityfilter false --perform_shortread_hostremoval" - # Test different profiles - profile: ["test", "test_motus"] steps: - name: Check out pipeline code @@ -72,4 +70,54 @@ jobs: # For example: adding multiple test runs with different parameters # Remember that you can parallelise this by using strategy.matrix run: | - nextflow run ${GITHUB_WORKSPACE} -profile ${{ matrix.profile }},docker --outdir ./results ${{ matrix.parameters }} + nextflow run ${GITHUB_WORKSPACE} -profile test,docker --outdir ./results ${{ matrix.parameters }} + + motus: + name: Test mOTUs with workflow parameters + if: ${{ github.event_name != 'push' || (github.event_name == 'push' && github.repository == 'nf-core/taxprofiler') }} + runs-on: ubuntu-latest + env: + NXF_VER: ${{ matrix.nxf_ver }} + NXF_ANSI_LOG: false + strategy: + matrix: + # Nextflow versions + include: + # Test pipeline minimum Nextflow version + - NXF_VER: "21.10.3" + NXF_EDGE: "" + # Test latest edge release of Nextflow + - NXF_VER: "" + NXF_EDGE: "1" + + steps: + - name: Check out pipeline code + uses: actions/checkout@v2 + + - name: Install Nextflow + env: + NXF_VER: ${{ matrix.NXF_VER }} + # Uncomment only if the edge release is more recent than the latest stable release + # See https://github.com/nextflow-io/nextflow/issues/2467 + # NXF_EDGE: ${{ matrix.NXF_EDGE }} + run: | + wget -qO- get.nextflow.io | bash + sudo mv nextflow /usr/local/bin/ + + - name: Show current locale + run: locale + + - name: Set UTF-8 enabled locale + run: | + sudo locale-gen en_US.UTF-8 + sudo update-locale LANG=en_US.UTF-8 + + - name: Prepare the database + run: | + wget https://github.com/motu-tool/mOTUs/blob/master/motus/downloadDB.py + python downloadDB.py + echo 'tool,db_name,db_params,db_path\nmotus,db_mOTU,,db_mOTU' > 'database_motus.csv' + + - name: Run pipeline with test data + run: | + nextflow run ${GITHUB_WORKSPACE} -profile test_motus,docker --outdir ./results --databases ./database_motus.csv diff --git a/conf/modules.config b/conf/modules.config index 1e7c260..66967e2 100644 --- a/conf/modules.config +++ b/conf/modules.config @@ -353,13 +353,6 @@ process { ] } - withName: MOTUS_DOWNLOADDB { - publishDir = [ - path: { "${params.outdir}/motus/db/${meta.db_name}" }, - mode: params.publish_dir_mode - ] - } - withName: MOTUS_PROFILE { publishDir = [ path: { "${params.outdir}/motus/${meta.db_name}" }, diff --git a/conf/test_motus.config b/conf/test_motus.config index c645154..9d39ad4 100644 --- a/conf/test_motus.config +++ b/conf/test_motus.config @@ -23,7 +23,7 @@ params { // TODO nf-core: Specify the paths to your test data on nf-core/test-datasets // TODO nf-core: Give any required params for the test so that command line flags are not needed input = 'https://raw.githubusercontent.com/nf-core/test-datasets/taxprofiler/samplesheet.csv' - databases = 'https://raw.githubusercontent.com/nf-core/test-datasets/taxprofiler/database.csv' + databases = 'database_motus.csv' perform_shortread_clipmerge = false perform_longread_clip = false perform_shortread_complexityfilter = false diff --git a/docs/usage.md b/docs/usage.md index b43ae12..ea21e54 100644 --- a/docs/usage.md +++ b/docs/usage.md @@ -138,8 +138,7 @@ Expected (uncompressed) database files for each tool are as follows: The database download step can be time consuming and the database will be consisting with same release version of the mOTUs tools. The database for same version tools can be thus reused for multiple runs. Users can download the database once and - assign the database with the table. User can also set the parameter - `download_motus_db` and let the pipeline download the database automatically. + assign the database with the table. ## Running the pipeline diff --git a/modules.json b/modules.json index 3e4dd9b..758ac22 100644 --- a/modules.json +++ b/modules.json @@ -63,9 +63,6 @@ "minimap2/index": { "git_sha": "e745e167c1020928ef20ea1397b6b4d230681b4d" }, - "motus/downloaddb": { - "git_sha": "6393a085c5fcea11963774c041808df169907487" - }, "motus/profile": { "git_sha": "6b960f0e75bbb4d5bd301cd3875fa078d0eab4d1" }, diff --git a/modules/nf-core/modules/motus/downloaddb/main.nf b/modules/nf-core/modules/motus/downloaddb/main.nf deleted file mode 100644 index 317624b..0000000 --- a/modules/nf-core/modules/motus/downloaddb/main.nf +++ /dev/null @@ -1,39 +0,0 @@ -process MOTUS_DOWNLOADDB { - label 'process_low' - - conda (params.enable_conda ? "bioconda::motus=3.0.1" : null) - container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/motus:3.0.1--pyhdfd78af_0': - 'quay.io/biocontainers/motus:3.0.1--pyhdfd78af_0' }" - - input: - path motus_downloaddb_script - - output: - path "db_mOTU/" , emit: db - path "versions.yml" , emit: versions - - when: - task.ext.when == null || task.ext.when - - script: - def args = task.ext.args ?: '' - def software = "${motus_downloaddb_script.simpleName}_copy.py" - """ - ## must copy script file to working directory, - ## otherwise the reference_db will be download to bin folder - ## other than current directory - cp $motus_downloaddb_script ${software} - python ${software} \\ - $args \\ - -t $task.cpus - - ## mOTUs version number is not available from command line. - ## mOTUs save the version number in index database folder. - ## mOTUs will check the database version is same version as exec version. - cat <<-END_VERSIONS > versions.yml - "${task.process}": - mOTUs: \$(grep motus db_mOTU/db_mOTU_versions | sed 's/motus\\t//g') - END_VERSIONS - """ -} diff --git a/modules/nf-core/modules/motus/downloaddb/meta.yml b/modules/nf-core/modules/motus/downloaddb/meta.yml deleted file mode 100644 index 64df5ee..0000000 --- a/modules/nf-core/modules/motus/downloaddb/meta.yml +++ /dev/null @@ -1,39 +0,0 @@ -name: "motus_downloaddb" -description: Download the mOTUs database -keywords: - - classify - - metagenomics - - fastq - - taxonomic profiling - - database - - download -tools: - - "motus": - description: "The mOTU profiler is a computational tool that estimates relative taxonomic abundance of known and currently unknown microbial community members using metagenomic shotgun sequencing data." - homepage: "None" - documentation: "https://github.com/motu-tool/mOTUs/wiki" - tool_dev_url: "https://github.com/motu-tool/mOTUs" - doi: "10.1038/s41467-019-08844-4" - licence: "['GPL v3']" - -input: - - motus_downloaddb: - type: directory - description: | - The mOTUs downloadDB script source file. - It is the source file installed or - remote source in github such as https://raw.githubusercontent.com/motu-tool/mOTUs/master/motus/downloadDB.py - pattern: "downloadDB.py" - -output: - - versions: - type: file - description: File containing software versions - pattern: "versions.yml" - - db: - type: directory - description: The mOTUs database directory - pattern: "db_mOTU" - -authors: - - "@jianhong" diff --git a/nextflow.config b/nextflow.config index 0ddd5c1..7f9f4c1 100644 --- a/nextflow.config +++ b/nextflow.config @@ -126,8 +126,6 @@ params { // mOTUs run_motus = false - download_motus_db = true - motus_downloaddb_script = 'https://raw.githubusercontent.com/motu-tool/mOTUs/master/motus/downloadDB.py' } // Load base.config by default for all pipelines diff --git a/nextflow_schema.json b/nextflow_schema.json index fc0d9e3..b380b84 100644 --- a/nextflow_schema.json +++ b/nextflow_schema.json @@ -430,14 +430,6 @@ }, "run_motus": { "type": "boolean" - }, - "download_motus_db": { - "type": "boolean" - }, - "motus_downloaddb_script": { - "type": "string", - "default": "https://raw.githubusercontent.com/motu-tool/mOTUs/master/motus/downloadDB.py", - "description": "mOTUs database download script path." } } } diff --git a/subworkflows/local/db_check.nf b/subworkflows/local/db_check.nf index 95eeefc..7b440c6 100644 --- a/subworkflows/local/db_check.nf +++ b/subworkflows/local/db_check.nf @@ -4,7 +4,6 @@ include { DATABASE_CHECK } from '../../modules/local/database_check' include { UNTAR } from '../../modules/nf-core/modules/untar/main' -include { MOTUS_DOWNLOADDB } from '../../modules/nf-core/modules/motus/downloaddb/main' workflow DB_CHECK { take: @@ -21,22 +20,6 @@ workflow DB_CHECK { .splitCsv ( header:true, sep:',' ) .map { create_db_channels(it) } - // Download database for mOTUs - if( params.run_motus ){ - check_motus_db = - parsed_samplesheet.filter{ it[0].tool == "motus" } - .ifEmpty{[]} - if( params.download_motus_db ){ - MOTUS_DOWNLOADDB( params.motus_downloaddb_script ) - check_motus_db = MOTUS_DOWNLOADDB.out.db - .map{[ - [tool: "motus", db_name: "db_mOTU", db_params: ''], - it - ]} - } - parsed_samplesheet = parsed_samplesheet.mix(check_motus_db) - } - ch_dbs_for_untar = parsed_samplesheet .branch { untar: it[1].toString().endsWith(".tar.gz") From 22f65eedc7054363d84f029851c17efa78567a15 Mon Sep 17 00:00:00 2001 From: JIANHONG OU Date: Fri, 3 Jun 2022 14:16:25 -0400 Subject: [PATCH 233/789] fix the download address for downloadDB for mOTUs. --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 0088181..61911a8 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -114,7 +114,7 @@ jobs: - name: Prepare the database run: | - wget https://github.com/motu-tool/mOTUs/blob/master/motus/downloadDB.py + wget https://raw.githubusercontent.com/motu-tool/mOTUs/master/motus/downloadDB.py python downloadDB.py echo 'tool,db_name,db_params,db_path\nmotus,db_mOTU,,db_mOTU' > 'database_motus.csv' From 3cd3d2dad365558df2a71d7afc19820304e8c2f4 Mon Sep 17 00:00:00 2001 From: JIANHONG OU Date: Fri, 3 Jun 2022 14:38:59 -0400 Subject: [PATCH 234/789] prettier write . --- .github/workflows/ci.yml | 84 ++++++++++++++++++++-------------------- 1 file changed, 42 insertions(+), 42 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 61911a8..c018947 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -73,51 +73,51 @@ jobs: nextflow run ${GITHUB_WORKSPACE} -profile test,docker --outdir ./results ${{ matrix.parameters }} motus: - name: Test mOTUs with workflow parameters - if: ${{ github.event_name != 'push' || (github.event_name == 'push' && github.repository == 'nf-core/taxprofiler') }} - runs-on: ubuntu-latest - env: - NXF_VER: ${{ matrix.nxf_ver }} - NXF_ANSI_LOG: false - strategy: - matrix: - # Nextflow versions - include: - # Test pipeline minimum Nextflow version - - NXF_VER: "21.10.3" - NXF_EDGE: "" - # Test latest edge release of Nextflow - - NXF_VER: "" - NXF_EDGE: "1" + name: Test mOTUs with workflow parameters + if: ${{ github.event_name != 'push' || (github.event_name == 'push' && github.repository == 'nf-core/taxprofiler') }} + runs-on: ubuntu-latest + env: + NXF_VER: ${{ matrix.nxf_ver }} + NXF_ANSI_LOG: false + strategy: + matrix: + # Nextflow versions + include: + # Test pipeline minimum Nextflow version + - NXF_VER: "21.10.3" + NXF_EDGE: "" + # Test latest edge release of Nextflow + - NXF_VER: "" + NXF_EDGE: "1" - steps: - - name: Check out pipeline code - uses: actions/checkout@v2 + steps: + - name: Check out pipeline code + uses: actions/checkout@v2 - - name: Install Nextflow - env: - NXF_VER: ${{ matrix.NXF_VER }} - # Uncomment only if the edge release is more recent than the latest stable release - # See https://github.com/nextflow-io/nextflow/issues/2467 - # NXF_EDGE: ${{ matrix.NXF_EDGE }} - run: | - wget -qO- get.nextflow.io | bash - sudo mv nextflow /usr/local/bin/ + - name: Install Nextflow + env: + NXF_VER: ${{ matrix.NXF_VER }} + # Uncomment only if the edge release is more recent than the latest stable release + # See https://github.com/nextflow-io/nextflow/issues/2467 + # NXF_EDGE: ${{ matrix.NXF_EDGE }} + run: | + wget -qO- get.nextflow.io | bash + sudo mv nextflow /usr/local/bin/ - - name: Show current locale - run: locale + - name: Show current locale + run: locale - - name: Set UTF-8 enabled locale - run: | - sudo locale-gen en_US.UTF-8 - sudo update-locale LANG=en_US.UTF-8 + - name: Set UTF-8 enabled locale + run: | + sudo locale-gen en_US.UTF-8 + sudo update-locale LANG=en_US.UTF-8 - - name: Prepare the database - run: | - wget https://raw.githubusercontent.com/motu-tool/mOTUs/master/motus/downloadDB.py - python downloadDB.py - echo 'tool,db_name,db_params,db_path\nmotus,db_mOTU,,db_mOTU' > 'database_motus.csv' + - name: Prepare the database + run: | + wget https://raw.githubusercontent.com/motu-tool/mOTUs/master/motus/downloadDB.py + python downloadDB.py > download_db_log.txt + echo 'tool,db_name,db_params,db_path\nmotus,db_mOTU,,db_mOTU' > 'database_motus.csv' - - name: Run pipeline with test data - run: | - nextflow run ${GITHUB_WORKSPACE} -profile test_motus,docker --outdir ./results --databases ./database_motus.csv + - name: Run pipeline with test data + run: | + nextflow run ${GITHUB_WORKSPACE} -profile test_motus,docker --outdir ./results --databases ./database_motus.csv From 9fa6ecad56a11e85c02b547998445e3311618298 Mon Sep 17 00:00:00 2001 From: JIANHONG OU Date: Fri, 3 Jun 2022 14:50:03 -0400 Subject: [PATCH 235/789] debug for database csv file --- .github/workflows/ci.yml | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index c018947..96f507c 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -116,7 +116,11 @@ jobs: run: | wget https://raw.githubusercontent.com/motu-tool/mOTUs/master/motus/downloadDB.py python downloadDB.py > download_db_log.txt - echo 'tool,db_name,db_params,db_path\nmotus,db_mOTU,,db_mOTU' > 'database_motus.csv' + echo 'tool,db_name,db_params,db_path' > 'database_motus.csv' + echo 'motus,db_mOTU,,db_mOTU' >> 'database_motus.csv' + cat database_motus.csv + echo $PWD + ls $PWD - name: Run pipeline with test data run: | From 713a341e097cb7313627b95af88bfc05b03fd759 Mon Sep 17 00:00:00 2001 From: JIANHONG OU Date: Fri, 3 Jun 2022 15:22:33 -0400 Subject: [PATCH 236/789] clean up ci.yml --- .github/workflows/ci.yml | 3 --- 1 file changed, 3 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 96f507c..9bdd7fb 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -118,9 +118,6 @@ jobs: python downloadDB.py > download_db_log.txt echo 'tool,db_name,db_params,db_path' > 'database_motus.csv' echo 'motus,db_mOTU,,db_mOTU' >> 'database_motus.csv' - cat database_motus.csv - echo $PWD - ls $PWD - name: Run pipeline with test data run: | From 9462032d00824f16c55fe4a313404282eddab91d Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Fri, 3 Jun 2022 22:29:04 +0200 Subject: [PATCH 237/789] Fix MALT save_alignemnts reads and some clean up --- conf/test.config | 3 +++ nextflow.config | 2 +- subworkflows/local/longread_preprocessing.nf | 2 +- subworkflows/local/profiling.nf | 10 ++++------ 4 files changed, 9 insertions(+), 8 deletions(-) diff --git a/conf/test.config b/conf/test.config index 996d5de..e9fa62e 100644 --- a/conf/test.config +++ b/conf/test.config @@ -47,4 +47,7 @@ process { withName: MALT_RUN { maxForks = 1 } + withName: MEGAN_RMA2INFO { + maxForks = 1 + } } diff --git a/nextflow.config b/nextflow.config index e5b8a1d..73fd0b3 100644 --- a/nextflow.config +++ b/nextflow.config @@ -196,7 +196,7 @@ profiles { test { includeConfig 'conf/test.config' } test_full { includeConfig 'conf/test_full.config' } test_noprofiling { includeConfig 'conf/test_noprofiling.config' } - test_nopreprocessing { includeConfig 'conf/test_preprocessing.config' } + test_nopreprocessing { includeConfig 'conf/test_nopreprocessing.config' } } // Load igenomes.config if required diff --git a/subworkflows/local/longread_preprocessing.nf b/subworkflows/local/longread_preprocessing.nf index 5ae5417..6a23b0e 100644 --- a/subworkflows/local/longread_preprocessing.nf +++ b/subworkflows/local/longread_preprocessing.nf @@ -48,7 +48,7 @@ workflow LONGREAD_PREPROCESSING { } - FASTQC_PROCESSED ( ch_processed_reads.dump(tag: "filtlong") ) + FASTQC_PROCESSED ( ch_processed_reads ) ch_multiqc_files = ch_multiqc_files.mix( FASTQC_PROCESSED.out.zip ) emit: diff --git a/subworkflows/local/profiling.nf b/subworkflows/local/profiling.nf index 18ea7fa..b83c78f 100644 --- a/subworkflows/local/profiling.nf +++ b/subworkflows/local/profiling.nf @@ -66,19 +66,17 @@ workflow PROFILING { .filter { it[0]['instrument_platform'] == 'ILLUMINA' } .map { meta, reads, db_meta, db -> - def sam_format = params.malt_save_reads ? ' --alignments' : "" - // TODO No MALT SAM? - // TODO check all aligned reads published - // TODO try turning on/off aligned reads + def sam_format = params.malt_save_reads ? ' --alignments ./ -za false' : "" // TODO wut? [9a/a441d6] Submitted process > NFCORE_TAXPROFILER:TAXPROFILER:PROFILING:MALT_RUN (null) def temp_meta = [ id: meta['db_name'] ] def new_db_meta = db_meta.clone() new_db_meta['db_params'] = db_meta['db_params'] + sam_format def new_meta = temp_meta + new_db_meta - + new_meta['id'] = new_meta['db_name'] [ new_meta, reads, db ] } .groupTuple(by: [0,2]) + .dump(tag: "into_malt") .multiMap { it -> reads: [ it[0], it[1].flatten() ] @@ -192,7 +190,7 @@ workflow PROFILING { // this will replace output file! ch_diamond_reads_format = params.diamond_save_reads ? 'sam' : params.diamond_output_format - DIAMOND_BLASTX ( ch_input_for_diamond.reads, ch_input_for_diamond.db, params.diamond_output_format, [] ) + DIAMOND_BLASTX ( ch_input_for_diamond.reads, ch_input_for_diamond.db, ch_diamond_reads_format , [] ) ch_versions = ch_versions.mix( DIAMOND_BLASTX.out.versions.first() ) ch_raw_profiles = ch_raw_profiles.mix( DIAMOND_BLASTX.out.tsv ) From ebdd5683b248d2664fbd41fdc32cb5bf06e2e4ab Mon Sep 17 00:00:00 2001 From: "James A. Fellows Yates" Date: Fri, 3 Jun 2022 22:33:48 +0200 Subject: [PATCH 238/789] Apply suggestions from code review --- subworkflows/local/profiling.nf | 2 -- 1 file changed, 2 deletions(-) diff --git a/subworkflows/local/profiling.nf b/subworkflows/local/profiling.nf index b83c78f..9bae127 100644 --- a/subworkflows/local/profiling.nf +++ b/subworkflows/local/profiling.nf @@ -67,7 +67,6 @@ workflow PROFILING { .map { meta, reads, db_meta, db -> def sam_format = params.malt_save_reads ? ' --alignments ./ -za false' : "" - // TODO wut? [9a/a441d6] Submitted process > NFCORE_TAXPROFILER:TAXPROFILER:PROFILING:MALT_RUN (null) def temp_meta = [ id: meta['db_name'] ] def new_db_meta = db_meta.clone() new_db_meta['db_params'] = db_meta['db_params'] + sam_format @@ -76,7 +75,6 @@ workflow PROFILING { [ new_meta, reads, db ] } .groupTuple(by: [0,2]) - .dump(tag: "into_malt") .multiMap { it -> reads: [ it[0], it[1].flatten() ] From dc48935651e5a32fabbd7e095cd034cdfec625db Mon Sep 17 00:00:00 2001 From: "James A. Fellows Yates" Date: Tue, 7 Jun 2022 20:19:45 +0200 Subject: [PATCH 239/789] Apply suggestions from code review --- docs/usage.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/usage.md b/docs/usage.md index ea21e54..4090cf2 100644 --- a/docs/usage.md +++ b/docs/usage.md @@ -137,8 +137,8 @@ Expected (uncompressed) database files for each tool are as follows: is used to prepare the mOTUs database and create a file with the version information. The database download step can be time consuming and the database will be consisting with same release version of the mOTUs tools. The database for same version tools - can be thus reused for multiple runs. Users can download the database once and - assign the database with the table. + can be thus reused for multiple runs. Users can download the database once using the script above and + specify the path the database to the TSV table provided to `--databases`. ## Running the pipeline From 490a8a8a840566a53ac252b107c3c1fff207c61c Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Thu, 9 Jun 2022 08:15:58 +0200 Subject: [PATCH 240/789] Remove dump --- subworkflows/local/profiling.nf | 1 - 1 file changed, 1 deletion(-) diff --git a/subworkflows/local/profiling.nf b/subworkflows/local/profiling.nf index b83c78f..03f0bf5 100644 --- a/subworkflows/local/profiling.nf +++ b/subworkflows/local/profiling.nf @@ -76,7 +76,6 @@ workflow PROFILING { [ new_meta, reads, db ] } .groupTuple(by: [0,2]) - .dump(tag: "into_malt") .multiMap { it -> reads: [ it[0], it[1].flatten() ] From ec13b8d608c5a95e9a2e27ae6c2b76691d5b0448 Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Thu, 9 Jun 2022 08:21:48 +0200 Subject: [PATCH 241/789] Remove support for uncompressed FASTQ files --- bin/check_samplesheet.py | 2 +- docs/usage.md | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/bin/check_samplesheet.py b/bin/check_samplesheet.py index d10ee90..47c6452 100755 --- a/bin/check_samplesheet.py +++ b/bin/check_samplesheet.py @@ -48,7 +48,7 @@ def check_samplesheet(file_in, file_out): 2613,ERR5766181,ILLUMINA,ERX5474937_ERR5766181_1.fastq.gz,ERX5474937_ERR5766181_2.fastq.gz, """ - FQ_EXTENSIONS = (".fq", ".fq.gz", ".fastq", ".fastq.gz") + FQ_EXTENSIONS = (".fq.gz", ".fastq.gz") FA_EXTENSIONS = ( ".fa", ".fa.gz", diff --git a/docs/usage.md b/docs/usage.md index 54ffce0..8b40745 100644 --- a/docs/usage.md +++ b/docs/usage.md @@ -12,6 +12,8 @@ nf-core/taxprofiler can accept as input raw or preprocessed single- or paired-end short-read (e.g. Illumina) FASTQ files, long-read FASTQ files (e.g. Oxford Nanopore), or FASTA sequences (available for a subset of profilers). +> ⚠️ Input FASTQ files _must_ be gzipped, while FASTA files may optionally be uncompressed (although this is not recommended) + You will need to create a samplesheet with information about the samples you would like to analyse before running the pipeline. Use this parameter to specify its location. It has to be a comma-separated file with 6 columns, and a header row as shown in the examples below. Furthermother, nf-core/taxprofiler also requires a second comma-separated file of 3 columns with a header row as in the examples below. This samplesheet is then specified on the command line as follows: From 621b6a3d092e00a11086444083c95544ad8781b8 Mon Sep 17 00:00:00 2001 From: "James A. Fellows Yates" Date: Fri, 10 Jun 2022 11:27:51 +0200 Subject: [PATCH 242/789] Add comments about MALT id replacement and refactor for simplicity --- subworkflows/local/profiling.nf | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/subworkflows/local/profiling.nf b/subworkflows/local/profiling.nf index 9bae127..7d35837 100644 --- a/subworkflows/local/profiling.nf +++ b/subworkflows/local/profiling.nf @@ -66,13 +66,20 @@ workflow PROFILING { .filter { it[0]['instrument_platform'] == 'ILLUMINA' } .map { meta, reads, db_meta, db -> - def sam_format = params.malt_save_reads ? ' --alignments ./ -za false' : "" - def temp_meta = [ id: meta['db_name'] ] + def new_meta = meta.clone() def new_db_meta = db_meta.clone() + + // Add the saving of alignments in SAM format to params + def sam_format = params.malt_save_reads ? ' --alignments ./ -za false' : "" new_db_meta['db_params'] = db_meta['db_params'] + sam_format - def new_meta = temp_meta + new_db_meta - new_meta['id'] = new_meta['db_name'] - [ new_meta, reads, db ] + + // As MALT has huge databases, we don't run on a per-sample basis but multiple + // samples at once. This replaces the ID of the particular process with the + // db_name instead to prevent `null` in job name, and in publishDir) + def updated_meta = new_meta + new_db_meta + updated_meta['id'] = updated_meta['db_name'] + + [ updated_meta, reads, db ] } .groupTuple(by: [0,2]) .multiMap { From e0ad49ebc9f22120ff001c08f3b21facf6038c22 Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Fri, 10 Jun 2022 19:33:37 +0200 Subject: [PATCH 243/789] Fix metadata manipulaton for malt --- subworkflows/local/profiling.nf | 28 ++++++++++++++++------------ 1 file changed, 16 insertions(+), 12 deletions(-) diff --git a/subworkflows/local/profiling.nf b/subworkflows/local/profiling.nf index 7d35837..de5bea1 100644 --- a/subworkflows/local/profiling.nf +++ b/subworkflows/local/profiling.nf @@ -61,25 +61,29 @@ workflow PROFILING { // MALT: We groupTuple to have all samples in one channel for MALT as database // loading takes a long time, so we only want to run it once per database - // TODO document somewhere we only accept illumina short reads for MALT? ch_input_for_malt = ch_input_for_profiling.malt .filter { it[0]['instrument_platform'] == 'ILLUMINA' } .map { meta, reads, db_meta, db -> - def new_meta = meta.clone() + + // Reset entire input meta for MALT to just database name, + // as we don't run run on a per-sample basis due to huge datbaases + // so all samples are in one run and so sample-specific metadata + // unnecessary. Set as database name to prevent `null` job ID and prefix. + def temp_meta = [ id: meta['db_name'] ] + + // Extend database parameters to specify whether to save alignments or not def new_db_meta = db_meta.clone() - - // Add the saving of alignments in SAM format to params def sam_format = params.malt_save_reads ? ' --alignments ./ -za false' : "" new_db_meta['db_params'] = db_meta['db_params'] + sam_format - - // As MALT has huge databases, we don't run on a per-sample basis but multiple - // samples at once. This replaces the ID of the particular process with the - // db_name instead to prevent `null` in job name, and in publishDir) - def updated_meta = new_meta + new_db_meta - updated_meta['id'] = updated_meta['db_name'] - - [ updated_meta, reads, db ] + + // Combine reduced sample metadata with updated database parameters metadata, + // make sure id is db_name for publishing purposes. + def new_meta = temp_meta + new_db_meta + new_meta['id'] = new_meta['db_name'] + + [ new_meta, reads, db ] + } .groupTuple(by: [0,2]) .multiMap { From c1a7d6335f1b4c73067926563f8e2d7b0ba80d57 Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Mon, 13 Jun 2022 21:02:12 +0200 Subject: [PATCH 244/789] Do not require fixed column order --- bin/check_samplesheet.py | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/bin/check_samplesheet.py b/bin/check_samplesheet.py index d10ee90..d7ea5a9 100755 --- a/bin/check_samplesheet.py +++ b/bin/check_samplesheet.py @@ -37,6 +37,7 @@ def print_error(error, context="Line", context_str=""): print(error_str) sys.exit(1) + def check_samplesheet(file_in, file_out): """ This function checks that the samplesheet follows the following structure: @@ -87,10 +88,13 @@ def check_samplesheet(file_in, file_out): "fasta", ] header = [x.strip('"') for x in fin.readline().strip().split(",")] - if header[: len(HEADER)] != HEADER: + + ## Check for missing mandatory columns + missing_columns = list(set(HEADER) - set(header)) + if len(missing_columns) > 0: print( - "ERROR: Please check samplesheet header -> {} != {}".format( - ",".join(header), ",".join(HEADER) + "ERROR: Missing required column header -> {}. Note some columns can otherwise be empty. See pipeline documentation (https://nf-co.re/taxprofiler/usage).".format( + ",".join(missing_columns) ) ) sys.exit(1) @@ -173,7 +177,9 @@ def check_samplesheet(file_in, file_out): ## Auto-detect paired-end/single-end if sample and fastq_1 and fastq_2: ## Paired-end short reads sample_info.extend(["0", fastq_1, fastq_2, fasta]) - elif sample and fastq_1 and not fastq_2: ## Single-end short/long fastq reads + elif ( + sample and fastq_1 and not fastq_2 + ): ## Single-end short/long fastq reads sample_info.extend(["1", fastq_1, fastq_2, fasta]) elif ( sample and fasta and not fastq_1 and not fastq_2 From a84f693479340e5ae13f97576d76c42c7320d4c2 Mon Sep 17 00:00:00 2001 From: "Thomas A. Christensen II" <25492070+MillironX@users.noreply.github.com> Date: Tue, 14 Jun 2022 08:13:36 -0500 Subject: [PATCH 245/789] Install KRAKENTOOLS_KREPORT2KRONA module --- modules.json | 3 ++ .../modules/krakentools/kreport2krona/main.nf | 36 ++++++++++++++++ .../krakentools/kreport2krona/meta.yml | 41 +++++++++++++++++++ 3 files changed, 80 insertions(+) create mode 100644 modules/nf-core/modules/krakentools/kreport2krona/main.nf create mode 100644 modules/nf-core/modules/krakentools/kreport2krona/meta.yml diff --git a/modules.json b/modules.json index a8f5a57..b9d9dba 100644 --- a/modules.json +++ b/modules.json @@ -48,6 +48,9 @@ "kraken2/kraken2": { "git_sha": "abe025677cdd805cc93032341ab19885473c1a07" }, + "krakentools/kreport2krona": { + "git_sha": "8b2a473f586bed003e72d2b183acc43fc0ddc422" + }, "malt/run": { "git_sha": "72b96f4e504eef673f2b5c13560a9d90b669129b" }, diff --git a/modules/nf-core/modules/krakentools/kreport2krona/main.nf b/modules/nf-core/modules/krakentools/kreport2krona/main.nf new file mode 100644 index 0000000..3bf46ee --- /dev/null +++ b/modules/nf-core/modules/krakentools/kreport2krona/main.nf @@ -0,0 +1,36 @@ +def VERSION = '1.2' // Version information not provided by tool on CLI + +process KRAKENTOOLS_KREPORT2KRONA { + tag "$meta.id" + label 'process_low' + + conda (params.enable_conda ? "bioconda::krakentools=1.2" : null) + container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? + 'https://depot.galaxyproject.org/singularity/krakentools:1.2--pyh5e36f6f_0': + 'quay.io/biocontainers/krakentools:1.2--pyh5e36f6f_0' }" + + input: + tuple val(meta), path(kreport) + + output: + tuple val(meta), path("*.txt"), emit: txt + path "versions.yml", emit: versions + + when: + task.ext.when == null || task.ext.when + + script: + def args = task.ext.args ?: '' + def prefix = task.ext.prefix ?: "${meta.id}" + """ + kreport2krona.py \\ + -r ${kreport} \\ + -o ${prefix}.txt \\ + ${args} + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + kreport2krona.py: ${VERSION} + END_VERSIONS + """ +} diff --git a/modules/nf-core/modules/krakentools/kreport2krona/meta.yml b/modules/nf-core/modules/krakentools/kreport2krona/meta.yml new file mode 100644 index 0000000..2f8a163 --- /dev/null +++ b/modules/nf-core/modules/krakentools/kreport2krona/meta.yml @@ -0,0 +1,41 @@ +name: krakentools_kreport2krona +description: Takes a Kraken report file and prints out a krona-compatible TEXT file +keywords: + - kraken + - krona + - metagenomics + - visualization +tools: + - krakentools: + description: KrakenTools is a suite of scripts to be used for post-analysis of Kraken/KrakenUniq/Kraken2/Bracken results. Please cite the relevant paper if using KrakenTools with any of the listed programs. + homepage: https://github.com/jenniferlu717/KrakenTools + licence: ["GPL v3"] + +input: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - kreport: + type: file + description: Kraken report + pattern: "*.{txt,kreport}" + +output: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - versions: + type: file + description: File containing software versions + pattern: "versions.yml" + - krona: + type: file + description: Krona text-based input file converted from Kraken report + pattern: "*.{txt,krona}" + +authors: + - "@MillironX" From 87678c127bb5ed16c05f860ff2df59a7c4524f19 Mon Sep 17 00:00:00 2001 From: "Thomas A. Christensen II" <25492070+MillironX@users.noreply.github.com> Date: Tue, 14 Jun 2022 08:23:47 -0500 Subject: [PATCH 246/789] Add KRONA_CLEANUP process module --- modules/local/krona_cleanup.nf | 40 ++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 modules/local/krona_cleanup.nf diff --git a/modules/local/krona_cleanup.nf b/modules/local/krona_cleanup.nf new file mode 100644 index 0000000..804cb69 --- /dev/null +++ b/modules/local/krona_cleanup.nf @@ -0,0 +1,40 @@ +process KRONA_CLEANUP { + tag "$meta.id" + label 'process_low' + + conda (params.enable_conda ? "conda-forge::sed=4.7" : null) + container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? + 'https://containers.biocontainers.pro/s3/SingImgsRepo/biocontainers/v1.2.0_cv1/biocontainers_v1.2.0_cv1.img' : + 'biocontainers/biocontainers:v1.2.0_cv1' }" + + input: + tuple val(meta), path(krona, stageAs: 'uncleaned.krona.txt') + + output: + tuple val(meta), path("*.txt"), emit: txt + path "versions.yml", emit: versions + + when: + task.ext.when == null || task.ext.when + + script: + def prefix = task.ext.prefix ?: "${meta.id}" + """ + # Copy the file to a new name + cp ${krona} ${prefix}.txt + + # Remove ugly 'x__' prefixes for each of the taxonomic levels + LEVELS=(d k p c o f g s) + for L in "\${LEVELS[@]}"; do + sed -i "s/\${L}__//g" ${prefix}.txt + done + + # Remove underscores that are standing in place of spaces + sed -i "s/_/ /g" ${prefix}.txt + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + sed: \$(echo \$(sed --version 2>&1) | sed 's/^.*GNU sed) //; s/ .*\$//') + END_VERSIONS + """ +} From 5da8d5b7418cc778284f64110f7fe721a29aa148 Mon Sep 17 00:00:00 2001 From: "Thomas A. Christensen II" <25492070+MillironX@users.noreply.github.com> Date: Tue, 14 Jun 2022 08:27:42 -0500 Subject: [PATCH 247/789] Install KRONA_KTIMPORTTEXT --- modules.json | 3 ++ .../modules/krona/ktimporttext/main.nf | 34 ++++++++++++++ .../modules/krona/ktimporttext/meta.yml | 47 +++++++++++++++++++ 3 files changed, 84 insertions(+) create mode 100644 modules/nf-core/modules/krona/ktimporttext/main.nf create mode 100644 modules/nf-core/modules/krona/ktimporttext/meta.yml diff --git a/modules.json b/modules.json index b9d9dba..4956cc8 100644 --- a/modules.json +++ b/modules.json @@ -51,6 +51,9 @@ "krakentools/kreport2krona": { "git_sha": "8b2a473f586bed003e72d2b183acc43fc0ddc422" }, + "krona/ktimporttext": { + "git_sha": "cdefbec66999c0b49d8bfeea9d6f9d19056635a2" + }, "malt/run": { "git_sha": "72b96f4e504eef673f2b5c13560a9d90b669129b" }, diff --git a/modules/nf-core/modules/krona/ktimporttext/main.nf b/modules/nf-core/modules/krona/ktimporttext/main.nf new file mode 100644 index 0000000..de0cfc2 --- /dev/null +++ b/modules/nf-core/modules/krona/ktimporttext/main.nf @@ -0,0 +1,34 @@ +process KRONA_KTIMPORTTEXT { + tag "$meta.id" + label 'process_low' + + conda (params.enable_conda ? "bioconda::krona=2.8.1" : null) + container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? + 'https://depot.galaxyproject.org/singularity/krona:2.8.1--pl5321hdfd78af_1': + 'quay.io/biocontainers/krona:2.8.1--pl5321hdfd78af_1' }" + + input: + tuple val(meta), path(report) + + output: + tuple val(meta), path ('*.html'), emit: html + path "versions.yml" , emit: versions + + when: + task.ext.when == null || task.ext.when + + script: + def args = task.ext.args ?: '' + def prefix = task.ext.prefix ?: "${meta.id}" + """ + ktImportText \\ + $args \\ + -o ${prefix}.html \\ + $report + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + krona: \$( echo \$(ktImportText 2>&1) | sed 's/^.*KronaTools //g; s/- ktImportText.*\$//g') + END_VERSIONS + """ +} diff --git a/modules/nf-core/modules/krona/ktimporttext/meta.yml b/modules/nf-core/modules/krona/ktimporttext/meta.yml new file mode 100644 index 0000000..a7108e0 --- /dev/null +++ b/modules/nf-core/modules/krona/ktimporttext/meta.yml @@ -0,0 +1,47 @@ +name: "krona_ktimporttext" +description: Creates a Krona chart from text files listing quantities and lineages. +keywords: + - plot + - taxonomy + - interactive + - html + - visualisation + - krona chart + - metagenomics +tools: + - krona: + description: Krona Tools is a set of scripts to create Krona charts from several Bioinformatics tools as well as from text and XML files. + homepage: https://github.com/marbl/Krona/wiki/KronaTools + documentation: http://manpages.ubuntu.com/manpages/impish/man1/ktImportTaxonomy.1.html + tool_dev_url: https://github.com/marbl/Krona + doi: 10.1186/1471-2105-12-385 + licence: https://raw.githubusercontent.com/marbl/Krona/master/KronaTools/LICENSE.txt + +input: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test'] + - report: + type: file + description: "Tab-delimited text file. Each line should be a number followed by a list of wedges to contribute to (starting from the highest level). If no wedges are listed (and just a quantity is given), it will contribute to the top level. If the same lineage is listed more than once, the values will be added. Quantities can be omitted if -q is specified. Lines beginning with '#' will be ignored." + pattern: "*.{txt}" + +output: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test' ] + - versions: + type: file + description: File containing software versions + pattern: "versions.yml" + - html: + type: file + description: A html file containing an interactive krona plot. + pattern: "*.{html}" + +authors: + - "@jianhong" From 2e7f26f380246ade93c56e50f5611fb8f0643b60 Mon Sep 17 00:00:00 2001 From: "James A. Fellows Yates" Date: Tue, 14 Jun 2022 20:09:48 +0000 Subject: [PATCH 248/789] Replace header tuple with sub-set list of only relevant columns for sample checking --- bin/check_samplesheet.py | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/bin/check_samplesheet.py b/bin/check_samplesheet.py index d7ea5a9..4e80b46 100755 --- a/bin/check_samplesheet.py +++ b/bin/check_samplesheet.py @@ -99,9 +99,17 @@ def check_samplesheet(file_in, file_out): ) sys.exit(1) + ## Find locations of mandatory columns + header_locs = dict() + for i in HEADER: + header_locs[i] = header.index(i) + ## Check sample entries for line in fin: - lspl = [x.strip().strip('"') for x in line.strip().split(",")] + + ## Pull out only relevant columns for downstream checking + line_parsed = [x.strip().strip('"') for x in line.strip().split(",")] + lspl = [line_parsed[i] for i in header_locs.values()] # Check valid number of columns per row if len(lspl) < len(HEADER): @@ -121,6 +129,7 @@ def check_samplesheet(file_in, file_out): ) ## Check sample name entries + ( sample, run_accession, From 4ff2145e44d0c5b98f0d90cc43813cb343b2ee55 Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Mon, 20 Jun 2022 08:23:14 +0200 Subject: [PATCH 249/789] Roll back MALT version --- modules.json | 2 +- modules/nf-core/modules/malt/run/main.nf | 7 +++---- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/modules.json b/modules.json index a8f5a57..9561b0f 100644 --- a/modules.json +++ b/modules.json @@ -49,7 +49,7 @@ "git_sha": "abe025677cdd805cc93032341ab19885473c1a07" }, "malt/run": { - "git_sha": "72b96f4e504eef673f2b5c13560a9d90b669129b" + "git_sha": "be8d7b3293cac26cc63e4dbfb364deb8ed6ec7e5" }, "megan/rma2info": { "git_sha": "2d38566eca4cc15142b2ffa7c11837569b39aece" diff --git a/modules/nf-core/modules/malt/run/main.nf b/modules/nf-core/modules/malt/run/main.nf index 4e2e50c..2b91d90 100644 --- a/modules/nf-core/modules/malt/run/main.nf +++ b/modules/nf-core/modules/malt/run/main.nf @@ -2,10 +2,10 @@ process MALT_RUN { tag "$meta.id" label 'process_high' - conda (params.enable_conda ? "bioconda::malt=0.53" : null) + conda (params.enable_conda ? "bioconda::malt=0.41" : null) container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? - 'https://depot.galaxyproject.org/singularity/malt:0.53--hdfd78af_0' : - 'quay.io/biocontainers/malt:0.53--hdfd78af_0' }" + 'https://depot.galaxyproject.org/singularity/malt:0.41--1' : + 'quay.io/biocontainers/malt:0.41--1' }" input: tuple val(meta), path(fastqs) @@ -33,7 +33,6 @@ process MALT_RUN { """ malt-run \\ - -J-Xmx${avail_mem}g \\ -t $task.cpus \\ -v \\ -o . \\ From 4552b53e757518cd51791f4f841a068bd8896da9 Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Mon, 20 Jun 2022 08:30:23 +0200 Subject: [PATCH 250/789] Add note about MALT version to docs --- docs/usage.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/docs/usage.md b/docs/usage.md index 9c47898..1893c10 100644 --- a/docs/usage.md +++ b/docs/usage.md @@ -213,6 +213,12 @@ Activating this functionality will concatenate the FASTQ files with the same sam You can optionally save the FASTQ output of the run merging with the `--save_runmerged_reads`. +##### Profiling + +###### MALT + +nf-core/taxprofiler uses MALT 0.4.1, which is a compatively old version. However it has been found that the most recent version of MALT (0.5.\*), at the time of writing, is broken. [The the LCA step appears not to be executed](http://megan.informatik.uni-tuebingen.de/t/lca-placement-failure-with-malt-v-0-5-2-and-0-5-3/1996/3), pushing all hits to the leaves of the taxonomy. However, if you need to use a more recent taxonomy map file with your databases, the output of `malt-build` from MALT 0.5.3 should be still be compatible with `malt-run` of 0.4.1. + ### Updating the pipeline When you run the above command, Nextflow automatically pulls the pipeline code from GitHub and stores it as a cached version. When running the pipeline after this, it will always use the cached version if available - even if the pipeline has been updated since. To make sure that you're running the latest version of the pipeline, make sure that you regularly update the cached version of the pipeline: From a40a442178487dce25aa9f10109098976868a198 Mon Sep 17 00:00:00 2001 From: "Thomas A. Christensen II" <25492070+MillironX@users.noreply.github.com> Date: Mon, 27 Jun 2022 08:22:47 -0500 Subject: [PATCH 251/789] Create VISUALIZATION_KRONA workflow to create Krona charts --- subworkflows/local/visualization_krona.nf | 55 +++++++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100644 subworkflows/local/visualization_krona.nf diff --git a/subworkflows/local/visualization_krona.nf b/subworkflows/local/visualization_krona.nf new file mode 100644 index 0000000..87db112 --- /dev/null +++ b/subworkflows/local/visualization_krona.nf @@ -0,0 +1,55 @@ +// +// Create Krona visualizations +// + +include { KRAKENTOOLS_KREPORT2KRONA } from '../../modules/nf-core/modules/krakentools/kreport2krona/main' +include { KRONA_CLEANUP } from '../../modules/local/krona_cleanup' +include { KRONA_KTIMPORTTEXT } from '../../modules/nf-core/modules/krona/ktimporttext/main' + +workflow VISUALIZATION_KRONA { + take: + profiles + + main: + ch_krona_text = Channel.empty() + ch_krona_html = Channel.empty() + ch_versions = Channel.empty() + + /* + Split profile results based on tool they come from + */ + ch_input_profiles = profiles + .branch { + kraken2: it[0]['tool'] == 'kraken2' + unknown: true + } + + /* + Convert Kraken2 formatted reports into Krona text files + */ + ch_kraken_reports = ch_input_profiles.kraken2 + KRAKENTOOLS_KREPORT2KRONA ( ch_kraken_reports ) + ch_krona_text = ch_krona_text.mix( KRAKENTOOLS_KREPORT2KRONA.out.txt ) + ch_versions = ch_versions.mix( KRAKENTOOLS_KREPORT2KRONA.out.versions.first() ) + + /* + Remove taxonomy level annotations from the Krona text files + */ + KRONA_CLEANUP( ch_krona_text ) + ch_cleaned_krona_text = KRONA_CLEANUP.out.txt + ch_versions = ch_versions.mix( KRONA_CLEANUP.out.versions.first() ) + + /* + Convert Krona text files into html Krona visualizations + */ + ch_krona_text_for_import = ch_cleaned_krona_text + .map{[[id: it[0]['db_name']], it[1]]} + .groupTuple() + KRONA_KTIMPORTTEXT( ch_krona_text_for_import ) + ch_krona_html = ch_krona_html.mix( KRONA_KTIMPORTTEXT.out.html ) + ch_versions = ch_versions.mix( KRONA_KTIMPORTTEXT.out.versions.first() ) + + emit: + html = ch_krona_html + versions = ch_versions +} From ad9bc4b7e9d2ec09bcd8fd53a6ea67f86a1e2f73 Mon Sep 17 00:00:00 2001 From: "Thomas A. Christensen II" <25492070+MillironX@users.noreply.github.com> Date: Mon, 20 Jun 2022 09:03:47 -0500 Subject: [PATCH 252/789] Add the visualization workflow to the main workflow --- workflows/taxprofiler.nf | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/workflows/taxprofiler.nf b/workflows/taxprofiler.nf index f29a366..313790c 100644 --- a/workflows/taxprofiler.nf +++ b/workflows/taxprofiler.nf @@ -62,6 +62,7 @@ include { SHORTREAD_HOSTREMOVAL } from '../subworkflows/local/shortread_ include { LONGREAD_HOSTREMOVAL } from '../subworkflows/local/longread_hostremoval' include { SHORTREAD_COMPLEXITYFILTERING } from '../subworkflows/local/shortread_complexityfiltering' include { PROFILING } from '../subworkflows/local/profiling' +include { VISUALIZATION_KRONA } from '../subworkflows/local/visualization_krona' /* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -209,6 +210,12 @@ workflow TAXPROFILER { PROFILING ( ch_reads_runmerged, DB_CHECK.out.dbs ) ch_versions = ch_versions.mix( PROFILING.out.versions ) + /* + SUBWORKFLOW: VISUALIZATION_KRONA + */ + VISUALIZATION_KRONA ( PROFILING.out.profiles ) + ch_versions = ch_versions.mix( VISUALIZATION_KRONA.out.versions ) + /* MODULE: MultiQC */ From 0e8edd5b2f097e2c7a6c1b7a39fb5a19671395ce Mon Sep 17 00:00:00 2001 From: "Thomas A. Christensen II" <25492070+MillironX@users.noreply.github.com> Date: Tue, 14 Jun 2022 08:48:16 -0500 Subject: [PATCH 253/789] Add output configuration for Kraken Krona chart --- conf/modules.config | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/conf/modules.config b/conf/modules.config index 46320cf..f9d0329 100644 --- a/conf/modules.config +++ b/conf/modules.config @@ -293,6 +293,14 @@ process { ] } + withName: KRONA_KTIMPORTTEXT { + publishDir = [ + path: { "${params.outdir}/krona" }, + mode: params.publish_dir_mode, + pattern: '*.{html}' + ] + } + withName: METAPHLAN3 { ext.args = { "${meta.db_params}" } ext.prefix = params.perform_runmerging ? { "${meta.id}-${meta.db_name}" } : { "${meta.id}-${meta.run_accession}-${meta.db_name}" } From 15ac8b39fa8a2e6b490d05d69e1634f48eb35117 Mon Sep 17 00:00:00 2001 From: "Thomas A. Christensen II" <25492070+MillironX@users.noreply.github.com> Date: Tue, 14 Jun 2022 10:54:10 -0500 Subject: [PATCH 254/789] Add citation for Krona --- CITATIONS.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/CITATIONS.md b/CITATIONS.md index 8044658..1ce4ec2 100644 --- a/CITATIONS.md +++ b/CITATIONS.md @@ -36,6 +36,10 @@ > Wood, Derrick E., Jennifer Lu, and Ben Langmead. 2019. Improved Metagenomic Analysis with Kraken 2. Genome Biology 20 (1): 257. doi: 10.1186/s13059-019-1891-0. +- [Krona](https://doi.org/10.1186/1471-2105-12-385) + + > Ondov, Brian D., Nicholas H. Bergman, and Adam M. Phillippy. 2011. Interactive metagenomic visualization in a Web browser. BMC Bioinformatics 12 (1): 385. doi: 10.1186/1471-2105-12-385. + - [MALT](https://doi.org/10.1038/s41559-017-0446-6) > Vågene, Åshild J., Alexander Herbig, Michael G. Campana, Nelly M. Robles García, Christina Warinner, Susanna Sabin, Maria A. Spyrou, et al. 2018. Salmonella Enterica Genomes from Victims of a Major Sixteenth-Century Epidemic in Mexico. Nature Ecology & Evolution 2 (3): 520-28. doi: 10.1038/s41559-017-0446-6. From 18284e6e32d1090336f37fd024bb5703cc80503b Mon Sep 17 00:00:00 2001 From: "Thomas A. Christensen II" <25492070+MillironX@users.noreply.github.com> Date: Mon, 27 Jun 2022 08:41:42 -0500 Subject: [PATCH 255/789] Add run_krona option to allow skipping Krona chart creation --- conf/test.config | 1 + conf/test_nopreprocessing.config | 1 + nextflow.config | 3 +++ nextflow_schema.json | 3 +++ workflows/taxprofiler.nf | 6 ++++-- 5 files changed, 12 insertions(+), 2 deletions(-) diff --git a/conf/test.config b/conf/test.config index e9fa62e..04dfb4d 100644 --- a/conf/test.config +++ b/conf/test.config @@ -37,6 +37,7 @@ params { run_metaphlan3 = true run_centrifuge = true run_diamond = true + run_krona = true malt_save_reads = true kraken2_save_reads = true centrifuge_save_reads = true diff --git a/conf/test_nopreprocessing.config b/conf/test_nopreprocessing.config index 60cdde8..92fd29d 100644 --- a/conf/test_nopreprocessing.config +++ b/conf/test_nopreprocessing.config @@ -37,6 +37,7 @@ params { run_metaphlan3 = true run_centrifuge = true run_diamond = true + run_krona = true } process { diff --git a/nextflow.config b/nextflow.config index 73fd0b3..29c87cd 100644 --- a/nextflow.config +++ b/nextflow.config @@ -125,6 +125,9 @@ params { run_diamond = false diamond_output_format = 'tsv' // TSV is only format with taxonomic information apparently diamond_save_reads = false // this will override default diamond output format so no taxonomic profile is generated! + + // krona + run_krona = false } // Load base.config by default for all pipelines diff --git a/nextflow_schema.json b/nextflow_schema.json index 2c00348..682bf2f 100644 --- a/nextflow_schema.json +++ b/nextflow_schema.json @@ -433,6 +433,9 @@ }, "diamond_save_reads": { "type": "boolean" + }, + "run_krona": { + "type": "boolean" } } } diff --git a/workflows/taxprofiler.nf b/workflows/taxprofiler.nf index 313790c..f7ef07a 100644 --- a/workflows/taxprofiler.nf +++ b/workflows/taxprofiler.nf @@ -213,8 +213,10 @@ workflow TAXPROFILER { /* SUBWORKFLOW: VISUALIZATION_KRONA */ - VISUALIZATION_KRONA ( PROFILING.out.profiles ) - ch_versions = ch_versions.mix( VISUALIZATION_KRONA.out.versions ) + if ( params.run_krona ) { + VISUALIZATION_KRONA ( PROFILING.out.profiles ) + ch_versions = ch_versions.mix( VISUALIZATION_KRONA.out.versions ) + } /* MODULE: MultiQC From 23fec89b062d74b2052c31d982a52d301bc2809c Mon Sep 17 00:00:00 2001 From: "Thomas A. Christensen II" <25492070+MillironX@users.noreply.github.com> Date: Mon, 27 Jun 2022 08:52:29 -0500 Subject: [PATCH 256/789] Add Krona chart creation for Centrifuge reports --- subworkflows/local/visualization_krona.nf | 2 ++ 1 file changed, 2 insertions(+) diff --git a/subworkflows/local/visualization_krona.nf b/subworkflows/local/visualization_krona.nf index 87db112..b9f645d 100644 --- a/subworkflows/local/visualization_krona.nf +++ b/subworkflows/local/visualization_krona.nf @@ -20,6 +20,7 @@ workflow VISUALIZATION_KRONA { */ ch_input_profiles = profiles .branch { + centrifuge: it[0]['tool'] == 'centrifuge' kraken2: it[0]['tool'] == 'kraken2' unknown: true } @@ -28,6 +29,7 @@ workflow VISUALIZATION_KRONA { Convert Kraken2 formatted reports into Krona text files */ ch_kraken_reports = ch_input_profiles.kraken2 + .mix( ch_input_profiles.centrifuge ) KRAKENTOOLS_KREPORT2KRONA ( ch_kraken_reports ) ch_krona_text = ch_krona_text.mix( KRAKENTOOLS_KREPORT2KRONA.out.txt ) ch_versions = ch_versions.mix( KRAKENTOOLS_KREPORT2KRONA.out.versions.first() ) From 5b80c7cab9e65702338f2c93e1f9dcfe06ecba28 Mon Sep 17 00:00:00 2001 From: "Thomas A. Christensen II" <25492070+MillironX@users.noreply.github.com> Date: Mon, 27 Jun 2022 08:58:28 -0500 Subject: [PATCH 257/789] Install KAIJU_KAIJU2KRONA --- modules.json | 3 ++ .../nf-core/modules/kaiju/kaiju2krona/main.nf | 39 ++++++++++++++++ .../modules/kaiju/kaiju2krona/meta.yml | 44 +++++++++++++++++++ 3 files changed, 86 insertions(+) create mode 100644 modules/nf-core/modules/kaiju/kaiju2krona/main.nf create mode 100644 modules/nf-core/modules/kaiju/kaiju2krona/meta.yml diff --git a/modules.json b/modules.json index 4956cc8..1770a53 100644 --- a/modules.json +++ b/modules.json @@ -42,6 +42,9 @@ "kaiju/kaiju": { "git_sha": "8856f127c58f6af479128be8b8df4d42e442ddbe" }, + "kaiju/kaiju2krona": { + "git_sha": "2f0b19240430de6807b1232e6d9d0e8084e8a28f" + }, "kaiju/kaiju2table": { "git_sha": "538dbac98ba9c8f799536cd5a617195501439457" }, diff --git a/modules/nf-core/modules/kaiju/kaiju2krona/main.nf b/modules/nf-core/modules/kaiju/kaiju2krona/main.nf new file mode 100644 index 0000000..c95d5a7 --- /dev/null +++ b/modules/nf-core/modules/kaiju/kaiju2krona/main.nf @@ -0,0 +1,39 @@ +process KAIJU_KAIJU2KRONA { + tag "$meta.id" + label 'process_low' + + conda (params.enable_conda ? "bioconda::kaiju=1.8.2" : null) + container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? + 'https://depot.galaxyproject.org/singularity/kaiju:1.8.2--h5b5514e_1': + 'quay.io/biocontainers/kaiju:1.8.2--h5b5514e_1' }" + + input: + tuple val(meta), path(tsv) + path(db) + + output: + tuple val(meta), path("*.txt"), emit: txt + path "versions.yml" , emit: versions + + when: + task.ext.when == null || task.ext.when + + script: + def args = task.ext.args ?: '' + def prefix = task.ext.prefix ?: "${meta.id}" + """ + dbnodes=`find -L ${db} -name "*nodes.dmp"` + dbnames=`find -L ${db} -name "*names.dmp"` + kaiju2krona \\ + $args \\ + -t \$dbnodes \\ + -n \$dbnames \\ + -i ${tsv} \\ + -o ${prefix}.txt + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + kaiju: \$(echo \$( kaiju -h 2>&1 | sed -n 1p | sed 's/^.*Kaiju //' )) + END_VERSIONS + """ +} diff --git a/modules/nf-core/modules/kaiju/kaiju2krona/meta.yml b/modules/nf-core/modules/kaiju/kaiju2krona/meta.yml new file mode 100644 index 0000000..a0dc2fd --- /dev/null +++ b/modules/nf-core/modules/kaiju/kaiju2krona/meta.yml @@ -0,0 +1,44 @@ +name: kaiju_kaiju2krona +description: Convert Kaiju's tab-separated output file into a tab-separated text file which can be imported into Krona. +keywords: + - taxonomy + - visualisation + - krona chart + - metagenomics +tools: + - "kaiju": + description: Fast and sensitive taxonomic classification for metagenomics + homepage: https://kaiju.binf.ku.dk/ + documentation: https://github.com/bioinformatics-centre/kaiju/blob/master/README.md + tool_dev_url: https://github.com/bioinformatics-centre/kaiju + doi: "10.1038/ncomms11257" + licence: ["GNU GPL v3"] + +input: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - tsv: + type: file + description: Kaiju tab-separated output file + pattern: "*.{tsv,txt}" + +output: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test', single_end:false ] + - versions: + type: file + description: File containing software versions + pattern: "versions.yml" + - txt: + type: file + description: Krona text-based input file converted from Kaiju report + pattern: "*.{txt,krona}" + +authors: + - "@MillironX" From 821dd844d8e7d87db095b2dc18ddb98cd01a81b4 Mon Sep 17 00:00:00 2001 From: "Thomas A. Christensen II" <25492070+MillironX@users.noreply.github.com> Date: Mon, 27 Jun 2022 09:23:20 -0500 Subject: [PATCH 258/789] Add Kaiju profile conversion to visualization workflow --- subworkflows/local/visualization_krona.nf | 22 ++++++++++++++++++++++ workflows/taxprofiler.nf | 2 +- 2 files changed, 23 insertions(+), 1 deletion(-) diff --git a/subworkflows/local/visualization_krona.nf b/subworkflows/local/visualization_krona.nf index b9f645d..31dd5bc 100644 --- a/subworkflows/local/visualization_krona.nf +++ b/subworkflows/local/visualization_krona.nf @@ -2,6 +2,7 @@ // Create Krona visualizations // +include { KAIJU_KAIJU2KRONA } from '../../modules/nf-core/modules/kaiju/kaiju2krona/main' include { KRAKENTOOLS_KREPORT2KRONA } from '../../modules/nf-core/modules/krakentools/kreport2krona/main' include { KRONA_CLEANUP } from '../../modules/local/krona_cleanup' include { KRONA_KTIMPORTTEXT } from '../../modules/nf-core/modules/krona/ktimporttext/main' @@ -9,6 +10,7 @@ include { KRONA_KTIMPORTTEXT } from '../../modules/nf-core/modules/krona/ workflow VISUALIZATION_KRONA { take: profiles + databases main: ch_krona_text = Channel.empty() @@ -21,6 +23,7 @@ workflow VISUALIZATION_KRONA { ch_input_profiles = profiles .branch { centrifuge: it[0]['tool'] == 'centrifuge' + kaiju: it[0]['tool'] == 'kaiju' kraken2: it[0]['tool'] == 'kraken2' unknown: true } @@ -34,6 +37,25 @@ workflow VISUALIZATION_KRONA { ch_krona_text = ch_krona_text.mix( KRAKENTOOLS_KREPORT2KRONA.out.txt ) ch_versions = ch_versions.mix( KRAKENTOOLS_KREPORT2KRONA.out.versions.first() ) + /* + Combine Kaiju profiles with their databases + */ + ch_input_for_kaiju2krona = ch_input_profiles.kaiju + .map{ [it[0]['db_name'], it[0], it[1]] } + .combine( databases.map{ [it[0]['db_name'], it[1]] }, by: 0 ) + .multiMap{ + it -> + profiles: [it[1], it[2]] + db: it[3] + } + + /* + Convert Kaiju formatted reports into Krona text files + */ + KAIJU_KAIJU2KRONA( ch_input_for_kaiju2krona.profiles, ch_input_for_kaiju2krona.db ) + ch_krona_text = ch_krona_text.mix( KAIJU_KAIJU2KRONA.out.txt ) + ch_versions = ch_versions.mix( KAIJU_KAIJU2KRONA.out.versions.first() ) + /* Remove taxonomy level annotations from the Krona text files */ diff --git a/workflows/taxprofiler.nf b/workflows/taxprofiler.nf index f7ef07a..79a2bfd 100644 --- a/workflows/taxprofiler.nf +++ b/workflows/taxprofiler.nf @@ -214,7 +214,7 @@ workflow TAXPROFILER { SUBWORKFLOW: VISUALIZATION_KRONA */ if ( params.run_krona ) { - VISUALIZATION_KRONA ( PROFILING.out.profiles ) + VISUALIZATION_KRONA ( PROFILING.out.profiles, DB_CHECK.out.dbs ) ch_versions = ch_versions.mix( VISUALIZATION_KRONA.out.versions ) } From af854f5f346c93f1b1eae655ac5e1808ced1a39c Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Tue, 28 Jun 2022 12:42:41 +0200 Subject: [PATCH 259/789] Update mimetype for database csv as per https://github.com/nf-core/mag/pull/325/files --- nextflow_schema.json | 2 ++ 1 file changed, 2 insertions(+) diff --git a/nextflow_schema.json b/nextflow_schema.json index 682bf2f..fe77913 100644 --- a/nextflow_schema.json +++ b/nextflow_schema.json @@ -260,6 +260,8 @@ "properties": { "databases": { "type": "string", + "mimetype": "text/csv", + "format": "file-path", "default": "None" }, "shortread_qc_excludeunmerged": { From 4de43040a3403dae9b85679cdda9719ff2bb7117 Mon Sep 17 00:00:00 2001 From: "Thomas A. Christensen II" <25492070+MillironX@users.noreply.github.com> Date: Mon, 27 Jun 2022 12:12:16 -0500 Subject: [PATCH 260/789] Switch to using raw classifications for Kaiju2Krona --- subworkflows/local/profiling.nf | 25 ++++++++++++++--------- subworkflows/local/visualization_krona.nf | 9 ++++++-- workflows/taxprofiler.nf | 2 +- 3 files changed, 23 insertions(+), 13 deletions(-) diff --git a/subworkflows/local/profiling.nf b/subworkflows/local/profiling.nf index de5bea1..45c49f5 100644 --- a/subworkflows/local/profiling.nf +++ b/subworkflows/local/profiling.nf @@ -21,7 +21,8 @@ workflow PROFILING { main: ch_versions = Channel.empty() ch_multiqc_files = Channel.empty() - ch_raw_profiles = Channel.empty() + ch_raw_classifications = Channel.empty() + ch_raw_profiles = Channel.empty() /* COMBINE READS WITH POSSIBLE DATABASES @@ -110,6 +111,7 @@ workflow PROFILING { MEGAN_RMA2INFO (ch_maltrun_for_megan, params.malt_generate_megansummary ) ch_multiqc_files = ch_multiqc_files.mix( MALT_RUN.out.log.collect{it[1]}.ifEmpty([]) ) ch_versions = ch_versions.mix( MALT_RUN.out.versions.first(), MEGAN_RMA2INFO.out.versions.first() ) + ch_raw_classifications = ch_raw_classifications.mix( ch_maltrun_for_megan ) ch_raw_profiles = ch_raw_profiles.mix( MEGAN_RMA2INFO.out.txt ) } @@ -124,9 +126,10 @@ workflow PROFILING { } KRAKEN2_KRAKEN2 ( ch_input_for_kraken2.reads, ch_input_for_kraken2.db, params.kraken2_save_reads, params.kraken2_save_readclassification ) - ch_multiqc_files = ch_multiqc_files.mix( KRAKEN2_KRAKEN2.out.report.collect{it[1]}.ifEmpty([]) ) - ch_versions = ch_versions.mix( KRAKEN2_KRAKEN2.out.versions.first() ) - ch_raw_profiles = ch_raw_profiles.mix( KRAKEN2_KRAKEN2.out.report ) + ch_multiqc_files = ch_multiqc_files.mix( KRAKEN2_KRAKEN2.out.report.collect{it[1]}.ifEmpty([]) ) + ch_versions = ch_versions.mix( KRAKEN2_KRAKEN2.out.versions.first() ) + ch_raw_classifications = ch_raw_classifications.mix( KRAKEN2_KRAKEN2.out.classified_reads_assignment ) + ch_raw_profiles = ch_raw_profiles.mix( KRAKEN2_KRAKEN2.out.report ) } @@ -145,8 +148,9 @@ workflow PROFILING { CENTRIFUGE_CENTRIFUGE ( ch_input_for_centrifuge.reads, ch_input_for_centrifuge.db, params.centrifuge_save_reads, params.centrifuge_save_reads, params.centrifuge_save_reads ) CENTRIFUGE_KREPORT (CENTRIFUGE_CENTRIFUGE.out.results, ch_input_for_centrifuge.db) - ch_versions = ch_versions.mix( CENTRIFUGE_CENTRIFUGE.out.versions.first() ) - ch_raw_profiles = ch_raw_profiles.mix( CENTRIFUGE_KREPORT.out.kreport ) + ch_versions = ch_versions.mix( CENTRIFUGE_CENTRIFUGE.out.versions.first() ) + ch_raw_classifications = ch_raw_classifications.mix( CENTRIFUGE_CENTRIFUGE.out.results ) + ch_raw_profiles = ch_raw_profiles.mix( CENTRIFUGE_KREPORT.out.kreport ) } @@ -182,6 +186,7 @@ workflow PROFILING { KAIJU_KAIJU2TABLE (KAIJU_KAIJU.out.results, ch_input_for_kaiju.db, params.kaiju_taxon_name) ch_multiqc_files = ch_multiqc_files.mix( KAIJU_KAIJU2TABLE.out.summary.collect{it[1]}.ifEmpty([]) ) ch_versions = ch_versions.mix( KAIJU_KAIJU.out.versions.first() ) + ch_raw_classifications = ch_raw_classifications.mix( KAIJU_KAIJU.out.results ) ch_raw_profiles = ch_raw_profiles.mix( KAIJU_KAIJU2TABLE.out.summary ) } @@ -206,8 +211,8 @@ workflow PROFILING { } emit: - profiles = ch_raw_profiles // channel: [ val(meta), [ reads ] ] - should be text files or biom - versions = ch_versions // channel: [ versions.yml ] - mqc = ch_multiqc_files + classifications = ch_raw_classifications + profiles = ch_raw_profiles // channel: [ val(meta), [ reads ] ] - should be text files or biom + versions = ch_versions // channel: [ versions.yml ] + mqc = ch_multiqc_files } - diff --git a/subworkflows/local/visualization_krona.nf b/subworkflows/local/visualization_krona.nf index 31dd5bc..c5ca97a 100644 --- a/subworkflows/local/visualization_krona.nf +++ b/subworkflows/local/visualization_krona.nf @@ -9,6 +9,7 @@ include { KRONA_KTIMPORTTEXT } from '../../modules/nf-core/modules/krona/ workflow VISUALIZATION_KRONA { take: + classifications profiles databases @@ -23,10 +24,14 @@ workflow VISUALIZATION_KRONA { ch_input_profiles = profiles .branch { centrifuge: it[0]['tool'] == 'centrifuge' - kaiju: it[0]['tool'] == 'kaiju' kraken2: it[0]['tool'] == 'kraken2' unknown: true } + ch_input_classifications = classifications + .branch { + kaiju: it[0]['tool'] == 'kaiju' + unknown: true + } /* Convert Kraken2 formatted reports into Krona text files @@ -40,7 +45,7 @@ workflow VISUALIZATION_KRONA { /* Combine Kaiju profiles with their databases */ - ch_input_for_kaiju2krona = ch_input_profiles.kaiju + ch_input_for_kaiju2krona = ch_input_classifications.kaiju .map{ [it[0]['db_name'], it[0], it[1]] } .combine( databases.map{ [it[0]['db_name'], it[1]] }, by: 0 ) .multiMap{ diff --git a/workflows/taxprofiler.nf b/workflows/taxprofiler.nf index 79a2bfd..7eec13d 100644 --- a/workflows/taxprofiler.nf +++ b/workflows/taxprofiler.nf @@ -214,7 +214,7 @@ workflow TAXPROFILER { SUBWORKFLOW: VISUALIZATION_KRONA */ if ( params.run_krona ) { - VISUALIZATION_KRONA ( PROFILING.out.profiles, DB_CHECK.out.dbs ) + VISUALIZATION_KRONA ( PROFILING.out.classifications, PROFILING.out.profiles, DB_CHECK.out.dbs ) ch_versions = ch_versions.mix( VISUALIZATION_KRONA.out.versions ) } From 069370db8610aedd557438b0f071771cf97832fd Mon Sep 17 00:00:00 2001 From: "Thomas A. Christensen II" <25492070+MillironX@users.noreply.github.com> Date: Mon, 27 Jun 2022 13:39:42 -0500 Subject: [PATCH 261/789] Add unclassified and verbose flags to kaiju2krona --- conf/modules.config | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/conf/modules.config b/conf/modules.config index f9d0329..6563cc9 100644 --- a/conf/modules.config +++ b/conf/modules.config @@ -351,6 +351,10 @@ process { ] } + withName: KAIJU_KAIJU2KRONA { + ext.args = '-v -u' + } + withName: DIAMOND_BLASTX { ext.args = { "${meta.db_params}" } ext.prefix = params.perform_runmerging ? { "${meta.id}-${meta.db_name}" } : { "${meta.id}-${meta.run_accession}-${meta.db_name}" } From 6673ccf8d8bb0883d5b066e16ac59293830a80c1 Mon Sep 17 00:00:00 2001 From: "Thomas A. Christensen II" <25492070+MillironX@users.noreply.github.com> Date: Tue, 28 Jun 2022 13:13:37 +0000 Subject: [PATCH 262/789] Update channel assignment alignment in profiling subworkflow Co-authored-by: James A. Fellows Yates --- subworkflows/local/profiling.nf | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/subworkflows/local/profiling.nf b/subworkflows/local/profiling.nf index 45c49f5..c10ef5b 100644 --- a/subworkflows/local/profiling.nf +++ b/subworkflows/local/profiling.nf @@ -109,10 +109,10 @@ workflow PROFILING { } MEGAN_RMA2INFO (ch_maltrun_for_megan, params.malt_generate_megansummary ) - ch_multiqc_files = ch_multiqc_files.mix( MALT_RUN.out.log.collect{it[1]}.ifEmpty([]) ) - ch_versions = ch_versions.mix( MALT_RUN.out.versions.first(), MEGAN_RMA2INFO.out.versions.first() ) + ch_multiqc_files = ch_multiqc_files.mix( MALT_RUN.out.log.collect{it[1]}.ifEmpty([]) ) + ch_versions = ch_versions.mix( MALT_RUN.out.versions.first(), MEGAN_RMA2INFO.out.versions.first() ) ch_raw_classifications = ch_raw_classifications.mix( ch_maltrun_for_megan ) - ch_raw_profiles = ch_raw_profiles.mix( MEGAN_RMA2INFO.out.txt ) + ch_raw_profiles = ch_raw_profiles.mix( MEGAN_RMA2INFO.out.txt ) } From 0050f453456cdf7007881b2a7e4244c03a6a6c2c Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Thu, 30 Jun 2022 11:43:52 +0200 Subject: [PATCH 263/789] Add taxonomy directory param --- nextflow.config | 1 + subworkflows/local/visualization_krona.nf | 4 ++++ 2 files changed, 5 insertions(+) diff --git a/nextflow.config b/nextflow.config index 29c87cd..88b8d43 100644 --- a/nextflow.config +++ b/nextflow.config @@ -128,6 +128,7 @@ params { // krona run_krona = false + krona_taxonomy_directory = null } // Load base.config by default for all pipelines diff --git a/subworkflows/local/visualization_krona.nf b/subworkflows/local/visualization_krona.nf index b9f645d..d945184 100644 --- a/subworkflows/local/visualization_krona.nf +++ b/subworkflows/local/visualization_krona.nf @@ -51,6 +51,10 @@ workflow VISUALIZATION_KRONA { ch_krona_html = ch_krona_html.mix( KRONA_KTIMPORTTEXT.out.html ) ch_versions = ch_versions.mix( KRONA_KTIMPORTTEXT.out.versions.first() ) + /* + Convert Krona + */ + emit: html = ch_krona_html versions = ch_versions From 02c06b9f7bc24085cd271cd100f47e02373ff60d Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Thu, 30 Jun 2022 18:33:11 +0200 Subject: [PATCH 264/789] Add support for MALT display in Krona, tweaks other krona modules to dispaly tool name in output file --- conf/modules.config | 27 ++++++++++- modules.json | 6 +++ modules/nf-core/modules/gunzip/main.nf | 34 ++++++++++++++ modules/nf-core/modules/gunzip/meta.yml | 34 ++++++++++++++ .../modules/krona/ktimporttaxonomy/main.nf | 38 +++++++++++++++ .../modules/krona/ktimporttaxonomy/meta.yml | 47 +++++++++++++++++++ subworkflows/local/visualization_krona.nf | 21 ++++++++- workflows/taxprofiler.nf | 2 + 8 files changed, 206 insertions(+), 3 deletions(-) create mode 100644 modules/nf-core/modules/gunzip/main.nf create mode 100644 modules/nf-core/modules/gunzip/meta.yml create mode 100644 modules/nf-core/modules/krona/ktimporttaxonomy/main.nf create mode 100644 modules/nf-core/modules/krona/ktimporttaxonomy/meta.yml diff --git a/conf/modules.config b/conf/modules.config index 6563cc9..098d9bb 100644 --- a/conf/modules.config +++ b/conf/modules.config @@ -273,7 +273,7 @@ process { ] } - withName: MEGAN_RMA2INFO { + withName: 'NFCORE_TAXPROFILER:TAXPROFILER:PROFILING:MEGAN_RMA2INFO' { ext.args = "-c2c Taxonomy" ext.prefix = { "${meta.id}" } publishDir = [ @@ -293,7 +293,32 @@ process { ] } + withName: KRONA_CLEANUP { + ext.prefix = params.perform_runmerging ? { "${meta.id}-${meta.db_name}" } : { "${meta.id}-${meta.run_accession}-${meta.db_name}" } + publishDir = [ + path: { "${params.outdir}/krona" }, + mode: params.publish_dir_mode, + pattern: '*.{html}' + ] + } + withName: KRONA_KTIMPORTTEXT { + ext.prefix = { "${meta.tool}-${meta.id}" } + publishDir = [ + path: { "${params.outdir}/krona" }, + mode: params.publish_dir_mode, + pattern: '*.{html}' + ] + } + + withName: 'NFCORE_TAXPROFILER:TAXPROFILER:VISUALIZATION_KRONA:MEGAN_RMA2INFO' { + ext.args = { "--read2class Taxonomy" } + ext.prefix = { "${meta.id}-${meta.db_name}" } + } + + withName: KRONA_KTIMPORTTAXONOMY { + ext.args = "-i" + ext.prefix = { "${meta.tool}-${meta.id}" } publishDir = [ path: { "${params.outdir}/krona" }, mode: params.publish_dir_mode, diff --git a/modules.json b/modules.json index 7da0e79..13c6592 100644 --- a/modules.json +++ b/modules.json @@ -39,6 +39,9 @@ "filtlong": { "git_sha": "089f761f0bf79c4a486f1df9b6205f650196a2c1" }, + "gunzip": { + "git_sha": "9aadd9a6d3f5964476582319b3a1c54a3e3fe7c9" + }, "kaiju/kaiju": { "git_sha": "8856f127c58f6af479128be8b8df4d42e442ddbe" }, @@ -54,6 +57,9 @@ "krakentools/kreport2krona": { "git_sha": "8b2a473f586bed003e72d2b183acc43fc0ddc422" }, + "krona/ktimporttaxonomy": { + "git_sha": "233fa70811a03a4cecb2ece483b5c8396e2cee1d" + }, "krona/ktimporttext": { "git_sha": "cdefbec66999c0b49d8bfeea9d6f9d19056635a2" }, diff --git a/modules/nf-core/modules/gunzip/main.nf b/modules/nf-core/modules/gunzip/main.nf new file mode 100644 index 0000000..61bf1af --- /dev/null +++ b/modules/nf-core/modules/gunzip/main.nf @@ -0,0 +1,34 @@ +process GUNZIP { + tag "$archive" + label 'process_low' + + conda (params.enable_conda ? "conda-forge::sed=4.7" : null) + container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? + 'https://depot.galaxyproject.org/singularity/ubuntu:20.04' : + 'ubuntu:20.04' }" + + input: + tuple val(meta), path(archive) + + output: + tuple val(meta), path("$gunzip"), emit: gunzip + path "versions.yml" , emit: versions + + when: + task.ext.when == null || task.ext.when + + script: + def args = task.ext.args ?: '' + gunzip = archive.toString() - '.gz' + """ + gunzip \\ + -f \\ + $args \\ + $archive + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + gunzip: \$(echo \$(gunzip --version 2>&1) | sed 's/^.*(gzip) //; s/ Copyright.*\$//') + END_VERSIONS + """ +} diff --git a/modules/nf-core/modules/gunzip/meta.yml b/modules/nf-core/modules/gunzip/meta.yml new file mode 100644 index 0000000..4d2ebc8 --- /dev/null +++ b/modules/nf-core/modules/gunzip/meta.yml @@ -0,0 +1,34 @@ +name: gunzip +description: Compresses and decompresses files. +keywords: + - gunzip + - compression +tools: + - gunzip: + description: | + gzip is a file format and a software application used for file compression and decompression. + documentation: https://www.gnu.org/software/gzip/manual/gzip.html + licence: ["GPL-3.0-or-later"] +input: + - meta: + type: map + description: | + Optional groovy Map containing meta information + e.g. [ id:'test', single_end:false ] + - archive: + type: file + description: File to be compressed/uncompressed + pattern: "*.*" +output: + - gunzip: + type: file + description: Compressed/uncompressed file + pattern: "*.*" + - versions: + type: file + description: File containing software versions + pattern: "versions.yml" +authors: + - "@joseespinosa" + - "@drpatelh" + - "@jfy133" diff --git a/modules/nf-core/modules/krona/ktimporttaxonomy/main.nf b/modules/nf-core/modules/krona/ktimporttaxonomy/main.nf new file mode 100644 index 0000000..5ea9e9e --- /dev/null +++ b/modules/nf-core/modules/krona/ktimporttaxonomy/main.nf @@ -0,0 +1,38 @@ +process KRONA_KTIMPORTTAXONOMY { + tag "${meta.id}" + label 'process_high' + + // WARN: Version information not provided by tool on CLI. Please update version string below when bumping container versions. + conda (params.enable_conda ? "bioconda::krona=2.8" : null) + container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? + 'https://depot.galaxyproject.org/singularity/krona:2.8--pl5262hdfd78af_2' : + 'quay.io/biocontainers/krona:2.8--pl5262hdfd78af_2' }" + + input: + tuple val(meta), path(report) + path taxonomy + + output: + tuple val(meta), path ('*.html'), emit: html + path "versions.yml" , emit: versions + + when: + task.ext.when == null || task.ext.when + + script: + def args = task.ext.args ?: '' + def prefix = task.ext.prefix ?: "${meta.id}" + def VERSION = '2.8' // WARN: Version information not provided by tool on CLI. Please update this string when bumping container versions. + """ + ktImportTaxonomy \\ + $args \\ + -o ${prefix}.html \\ + -tax $taxonomy \\ + $report + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + krona: $VERSION + END_VERSIONS + """ +} \ No newline at end of file diff --git a/modules/nf-core/modules/krona/ktimporttaxonomy/meta.yml b/modules/nf-core/modules/krona/ktimporttaxonomy/meta.yml new file mode 100644 index 0000000..df0ad1c --- /dev/null +++ b/modules/nf-core/modules/krona/ktimporttaxonomy/meta.yml @@ -0,0 +1,47 @@ +name: krona_ktimporttaxonomy +description: KronaTools Import Taxonomy imports taxonomy classifications and produces an interactive Krona plot. +keywords: + - plot + - taxonomy + - interactive + - html + - visualisation + - krona chart +tools: + - krona: + description: Krona Tools is a set of scripts to create Krona charts from several Bioinformatics tools as well as from text and XML files. + homepage: https://github.com/marbl/Krona/wiki/KronaTools + documentation: http://manpages.ubuntu.com/manpages/impish/man1/ktImportTaxonomy.1.html + tool_dev_url: + doi: https://doi.org/10.1186/1471-2105-12-385 + licence: + +input: + - meta: + type: map + description: | + Groovy Map containing sample information + e.g. [ id:'test'] + - database: + type: file + description: | + Path to the taxonomy database .tab file downloaded by krona/ktUpdateTaxonomy + The file will be saved under a folder named "taxonomy" as "taxonomy/taxonomy.tab". + The parent folder will be passed as argument to ktImportTaxonomy. + - report: + type: file + description: "A tab-delimited file with taxonomy IDs and (optionally) query IDs, magnitudes, and scores. Query IDs are taken from column 1, taxonomy IDs from column 2, and scores from column 3. Lines beginning with # will be ignored." + pattern: "*.{tsv}" + +output: + - versions: + type: file + description: File containing software versions + pattern: "versions.yml" + - html: + type: file + description: A html file containing an interactive krona plot. + pattern: "*.{html}" + +authors: + - "@mjakobs" diff --git a/subworkflows/local/visualization_krona.nf b/subworkflows/local/visualization_krona.nf index aac7475..7a94fc6 100644 --- a/subworkflows/local/visualization_krona.nf +++ b/subworkflows/local/visualization_krona.nf @@ -2,10 +2,13 @@ // Create Krona visualizations // +include { MEGAN_RMA2INFO } from '../../modules/nf-core/modules/megan/rma2info/main' include { KAIJU_KAIJU2KRONA } from '../../modules/nf-core/modules/kaiju/kaiju2krona/main' include { KRAKENTOOLS_KREPORT2KRONA } from '../../modules/nf-core/modules/krakentools/kreport2krona/main' include { KRONA_CLEANUP } from '../../modules/local/krona_cleanup' include { KRONA_KTIMPORTTEXT } from '../../modules/nf-core/modules/krona/ktimporttext/main' +include { KRONA_KTIMPORTTAXONOMY } from '../../modules/nf-core/modules/krona/ktimporttaxonomy/main' +include { GUNZIP } from '../../modules/nf-core/modules/gunzip/main' workflow VISUALIZATION_KRONA { take: @@ -30,6 +33,7 @@ workflow VISUALIZATION_KRONA { ch_input_classifications = classifications .branch { kaiju: it[0]['tool'] == 'kaiju' + malt: it[0]['tool'] == 'malt' unknown: true } @@ -72,15 +76,28 @@ workflow VISUALIZATION_KRONA { Convert Krona text files into html Krona visualizations */ ch_krona_text_for_import = ch_cleaned_krona_text - .map{[[id: it[0]['db_name']], it[1]]} + .map{[[id: it[0]['db_name'], tool: it[0]['tool']], it[1]]} .groupTuple() + .dump(tag: "text") KRONA_KTIMPORTTEXT( ch_krona_text_for_import ) ch_krona_html = ch_krona_html.mix( KRONA_KTIMPORTTEXT.out.html ) ch_versions = ch_versions.mix( KRONA_KTIMPORTTEXT.out.versions.first() ) /* - Convert Krona + Convert MALT/MEGAN RMA2INFO files into html Krona visualisations */ + if ( params.krona_taxonomy_directory ) { + MEGAN_RMA2INFO ( ch_input_classifications.malt, false ) + GUNZIP ( MEGAN_RMA2INFO.out.txt ) + ch_krona_taxonomy_for_input = GUNZIP.out.gunzip + .map{[[id: it[0]['db_name'], tool: it[0]['tool']], it[1]]} + .groupTuple() + .dump(tag: "taxonomy") + KRONA_KTIMPORTTAXONOMY ( ch_krona_taxonomy_for_input, file(params.krona_taxonomy_directory, checkExists: true) ) + ch_krona_html.mix( KRONA_KTIMPORTTAXONOMY.out.html ) + ch_versions = ch_versions.mix( MEGAN_RMA2INFO.out.versions.first() ) + ch_versions = ch_versions.mix( KRONA_KTIMPORTTAXONOMY.out.versions.first() ) + } emit: html = ch_krona_html diff --git a/workflows/taxprofiler.nf b/workflows/taxprofiler.nf index 7eec13d..2037649 100644 --- a/workflows/taxprofiler.nf +++ b/workflows/taxprofiler.nf @@ -35,6 +35,8 @@ if (params.longread_hostremoval_index ) { ch_longread_reference_index = fi if (params.diamond_save_reads ) log.warn "[nf-core/taxprofiler] DIAMOND only allows output of a single format. As --diamond_save_reads supplied, only aligned reads in SAM format will be produced, no taxonomic profiles will be available." +if (params.run_malt && params.run_krona && !params.krona_taxonomy_directory) log.warn "[nf-core/taxprofiler] Krona can only be run on MALT output if path to Krona taxonomy database supplied to --krona_taxonomy_directory. Krona will not be executed in this run for MALT." + /* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ CONFIG FILES From 97e6cdf4b4a8944fc60fb12389f4a9ab868aa216 Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Thu, 30 Jun 2022 18:36:13 +0200 Subject: [PATCH 265/789] Add Krona taxonomy DB to schema build --- nextflow_schema.json | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/nextflow_schema.json b/nextflow_schema.json index fe77913..78635a7 100644 --- a/nextflow_schema.json +++ b/nextflow_schema.json @@ -438,6 +438,10 @@ }, "run_krona": { "type": "boolean" + }, + "krona_taxonomy_directory": { + "type": "string", + "default": null } } } From 447b8f09057bbd994385ae4490e30c53d599e6b0 Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Fri, 1 Jul 2022 17:21:19 +0200 Subject: [PATCH 266/789] Get fixed Krona module and add Krona taxonomy to test profile --- conf/test.config | 1 + modules.json | 2 +- modules/nf-core/modules/krona/ktimporttaxonomy/main.nf | 9 ++++++--- modules/nf-core/modules/krona/ktimporttaxonomy/meta.yml | 7 ++++--- 4 files changed, 12 insertions(+), 7 deletions(-) diff --git a/conf/test.config b/conf/test.config index 04dfb4d..375f463 100644 --- a/conf/test.config +++ b/conf/test.config @@ -38,6 +38,7 @@ params { run_centrifuge = true run_diamond = true run_krona = true + krona_taxonomy_directory = 'https://raw.githubusercontent.com/nf-core/test-datasets/modules/data/genomics/sarscov2/metagenome/krona_taxonomy.tab' malt_save_reads = true kraken2_save_reads = true centrifuge_save_reads = true diff --git a/modules.json b/modules.json index 13c6592..b4c13f0 100644 --- a/modules.json +++ b/modules.json @@ -58,7 +58,7 @@ "git_sha": "8b2a473f586bed003e72d2b183acc43fc0ddc422" }, "krona/ktimporttaxonomy": { - "git_sha": "233fa70811a03a4cecb2ece483b5c8396e2cee1d" + "git_sha": "0e9fd9370ad1845870b8a9c63fcc47d999a1739e" }, "krona/ktimporttext": { "git_sha": "cdefbec66999c0b49d8bfeea9d6f9d19056635a2" diff --git a/modules/nf-core/modules/krona/ktimporttaxonomy/main.nf b/modules/nf-core/modules/krona/ktimporttaxonomy/main.nf index 5ea9e9e..9b03462 100644 --- a/modules/nf-core/modules/krona/ktimporttaxonomy/main.nf +++ b/modules/nf-core/modules/krona/ktimporttaxonomy/main.nf @@ -10,7 +10,7 @@ process KRONA_KTIMPORTTAXONOMY { input: tuple val(meta), path(report) - path taxonomy + path taxonomy, stageAs: 'taxonomy.tab' output: tuple val(meta), path ('*.html'), emit: html @@ -24,10 +24,13 @@ process KRONA_KTIMPORTTAXONOMY { def prefix = task.ext.prefix ?: "${meta.id}" def VERSION = '2.8' // WARN: Version information not provided by tool on CLI. Please update this string when bumping container versions. """ + TAXONOMY=\$(find -L . -name '*.tab' -exec dirname {} \\;) + echo \$TAXONOMY + ktImportTaxonomy \\ $args \\ -o ${prefix}.html \\ - -tax $taxonomy \\ + -tax \$TAXONOMY/ \\ $report cat <<-END_VERSIONS > versions.yml @@ -35,4 +38,4 @@ process KRONA_KTIMPORTTAXONOMY { krona: $VERSION END_VERSIONS """ -} \ No newline at end of file +} diff --git a/modules/nf-core/modules/krona/ktimporttaxonomy/meta.yml b/modules/nf-core/modules/krona/ktimporttaxonomy/meta.yml index df0ad1c..0fd7d5f 100644 --- a/modules/nf-core/modules/krona/ktimporttaxonomy/meta.yml +++ b/modules/nf-core/modules/krona/ktimporttaxonomy/meta.yml @@ -25,9 +25,10 @@ input: - database: type: file description: | - Path to the taxonomy database .tab file downloaded by krona/ktUpdateTaxonomy - The file will be saved under a folder named "taxonomy" as "taxonomy/taxonomy.tab". - The parent folder will be passed as argument to ktImportTaxonomy. + Path to a Krona taxonomy .tab file normally downloaded and generated by + krona/ktUpdateTaxonomy. Custom taxonomy files can have any name, but + must end in `.tab`. + pattern: "*tab" - report: type: file description: "A tab-delimited file with taxonomy IDs and (optionally) query IDs, magnitudes, and scores. Query IDs are taken from column 1, taxonomy IDs from column 2, and scores from column 3. Lines beginning with # will be ignored." From a0ee82bf43ad79ef94b5b3a8e7f9dc72ae30e18a Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Tue, 12 Jul 2022 11:39:26 +0200 Subject: [PATCH 267/789] Add motus/merge and biom support --- conf/modules.config | 8 +++ conf/test_motus.config | 1 + modules.json | 5 +- modules/nf-core/modules/motus/merge/main.nf | 47 +++++++++++++++ modules/nf-core/modules/motus/merge/meta.yml | 57 ++++++++++++++++++ modules/nf-core/modules/motus/profile/main.nf | 2 +- nextflow.config | 4 ++ nextflow_schema.json | 60 ++++++++++++++++--- subworkflows/local/profiling.nf | 1 + .../local/standardisation_profiles.nf | 56 +++++++++++++++++ subworkflows/local/visualization_krona.nf | 4 +- workflows/taxprofiler.nf | 9 +++ 12 files changed, 241 insertions(+), 13 deletions(-) create mode 100644 modules/nf-core/modules/motus/merge/main.nf create mode 100644 modules/nf-core/modules/motus/merge/meta.yml create mode 100644 subworkflows/local/standardisation_profiles.nf diff --git a/conf/modules.config b/conf/modules.config index b858ec3..1558a98 100644 --- a/conf/modules.config +++ b/conf/modules.config @@ -391,12 +391,20 @@ process { } withName: MOTUS_PROFILE { + ext.prefix = params.perform_runmerging ? { "${meta.id}-${meta.db_name}" } : { "${meta.id}-${meta.run_accession}-${meta.db_name}" } publishDir = [ path: { "${params.outdir}/motus/${meta.db_name}" }, mode: params.publish_dir_mode ] } + withName: MOTUS_MERGE { + publishDir = [ + path: { "${params.outdir}/motus/" }, + mode: params.publish_dir_mode + ] + } + withName: CUSTOM_DUMPSOFTWAREVERSIONS { publishDir = [ path: { "${params.outdir}/pipeline_info" }, diff --git a/conf/test_motus.config b/conf/test_motus.config index 9d39ad4..1405447 100644 --- a/conf/test_motus.config +++ b/conf/test_motus.config @@ -38,4 +38,5 @@ params { run_centrifuge = false run_diamond = false run_motus = true + run_profile_standardisation = true } diff --git a/modules.json b/modules.json index 1d40748..f98cd62 100644 --- a/modules.json +++ b/modules.json @@ -78,8 +78,11 @@ "minimap2/index": { "git_sha": "e745e167c1020928ef20ea1397b6b4d230681b4d" }, + "motus/merge": { + "git_sha": "b02e648c221e1da17cb589eefe297e61ec9e9c49" + }, "motus/profile": { - "git_sha": "6b960f0e75bbb4d5bd301cd3875fa078d0eab4d1" + "git_sha": "b02e648c221e1da17cb589eefe297e61ec9e9c49" }, "multiqc": { "git_sha": "e745e167c1020928ef20ea1397b6b4d230681b4d" diff --git a/modules/nf-core/modules/motus/merge/main.nf b/modules/nf-core/modules/motus/merge/main.nf new file mode 100644 index 0000000..01ca5a2 --- /dev/null +++ b/modules/nf-core/modules/motus/merge/main.nf @@ -0,0 +1,47 @@ +VERSION = '3.0.1' + +process MOTUS_MERGE { + label 'process_low' + + conda (params.enable_conda ? "bioconda::motus=3.0.1" : null) + container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? + 'https://depot.galaxyproject.org/singularity/motus:3.0.1--pyhdfd78af_0': + 'quay.io/biocontainers/motus:3.0.1--pyhdfd78af_0' }" + + input: + path input + path db // to stop docker saying it can't find it... would have to have the module in upstream steps anyway + path profile_version_yml, stageAs: 'profile_version.yml' + val biom_format + + output: + path("*.txt") , optional: true, emit: txt + path("*.biom"), optional: true, emit: biom + path "versions.yml" , emit: versions + + when: + task.ext.when == null || task.ext.when + + script: + def args = task.ext.args ?: '' + def prefix = 'motus_merged' + def cmd_input = input.size() > 1 ? "-i ${input.join(',')}" : input.isDirectory() ? "-d ${input}" : "-i ${input}" + def output = biom_format ? "-B -o ${prefix}.biom" : "-o ${prefix}.txt" + """ + motus \\ + merge \\ + -db $db \\ + ${cmd_input} \\ + $args \\ + ${output} + + ## Take version from the mOTUs/profile module output, as cannot reconstruct + ## version without having database staged in this directory. + VERSION=\$(cat ${profile_version_yml} | grep '/*motus:.*' | sed 's/.*otus: //g') + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + motus: \$VERSION + END_VERSIONS + """ +} diff --git a/modules/nf-core/modules/motus/merge/meta.yml b/modules/nf-core/modules/motus/merge/meta.yml new file mode 100644 index 0000000..c9c7711 --- /dev/null +++ b/modules/nf-core/modules/motus/merge/meta.yml @@ -0,0 +1,57 @@ +name: "motus_merge" +description: Taxonomic meta-omics profiling using universal marker genes +keywords: + - classify + - metagenomics + - fastq + - taxonomic profiling + - merging + - merge + - otu table +tools: + - "motus": + description: "Marker gene-based OTU (mOTU) profiling" + homepage: "https://motu-tool.org/" + documentation: "https://github.com/motu-tool/mOTUs/wiki" + tool_dev_url: "https://github.com/motu-tool/mOTUs" + doi: "10.1038/s41467-019-08844-4" + licence: "['GPL v3']" + +input: + - input: + type: file + description: | + List of output files (more than one) from motus profile, + or a single directory containing motus output files. + - db: + type: directory + description: | + mOTUs database downloaded by `motus downloadDB` + pattern: "db_mOTU/" + - profile_version_yml: + type: file + description: | + A single versions.yml file output from motus/profile. motus/merge cannot reconstruct + this itself without having the motus database present and configured with the tool + so here we take it from what is already reported by the upstream module. + pattern: "versions.yml" + - biom_format: + type: boolean + description: Whether to save output OTU table in biom format + +output: + - versions: + type: file + description: File containing software versions + pattern: "versions.yml" + - txt: + type: file + description: OTU table in txt format, if BIOM format not requested + pattern: "*.txt" + - biom: + type: file + description: OTU table in biom format, if BIOM format requested + pattern: "*.biom" + +authors: + - "@jfy133" diff --git a/modules/nf-core/modules/motus/profile/main.nf b/modules/nf-core/modules/motus/profile/main.nf index 6a1acd3..2747984 100644 --- a/modules/nf-core/modules/motus/profile/main.nf +++ b/modules/nf-core/modules/motus/profile/main.nf @@ -48,7 +48,7 @@ process MOTUS_PROFILE { fi cat <<-END_VERSIONS > versions.yml "${task.process}": - mOTUs: \$VERSION + motus: \$VERSION END_VERSIONS """ } diff --git a/nextflow.config b/nextflow.config index 7160d0f..58c9254 100644 --- a/nextflow.config +++ b/nextflow.config @@ -132,6 +132,10 @@ params { // krona run_krona = false krona_taxonomy_directory = null + + // profile standardisation + run_profile_standardisation = false + generate_biom_output = false } // Load base.config by default for all pipelines diff --git a/nextflow_schema.json b/nextflow_schema.json index 4eec889..28050ba 100644 --- a/nextflow_schema.json +++ b/nextflow_schema.json @@ -10,7 +10,10 @@ "type": "object", "fa_icon": "fas fa-terminal", "description": "Define where the pipeline should find input data and save output data.", - "required": ["input", "outdir"], + "required": [ + "input", + "outdir" + ], "properties": { "input": { "type": "string", @@ -52,7 +55,8 @@ "type": "string", "description": "Name of iGenomes reference.", "fa_icon": "fas fa-book", - "help_text": "If using a reference genome configured in the pipeline using iGenomes, use this parameter to give the ID for the reference. This is then used to build the full paths for all required reference genome files e.g. `--genome GRCh38`. \n\nSee the [nf-core website docs](https://nf-co.re/usage/reference_genomes) for more details." + "help_text": "If using a reference genome configured in the pipeline using iGenomes, use this parameter to give the ID for the reference. This is then used to build the full paths for all required reference genome files e.g. `--genome GRCh38`. \n\nSee the [nf-core website docs](https://nf-co.re/usage/reference_genomes) for more details.", + "hidden": true }, "igenomes_base": { "type": "string", @@ -173,7 +177,14 @@ "description": "Method used to save pipeline results to output directory.", "help_text": "The Nextflow `publishDir` option specifies which intermediate files should be saved to the output directory. This option tells the pipeline what method should be used to move these files. See [Nextflow docs](https://www.nextflow.io/docs/latest/process.html#publishdir) for details.", "fa_icon": "fas fa-copy", - "enum": ["symlink", "rellink", "link", "copy", "copyNoFollow", "move"], + "enum": [ + "symlink", + "rellink", + "link", + "copy", + "copyNoFollow", + "move" + ], "hidden": true }, "email_on_fail": { @@ -287,7 +298,10 @@ "shortread_qc_tool": { "type": "string", "default": "fastp", - "enum": ["fastp", "adapterremoval"] + "enum": [ + "fastp", + "adapterremoval" + ] }, "shortread_qc_skipadaptertrim": { "type": "boolean" @@ -313,7 +327,11 @@ "shortread_complexityfilter_tool": { "type": "string", "default": "bbduk", - "enum": ["bbduk", "prinseqplusplus", "fastp"] + "enum": [ + "bbduk", + "prinseqplusplus", + "fastp" + ] }, "shortread_complexityfilter_bbduk_windowsize": { "type": "integer", @@ -329,7 +347,10 @@ "shortread_complexityfilter_prinseqplusplus_mode": { "type": "string", "default": "entropy", - "enum": ["entropy", "dust"] + "enum": [ + "entropy", + "dust" + ] }, "shortread_complexityfilter_prinseqplusplus_dustscore": { "type": "number", @@ -385,7 +406,14 @@ "kaiju_taxon_name": { "type": "string", "default": "species", - "enum": ["phylum", "class", "order", "family", "genus", "species"] + "enum": [ + "phylum", + "class", + "order", + "family", + "genus", + "species" + ] }, "run_diamond": { "type": "boolean" @@ -393,7 +421,15 @@ "diamond_output_format": { "type": "string", "default": "tsv", - "enum": ["blast", "xml", "txt", "daa", "sam", "tsv", "paf"] + "enum": [ + "blast", + "xml", + "txt", + "daa", + "sam", + "tsv", + "paf" + ] }, "longread_hostremoval_index": { "type": "string", @@ -444,7 +480,13 @@ }, "krona_taxonomy_directory": { "type": "string", - "default": null + "default": "None" + }, + "run_profile_standardisation": { + "type": "boolean" + }, + "generate_biom_output": { + "type": "boolean" } } } diff --git a/subworkflows/local/profiling.nf b/subworkflows/local/profiling.nf index 60963c9..68f8dcc 100644 --- a/subworkflows/local/profiling.nf +++ b/subworkflows/local/profiling.nf @@ -234,5 +234,6 @@ workflow PROFILING { classifications = ch_raw_classifications profiles = ch_raw_profiles // channel: [ val(meta), [ reads ] ] - should be text files or biom versions = ch_versions // channel: [ versions.yml ] + motu_version = MOTUS_PROFILE.out.versions.first() mqc = ch_multiqc_files } diff --git a/subworkflows/local/standardisation_profiles.nf b/subworkflows/local/standardisation_profiles.nf new file mode 100644 index 0000000..92ceb16 --- /dev/null +++ b/subworkflows/local/standardisation_profiles.nf @@ -0,0 +1,56 @@ +// +// Create Krona visualizations +// + +include { MOTUS_MERGE } from '../../modules/nf-core/modules/motus/merge/main' + +workflow STANDARDISATION_PROFILES { + take: + classifications + profiles + databases + motu_version + + main: + ch_standardised_tables = Channel.empty() + ch_versions = Channel.empty() + + /* + Split profile results based on tool they come from + */ + ch_input_profiles = profiles + .branch { + motus: it[0]['tool'] == 'motus' + unknown: true + } + + ch_input_classifications = classifications + .branch { + unknown: true + } + + ch_input_databases = databases + .branch { + motus: it[0]['tool'] == 'motus' + unknown: true + } + + /* + Standardise and aggregate + */ + + // mOTUs has a 'single' database, and cannot create custom ones. + // Therefore removing db info here, and publish merged at root mOTUs results + // directory + MOTUS_MERGE ( ch_input_profiles.motus.map{it[1]}.collect(), ch_input_databases.motus.map{it[1]}, motu_version, params.generate_biom_output ) + if ( params.generate_biom_output ) { + ch_standardised_tables = ch_standardised_tables.mix ( MOTUS_MERGE.out.biom ) + } else { + ch_standardised_tables = ch_standardised_tables.mix ( MOTUS_MERGE.out.txt ) + } + ch_versions = ch_versions.mix( MOTUS_MERGE.out.versions ) + + emit: + tables = ch_standardised_tables + versions = ch_versions +} diff --git a/subworkflows/local/visualization_krona.nf b/subworkflows/local/visualization_krona.nf index 7a94fc6..397251f 100644 --- a/subworkflows/local/visualization_krona.nf +++ b/subworkflows/local/visualization_krona.nf @@ -78,7 +78,7 @@ workflow VISUALIZATION_KRONA { ch_krona_text_for_import = ch_cleaned_krona_text .map{[[id: it[0]['db_name'], tool: it[0]['tool']], it[1]]} .groupTuple() - .dump(tag: "text") + KRONA_KTIMPORTTEXT( ch_krona_text_for_import ) ch_krona_html = ch_krona_html.mix( KRONA_KTIMPORTTEXT.out.html ) ch_versions = ch_versions.mix( KRONA_KTIMPORTTEXT.out.versions.first() ) @@ -92,7 +92,7 @@ workflow VISUALIZATION_KRONA { ch_krona_taxonomy_for_input = GUNZIP.out.gunzip .map{[[id: it[0]['db_name'], tool: it[0]['tool']], it[1]]} .groupTuple() - .dump(tag: "taxonomy") + KRONA_KTIMPORTTAXONOMY ( ch_krona_taxonomy_for_input, file(params.krona_taxonomy_directory, checkExists: true) ) ch_krona_html.mix( KRONA_KTIMPORTTAXONOMY.out.html ) ch_versions = ch_versions.mix( MEGAN_RMA2INFO.out.versions.first() ) diff --git a/workflows/taxprofiler.nf b/workflows/taxprofiler.nf index 2037649..e382e05 100644 --- a/workflows/taxprofiler.nf +++ b/workflows/taxprofiler.nf @@ -65,6 +65,7 @@ include { LONGREAD_HOSTREMOVAL } from '../subworkflows/local/longread_h include { SHORTREAD_COMPLEXITYFILTERING } from '../subworkflows/local/shortread_complexityfiltering' include { PROFILING } from '../subworkflows/local/profiling' include { VISUALIZATION_KRONA } from '../subworkflows/local/visualization_krona' +include { STANDARDISATION_PROFILES } from '../subworkflows/local/standardisation_profiles' /* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -220,6 +221,14 @@ workflow TAXPROFILER { ch_versions = ch_versions.mix( VISUALIZATION_KRONA.out.versions ) } + /* + SUBWORKFLOW: PROFILING STANDARDISATION + */ + if ( params.run_profile_standardisation ) { + STANDARDISATION_PROFILES ( PROFILING.out.classifications, PROFILING.out.profiles, DB_CHECK.out.dbs, PROFILING.out.motu_version ) + ch_versions = ch_versions.mix( STANDARDISATION_PROFILES.out.versions ) + } + /* MODULE: MultiQC */ From d8c0e9e7fe6ac0f077754017ea41ce11a43cd01e Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Tue, 12 Jul 2022 11:41:07 +0200 Subject: [PATCH 268/789] Prettier --- nextflow_schema.json | 49 +++++++------------------------------------- 1 file changed, 7 insertions(+), 42 deletions(-) diff --git a/nextflow_schema.json b/nextflow_schema.json index 28050ba..b4cb837 100644 --- a/nextflow_schema.json +++ b/nextflow_schema.json @@ -10,10 +10,7 @@ "type": "object", "fa_icon": "fas fa-terminal", "description": "Define where the pipeline should find input data and save output data.", - "required": [ - "input", - "outdir" - ], + "required": ["input", "outdir"], "properties": { "input": { "type": "string", @@ -177,14 +174,7 @@ "description": "Method used to save pipeline results to output directory.", "help_text": "The Nextflow `publishDir` option specifies which intermediate files should be saved to the output directory. This option tells the pipeline what method should be used to move these files. See [Nextflow docs](https://www.nextflow.io/docs/latest/process.html#publishdir) for details.", "fa_icon": "fas fa-copy", - "enum": [ - "symlink", - "rellink", - "link", - "copy", - "copyNoFollow", - "move" - ], + "enum": ["symlink", "rellink", "link", "copy", "copyNoFollow", "move"], "hidden": true }, "email_on_fail": { @@ -298,10 +288,7 @@ "shortread_qc_tool": { "type": "string", "default": "fastp", - "enum": [ - "fastp", - "adapterremoval" - ] + "enum": ["fastp", "adapterremoval"] }, "shortread_qc_skipadaptertrim": { "type": "boolean" @@ -327,11 +314,7 @@ "shortread_complexityfilter_tool": { "type": "string", "default": "bbduk", - "enum": [ - "bbduk", - "prinseqplusplus", - "fastp" - ] + "enum": ["bbduk", "prinseqplusplus", "fastp"] }, "shortread_complexityfilter_bbduk_windowsize": { "type": "integer", @@ -347,10 +330,7 @@ "shortread_complexityfilter_prinseqplusplus_mode": { "type": "string", "default": "entropy", - "enum": [ - "entropy", - "dust" - ] + "enum": ["entropy", "dust"] }, "shortread_complexityfilter_prinseqplusplus_dustscore": { "type": "number", @@ -406,14 +386,7 @@ "kaiju_taxon_name": { "type": "string", "default": "species", - "enum": [ - "phylum", - "class", - "order", - "family", - "genus", - "species" - ] + "enum": ["phylum", "class", "order", "family", "genus", "species"] }, "run_diamond": { "type": "boolean" @@ -421,15 +394,7 @@ "diamond_output_format": { "type": "string", "default": "tsv", - "enum": [ - "blast", - "xml", - "txt", - "daa", - "sam", - "tsv", - "paf" - ] + "enum": ["blast", "xml", "txt", "daa", "sam", "tsv", "paf"] }, "longread_hostremoval_index": { "type": "string", From 4a316df2093a2cecc9b482d3502ce54d9147bb77 Mon Sep 17 00:00:00 2001 From: sofstam Date: Tue, 12 Jul 2022 17:15:36 +0200 Subject: [PATCH 269/789] Update the dev branch with the filtlong update --- modules/nf-core/modules/filtlong/main.nf | 4 +++- modules/nf-core/modules/filtlong/meta.yml | 5 +++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/modules/nf-core/modules/filtlong/main.nf b/modules/nf-core/modules/filtlong/main.nf index 9dbf05b..afaa938 100644 --- a/modules/nf-core/modules/filtlong/main.nf +++ b/modules/nf-core/modules/filtlong/main.nf @@ -12,7 +12,8 @@ process FILTLONG { output: tuple val(meta), path("*.fastq.gz"), emit: reads - path "versions.yml" , emit: versions + tuple val(meta), path("*.log") , emit: log + path "versions.yml" , emit: versions when: task.ext.when == null || task.ext.when @@ -27,6 +28,7 @@ process FILTLONG { $short_reads \\ $args \\ $longreads \\ + 2> ${prefix}.log \\ | gzip -n > ${prefix}.fastq.gz cat <<-END_VERSIONS > versions.yml diff --git a/modules/nf-core/modules/filtlong/meta.yml b/modules/nf-core/modules/filtlong/meta.yml index b3626e6..a50b452 100644 --- a/modules/nf-core/modules/filtlong/meta.yml +++ b/modules/nf-core/modules/filtlong/meta.yml @@ -45,6 +45,11 @@ output: type: file description: Filtered (compressed) fastq file pattern: "*.fastq.gz" + - log: + type: file + description: Standard error logging file containing summary statistics + pattern: "*.log" authors: - "@d4straub" + - "@sofstam" From 1fbe241d27d9fe41c0bd12b5b3591d97bcb7a2e5 Mon Sep 17 00:00:00 2001 From: sofstam Date: Tue, 12 Jul 2022 17:43:52 +0200 Subject: [PATCH 270/789] Update filtlong module --- modules.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules.json b/modules.json index 1d40748..487b76c 100644 --- a/modules.json +++ b/modules.json @@ -37,7 +37,7 @@ "git_sha": "e745e167c1020928ef20ea1397b6b4d230681b4d" }, "filtlong": { - "git_sha": "089f761f0bf79c4a486f1df9b6205f650196a2c1" + "git_sha": "957cb9b83668075f4af101fc99502908cca487e3" }, "gunzip": { "git_sha": "9aadd9a6d3f5964476582319b3a1c54a3e3fe7c9" From c22946cfabbd3acc0228026e82475ffb0ad1ffc6 Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Wed, 13 Jul 2022 12:36:29 +0200 Subject: [PATCH 271/789] Fix motu versions not being exported if not run --- subworkflows/local/profiling.nf | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/subworkflows/local/profiling.nf b/subworkflows/local/profiling.nf index 68f8dcc..ed61f4b 100644 --- a/subworkflows/local/profiling.nf +++ b/subworkflows/local/profiling.nf @@ -227,13 +227,12 @@ workflow PROFILING { MOTUS_PROFILE ( ch_input_for_motus.reads, ch_input_for_motus.db ) ch_versions = ch_versions.mix( MOTUS_PROFILE.out.versions.first() ) ch_raw_profiles = ch_raw_profiles.mix( MOTUS_PROFILE.out.out ) - } emit: classifications = ch_raw_classifications profiles = ch_raw_profiles // channel: [ val(meta), [ reads ] ] - should be text files or biom versions = ch_versions // channel: [ versions.yml ] - motu_version = MOTUS_PROFILE.out.versions.first() + motu_version = params.run_motus ? MOTUS_PROFILE.out.versions.first() : Channel.empty([]) mqc = ch_multiqc_files } From eaa69b65d81b6ede5f0afca7d8f24a56b025ff08 Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Wed, 13 Jul 2022 12:38:30 +0200 Subject: [PATCH 272/789] Update mOTUs profile module and mix log for multiqc --- modules.json | 2 +- modules/nf-core/modules/motus/profile/main.nf | 6 ++++-- modules/nf-core/modules/motus/profile/meta.yml | 4 ++++ subworkflows/local/profiling.nf | 1 + 4 files changed, 10 insertions(+), 3 deletions(-) diff --git a/modules.json b/modules.json index 1d40748..faa267d 100644 --- a/modules.json +++ b/modules.json @@ -79,7 +79,7 @@ "git_sha": "e745e167c1020928ef20ea1397b6b4d230681b4d" }, "motus/profile": { - "git_sha": "6b960f0e75bbb4d5bd301cd3875fa078d0eab4d1" + "git_sha": "b6ed584443ad68ac41e6975994139454a4f23c18" }, "multiqc": { "git_sha": "e745e167c1020928ef20ea1397b6b4d230681b4d" diff --git a/modules/nf-core/modules/motus/profile/main.nf b/modules/nf-core/modules/motus/profile/main.nf index 6a1acd3..bd7a127 100644 --- a/modules/nf-core/modules/motus/profile/main.nf +++ b/modules/nf-core/modules/motus/profile/main.nf @@ -15,6 +15,7 @@ process MOTUS_PROFILE { tuple val(meta), path("*.out"), emit: out tuple val(meta), path("*.bam"), optional: true, emit: bam tuple val(meta), path("*.mgc"), optional: true, emit: mgc + tuple val(meta), path("*.log") , emit: log path "versions.yml" , emit: versions when: @@ -36,7 +37,8 @@ process MOTUS_PROFILE { $refdb \\ -t $task.cpus \\ -n $prefix \\ - -o ${prefix}.out + -o ${prefix}.out \\ + 2> ${prefix}.log ## mOTUs version number is not available from command line. ## mOTUs save the version number in index database folder. @@ -48,7 +50,7 @@ process MOTUS_PROFILE { fi cat <<-END_VERSIONS > versions.yml "${task.process}": - mOTUs: \$VERSION + motus: \$VERSION END_VERSIONS """ } diff --git a/modules/nf-core/modules/motus/profile/meta.yml b/modules/nf-core/modules/motus/profile/meta.yml index 19803bd..3c3b660 100644 --- a/modules/nf-core/modules/motus/profile/meta.yml +++ b/modules/nf-core/modules/motus/profile/meta.yml @@ -56,6 +56,10 @@ output: type: file description: Optional intermediate mgc read count table file saved with `-M`. pattern: "*.{mgc}" + - log: + type: file + description: Standard error logging file containing summary statistics + pattern: "*.log" authors: - "@jianhong" diff --git a/subworkflows/local/profiling.nf b/subworkflows/local/profiling.nf index 60963c9..0de726b 100644 --- a/subworkflows/local/profiling.nf +++ b/subworkflows/local/profiling.nf @@ -227,6 +227,7 @@ workflow PROFILING { MOTUS_PROFILE ( ch_input_for_motus.reads, ch_input_for_motus.db ) ch_versions = ch_versions.mix( MOTUS_PROFILE.out.versions.first() ) ch_raw_profiles = ch_raw_profiles.mix( MOTUS_PROFILE.out.out ) + ch_multiqc_files = ch_multiqc_files.mix( MOTUS_PROFILE.out.log ) } From 13280e246855e159e90e5992fc47da52ccac4e5b Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Wed, 13 Jul 2022 12:44:44 +0200 Subject: [PATCH 273/789] Fix .empty --- subworkflows/local/profiling.nf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/subworkflows/local/profiling.nf b/subworkflows/local/profiling.nf index ed61f4b..d23ee11 100644 --- a/subworkflows/local/profiling.nf +++ b/subworkflows/local/profiling.nf @@ -233,6 +233,6 @@ workflow PROFILING { classifications = ch_raw_classifications profiles = ch_raw_profiles // channel: [ val(meta), [ reads ] ] - should be text files or biom versions = ch_versions // channel: [ versions.yml ] - motu_version = params.run_motus ? MOTUS_PROFILE.out.versions.first() : Channel.empty([]) + motu_version = params.run_motus ? MOTUS_PROFILE.out.versions.first() : Channel.empty() mqc = ch_multiqc_files } From 31119f83c23622783cb647577afffbdfb4f8153b Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Wed, 13 Jul 2022 14:29:47 +0200 Subject: [PATCH 274/789] Send to MQC only the log file not the meta --- subworkflows/local/profiling.nf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/subworkflows/local/profiling.nf b/subworkflows/local/profiling.nf index 0de726b..38bc9a8 100644 --- a/subworkflows/local/profiling.nf +++ b/subworkflows/local/profiling.nf @@ -227,7 +227,7 @@ workflow PROFILING { MOTUS_PROFILE ( ch_input_for_motus.reads, ch_input_for_motus.db ) ch_versions = ch_versions.mix( MOTUS_PROFILE.out.versions.first() ) ch_raw_profiles = ch_raw_profiles.mix( MOTUS_PROFILE.out.out ) - ch_multiqc_files = ch_multiqc_files.mix( MOTUS_PROFILE.out.log ) + ch_multiqc_files = ch_multiqc_files.mix( MOTUS_PROFILE.out.log.map{it[1]} ) } From 449b6a55537e85e1be45461609c8d9c0fda44bd0 Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Wed, 13 Jul 2022 15:25:58 +0200 Subject: [PATCH 275/789] Fix file name output clashing wiht multiqc --- conf/modules.config | 1 + 1 file changed, 1 insertion(+) diff --git a/conf/modules.config b/conf/modules.config index b858ec3..df90c38 100644 --- a/conf/modules.config +++ b/conf/modules.config @@ -391,6 +391,7 @@ process { } withName: MOTUS_PROFILE { + ext.prefix = params.perform_runmerging ? { "${meta.id}-${meta.db_name}" } : { "${meta.id}-${meta.run_accession}-${meta.db_name}" } publishDir = [ path: { "${params.outdir}/motus/${meta.db_name}" }, mode: params.publish_dir_mode From cc3967a3fd0af46000b362e217d7ba3c68707cbe Mon Sep 17 00:00:00 2001 From: "James A. Fellows Yates" Date: Fri, 15 Jul 2022 10:51:41 +0200 Subject: [PATCH 276/789] Apply suggestions from code review --- subworkflows/local/profiling.nf | 2 +- workflows/taxprofiler.nf | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/subworkflows/local/profiling.nf b/subworkflows/local/profiling.nf index d23ee11..87a6a98 100644 --- a/subworkflows/local/profiling.nf +++ b/subworkflows/local/profiling.nf @@ -233,6 +233,6 @@ workflow PROFILING { classifications = ch_raw_classifications profiles = ch_raw_profiles // channel: [ val(meta), [ reads ] ] - should be text files or biom versions = ch_versions // channel: [ versions.yml ] - motu_version = params.run_motus ? MOTUS_PROFILE.out.versions.first() : Channel.empty() + motus_version = params.run_motus ? MOTUS_PROFILE.out.versions.first() : Channel.empty() mqc = ch_multiqc_files } diff --git a/workflows/taxprofiler.nf b/workflows/taxprofiler.nf index e382e05..85a3a51 100644 --- a/workflows/taxprofiler.nf +++ b/workflows/taxprofiler.nf @@ -225,7 +225,7 @@ workflow TAXPROFILER { SUBWORKFLOW: PROFILING STANDARDISATION */ if ( params.run_profile_standardisation ) { - STANDARDISATION_PROFILES ( PROFILING.out.classifications, PROFILING.out.profiles, DB_CHECK.out.dbs, PROFILING.out.motu_version ) + STANDARDISATION_PROFILES ( PROFILING.out.classifications, PROFILING.out.profiles, DB_CHECK.out.dbs, PROFILING.out.motus_version ) ch_versions = ch_versions.mix( STANDARDISATION_PROFILES.out.versions ) } From d83c747533e4bb916622c2066d2c2fa258d4c7cc Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Fri, 15 Jul 2022 12:38:20 +0200 Subject: [PATCH 277/789] Fix modules JSON --- modules.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules.json b/modules.json index f98cd62..132ff8b 100644 --- a/modules.json +++ b/modules.json @@ -82,7 +82,7 @@ "git_sha": "b02e648c221e1da17cb589eefe297e61ec9e9c49" }, "motus/profile": { - "git_sha": "b02e648c221e1da17cb589eefe297e61ec9e9c49" + "git_sha": "b6ed584443ad68ac41e6975994139454a4f23c18" }, "multiqc": { "git_sha": "e745e167c1020928ef20ea1397b6b4d230681b4d" From 5a2fd260fd6551854006c5f23da21bedb068ef9f Mon Sep 17 00:00:00 2001 From: sofstam Date: Fri, 15 Jul 2022 12:50:50 +0200 Subject: [PATCH 278/789] Log file into multiqc channel --- subworkflows/local/longread_preprocessing.nf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/subworkflows/local/longread_preprocessing.nf b/subworkflows/local/longread_preprocessing.nf index 6a23b0e..08d366d 100644 --- a/subworkflows/local/longread_preprocessing.nf +++ b/subworkflows/local/longread_preprocessing.nf @@ -49,7 +49,7 @@ workflow LONGREAD_PREPROCESSING { } FASTQC_PROCESSED ( ch_processed_reads ) - ch_multiqc_files = ch_multiqc_files.mix( FASTQC_PROCESSED.out.zip ) + ch_multiqc_files = ch_multiqc_files.mix( FASTQC_PROCESSED.out.zip, FILTLONG.out.log ) emit: reads = ch_processed_reads // channel: [ val(meta), [ reads ] ] From 035b4b7a1745efccf61513348da54e41c809dc7a Mon Sep 17 00:00:00 2001 From: mjamy Date: Fri, 15 Jul 2022 16:28:07 +0200 Subject: [PATCH 279/789] Update the dev branch with the DIAMOND module update --- modules.json | 2 +- modules/nf-core/modules/diamond/blastx/main.nf | 6 +++++- modules/nf-core/modules/diamond/blastx/meta.yml | 5 +++++ 3 files changed, 11 insertions(+), 2 deletions(-) diff --git a/modules.json b/modules.json index faa267d..2b0d5c0 100644 --- a/modules.json +++ b/modules.json @@ -28,7 +28,7 @@ "git_sha": "e745e167c1020928ef20ea1397b6b4d230681b4d" }, "diamond/blastx": { - "git_sha": "bd3bfe0817246082525ab93707976676b1fe208b" + "git_sha": "3531824af826c16cd252bc5aa82ae169b244ebaa" }, "fastp": { "git_sha": "d0a1cbb703a130c19f6796c3fce24fbe7dfce789" diff --git a/modules/nf-core/modules/diamond/blastx/main.nf b/modules/nf-core/modules/diamond/blastx/main.nf index d327227..1f4ff25 100644 --- a/modules/nf-core/modules/diamond/blastx/main.nf +++ b/modules/nf-core/modules/diamond/blastx/main.nf @@ -21,6 +21,7 @@ process DIAMOND_BLASTX { tuple val(meta), path('*.sam') , optional: true, emit: sam tuple val(meta), path('*.tsv') , optional: true, emit: tsv tuple val(meta), path('*.paf') , optional: true, emit: paf + tuple val(meta), path("*.log") , emit: log path "versions.yml" , emit: versions when: @@ -54,7 +55,10 @@ process DIAMOND_BLASTX { --query $fasta \\ --outfmt ${outfmt} ${columns} \\ $args \\ - --out ${prefix}.${out_ext} + --out ${prefix}.${out_ext} \\ + --log + + mv diamond.log ${prefix}.log cat <<-END_VERSIONS > versions.yml "${task.process}": diff --git a/modules/nf-core/modules/diamond/blastx/meta.yml b/modules/nf-core/modules/diamond/blastx/meta.yml index 2dcd7bc..327b893 100644 --- a/modules/nf-core/modules/diamond/blastx/meta.yml +++ b/modules/nf-core/modules/diamond/blastx/meta.yml @@ -70,7 +70,12 @@ output: type: file description: File containing software versions pattern: "versions.yml" + - log: + type: file + description: Log file containing stdout information + pattern: "*.{log}" authors: - "@spficklin" - "@jfy133" + - "@mjamy" From 33a5402b255a7cf82491b1169e4fcfcaaa947fce Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Tue, 19 Jul 2022 13:50:39 +0200 Subject: [PATCH 280/789] Add emitting porechop logs to multiqc and fix collection of others --- .../nf-core-taxprofiler_icon_border.svg | 445 ++++++++++++++++++ .../nf_core_taxprofiler_icon_border.png | Bin 0 -> 142407 bytes modules.json | 2 +- modules/nf-core/modules/porechop/main.nf | 4 +- modules/nf-core/modules/porechop/meta.yml | 5 + subworkflows/local/longread_preprocessing.nf | 5 +- subworkflows/local/profiling.nf | 2 +- 7 files changed, 459 insertions(+), 4 deletions(-) create mode 100644 docs/images/nf-core-taxprofiler_icon_border.svg create mode 100644 docs/images/nf_core_taxprofiler_icon_border.png diff --git a/docs/images/nf-core-taxprofiler_icon_border.svg b/docs/images/nf-core-taxprofiler_icon_border.svg new file mode 100644 index 0000000..887e8e8 --- /dev/null +++ b/docs/images/nf-core-taxprofiler_icon_border.svg @@ -0,0 +1,445 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/images/nf_core_taxprofiler_icon_border.png b/docs/images/nf_core_taxprofiler_icon_border.png new file mode 100644 index 0000000000000000000000000000000000000000..c513de0c016247223a1dc7a240bc6207200067cd GIT binary patch literal 142407 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%0DjZH?3iqlV|AwXNsKGgWF{SX;)Yk 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%0A!Gm2;yp>aPgT|gfo=c9nN=0xfK^1 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 jMTQL&w#e}Rf(%NX$`2 ${prefix}.log cat <<-END_VERSIONS > versions.yml "${task.process}": diff --git a/modules/nf-core/modules/porechop/meta.yml b/modules/nf-core/modules/porechop/meta.yml index 81399d2..e526317 100644 --- a/modules/nf-core/modules/porechop/meta.yml +++ b/modules/nf-core/modules/porechop/meta.yml @@ -38,6 +38,10 @@ output: type: file description: Demultiplexed and/or adapter-trimmed fastq.gz file pattern: "*.{fastq.gz}" + - log: + type: file + description: Log file containing stdout information + pattern: "*.log" authors: - "@ggabernet" @@ -48,3 +52,4 @@ authors: - "@jonasscheid" - "@jonoave" - "@GokceOGUZ" + - "@jfy133" diff --git a/subworkflows/local/longread_preprocessing.nf b/subworkflows/local/longread_preprocessing.nf index 6a23b0e..2de3617 100644 --- a/subworkflows/local/longread_preprocessing.nf +++ b/subworkflows/local/longread_preprocessing.nf @@ -23,9 +23,11 @@ workflow LONGREAD_PREPROCESSING { def meta_new = meta.clone() meta_new['single_end'] = 1 [ meta_new, reads ] + } ch_versions = ch_versions.mix(PORECHOP.out.versions.first()) - } + ch_multiqc_files = ch_multiqc_files.mix( PORECHOP.out.log.collect{it[1]}.ifEmpty([]) ) + } else if ( !params.longread_qc_run_clip && params.longread_qc_run_filter ) { ch_processed_reads = FILTLONG ( reads.map{ meta, reads -> [meta, [], reads ]} ) @@ -45,6 +47,7 @@ workflow LONGREAD_PREPROCESSING { ch_versions = ch_versions.mix(PORECHOP.out.versions.first()) ch_versions = ch_versions.mix(FILTLONG.out.versions.first()) + ch_multiqc_files = ch_multiqc_files.mix( PORECHOP.out.log.collect{it[1]}.ifEmpty([]) ) } diff --git a/subworkflows/local/profiling.nf b/subworkflows/local/profiling.nf index 7c2c90c..39b6cb0 100644 --- a/subworkflows/local/profiling.nf +++ b/subworkflows/local/profiling.nf @@ -227,7 +227,7 @@ workflow PROFILING { MOTUS_PROFILE ( ch_input_for_motus.reads, ch_input_for_motus.db ) ch_versions = ch_versions.mix( MOTUS_PROFILE.out.versions.first() ) ch_raw_profiles = ch_raw_profiles.mix( MOTUS_PROFILE.out.out ) - ch_multiqc_files = ch_multiqc_files.mix( MOTUS_PROFILE.out.log.map{it[1]} ) + ch_multiqc_files = ch_multiqc_files.mix( MOTUS_PROFILE.out.log.collect{it[1]}.ifEmpty([]) ) } emit: From 1ba6a08135dad689f11a182376f8a19b4de73b42 Mon Sep 17 00:00:00 2001 From: sofstam Date: Tue, 19 Jul 2022 13:53:29 +0200 Subject: [PATCH 281/789] Seperate multiqc for filtlong --- subworkflows/local/longread_preprocessing.nf | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/subworkflows/local/longread_preprocessing.nf b/subworkflows/local/longread_preprocessing.nf index 08d366d..27e5e37 100644 --- a/subworkflows/local/longread_preprocessing.nf +++ b/subworkflows/local/longread_preprocessing.nf @@ -49,7 +49,8 @@ workflow LONGREAD_PREPROCESSING { } FASTQC_PROCESSED ( ch_processed_reads ) - ch_multiqc_files = ch_multiqc_files.mix( FASTQC_PROCESSED.out.zip, FILTLONG.out.log ) + ch_multiqc_files = ch_multiqc_files.mix( FASTQC_PROCESSED.out.zip ) + ch_multiqc_files = ch_multiqc_files.mix( FILTLONG.out.log.collect{it[1]}.ifEmpty([])) emit: reads = ch_processed_reads // channel: [ val(meta), [ reads ] ] From 526ed797639ae275874f972e17511e21d76d425f Mon Sep 17 00:00:00 2001 From: sofstam Date: Tue, 19 Jul 2022 14:01:11 +0200 Subject: [PATCH 282/789] Fix filtlong logs --- subworkflows/local/longread_preprocessing.nf | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/subworkflows/local/longread_preprocessing.nf b/subworkflows/local/longread_preprocessing.nf index 27e5e37..ccdbeb2 100644 --- a/subworkflows/local/longread_preprocessing.nf +++ b/subworkflows/local/longread_preprocessing.nf @@ -12,7 +12,7 @@ workflow LONGREAD_PREPROCESSING { main: ch_versions = Channel.empty() - ch_multiqc_files = Channel.empty() + = Channel.empty() if ( params.longread_qc_run_clip && !params.longread_qc_run_filter ) { PORECHOP ( reads ) @@ -30,6 +30,7 @@ workflow LONGREAD_PREPROCESSING { ch_processed_reads = FILTLONG ( reads.map{ meta, reads -> [meta, [], reads ]} ) ch_versions = ch_versions.mix(FILTLONG.out.versions.first()) + ch_multiqc_files = .mix( FILTLONG.out.log.collect{it[1]}.ifEmpty([])) } else { PORECHOP ( reads ) @@ -45,16 +46,16 @@ workflow LONGREAD_PREPROCESSING { ch_versions = ch_versions.mix(PORECHOP.out.versions.first()) ch_versions = ch_versions.mix(FILTLONG.out.versions.first()) + ch_multiqc_files = ch_multiqc_files.mix( FILTLONG.out.log.collect{it[1]}.ifEmpty([])) } FASTQC_PROCESSED ( ch_processed_reads ) - ch_multiqc_files = ch_multiqc_files.mix( FASTQC_PROCESSED.out.zip ) - ch_multiqc_files = ch_multiqc_files.mix( FILTLONG.out.log.collect{it[1]}.ifEmpty([])) + = .mix( FASTQC_PROCESSED.out.zip ) emit: reads = ch_processed_reads // channel: [ val(meta), [ reads ] ] versions = ch_versions // channel: [ versions.yml ] - mqc = ch_multiqc_files + mqc = } From 8147dba0b49129eaff62954a26a2c355e7baab0f Mon Sep 17 00:00:00 2001 From: sofstam Date: Tue, 19 Jul 2022 14:03:10 +0200 Subject: [PATCH 283/789] Fix typos --- subworkflows/local/longread_preprocessing.nf | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/subworkflows/local/longread_preprocessing.nf b/subworkflows/local/longread_preprocessing.nf index ccdbeb2..aaec456 100644 --- a/subworkflows/local/longread_preprocessing.nf +++ b/subworkflows/local/longread_preprocessing.nf @@ -12,7 +12,7 @@ workflow LONGREAD_PREPROCESSING { main: ch_versions = Channel.empty() - = Channel.empty() + ch_multiqc_files = Channel.empty() if ( params.longread_qc_run_clip && !params.longread_qc_run_filter ) { PORECHOP ( reads ) @@ -30,7 +30,7 @@ workflow LONGREAD_PREPROCESSING { ch_processed_reads = FILTLONG ( reads.map{ meta, reads -> [meta, [], reads ]} ) ch_versions = ch_versions.mix(FILTLONG.out.versions.first()) - ch_multiqc_files = .mix( FILTLONG.out.log.collect{it[1]}.ifEmpty([])) + ch_multiqc_files = ch_multiqc_files.mix( FILTLONG.out.log.collect{it[1]}.ifEmpty([])) } else { PORECHOP ( reads ) From 25bc01f9c4aaa4e46e5e0ddf08e311ebd31154ee Mon Sep 17 00:00:00 2001 From: sofstam Date: Tue, 19 Jul 2022 14:04:49 +0200 Subject: [PATCH 284/789] Fix typos --- subworkflows/local/longread_preprocessing.nf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/subworkflows/local/longread_preprocessing.nf b/subworkflows/local/longread_preprocessing.nf index aaec456..7dca57d 100644 --- a/subworkflows/local/longread_preprocessing.nf +++ b/subworkflows/local/longread_preprocessing.nf @@ -51,7 +51,7 @@ workflow LONGREAD_PREPROCESSING { } FASTQC_PROCESSED ( ch_processed_reads ) - = .mix( FASTQC_PROCESSED.out.zip ) + ch_multiqc_files = ch_multiqc_files.mix( FASTQC_PROCESSED.out.zip ) emit: reads = ch_processed_reads // channel: [ val(meta), [ reads ] ] From 171258d545731feaa38aebd0868d65cf917fbfb9 Mon Sep 17 00:00:00 2001 From: sofstam Date: Tue, 19 Jul 2022 14:07:13 +0200 Subject: [PATCH 285/789] Fix typos --- subworkflows/local/longread_preprocessing.nf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/subworkflows/local/longread_preprocessing.nf b/subworkflows/local/longread_preprocessing.nf index 7dca57d..a68d447 100644 --- a/subworkflows/local/longread_preprocessing.nf +++ b/subworkflows/local/longread_preprocessing.nf @@ -56,6 +56,6 @@ workflow LONGREAD_PREPROCESSING { emit: reads = ch_processed_reads // channel: [ val(meta), [ reads ] ] versions = ch_versions // channel: [ versions.yml ] - mqc = + mqc = ch_multiqc_files } From c4c82212e12ce9ab082858f5e72bc97692baec3f Mon Sep 17 00:00:00 2001 From: mjamy Date: Tue, 19 Jul 2022 14:12:16 +0200 Subject: [PATCH 286/789] incorporate diamond log file into multiqc channel --- subworkflows/local/profiling.nf | 1 + 1 file changed, 1 insertion(+) diff --git a/subworkflows/local/profiling.nf b/subworkflows/local/profiling.nf index 38bc9a8..d4edc99 100644 --- a/subworkflows/local/profiling.nf +++ b/subworkflows/local/profiling.nf @@ -208,6 +208,7 @@ workflow PROFILING { DIAMOND_BLASTX ( ch_input_for_diamond.reads, ch_input_for_diamond.db, ch_diamond_reads_format , [] ) ch_versions = ch_versions.mix( DIAMOND_BLASTX.out.versions.first() ) ch_raw_profiles = ch_raw_profiles.mix( DIAMOND_BLASTX.out.tsv ) + ch_multiqc_files = ch_multiqc_files.mix( DIAMOND_BLASTX.out.log.collect{it[1]}.ifEmpty([]) ) } From 8d7ddb584785f7e50d7e62f7962e39731bf09e85 Mon Sep 17 00:00:00 2001 From: "James A. Fellows Yates" Date: Tue, 19 Jul 2022 16:30:13 +0200 Subject: [PATCH 287/789] Apply suggestions from code review --- subworkflows/local/longread_preprocessing.nf | 2 +- subworkflows/local/profiling.nf | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/subworkflows/local/longread_preprocessing.nf b/subworkflows/local/longread_preprocessing.nf index 2de3617..0710e07 100644 --- a/subworkflows/local/longread_preprocessing.nf +++ b/subworkflows/local/longread_preprocessing.nf @@ -47,7 +47,7 @@ workflow LONGREAD_PREPROCESSING { ch_versions = ch_versions.mix(PORECHOP.out.versions.first()) ch_versions = ch_versions.mix(FILTLONG.out.versions.first()) - ch_multiqc_files = ch_multiqc_files.mix( PORECHOP.out.log.collect{it[1]}.ifEmpty([]) ) + ch_multiqc_files = ch_multiqc_files.mix( PORECHOP.out.log ) } diff --git a/subworkflows/local/profiling.nf b/subworkflows/local/profiling.nf index 39b6cb0..1cd513f 100644 --- a/subworkflows/local/profiling.nf +++ b/subworkflows/local/profiling.nf @@ -227,7 +227,7 @@ workflow PROFILING { MOTUS_PROFILE ( ch_input_for_motus.reads, ch_input_for_motus.db ) ch_versions = ch_versions.mix( MOTUS_PROFILE.out.versions.first() ) ch_raw_profiles = ch_raw_profiles.mix( MOTUS_PROFILE.out.out ) - ch_multiqc_files = ch_multiqc_files.mix( MOTUS_PROFILE.out.log.collect{it[1]}.ifEmpty([]) ) + ch_multiqc_files = ch_multiqc_files.mix( MOTUS_PROFILE.out.log ) } emit: From 237e9aa6236e2bc40cbffaa7f5f114b0de2927bd Mon Sep 17 00:00:00 2001 From: Sofia Stamouli <91951607+sofstam@users.noreply.github.com> Date: Tue, 19 Jul 2022 16:44:08 +0200 Subject: [PATCH 288/789] Update longread_preprocessing.nf --- subworkflows/local/longread_preprocessing.nf | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/subworkflows/local/longread_preprocessing.nf b/subworkflows/local/longread_preprocessing.nf index a68d447..13c486e 100644 --- a/subworkflows/local/longread_preprocessing.nf +++ b/subworkflows/local/longread_preprocessing.nf @@ -30,7 +30,7 @@ workflow LONGREAD_PREPROCESSING { ch_processed_reads = FILTLONG ( reads.map{ meta, reads -> [meta, [], reads ]} ) ch_versions = ch_versions.mix(FILTLONG.out.versions.first()) - ch_multiqc_files = ch_multiqc_files.mix( FILTLONG.out.log.collect{it[1]}.ifEmpty([])) + ch_multiqc_files = ch_multiqc_files.mix( FILTLONG.out.log ) } else { PORECHOP ( reads ) @@ -46,7 +46,7 @@ workflow LONGREAD_PREPROCESSING { ch_versions = ch_versions.mix(PORECHOP.out.versions.first()) ch_versions = ch_versions.mix(FILTLONG.out.versions.first()) - ch_multiqc_files = ch_multiqc_files.mix( FILTLONG.out.log.collect{it[1]}.ifEmpty([])) + ch_multiqc_files = ch_multiqc_files.mix( FILTLONG.out.log ) } From 811ded38afd7b6b2d0b3257d6a18f2afaada4a31 Mon Sep 17 00:00:00 2001 From: Mahwash Jamy <40695699+mjamy@users.noreply.github.com> Date: Tue, 19 Jul 2022 16:44:48 +0200 Subject: [PATCH 289/789] Update subworkflows/local/profiling.nf Co-authored-by: James A. Fellows Yates --- subworkflows/local/profiling.nf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/subworkflows/local/profiling.nf b/subworkflows/local/profiling.nf index d4edc99..4735838 100644 --- a/subworkflows/local/profiling.nf +++ b/subworkflows/local/profiling.nf @@ -208,7 +208,7 @@ workflow PROFILING { DIAMOND_BLASTX ( ch_input_for_diamond.reads, ch_input_for_diamond.db, ch_diamond_reads_format , [] ) ch_versions = ch_versions.mix( DIAMOND_BLASTX.out.versions.first() ) ch_raw_profiles = ch_raw_profiles.mix( DIAMOND_BLASTX.out.tsv ) - ch_multiqc_files = ch_multiqc_files.mix( DIAMOND_BLASTX.out.log.collect{it[1]}.ifEmpty([]) ) + ch_multiqc_files = ch_multiqc_files.mix( DIAMOND_BLASTX.out.log ) } From 255afee4c7dc6c8287a0d7eb39542ef2a86cc9fb Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Tue, 19 Jul 2022 17:10:10 +0200 Subject: [PATCH 290/789] Re-add the collects --- subworkflows/local/longread_preprocessing.nf | 2 +- subworkflows/local/profiling.nf | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/subworkflows/local/longread_preprocessing.nf b/subworkflows/local/longread_preprocessing.nf index 0710e07..2de3617 100644 --- a/subworkflows/local/longread_preprocessing.nf +++ b/subworkflows/local/longread_preprocessing.nf @@ -47,7 +47,7 @@ workflow LONGREAD_PREPROCESSING { ch_versions = ch_versions.mix(PORECHOP.out.versions.first()) ch_versions = ch_versions.mix(FILTLONG.out.versions.first()) - ch_multiqc_files = ch_multiqc_files.mix( PORECHOP.out.log ) + ch_multiqc_files = ch_multiqc_files.mix( PORECHOP.out.log.collect{it[1]}.ifEmpty([]) ) } diff --git a/subworkflows/local/profiling.nf b/subworkflows/local/profiling.nf index 1cd513f..0ef32b3 100644 --- a/subworkflows/local/profiling.nf +++ b/subworkflows/local/profiling.nf @@ -227,13 +227,13 @@ workflow PROFILING { MOTUS_PROFILE ( ch_input_for_motus.reads, ch_input_for_motus.db ) ch_versions = ch_versions.mix( MOTUS_PROFILE.out.versions.first() ) ch_raw_profiles = ch_raw_profiles.mix( MOTUS_PROFILE.out.out ) - ch_multiqc_files = ch_multiqc_files.mix( MOTUS_PROFILE.out.log ) + ch_multiqc_files = ch_multiqc_files.mix( MOTUS_PROFILE.out.log.collect{it[1]}.ifEmpty([]) ) } emit: classifications = ch_raw_classifications profiles = ch_raw_profiles // channel: [ val(meta), [ reads ] ] - should be text files or biom versions = ch_versions // channel: [ versions.yml ] - motus_version = params.run_motus ? MOTUS_PROFILE.out.versions.first() : Channel.empty() + motus_version = params.run_motus ? MOTUS_PROFILE.out.versions.first() : Channel.empty() mqc = ch_multiqc_files } From 139cf0d6aa9fb93ed3596f5106a4ddf214287927 Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Tue, 26 Jul 2022 10:12:33 +0200 Subject: [PATCH 291/789] Fix --- subworkflows/local/profiling.nf | 8 ++++---- workflows/taxprofiler.nf | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/subworkflows/local/profiling.nf b/subworkflows/local/profiling.nf index 7c2c90c..1099155 100644 --- a/subworkflows/local/profiling.nf +++ b/subworkflows/local/profiling.nf @@ -110,7 +110,7 @@ workflow PROFILING { } MEGAN_RMA2INFO (ch_maltrun_for_megan, params.malt_generate_megansummary ) - ch_multiqc_files = ch_multiqc_files.mix( MALT_RUN.out.log.collect{it[1]}.ifEmpty([]) ) + ch_multiqc_files = ch_multiqc_files.mix( MALT_RUN.out.log ) ch_versions = ch_versions.mix( MALT_RUN.out.versions.first(), MEGAN_RMA2INFO.out.versions.first() ) ch_raw_classifications = ch_raw_classifications.mix( ch_maltrun_for_megan ) ch_raw_profiles = ch_raw_profiles.mix( MEGAN_RMA2INFO.out.txt ) @@ -127,7 +127,7 @@ workflow PROFILING { } KRAKEN2_KRAKEN2 ( ch_input_for_kraken2.reads, ch_input_for_kraken2.db, params.kraken2_save_reads, params.kraken2_save_readclassification ) - ch_multiqc_files = ch_multiqc_files.mix( KRAKEN2_KRAKEN2.out.report.collect{it[1]}.ifEmpty([]) ) + ch_multiqc_files = ch_multiqc_files.mix( KRAKEN2_KRAKEN2.out.report ) ch_versions = ch_versions.mix( KRAKEN2_KRAKEN2.out.versions.first() ) ch_raw_classifications = ch_raw_classifications.mix( KRAKEN2_KRAKEN2.out.classified_reads_assignment ) ch_raw_profiles = ch_raw_profiles.mix( KRAKEN2_KRAKEN2.out.report ) @@ -185,7 +185,7 @@ workflow PROFILING { KAIJU_KAIJU ( ch_input_for_kaiju.reads, ch_input_for_kaiju.db) KAIJU_KAIJU2TABLE (KAIJU_KAIJU.out.results, ch_input_for_kaiju.db, params.kaiju_taxon_name) - ch_multiqc_files = ch_multiqc_files.mix( KAIJU_KAIJU2TABLE.out.summary.collect{it[1]}.ifEmpty([]) ) + ch_multiqc_files = ch_multiqc_files.mix( KAIJU_KAIJU2TABLE.out.summary ) ch_versions = ch_versions.mix( KAIJU_KAIJU.out.versions.first() ) ch_raw_classifications = ch_raw_classifications.mix( KAIJU_KAIJU.out.results ) ch_raw_profiles = ch_raw_profiles.mix( KAIJU_KAIJU2TABLE.out.summary ) @@ -227,7 +227,7 @@ workflow PROFILING { MOTUS_PROFILE ( ch_input_for_motus.reads, ch_input_for_motus.db ) ch_versions = ch_versions.mix( MOTUS_PROFILE.out.versions.first() ) ch_raw_profiles = ch_raw_profiles.mix( MOTUS_PROFILE.out.out ) - ch_multiqc_files = ch_multiqc_files.mix( MOTUS_PROFILE.out.log.map{it[1]} ) + ch_multiqc_files = ch_multiqc_files.mix( MOTUS_PROFILE.out.log ) } emit: diff --git a/workflows/taxprofiler.nf b/workflows/taxprofiler.nf index 85a3a51..b6f3a37 100644 --- a/workflows/taxprofiler.nf +++ b/workflows/taxprofiler.nf @@ -266,7 +266,7 @@ workflow TAXPROFILER { ch_multiqc_files = ch_multiqc_files.mix(SHORTREAD_HOSTREMOVAL.out.mqc.collect{it[1]}.ifEmpty([])) } - ch_multiqc_files = ch_multiqc_files.mix( PROFILING.out.mqc ) + ch_multiqc_files = ch_multiqc_files.mix( PROFILING.out.mqc.collect{it[1]}.ifEmpty([]) ) // TODO create multiQC module for metaphlan MULTIQC ( From e76b299705152e6ef3015658507cf78213818194 Mon Sep 17 00:00:00 2001 From: "James A. Fellows Yates" Date: Tue, 26 Jul 2022 08:18:54 +0000 Subject: [PATCH 292/789] Start working getting kraken and centrifuge working in MQC --- assets/multiqc_config.yml | 32 ++++++++++++++++++++++++++++++++ conf/modules.config | 6 +++--- subworkflows/local/profiling.nf | 3 ++- 3 files changed, 37 insertions(+), 4 deletions(-) diff --git a/assets/multiqc_config.yml b/assets/multiqc_config.yml index 438fb42..00e09c5 100644 --- a/assets/multiqc_config.yml +++ b/assets/multiqc_config.yml @@ -13,3 +13,35 @@ export_plots: true custom_logo: "nf-core-taxprofiler_logo_custom_light.png" custom_logo_url: https://nf-co.re/taxprofiler custom_logo_title: "nf-core/taxprofiler" + +run_modules: + - fastqc + - adapterRemoval + - fastp + - bowtie2 + - kraken + - malt + +#extra_fn_clean_exts: +# - '_fastp' +# - '.pe.settings' +# - '.se.settings' + +top_modules: + - 'fastqc': + name: "FastQC (pre-processing)" + path_filters: + - '*_raw.zip' + - 'fastp' + - 'fastqc': + name: "FastQC (post-processing)" + path_filters: + - '*_processed.zip' + - 'kraken': + name: "Kraken" + path_filters: + - '*kraken.report' + - 'kraken': + name: Centrifuge" + path_filters: + - '*centrifuge.kreport' diff --git a/conf/modules.config b/conf/modules.config index 1558a98..ea2f487 100644 --- a/conf/modules.config +++ b/conf/modules.config @@ -285,7 +285,7 @@ process { withName: KRAKEN2_KRAKEN2 { ext.args = { "${meta.db_params}" } - ext.prefix = params.perform_runmerging ? { "${meta.id}-${meta.db_name}" } : { "${meta.id}-${meta.run_accession}-${meta.db_name}" } + ext.prefix = params.perform_runmerging ? { "${meta.id}-${meta.db_name}.kraken" } : { "${meta.id}-${meta.run_accession}-${meta.db_name}.kraken" } publishDir = [ path: { "${params.outdir}/kraken2/${meta.db_name}" }, mode: params.publish_dir_mode, @@ -343,12 +343,12 @@ process { pattern: '*.{txt,sam,gz}' ] ext.args = { "${meta.db_params}" } - ext.prefix = params.perform_runmerging ? { "${meta.id}-${meta.db_name}" } : { "${meta.id}-${meta.run_accession}-${meta.db_name}" } + ext.prefix = params.perform_runmerging ? { "${meta.id}-${meta.db_name}.centrifuge" } : { "${meta.id}-${meta.run_accession}-${meta.db_name}.centrifuge" } } withName: CENTRIFUGE_KREPORT { ext.args = { "${meta.db_params}" } - ext.prefix = params.perform_runmerging ? { "${meta.id}-${meta.db_name}" } : { "${meta.id}-${meta.run_accession}-${meta.db_name}" } + ext.prefix = params.perform_runmerging ? { "${meta.id}-${meta.db_name}.centrifuge" } : { "${meta.id}-${meta.run_accession}-${meta.db_name}.centrifuge" } publishDir = [ path: { "${params.outdir}/centrifuge/${meta.db_name}" }, mode: params.publish_dir_mode, diff --git a/subworkflows/local/profiling.nf b/subworkflows/local/profiling.nf index 7c2c90c..921f291 100644 --- a/subworkflows/local/profiling.nf +++ b/subworkflows/local/profiling.nf @@ -127,7 +127,7 @@ workflow PROFILING { } KRAKEN2_KRAKEN2 ( ch_input_for_kraken2.reads, ch_input_for_kraken2.db, params.kraken2_save_reads, params.kraken2_save_readclassification ) - ch_multiqc_files = ch_multiqc_files.mix( KRAKEN2_KRAKEN2.out.report.collect{it[1]}.ifEmpty([]) ) + ch_multiqc_files = ch_multiqc_files.mix( KRAKEN2_KRAKEN2.out.report ) ch_versions = ch_versions.mix( KRAKEN2_KRAKEN2.out.versions.first() ) ch_raw_classifications = ch_raw_classifications.mix( KRAKEN2_KRAKEN2.out.classified_reads_assignment ) ch_raw_profiles = ch_raw_profiles.mix( KRAKEN2_KRAKEN2.out.report ) @@ -152,6 +152,7 @@ workflow PROFILING { ch_versions = ch_versions.mix( CENTRIFUGE_CENTRIFUGE.out.versions.first() ) ch_raw_classifications = ch_raw_classifications.mix( CENTRIFUGE_CENTRIFUGE.out.results ) ch_raw_profiles = ch_raw_profiles.mix( CENTRIFUGE_KREPORT.out.kreport ) + ch_multiqc_files = ch_multiqc_files.mix( CENTRIFUGE_KREPORT.out.kreport ) } From 3054dea7c217d4d47b00e866cb4174047519f999 Mon Sep 17 00:00:00 2001 From: "James A. Fellows Yates" Date: Tue, 26 Jul 2022 08:41:06 +0000 Subject: [PATCH 293/789] Get multiqc input working --- subworkflows/local/profiling.nf | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/subworkflows/local/profiling.nf b/subworkflows/local/profiling.nf index 921f291..ad9f45f 100644 --- a/subworkflows/local/profiling.nf +++ b/subworkflows/local/profiling.nf @@ -110,7 +110,7 @@ workflow PROFILING { } MEGAN_RMA2INFO (ch_maltrun_for_megan, params.malt_generate_megansummary ) - ch_multiqc_files = ch_multiqc_files.mix( MALT_RUN.out.log.collect{it[1]}.ifEmpty([]) ) + ch_multiqc_files = ch_multiqc_files.mix( MALT_RUN.out.log ) ch_versions = ch_versions.mix( MALT_RUN.out.versions.first(), MEGAN_RMA2INFO.out.versions.first() ) ch_raw_classifications = ch_raw_classifications.mix( ch_maltrun_for_megan ) ch_raw_profiles = ch_raw_profiles.mix( MEGAN_RMA2INFO.out.txt ) @@ -127,7 +127,7 @@ workflow PROFILING { } KRAKEN2_KRAKEN2 ( ch_input_for_kraken2.reads, ch_input_for_kraken2.db, params.kraken2_save_reads, params.kraken2_save_readclassification ) - ch_multiqc_files = ch_multiqc_files.mix( KRAKEN2_KRAKEN2.out.report ) + ch_multiqc_files = ch_multiqc_files.mix( KRAKEN2_KRAKEN2.out.report.dump(tag: "hello") ) ch_versions = ch_versions.mix( KRAKEN2_KRAKEN2.out.versions.first() ) ch_raw_classifications = ch_raw_classifications.mix( KRAKEN2_KRAKEN2.out.classified_reads_assignment ) ch_raw_profiles = ch_raw_profiles.mix( KRAKEN2_KRAKEN2.out.report ) @@ -186,7 +186,7 @@ workflow PROFILING { KAIJU_KAIJU ( ch_input_for_kaiju.reads, ch_input_for_kaiju.db) KAIJU_KAIJU2TABLE (KAIJU_KAIJU.out.results, ch_input_for_kaiju.db, params.kaiju_taxon_name) - ch_multiqc_files = ch_multiqc_files.mix( KAIJU_KAIJU2TABLE.out.summary.collect{it[1]}.ifEmpty([]) ) + ch_multiqc_files = ch_multiqc_files.mix( KAIJU_KAIJU2TABLE.out.summary ) ch_versions = ch_versions.mix( KAIJU_KAIJU.out.versions.first() ) ch_raw_classifications = ch_raw_classifications.mix( KAIJU_KAIJU.out.results ) ch_raw_profiles = ch_raw_profiles.mix( KAIJU_KAIJU2TABLE.out.summary ) From 65b0af9a8b9960ca3731a04b8b587c3de7d7db28 Mon Sep 17 00:00:00 2001 From: "James A. Fellows Yates" Date: Tue, 26 Jul 2022 08:53:43 +0000 Subject: [PATCH 294/789] Fix profiling channels --- workflows/taxprofiler.nf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/workflows/taxprofiler.nf b/workflows/taxprofiler.nf index 85a3a51..b6f3a37 100644 --- a/workflows/taxprofiler.nf +++ b/workflows/taxprofiler.nf @@ -266,7 +266,7 @@ workflow TAXPROFILER { ch_multiqc_files = ch_multiqc_files.mix(SHORTREAD_HOSTREMOVAL.out.mqc.collect{it[1]}.ifEmpty([])) } - ch_multiqc_files = ch_multiqc_files.mix( PROFILING.out.mqc ) + ch_multiqc_files = ch_multiqc_files.mix( PROFILING.out.mqc.collect{it[1]}.ifEmpty([]) ) // TODO create multiQC module for metaphlan MULTIQC ( From 65ae82efc4fba6822a56914d1b8fc0a59b3fbdc6 Mon Sep 17 00:00:00 2001 From: "James A. Fellows Yates" Date: Tue, 26 Jul 2022 18:37:33 +0000 Subject: [PATCH 295/789] Define separte krakena nd centrigfue modules --- assets/multiqc_config.yml | 39 ++++++++++++++++++++++----------------- conf/modules.config | 2 +- 2 files changed, 23 insertions(+), 18 deletions(-) diff --git a/assets/multiqc_config.yml b/assets/multiqc_config.yml index 00e09c5..3ee6141 100644 --- a/assets/multiqc_config.yml +++ b/assets/multiqc_config.yml @@ -28,20 +28,25 @@ run_modules: # - '.se.settings' top_modules: - - 'fastqc': - name: "FastQC (pre-processing)" - path_filters: - - '*_raw.zip' - - 'fastp' - - 'fastqc': - name: "FastQC (post-processing)" - path_filters: - - '*_processed.zip' - - 'kraken': - name: "Kraken" - path_filters: - - '*kraken.report' - - 'kraken': - name: Centrifuge" - path_filters: - - '*centrifuge.kreport' + - 'fastqc': + name: 'FastQC (pre-Trimming)' + path_filters: + - '*raw_*fastqc.zip' + - 'fastp' + - 'adapterRemoval' + - 'fastqc': + name: 'FastQC (post-Trimming)' + path_filters: + - '*raw_*processed.zip' + - 'kraken': + name: 'Kraken' + path_filters: + - '*.kraken2.report.txt' + - 'kraken': + name: 'Centrifuge' + anchor: 'centrifuge' + target: 'Centrifuge' + doi: '10.1101/gr.210641.116' + info: "Centrifuge is a very rapid and memory-efficient system for the classification of DNA sequences from microbial samples. The system uses a novel indexing scheme based on the Burrows-Wheeler transform (BWT) and the Ferragina-Manzini (FM) index." + path_filters: + - '*.centrifuge.txt' diff --git a/conf/modules.config b/conf/modules.config index ea2f487..2b1f13c 100644 --- a/conf/modules.config +++ b/conf/modules.config @@ -285,7 +285,7 @@ process { withName: KRAKEN2_KRAKEN2 { ext.args = { "${meta.db_params}" } - ext.prefix = params.perform_runmerging ? { "${meta.id}-${meta.db_name}.kraken" } : { "${meta.id}-${meta.run_accession}-${meta.db_name}.kraken" } + ext.prefix = params.perform_runmerging ? { "${meta.id}-${meta.db_name}" } : { "${meta.id}-${meta.run_accession}-${meta.db_name}" } publishDir = [ path: { "${params.outdir}/kraken2/${meta.db_name}" }, mode: params.publish_dir_mode, From a3bcf8665a681e98747f0b8fe8543efcd0694560 Mon Sep 17 00:00:00 2001 From: nf-core-bot Date: Tue, 26 Jul 2022 18:47:40 +0000 Subject: [PATCH 296/789] [automated] Fix linting with Prettier --- assets/multiqc_config.yml | 56 +++++++++++++++++++-------------------- 1 file changed, 28 insertions(+), 28 deletions(-) diff --git a/assets/multiqc_config.yml b/assets/multiqc_config.yml index 3ee6141..da22e2b 100644 --- a/assets/multiqc_config.yml +++ b/assets/multiqc_config.yml @@ -15,12 +15,12 @@ custom_logo_url: https://nf-co.re/taxprofiler custom_logo_title: "nf-core/taxprofiler" run_modules: - - fastqc - - adapterRemoval - - fastp - - bowtie2 - - kraken - - malt + - fastqc + - adapterRemoval + - fastp + - bowtie2 + - kraken + - malt #extra_fn_clean_exts: # - '_fastp' @@ -28,25 +28,25 @@ run_modules: # - '.se.settings' top_modules: - - 'fastqc': - name: 'FastQC (pre-Trimming)' - path_filters: - - '*raw_*fastqc.zip' - - 'fastp' - - 'adapterRemoval' - - 'fastqc': - name: 'FastQC (post-Trimming)' - path_filters: - - '*raw_*processed.zip' - - 'kraken': - name: 'Kraken' - path_filters: - - '*.kraken2.report.txt' - - 'kraken': - name: 'Centrifuge' - anchor: 'centrifuge' - target: 'Centrifuge' - doi: '10.1101/gr.210641.116' - info: "Centrifuge is a very rapid and memory-efficient system for the classification of DNA sequences from microbial samples. The system uses a novel indexing scheme based on the Burrows-Wheeler transform (BWT) and the Ferragina-Manzini (FM) index." - path_filters: - - '*.centrifuge.txt' + - "fastqc": + name: "FastQC (pre-Trimming)" + path_filters: + - "*raw_*fastqc.zip" + - "fastp" + - "adapterRemoval" + - "fastqc": + name: "FastQC (post-Trimming)" + path_filters: + - "*raw_*processed.zip" + - "kraken": + name: "Kraken" + path_filters: + - "*.kraken2.report.txt" + - "kraken": + name: "Centrifuge" + anchor: "centrifuge" + target: "Centrifuge" + doi: "10.1101/gr.210641.116" + info: "Centrifuge is a very rapid and memory-efficient system for the classification of DNA sequences from microbial samples. The system uses a novel indexing scheme based on the Burrows-Wheeler transform (BWT) and the Ferragina-Manzini (FM) index." + path_filters: + - "*.centrifuge.txt" From 25bcc0798da7fa053cd409cea929d9d28d47edba Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Wed, 27 Jul 2022 14:40:17 +0200 Subject: [PATCH 297/789] Start work on multiQC config with distinguishing Kraken/Centrifuge --- assets/multiqc_config.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/assets/multiqc_config.yml b/assets/multiqc_config.yml index da22e2b..8df4c5e 100644 --- a/assets/multiqc_config.yml +++ b/assets/multiqc_config.yml @@ -47,6 +47,7 @@ top_modules: anchor: "centrifuge" target: "Centrifuge" doi: "10.1101/gr.210641.116" - info: "Centrifuge is a very rapid and memory-efficient system for the classification of DNA sequences from microbial samples. The system uses a novel indexing scheme based on the Burrows-Wheeler transform (BWT) and the Ferragina-Manzini (FM) index." + info: "is a very rapid and memory-efficient system for the classification of DNA sequences from microbial samples. The system uses a novel indexing scheme based on the Burrows-Wheeler transform (BWT) and the Ferragina-Manzini (FM) index. Note: Figure title" + extra: "Note: plot title will say Kraken2 due to Centrifuge producing the same output format as Kraken. If activated, see the actual Kraken2 results in the section above." path_filters: - "*.centrifuge.txt" From cecbb41f88b05d5534812aee8ee6781b275d48ff Mon Sep 17 00:00:00 2001 From: sofstam Date: Wed, 27 Jul 2022 14:42:35 +0200 Subject: [PATCH 298/789] Update centrifuge/kreport --- modules/nf-core/modules/centrifuge/kreport/main.nf | 4 ++-- modules/nf-core/modules/centrifuge/kreport/meta.yml | 4 ++-- subworkflows/local/profiling.nf | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/modules/nf-core/modules/centrifuge/kreport/main.nf b/modules/nf-core/modules/centrifuge/kreport/main.nf index 124cbdb..381ddd6 100644 --- a/modules/nf-core/modules/centrifuge/kreport/main.nf +++ b/modules/nf-core/modules/centrifuge/kreport/main.nf @@ -8,7 +8,7 @@ process CENTRIFUGE_KREPORT { 'quay.io/biocontainers/centrifuge:1.0.4_beta--h9a82719_6' }" input: - tuple val(meta), path(results) + tuple val(meta), path(report) path db output: @@ -23,7 +23,7 @@ process CENTRIFUGE_KREPORT { def prefix = task.ext.prefix ?: "${meta.id}" """ db_name=`find -L ${db} -name "*.1.cf" -not -name "._*" | sed 's/.1.cf//'` - centrifuge-kreport -x \$db_name ${results} > ${prefix}.txt + centrifuge-kreport -x \$db_name ${report} > ${prefix}.txt cat <<-END_VERSIONS > versions.yml "${task.process}": diff --git a/modules/nf-core/modules/centrifuge/kreport/meta.yml b/modules/nf-core/modules/centrifuge/kreport/meta.yml index fbcae24..822a280 100644 --- a/modules/nf-core/modules/centrifuge/kreport/meta.yml +++ b/modules/nf-core/modules/centrifuge/kreport/meta.yml @@ -15,9 +15,9 @@ input: description: | Groovy Map containing sample information e.g. [ id:'test', single_end:false ] - - results: + - report: type: file - description: File containing the centrifuge classification results + description: File containing the centrifuge classification report pattern: "*.{txt}" output: diff --git a/subworkflows/local/profiling.nf b/subworkflows/local/profiling.nf index 1099155..42820ba 100644 --- a/subworkflows/local/profiling.nf +++ b/subworkflows/local/profiling.nf @@ -148,7 +148,7 @@ workflow PROFILING { } CENTRIFUGE_CENTRIFUGE ( ch_input_for_centrifuge.reads, ch_input_for_centrifuge.db, params.centrifuge_save_reads, params.centrifuge_save_reads, params.centrifuge_save_reads ) - CENTRIFUGE_KREPORT (CENTRIFUGE_CENTRIFUGE.out.results, ch_input_for_centrifuge.db) + CENTRIFUGE_KREPORT (CENTRIFUGE_CENTRIFUGE.out.report, ch_input_for_centrifuge.db) ch_versions = ch_versions.mix( CENTRIFUGE_CENTRIFUGE.out.versions.first() ) ch_raw_classifications = ch_raw_classifications.mix( CENTRIFUGE_CENTRIFUGE.out.results ) ch_raw_profiles = ch_raw_profiles.mix( CENTRIFUGE_KREPORT.out.kreport ) From 9bc45a3f24763a5ef25f3023a129bcd7c81b10d4 Mon Sep 17 00:00:00 2001 From: sofstam Date: Wed, 27 Jul 2022 14:44:26 +0200 Subject: [PATCH 299/789] Update centrifuge/kreport --- modules.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules.json b/modules.json index 27db839..6c26e6b 100644 --- a/modules.json +++ b/modules.json @@ -22,7 +22,7 @@ "git_sha": "d2726fcf75063960f06b36d2229a4c0966614108" }, "centrifuge/kreport": { - "git_sha": "be4ae28c3c95b3c4047a7d9fb4cb0ed749631cea" + "git_sha": "734d0db6079a4aa43b6509b207e5d6feb35d4838" }, "custom/dumpsoftwareversions": { "git_sha": "e745e167c1020928ef20ea1397b6b4d230681b4d" From 71cf32cc6abd3769757871eba1ac2c4893a23b23 Mon Sep 17 00:00:00 2001 From: sofstam Date: Thu, 28 Jul 2022 08:54:32 +0200 Subject: [PATCH 300/789] Add error strategy for centrifuge/kreport --- conf/modules.config | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/conf/modules.config b/conf/modules.config index 1558a98..c4ab581 100644 --- a/conf/modules.config +++ b/conf/modules.config @@ -145,7 +145,7 @@ process { publishDir = [ path: { "${params.outdir}/filtlong" }, mode: params.publish_dir_mode, - pattern: '*.fastq.gz', + pattern: '*.{fastq.gz,log}', enabled: params.save_preprocessed_reads ] } @@ -347,6 +347,7 @@ process { } withName: CENTRIFUGE_KREPORT { + errorStrategy = {task.exitStatus == 255 ? 'ignore' : 'retry'} ext.args = { "${meta.db_params}" } ext.prefix = params.perform_runmerging ? { "${meta.id}-${meta.db_name}" } : { "${meta.id}-${meta.run_accession}-${meta.db_name}" } publishDir = [ From 5cdf5e958a6be59eced1f9dbf0a24472c7483811 Mon Sep 17 00:00:00 2001 From: mjamy Date: Thu, 28 Jul 2022 15:52:31 +0200 Subject: [PATCH 301/789] Updated modules.config to add 'log' in diamond config --- conf/modules.config | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/conf/modules.config b/conf/modules.config index c4ab581..9c61999 100644 --- a/conf/modules.config +++ b/conf/modules.config @@ -387,7 +387,7 @@ process { publishDir = [ path: { "${params.outdir}/diamond/${meta.db_name}" }, mode: params.publish_dir_mode, - pattern: '*.{blast,xml,txt,daa,sam,tsv,paf}' + pattern: '*.{blast,xml,txt,daa,sam,tsv,paf,log}' ] } From f48b22d615c824165cd40b9466b1656b9850f79a Mon Sep 17 00:00:00 2001 From: "James A. Fellows Yates" Date: Fri, 29 Jul 2022 09:52:49 +0200 Subject: [PATCH 302/789] Apply suggestions from code review --- subworkflows/local/longread_preprocessing.nf | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/subworkflows/local/longread_preprocessing.nf b/subworkflows/local/longread_preprocessing.nf index bc595d6..3464167 100644 --- a/subworkflows/local/longread_preprocessing.nf +++ b/subworkflows/local/longread_preprocessing.nf @@ -26,7 +26,7 @@ workflow LONGREAD_PREPROCESSING { } ch_versions = ch_versions.mix(PORECHOP.out.versions.first()) - ch_multiqc_files = ch_multiqc_files.mix( PORECHOP.out.log.collect{it[1]}.ifEmpty([]) ) + ch_multiqc_files = ch_multiqc_files.mix( PORECHOP.out.log ) } else if ( !params.longread_qc_run_clip && params.longread_qc_run_filter ) { @@ -48,8 +48,8 @@ workflow LONGREAD_PREPROCESSING { ch_versions = ch_versions.mix(PORECHOP.out.versions.first()) ch_versions = ch_versions.mix(FILTLONG.out.versions.first()) - ch_multiqc_files = ch_multiqc_files.mix( PORECHOP.out.log.collect{it[1]}.ifEmpty([]) ) - ch_multiqc_files = ch_multiqc_files.mix( FILTLONG.out.log.collect{it[1]}.ifEmpty([]) ) + ch_multiqc_files = ch_multiqc_files.mix( PORECHOP.out.log ) + ch_multiqc_files = ch_multiqc_files.mix( FILTLONG.out.log ) } FASTQC_PROCESSED ( ch_processed_reads ) From a97bb69cd28d93b4bae24b99014a6e5e6148c548 Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Tue, 23 Aug 2022 14:24:57 +0200 Subject: [PATCH 303/789] Prettier --- assets/multiqc_config.yml | 1 + conf/modules.config | 3 ++- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/assets/multiqc_config.yml b/assets/multiqc_config.yml index 8df4c5e..d16ed7e 100644 --- a/assets/multiqc_config.yml +++ b/assets/multiqc_config.yml @@ -21,6 +21,7 @@ run_modules: - bowtie2 - kraken - malt + - custom_content #extra_fn_clean_exts: # - '_fastp' diff --git a/conf/modules.config b/conf/modules.config index 0330abb..1f4914d 100644 --- a/conf/modules.config +++ b/conf/modules.config @@ -241,7 +241,8 @@ process { withName: PRINSEQPLUSPLUS { ext.args = [ params.shortread_complexityfilter_prinseqplusplus_mode == 'dust' ? "-lc_dust=${params.shortread_complexityfilter_prinseqplusplus_dustscore}" : "-lc_entropy=${params.shortread_complexityfilter_entropy}", - "-trim_qual_left=0 -trim_qual_left=0 -trim_qual_window=0 -trim_qual_step=0" + "-trim_qual_left=0 -trim_qual_left=0 -trim_qual_window=0 -trim_qual_step=0", + "-VERBOSE 2" ].join(' ').trim() ext.prefix = { "${meta.id}-${meta.run_accession}" } publishDir = [ From e6c7939305c2ef5477b0576a0efcbd63800b8e9d Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Tue, 23 Aug 2022 14:37:01 +0200 Subject: [PATCH 304/789] Add test_nothing config profile for minimal testing --- conf/test_nothing.config | 47 ++++++++++++++++++++++++++++++++++++++++ nextflow.config | 11 +++++----- 2 files changed, 53 insertions(+), 5 deletions(-) create mode 100644 conf/test_nothing.config diff --git a/conf/test_nothing.config b/conf/test_nothing.config new file mode 100644 index 0000000..e4846a3 --- /dev/null +++ b/conf/test_nothing.config @@ -0,0 +1,47 @@ +/* +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Nextflow config file for running minimal tests +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Defines input files and everything required to run a fast and simple pipeline test. + + Use as follows: + nextflow run nf-core/taxprofiler -profile test, --outdir + +---------------------------------------------------------------------------------------- +*/ + +params { + config_profile_name = 'Test profile' + config_profile_description = 'Minimal test dataset without performing any profiling to check pipeline function' + + // Limit resources so that this can run on GitHub Actions + max_cpus = 2 + max_memory = '6.GB' + max_time = '6.h' + + // Input data + // TODO nf-core: Specify the paths to your test data on nf-core/test-datasets + // TODO nf-core: Give any required params for the test so that command line flags are not needed + input = 'https://raw.githubusercontent.com/nf-core/test-datasets/taxprofiler/samplesheet.csv' + databases = 'https://raw.githubusercontent.com/nf-core/test-datasets/taxprofiler/database.csv' + perform_shortread_qc = false + perform_longread_qc = false + perform_shortread_complexityfilter = false + perform_shortread_hostremoval = false + perform_longread_hostremoval = false + perform_runmerging = false + hostremoval_reference = 'https://raw.githubusercontent.com/nf-core/test-datasets/modules/data/genomics/homo_sapiens/genome/genome.fasta' + run_kaiju = false + run_kraken2 = false + run_malt = false + run_metaphlan3 = false + run_centrifuge = false + run_diamond = false + run_motus = false +} + +process { + withName: MALT_RUN { + maxForks = 1 + } +} diff --git a/nextflow.config b/nextflow.config index 58c9254..4a83031 100644 --- a/nextflow.config +++ b/nextflow.config @@ -204,11 +204,12 @@ profiles { podman.enabled = false shifter.enabled = false } - test { includeConfig 'conf/test.config' } - test_full { includeConfig 'conf/test_full.config' } - test_noprofiling { includeConfig 'conf/test_noprofiling.config' } - test_nopreprocessing { includeConfig 'conf/test_nopreprocessing.config' } - test_motus { includeConfig 'conf/test_motus.config' } + test { includeConfig 'conf/test.config' } + test_full { includeConfig 'conf/test_full.config' } + test_noprofiling { includeConfig 'conf/test_noprofiling.config' } + test_nopreprocessing { includeConfig 'conf/test_nopreprocessing.config' } + test_nothing { includeConfig 'conf/test_nothing.config' } + test_motus { includeConfig 'conf/test_motus.config' } } // Load igenomes.config if required From 4315141c5fa31e721f0cce4154938275c494c68d Mon Sep 17 00:00:00 2001 From: "James A. Fellows Yates" Date: Tue, 23 Aug 2022 15:44:53 +0200 Subject: [PATCH 305/789] Update bin/check_samplesheet.py Co-authored-by: Moritz E. Beber --- bin/check_samplesheet.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bin/check_samplesheet.py b/bin/check_samplesheet.py index 4e80b46..8c13690 100755 --- a/bin/check_samplesheet.py +++ b/bin/check_samplesheet.py @@ -100,7 +100,7 @@ def check_samplesheet(file_in, file_out): sys.exit(1) ## Find locations of mandatory columns - header_locs = dict() + header_locs = {} for i in HEADER: header_locs[i] = header.index(i) From a3055bf6dace3e27710b6d83f2a3236fdecbeddc Mon Sep 17 00:00:00 2001 From: "James A. Fellows Yates" Date: Tue, 23 Aug 2022 15:48:02 +0200 Subject: [PATCH 306/789] Update conf/test_nothing.config --- conf/test_nothing.config | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/conf/test_nothing.config b/conf/test_nothing.config index e4846a3..5cd89eb 100644 --- a/conf/test_nothing.config +++ b/conf/test_nothing.config @@ -12,7 +12,7 @@ params { config_profile_name = 'Test profile' - config_profile_description = 'Minimal test dataset without performing any profiling to check pipeline function' + config_profile_description = 'Minimal test dataset without performing any preprocessing nor profiling to check pipeline function. Useful when you only wish to test a single profiler without having to 'opt-out' of all the others' // Limit resources so that this can run on GitHub Actions max_cpus = 2 From d6d51e0e4388da1693071847563f869990309eb3 Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Wed, 24 Aug 2022 15:23:51 +0200 Subject: [PATCH 307/789] Start work on reordering json schema parameters --- nextflow_schema.json | 494 ++++++++++++++++++++++++++----------------- 1 file changed, 302 insertions(+), 192 deletions(-) diff --git a/nextflow_schema.json b/nextflow_schema.json index b4cb837..70cee15 100644 --- a/nextflow_schema.json +++ b/nextflow_schema.json @@ -10,7 +10,10 @@ "type": "object", "fa_icon": "fas fa-terminal", "description": "Define where the pipeline should find input data and save output data.", - "required": ["input", "outdir"], + "required": [ + "input", + "outdir" + ], "properties": { "input": { "type": "string", @@ -22,6 +25,12 @@ "help_text": "You will need to create a design file with information about the samples in your experiment before running the pipeline. Use this parameter to specify its location. It has to be a comma-separated file with 3 columns, and a header row. See [usage docs](https://nf-co.re/taxprofiler/usage#samplesheet-input).", "fa_icon": "fas fa-file-csv" }, + "databases": { + "type": "string", + "mimetype": "text/csv", + "format": "file-path", + "default": "None" + }, "outdir": { "type": "string", "format": "directory-path", @@ -174,7 +183,14 @@ "description": "Method used to save pipeline results to output directory.", "help_text": "The Nextflow `publishDir` option specifies which intermediate files should be saved to the output directory. This option tells the pipeline what method should be used to move these files. See [Nextflow docs](https://www.nextflow.io/docs/latest/process.html#publishdir) for details.", "fa_icon": "fas fa-copy", - "enum": ["symlink", "rellink", "link", "copy", "copyNoFollow", "move"], + "enum": [ + "symlink", + "rellink", + "link", + "copy", + "copyNoFollow", + "move" + ], "hidden": true }, "email_on_fail": { @@ -239,6 +255,275 @@ "fa_icon": "fas fa-bacon" } } + }, + "preprocessing_short_read_qc": { + "title": "Preprocessing - Short Read QC", + "type": "object", + "description": "", + "default": "", + "properties": { + "perform_shortread_qc": { + "type": "boolean" + }, + "shortread_qc_tool": { + "type": "string", + "default": "fastp", + "enum": [ + "fastp", + "adapterremoval" + ] + }, + "shortread_qc_skipadaptertrim": { + "type": "boolean" + }, + "shortread_qc_adapter1": { + "type": "string", + "default": "None" + }, + "shortread_qc_adapter2": { + "type": "string", + "default": "None" + }, + "shortread_qc_mergepairs": { + "type": "boolean" + }, + "shortread_qc_excludeunmerged": { + "type": "boolean" + }, + "shortread_qc_minlength": { + "type": "integer", + "default": 15 + }, + "perform_shortread_complexityfilter": { + "type": "boolean" + }, + "shortread_complexityfilter_tool": { + "type": "string", + "default": "bbduk", + "enum": [ + "bbduk", + "prinseqplusplus", + "fastp" + ] + }, + "shortread_complexityfilter_entropy": { + "type": "number", + "default": 0.3 + }, + "shortread_complexityfilter_bbduk_windowsize": { + "type": "integer", + "default": 50 + }, + "shortread_complexityfilter_bbduk_mask": { + "type": "boolean" + }, + "shortread_complexityfilter_fastp_threshold": { + "type": "integer", + "default": 30 + }, + "shortread_complexityfilter_prinseqplusplus_mode": { + "type": "string", + "default": "entropy", + "enum": [ + "entropy", + "dust" + ] + }, + "shortread_complexityfilter_prinseqplusplus_dustscore": { + "type": "number", + "default": 0.5 + }, + "save_complexityfiltered_reads": { + "type": "boolean" + } + } + }, + "profiling": { + "title": "Profiling", + "type": "object", + "description": "", + "default": "", + "properties": { + "run_malt": { + "type": "boolean" + }, + "run_diamond": { + "type": "boolean" + }, + "malt_mode": { + "type": "string", + "default": "BlastN" + }, + "kaiju_taxon_name": { + "type": "string", + "default": "species", + "enum": [ + "phylum", + "class", + "order", + "family", + "genus", + "species" + ] + }, + "run_centrifuge": { + "type": "boolean" + }, + "diamond_output_format": { + "type": "string", + "default": "tsv", + "enum": [ + "blast", + "xml", + "txt", + "daa", + "sam", + "tsv", + "paf" + ] + }, + "malt_generate_megansummary": { + "type": "boolean" + }, + "run_metaphlan3": { + "type": "boolean", + "description": "Enable MetaPhlAn for taxonomic profiling" + }, + "centrifuge_save_reads": { + "type": "boolean" + }, + "run_kaiju": { + "type": "boolean" + }, + "kraken2_save_reads": { + "type": "boolean" + }, + "diamond_save_reads": { + "type": "boolean" + }, + "malt_save_reads": { + "type": "boolean" + }, + "run_motus": { + "type": "boolean" + }, + "kraken2_save_readclassification": { + "type": "boolean" + }, + "run_kraken2": { + "type": "boolean" + } + } + }, + "preprocessing_general_qc": { + "title": "Preprocessing - General QC", + "type": "object", + "description": "", + "default": "", + "properties": { + "save_preprocessed_reads": { + "type": "boolean" + } + } + }, + "preprocessing_long_read_qc": { + "title": "Preprocessing - Long Read QC", + "type": "object", + "description": "", + "default": "", + "properties": { + "perform_longread_qc": { + "type": "boolean" + }, + "longread_qc_run_clip": { + "type": "boolean" + }, + "longread_qc_run_filter": { + "type": "boolean" + }, + "longread_qc_keep_percent": { + "type": "integer", + "default": 90 + }, + "longread_qc_target_bases": { + "type": "integer", + "default": 500000000 + }, + "longread_qc_minlength": { + "type": "integer", + "default": 1000 + }, + "longread_hostremoval_index": { + "type": "string", + "default": "None" + } + } + }, + "preprocessing_host_removal": { + "title": "Preprocessing - Host Removal", + "type": "object", + "description": "", + "default": "", + "properties": { + "perform_shortread_hostremoval": { + "type": "boolean" + }, + "hostremoval_reference": { + "type": "string", + "default": "None" + }, + "perform_longread_hostremoval": { + "type": "boolean" + }, + "save_hostremoval_mapped": { + "type": "boolean" + }, + "save_hostremoval_index": { + "type": "boolean" + }, + "save_hostremoval_unmapped": { + "type": "boolean" + }, + "shortread_hostremoval_index": { + "type": "string", + "default": "None" + } + } + }, + "preprocessing_run_merging": { + "title": "Preprocessing - Run Merging", + "type": "object", + "description": "", + "default": "", + "properties": { + "perform_runmerging": { + "type": "boolean" + }, + "save_runmerged_reads": { + "type": "boolean" + } + } + }, + "postprocessing_and_visualisation": { + "title": "Postprocessing and Visualisation", + "type": "object", + "description": "", + "default": "", + "properties": { + "run_profile_standardisation": { + "type": "boolean" + }, + "krona_taxonomy_directory": { + "type": "string", + "default": "None" + }, + "run_krona": { + "type": "boolean" + }, + "generate_biom_output": { + "type": "boolean" + } + } } }, "allOf": [ @@ -256,202 +541,27 @@ }, { "$ref": "#/definitions/generic_options" - } - ], - "properties": { - "databases": { - "type": "string", - "mimetype": "text/csv", - "format": "file-path", - "default": "None" - }, - "shortread_qc_excludeunmerged": { - "type": "boolean" - }, - "run_malt": { - "type": "boolean" - }, - "malt_mode": { - "type": "string", - "default": "BlastN" - }, - "run_kraken2": { - "type": "boolean" - }, - "run_centrifuge": { - "type": "boolean" - }, - "run_metaphlan3": { - "type": "boolean", - "description": "Enable MetaPhlAn for taxonomic profiling" - }, - "shortread_qc_tool": { - "type": "string", - "default": "fastp", - "enum": ["fastp", "adapterremoval"] - }, - "shortread_qc_skipadaptertrim": { - "type": "boolean" - }, - "shortread_qc_mergepairs": { - "type": "boolean" - }, - "shortread_qc_adapter1": { - "type": "string", - "default": "None" - }, - "shortread_qc_adapter2": { - "type": "string", - "default": "None" - }, - "shortread_qc_minlength": { - "type": "integer", - "default": 15 - }, - "save_preprocessed_reads": { - "type": "boolean" - }, - "shortread_complexityfilter_tool": { - "type": "string", - "default": "bbduk", - "enum": ["bbduk", "prinseqplusplus", "fastp"] }, - "shortread_complexityfilter_bbduk_windowsize": { - "type": "integer", - "default": 50 - }, - "shortread_complexityfilter_bbduk_mask": { - "type": "boolean" - }, - "shortread_complexityfilter_entropy": { - "type": "number", - "default": 0.3 - }, - "shortread_complexityfilter_prinseqplusplus_mode": { - "type": "string", - "default": "entropy", - "enum": ["entropy", "dust"] - }, - "shortread_complexityfilter_prinseqplusplus_dustscore": { - "type": "number", - "default": 0.5 - }, - "save_complexityfiltered_reads": { - "type": "boolean" - }, - "save_runmerged_reads": { - "type": "boolean" - }, - "perform_shortread_qc": { - "type": "boolean" - }, - "perform_longread_qc": { - "type": "boolean" - }, - "perform_shortread_complexityfilter": { - "type": "boolean" - }, - "perform_runmerging": { - "type": "boolean" - }, - "perform_shortread_hostremoval": { - "type": "boolean" - }, - "perform_longread_hostremoval": { - "type": "boolean" - }, - "hostremoval_reference": { - "type": "string", - "default": "None" - }, - "shortread_hostremoval_index": { - "type": "string", - "default": "None" - }, - "save_hostremoval_index": { - "type": "boolean" - }, - "save_hostremoval_mapped": { - "type": "boolean" - }, - "save_hostremoval_unmapped": { - "type": "boolean" - }, - "run_kaiju": { - "type": "boolean" - }, - "malt_generate_megansummary": { - "type": "boolean" - }, - "kaiju_taxon_name": { - "type": "string", - "default": "species", - "enum": ["phylum", "class", "order", "family", "genus", "species"] - }, - "run_diamond": { - "type": "boolean" - }, - "diamond_output_format": { - "type": "string", - "default": "tsv", - "enum": ["blast", "xml", "txt", "daa", "sam", "tsv", "paf"] - }, - "longread_hostremoval_index": { - "type": "string", - "default": "None" - }, - "shortread_complexityfilter_fastp_threshold": { - "type": "integer", - "default": 30 - }, - "longread_qc_run_clip": { - "type": "boolean" - }, - "longread_qc_run_filter": { - "type": "boolean" - }, - "longread_qc_minlength": { - "type": "integer", - "default": 1000 - }, - "longread_qc_keep_percent": { - "type": "integer", - "default": 90 - }, - "longread_qc_target_bases": { - "type": "integer", - "default": 500000000 - }, - "run_motus": { - "type": "boolean" - }, - "malt_save_reads": { - "type": "boolean" - }, - "kraken2_save_reads": { - "type": "boolean" - }, - "kraken2_save_readclassification": { - "type": "boolean" + { + "$ref": "#/definitions/preprocessing_short_read_qc" }, - "centrifuge_save_reads": { - "type": "boolean" + { + "$ref": "#/definitions/profiling" }, - "diamond_save_reads": { - "type": "boolean" + { + "$ref": "#/definitions/preprocessing_general_qc" }, - "run_krona": { - "type": "boolean" + { + "$ref": "#/definitions/preprocessing_long_read_qc" }, - "krona_taxonomy_directory": { - "type": "string", - "default": "None" + { + "$ref": "#/definitions/preprocessing_host_removal" }, - "run_profile_standardisation": { - "type": "boolean" + { + "$ref": "#/definitions/preprocessing_run_merging" }, - "generate_biom_output": { - "type": "boolean" + { + "$ref": "#/definitions/postprocessing_and_visualisation" } - } + ] } From d4af88e3ffb5422acaeecd9d122c61be3eda18d1 Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Thu, 25 Aug 2022 15:50:28 +0200 Subject: [PATCH 308/789] Make kaiju parameter clearer for documentation purpses and update documentation --- nextflow.config | 2 +- nextflow_schema.json | 706 +++++++++++++++++++------------- subworkflows/local/profiling.nf | 4 +- 3 files changed, 415 insertions(+), 297 deletions(-) diff --git a/nextflow.config b/nextflow.config index 4a83031..6e84548 100644 --- a/nextflow.config +++ b/nextflow.config @@ -119,7 +119,7 @@ params { // kaiju run_kaiju = false - kaiju_taxon_name = 'species' + kaiju_taxon_rank = 'species' // diamond run_diamond = false diff --git a/nextflow_schema.json b/nextflow_schema.json index 70cee15..3bc7e3e 100644 --- a/nextflow_schema.json +++ b/nextflow_schema.json @@ -12,6 +12,7 @@ "description": "Define where the pipeline should find input data and save output data.", "required": [ "input", + "databases", "outdir" ], "properties": { @@ -21,15 +22,17 @@ "mimetype": "text/csv", "pattern": "^\\S+\\.csv$", "schema": "assets/schema_input.json", - "description": "Path to comma-separated file containing information about the samples in the experiment.", - "help_text": "You will need to create a design file with information about the samples in your experiment before running the pipeline. Use this parameter to specify its location. It has to be a comma-separated file with 3 columns, and a header row. See [usage docs](https://nf-co.re/taxprofiler/usage#samplesheet-input).", + "description": "Path to comma-separated file containing information about the samples and libraries/runs.", + "help_text": "You will need to create a design file with information about the samples and libraries/runs you want to running in your pipeline run. Use this parameter to specify its location. It has to be a comma-separated file with 6 columns, and a header row. See [usage docs](https://nf-co.re/taxprofiler/usage#samplesheet-input).", "fa_icon": "fas fa-file-csv" }, "databases": { "type": "string", "mimetype": "text/csv", "format": "file-path", - "default": "None" + "fa_icon": "fas fa-database", + "description": "Path to comma-separated file containing information about databases and profiling parameters for each taxonomic profiler", + "help_text": "You will need to create a design file with information about the samples in your experiment before running the pipeline. Use this parameter to specify its location. It has to be a comma-separated file with 4 columns, and a header row. See [usage docs](https://nf-co.re/taxprofiler/dev/usage#full-database-sheet).\n\nProfilers will only be executed if a corresponding database are supplied. \n\nWe recommend storing this database sheet somewhere centrally and accessible by others members of your lab/institutions, as this file will likely be regularly reused." }, "outdir": { "type": "string", @@ -51,35 +54,389 @@ } } }, - "reference_genome_options": { - "title": "Reference genome options", + "preprocessing_general_qc_options": { + "title": "Preprocessing general QC options", "type": "object", - "fa_icon": "fas fa-dna", - "description": "Reference genome related files and options required for the workflow.", + "description": "Common options across both long and short read preprocessing QC steps", + "default": "", "properties": { - "genome": { + "save_preprocessed_reads": { + "type": "boolean", + "fa_icon": "fas fa-save", + "description": "Save reads from adapter clipping/pair-merging, length filtering for both short and long reads", + "help_text": "This saves the FASTQ output from the following tools:\n\n- FastP\n- AdapterRemoval\n- PoreChop\n- FiltLong\n\nThese reads will be a mixture of: adapter clipped, quality trimmed, pair-merged, and length filtered, depending on the parameters you set." + } + }, + "fa_icon": "fas fa-users-cog" + }, + "preprocessing_short_read_qc_options": { + "title": "Preprocessing short-read QC options", + "type": "object", + "description": "Options for adapter clipping, quality trimming, pair-merging, and complexity filtering", + "default": "", + "properties": { + "perform_shortread_qc": { + "type": "boolean", + "fa_icon": "fas fa-toggle-on", + "description": "Turns on short read quality control steps (adapter clipping, complexity filtering etc.)" + }, + "shortread_qc_tool": { "type": "string", - "description": "Name of iGenomes reference.", - "fa_icon": "fas fa-book", - "help_text": "If using a reference genome configured in the pipeline using iGenomes, use this parameter to give the ID for the reference. This is then used to build the full paths for all required reference genome files e.g. `--genome GRCh38`. \n\nSee the [nf-core website docs](https://nf-co.re/usage/reference_genomes) for more details.", - "hidden": true + "default": "fastp", + "enum": [ + "fastp", + "adapterremoval" + ], + "fa_icon": "fas fa-tools", + "description": "Specify which tool to use for read QC" }, - "igenomes_base": { + "shortread_qc_skipadaptertrim": { + "type": "boolean", + "fa_icon": "fas fa-forward", + "description": "Skip adapter trimming" + }, + "shortread_qc_adapter1": { "type": "string", - "format": "directory-path", - "description": "Directory / URL base for iGenomes references.", - "default": "s3://ngi-igenomes/igenomes", - "fa_icon": "fas fa-cloud-download-alt", - "hidden": true + "default": "None", + "fa_icon": "fas fa-grip-lines", + "description": "Specify adapter 1 nucleotide sequence" }, - "igenomes_ignore": { + "shortread_qc_adapter2": { + "type": "string", + "default": "None", + "fa_icon": "fas fa-grip-lines", + "description": "Specify adapter 2 nucleotide sequence" + }, + "shortread_qc_mergepairs": { "type": "boolean", - "description": "Do not load the iGenomes reference config.", - "fa_icon": "fas fa-ban", - "hidden": true, - "help_text": "Do not load `igenomes.config` when running the pipeline. You may choose this option if you observe clashes between custom parameters and those supplied in `igenomes.config`." + "fa_icon": "fas fa-toggle-on", + "description": "Turn on merging of read pairs for paired-end data" + }, + "shortread_qc_excludeunmerged": { + "type": "boolean", + "fa_icon": "far fa-times-circle", + "description": "Discard unmerged reads from paired-end merging" + }, + "shortread_qc_minlength": { + "type": "integer", + "default": 15, + "fa_icon": "fas fa-ruler-horizontal", + "description": "Specify the minimum length of reads" + }, + "perform_shortread_complexityfilter": { + "type": "boolean", + "fa_icon": "fas fa-toggle-on", + "description": "Turns on nucleotide sequence complexity filtering" + }, + "shortread_complexityfilter_tool": { + "type": "string", + "default": "bbduk", + "enum": [ + "bbduk", + "prinseqplusplus", + "fastp" + ], + "fa_icon": "fas fa-hammer", + "description": "Specify which tool to use for complexity filtering" + }, + "shortread_complexityfilter_entropy": { + "type": "number", + "default": 0.3, + "fa_icon": "fas fa-random", + "description": "Specify the minimum sequence entropy level for complexity filtering" + }, + "shortread_complexityfilter_bbduk_windowsize": { + "type": "integer", + "default": 50, + "fa_icon": "far fa-window-maximize", + "description": "Specify the window size for BBDuk complexity filtering" + }, + "shortread_complexityfilter_bbduk_mask": { + "type": "boolean", + "fa_icon": "fas fa-mask", + "description": "Turn on masking rather than discarding of low complexity reads for BBduk" + }, + "shortread_complexityfilter_fastp_threshold": { + "type": "integer", + "default": 30, + "fa_icon": "fas fa-sort-numeric-down", + "description": "Specify the minimum complexity filter threshold of Fastp" + }, + "shortread_complexityfilter_prinseqplusplus_mode": { + "type": "string", + "default": "entropy", + "enum": [ + "entropy", + "dust" + ], + "fa_icon": "fas fa-check-square", + "description": "Specify the complexity filter mode for PRINSEQ++" + }, + "shortread_complexityfilter_prinseqplusplus_dustscore": { + "type": "number", + "default": 0.5, + "fa_icon": "fas fa-head-side-mask", + "description": "Specify the minimum dust score for PRINTSEQ++ complexity filtering" + }, + "save_complexityfiltered_reads": { + "type": "boolean", + "fa_icon": "fas fa-save", + "description": "Save complexity filtered short-reads" } - } + }, + "fa_icon": "fas fa-compress-alt" + }, + "preprocessing_long_read_qc_options": { + "title": "Preprocessing long-read QC options", + "type": "object", + "description": "Options for adapter clipping, quality trimming, and length filtering", + "default": "", + "properties": { + "perform_longread_qc": { + "type": "boolean", + "fa_icon": "fas fa-toggle-on", + "description": "Turns on long read quality control steps (adapter clipping, length filtering etc.)" + }, + "longread_qc_run_clip": { + "type": "boolean", + "fa_icon": "fas fa-toggle-on", + "description": "Turn on long-read adapter clipping" + }, + "longread_qc_run_filter": { + "type": "boolean", + "fa_icon": "fas fa-toggle-on", + "description": "Turn on Filtlong long-read length filtering" + }, + "longread_qc_keep_percent": { + "type": "integer", + "default": 90, + "fa_icon": "fas fa-percent", + "description": "Specify minimum percentage of high-quality reads to keep during filtering" + }, + "longread_qc_target_bases": { + "type": "integer", + "default": 500000000, + "fa_icon": "fas fa-bullseye", + "description": "Specify the target number of high-quality bases to retain overall during filtering" + }, + "longread_qc_minlength": { + "type": "integer", + "default": 1000, + "fa_icon": "fas fa-ruler-horizontal", + "description": "Specify the minimum length of long-reads to retain during filtering" + } + }, + "fa_icon": "fas fa-expand-alt" + }, + "preprocessing_host_removal_options": { + "title": "Preprocessing host removal options", + "type": "object", + "description": "Options for pre-profiling host read removal", + "default": "", + "properties": { + "perform_shortread_hostremoval": { + "type": "boolean", + "fa_icon": "fas fa-toggle-on", + "description": "Turn on short-read host removal" + }, + "perform_longread_hostremoval": { + "type": "boolean", + "fa_icon": "fas fa-toggle-on", + "description": "Turn on long-read host removal" + }, + "hostremoval_reference": { + "type": "string", + "default": "None", + "fa_icon": "fas fa-file-alt", + "description": "Specify path to single reference FASTA of host(s) genome(s)" + }, + "shortread_hostremoval_index": { + "type": "string", + "default": "None", + "fa_icon": "fas fa-address-book", + "description": "Specify path to the directory containing pre-made BowTie2 indexes of the host removal reference" + }, + "longread_hostremoval_index": { + "type": "string", + "default": "None", + "fa_icon": "fas fa-address-book", + "description": "Specify path to the directory containing pre-made Minimap2 indexes of the host removal reference" + }, + "save_hostremoval_index": { + "type": "boolean", + "fa_icon": "fas fa-save", + "description": "Save mapping index of input reference when not already supplied by user" + }, + "save_hostremoval_mapped": { + "type": "boolean", + "fa_icon": "fas fa-save", + "description": "Save mapped reads in BAM format from host removal" + }, + "save_hostremoval_unmapped": { + "type": "boolean", + "fa_icon": "fas fa-save", + "description": "Save unmapped reads in FASTQ format from host removal" + } + }, + "fa_icon": "fas fa-user-times" + }, + "preprocessing_run_merging_options": { + "title": "Preprocessing run merging options", + "type": "object", + "description": "Options for per-sample run-merging", + "default": "", + "properties": { + "perform_runmerging": { + "type": "boolean", + "fa_icon": "fas fa-toggle-on", + "description": "Turn on run merging" + }, + "save_runmerged_reads": { + "type": "boolean", + "fa_icon": "fas fa-save", + "description": "Save run-concatenated input FASTQ files for each sample" + } + }, + "fa_icon": "fas fa-clipboard-check" + }, + "profiling_options": { + "title": "Profiling options", + "type": "object", + "description": "", + "default": "", + "properties": { + "run_centrifuge": { + "type": "boolean", + "fa_icon": "fas fa-toggle-on", + "description": "Turn on profiling with Centrifuge. Requires database to be present CSV file passed to --databases" + }, + "centrifuge_save_reads": { + "type": "boolean", + "fa_icon": "fas fa-save", + "description": "Turn on saving of Centrifuge-aligned reads" + }, + "run_diamond": { + "type": "boolean", + "fa_icon": "fas fa-toggle-on", + "description": "Turn on profiling with DIAMOND. Requires database to be present CSV file passed to --databases" + }, + "diamond_output_format": { + "type": "string", + "default": "tsv", + "enum": [ + "blast", + "xml", + "txt", + "daa", + "sam", + "tsv", + "paf" + ], + "fa_icon": "fas fa-file", + "description": "Specify output format from DIAMOND profiling." + }, + "diamond_save_reads": { + "type": "boolean", + "fa_icon": "fas fa-save", + "description": "Turn on saving of DIAMOND-aligned reads. Will override --diamond_output_format and no taxon tables will be generated" + }, + "run_kaiju": { + "type": "boolean", + "fa_icon": "fas fa-toggle-on", + "description": "Turn on profiling with Kaiju. Requires database to be present CSV file passed to --databases" + }, + "kaiju_taxon_rank": { + "type": "string", + "default": "species", + "enum": [ + "phylum", + "class", + "order", + "family", + "genus", + "species" + ], + "fa_icon": "fas fa-tag", + "description": "Specify taxonomic rank to be displayed in Kaiju taxon table" + }, + "run_kraken2": { + "type": "boolean", + "fa_icon": "fas fa-toggle-on", + "description": "Turn on profiling with Kraken2. Requires database to be present CSV file passed to --databases" + }, + "kraken2_save_reads": { + "type": "boolean", + "fa_icon": "fas fa-save", + "description": "Turn on saving of Kraken2-aligned reads" + }, + "kraken2_save_readclassification": { + "type": "boolean", + "fa_icon": "fas fa-save", + "description": "Turn on saving of Kraken2 per-read taxonomic assignment file" + }, + "run_malt": { + "type": "boolean", + "fa_icon": "fas fa-toggle-on", + "description": "Turn on profiling with MALT. Requires database to be present CSV file passed to --databases" + }, + "malt_mode": { + "type": "string", + "default": "BlastN", + "fa_icon": "fas fa-check-square", + "description": "Specify which MALT alignment mode to use" + }, + "malt_save_reads": { + "type": "boolean", + "fa_icon": "fas fa-save", + "description": "Turn on saving of MALT-aligned reads" + }, + "malt_generate_megansummary": { + "type": "boolean", + "fa_icon": "fas fa-save", + "description": "Turn on generation of MEGAN summary file from MALT results" + }, + "run_metaphlan3": { + "type": "boolean", + "description": "Turn on profiling with MetaPhlAn3. Requires database to be present CSV file passed to --databases", + "fa_icon": "fas fa-toggle-on" + }, + "run_motus": { + "type": "boolean", + "fa_icon": "fas fa-toggle-on", + "description": "Turn on profiling with mOTUs. Requires database to be present CSV file passed to --databases" + } + }, + "fa_icon": "fas fa-align-center" + }, + "postprocessing_and_visualisation_options": { + "title": "Postprocessing and visualisation options", + "type": "object", + "description": "", + "default": "", + "properties": { + "run_profile_standardisation": { + "type": "boolean", + "fa_icon": "fas fa-toggle-on", + "description": "Turn on standardisation of taxon tables across profilers" + }, + "generate_biom_output": { + "type": "boolean", + "fa_icon": "fas fa-toggle-on", + "description": "Turn on generation of BIOM output (currently only applies to mOTUs)" + }, + "run_krona": { + "type": "boolean", + "fa_icon": "fas fa-toggle-on", + "description": "Turn on generation of Krona plots for supported profilers" + }, + "krona_taxonomy_directory": { + "type": "string", + "default": "None", + "fa_icon": "fas fa-folder-open", + "description": "Specify path to krona taxonomy directories (required for MALT krona plots)" + } + }, + "fa_icon": "fas fa-chart-line" }, "institutional_config_options": { "title": "Institutional config options", @@ -256,272 +613,33 @@ } } }, - "preprocessing_short_read_qc": { - "title": "Preprocessing - Short Read QC", - "type": "object", - "description": "", - "default": "", - "properties": { - "perform_shortread_qc": { - "type": "boolean" - }, - "shortread_qc_tool": { - "type": "string", - "default": "fastp", - "enum": [ - "fastp", - "adapterremoval" - ] - }, - "shortread_qc_skipadaptertrim": { - "type": "boolean" - }, - "shortread_qc_adapter1": { - "type": "string", - "default": "None" - }, - "shortread_qc_adapter2": { - "type": "string", - "default": "None" - }, - "shortread_qc_mergepairs": { - "type": "boolean" - }, - "shortread_qc_excludeunmerged": { - "type": "boolean" - }, - "shortread_qc_minlength": { - "type": "integer", - "default": 15 - }, - "perform_shortread_complexityfilter": { - "type": "boolean" - }, - "shortread_complexityfilter_tool": { - "type": "string", - "default": "bbduk", - "enum": [ - "bbduk", - "prinseqplusplus", - "fastp" - ] - }, - "shortread_complexityfilter_entropy": { - "type": "number", - "default": 0.3 - }, - "shortread_complexityfilter_bbduk_windowsize": { - "type": "integer", - "default": 50 - }, - "shortread_complexityfilter_bbduk_mask": { - "type": "boolean" - }, - "shortread_complexityfilter_fastp_threshold": { - "type": "integer", - "default": 30 - }, - "shortread_complexityfilter_prinseqplusplus_mode": { - "type": "string", - "default": "entropy", - "enum": [ - "entropy", - "dust" - ] - }, - "shortread_complexityfilter_prinseqplusplus_dustscore": { - "type": "number", - "default": 0.5 - }, - "save_complexityfiltered_reads": { - "type": "boolean" - } - } - }, - "profiling": { - "title": "Profiling", + "reference_genome_options": { + "title": "Reference genome options", "type": "object", - "description": "", - "default": "", + "fa_icon": "fas fa-dna", + "description": "Reference genome related files and options required for the workflow.", "properties": { - "run_malt": { - "type": "boolean" - }, - "run_diamond": { - "type": "boolean" - }, - "malt_mode": { - "type": "string", - "default": "BlastN" - }, - "kaiju_taxon_name": { + "genome": { "type": "string", - "default": "species", - "enum": [ - "phylum", - "class", - "order", - "family", - "genus", - "species" - ] - }, - "run_centrifuge": { - "type": "boolean" + "description": "Name of iGenomes reference.", + "fa_icon": "fas fa-book", + "help_text": "If using a reference genome configured in the pipeline using iGenomes, use this parameter to give the ID for the reference. This is then used to build the full paths for all required reference genome files e.g. `--genome GRCh38`. \n\nSee the [nf-core website docs](https://nf-co.re/usage/reference_genomes) for more details.", + "hidden": true }, - "diamond_output_format": { + "igenomes_base": { "type": "string", - "default": "tsv", - "enum": [ - "blast", - "xml", - "txt", - "daa", - "sam", - "tsv", - "paf" - ] - }, - "malt_generate_megansummary": { - "type": "boolean" + "format": "directory-path", + "description": "Directory / URL base for iGenomes references.", + "default": "s3://ngi-igenomes/igenomes", + "fa_icon": "fas fa-cloud-download-alt", + "hidden": true }, - "run_metaphlan3": { + "igenomes_ignore": { "type": "boolean", - "description": "Enable MetaPhlAn for taxonomic profiling" - }, - "centrifuge_save_reads": { - "type": "boolean" - }, - "run_kaiju": { - "type": "boolean" - }, - "kraken2_save_reads": { - "type": "boolean" - }, - "diamond_save_reads": { - "type": "boolean" - }, - "malt_save_reads": { - "type": "boolean" - }, - "run_motus": { - "type": "boolean" - }, - "kraken2_save_readclassification": { - "type": "boolean" - }, - "run_kraken2": { - "type": "boolean" - } - } - }, - "preprocessing_general_qc": { - "title": "Preprocessing - General QC", - "type": "object", - "description": "", - "default": "", - "properties": { - "save_preprocessed_reads": { - "type": "boolean" - } - } - }, - "preprocessing_long_read_qc": { - "title": "Preprocessing - Long Read QC", - "type": "object", - "description": "", - "default": "", - "properties": { - "perform_longread_qc": { - "type": "boolean" - }, - "longread_qc_run_clip": { - "type": "boolean" - }, - "longread_qc_run_filter": { - "type": "boolean" - }, - "longread_qc_keep_percent": { - "type": "integer", - "default": 90 - }, - "longread_qc_target_bases": { - "type": "integer", - "default": 500000000 - }, - "longread_qc_minlength": { - "type": "integer", - "default": 1000 - }, - "longread_hostremoval_index": { - "type": "string", - "default": "None" - } - } - }, - "preprocessing_host_removal": { - "title": "Preprocessing - Host Removal", - "type": "object", - "description": "", - "default": "", - "properties": { - "perform_shortread_hostremoval": { - "type": "boolean" - }, - "hostremoval_reference": { - "type": "string", - "default": "None" - }, - "perform_longread_hostremoval": { - "type": "boolean" - }, - "save_hostremoval_mapped": { - "type": "boolean" - }, - "save_hostremoval_index": { - "type": "boolean" - }, - "save_hostremoval_unmapped": { - "type": "boolean" - }, - "shortread_hostremoval_index": { - "type": "string", - "default": "None" - } - } - }, - "preprocessing_run_merging": { - "title": "Preprocessing - Run Merging", - "type": "object", - "description": "", - "default": "", - "properties": { - "perform_runmerging": { - "type": "boolean" - }, - "save_runmerged_reads": { - "type": "boolean" - } - } - }, - "postprocessing_and_visualisation": { - "title": "Postprocessing and Visualisation", - "type": "object", - "description": "", - "default": "", - "properties": { - "run_profile_standardisation": { - "type": "boolean" - }, - "krona_taxonomy_directory": { - "type": "string", - "default": "None" - }, - "run_krona": { - "type": "boolean" - }, - "generate_biom_output": { - "type": "boolean" + "description": "Do not load the iGenomes reference config.", + "fa_icon": "fas fa-ban", + "hidden": true, + "help_text": "Do not load `igenomes.config` when running the pipeline. You may choose this option if you observe clashes between custom parameters and those supplied in `igenomes.config`." } } } @@ -531,37 +649,37 @@ "$ref": "#/definitions/input_output_options" }, { - "$ref": "#/definitions/reference_genome_options" + "$ref": "#/definitions/preprocessing_general_qc_options" }, { - "$ref": "#/definitions/institutional_config_options" + "$ref": "#/definitions/preprocessing_short_read_qc_options" }, { - "$ref": "#/definitions/max_job_request_options" + "$ref": "#/definitions/preprocessing_long_read_qc_options" }, { - "$ref": "#/definitions/generic_options" + "$ref": "#/definitions/preprocessing_host_removal_options" }, { - "$ref": "#/definitions/preprocessing_short_read_qc" + "$ref": "#/definitions/preprocessing_run_merging_options" }, { - "$ref": "#/definitions/profiling" + "$ref": "#/definitions/profiling_options" }, { - "$ref": "#/definitions/preprocessing_general_qc" + "$ref": "#/definitions/postprocessing_and_visualisation_options" }, { - "$ref": "#/definitions/preprocessing_long_read_qc" + "$ref": "#/definitions/institutional_config_options" }, { - "$ref": "#/definitions/preprocessing_host_removal" + "$ref": "#/definitions/max_job_request_options" }, { - "$ref": "#/definitions/preprocessing_run_merging" + "$ref": "#/definitions/generic_options" }, { - "$ref": "#/definitions/postprocessing_and_visualisation" + "$ref": "#/definitions/reference_genome_options" } ] } diff --git a/subworkflows/local/profiling.nf b/subworkflows/local/profiling.nf index a9fe76d..61aa394 100644 --- a/subworkflows/local/profiling.nf +++ b/subworkflows/local/profiling.nf @@ -185,7 +185,7 @@ workflow PROFILING { } KAIJU_KAIJU ( ch_input_for_kaiju.reads, ch_input_for_kaiju.db) - KAIJU_KAIJU2TABLE (KAIJU_KAIJU.out.results, ch_input_for_kaiju.db, params.kaiju_taxon_name) + KAIJU_KAIJU2TABLE (KAIJU_KAIJU.out.results, ch_input_for_kaiju.db, params.kaiju_taxon_rank) ch_multiqc_files = ch_multiqc_files.mix( KAIJU_KAIJU2TABLE.out.summary ) ch_versions = ch_versions.mix( KAIJU_KAIJU.out.versions.first() ) ch_raw_classifications = ch_raw_classifications.mix( KAIJU_KAIJU.out.results ) @@ -209,7 +209,7 @@ workflow PROFILING { DIAMOND_BLASTX ( ch_input_for_diamond.reads, ch_input_for_diamond.db, ch_diamond_reads_format , [] ) ch_versions = ch_versions.mix( DIAMOND_BLASTX.out.versions.first() ) ch_raw_profiles = ch_raw_profiles.mix( DIAMOND_BLASTX.out.tsv ) - ch_multiqc_files = ch_multiqc_files.mix( DIAMOND_BLASTX.out.log ) + ch_multiqc_files = ch_multiqc_files.mix( DIAMOND_BLASTX.out.log ) } From 2cc07183a0bfe666b2ba2c12728e5a9755f8ea30 Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Tue, 30 Aug 2022 13:58:58 +0200 Subject: [PATCH 309/789] Standardise QC parameter system and turn on both porechop/filtlong in tests --- conf/modules.config | 6 +++--- conf/test.config | 3 +++ conf/test_noprofiling.config | 3 +++ nextflow.config | 12 ++++++------ nextflow_schema.json | 10 +++++----- subworkflows/local/longread_preprocessing.nf | 4 ++-- workflows/taxprofiler.nf | 2 +- 7 files changed, 23 insertions(+), 17 deletions(-) diff --git a/conf/modules.config b/conf/modules.config index 1f4914d..43f7ebb 100644 --- a/conf/modules.config +++ b/conf/modules.config @@ -136,9 +136,9 @@ process { withName: FILTLONG { ext.args = [ - "--min_length ${params.longread_qc_minlength}", - "--keep_percent ${params.longread_qc_keep_percent}", - "--target_bases ${params.longread_qc_target_bases}" + "--min_length ${params.longread_qc_qualityfilter_minlength}", + "--keep_percent ${params.longread_qc_qualityfilter_keeppercent}", + "--target_bases ${params.longread_qc_qualityfilter_targetbases}" ] .join(' ').trim() ext.prefix = { "${meta.id}_${meta.run_accession}_filtered" } diff --git a/conf/test.config b/conf/test.config index 6aaf058..5ea319a 100644 --- a/conf/test.config +++ b/conf/test.config @@ -26,6 +26,9 @@ params { databases = 'https://raw.githubusercontent.com/nf-core/test-datasets/taxprofiler/database.csv' perform_shortread_qc = true perform_longread_qc = true + shortread_qc_mergepairs = true + longread_qc_skipadaptertrim = false + longread_qc_qualityfilter = true perform_shortread_complexityfilter = true perform_shortread_hostremoval = true perform_longread_hostremoval = true diff --git a/conf/test_noprofiling.config b/conf/test_noprofiling.config index 86d8e70..0b3e9ce 100644 --- a/conf/test_noprofiling.config +++ b/conf/test_noprofiling.config @@ -26,6 +26,9 @@ params { databases = 'https://raw.githubusercontent.com/nf-core/test-datasets/taxprofiler/database.csv' perform_shortread_qc = true perform_longread_qc = true + shortread_qc_mergepairs = true + longread_qc_skipadaptertrim = false + longread_qc_qualityfilter = true perform_shortread_complexityfilter = true perform_shortread_hostremoval = true perform_longread_hostremoval = true diff --git a/nextflow.config b/nextflow.config index 4a83031..d188dbc 100644 --- a/nextflow.config +++ b/nextflow.config @@ -64,12 +64,12 @@ params { shortread_qc_adapter2 = null shortread_qc_minlength = 15 - perform_longread_qc = false - longread_qc_run_clip = false - longread_qc_run_filter = false - longread_qc_minlength = 1000 - longread_qc_keep_percent = 90 - longread_qc_target_bases = 500000000 + perform_longread_qc = false + longread_qc_skipadaptertrim = false + longread_qc_qualityfilter = false + longread_qc_qualityfilter_minlength = 1000 + longread_qc_qualityfilter_keeppercent = 90 + longread_qc_qualityfilter_targetbases = 500000000 save_preprocessed_reads = false diff --git a/nextflow_schema.json b/nextflow_schema.json index b4cb837..ae8b694 100644 --- a/nextflow_schema.json +++ b/nextflow_schema.json @@ -404,21 +404,21 @@ "type": "integer", "default": 30 }, - "longread_qc_run_clip": { + "longread_qc_skipadaptertrim": { "type": "boolean" }, - "longread_qc_run_filter": { + "longread_qc_qualityfilter": { "type": "boolean" }, - "longread_qc_minlength": { + "longread_qc_qualityfilter_minlength": { "type": "integer", "default": 1000 }, - "longread_qc_keep_percent": { + "longread_qc_qualityfilter_keeppercent": { "type": "integer", "default": 90 }, - "longread_qc_target_bases": { + "longread_qc_qualityfilter_targetbases": { "type": "integer", "default": 500000000 }, diff --git a/subworkflows/local/longread_preprocessing.nf b/subworkflows/local/longread_preprocessing.nf index 3464167..9d72a6b 100644 --- a/subworkflows/local/longread_preprocessing.nf +++ b/subworkflows/local/longread_preprocessing.nf @@ -14,7 +14,7 @@ workflow LONGREAD_PREPROCESSING { ch_versions = Channel.empty() ch_multiqc_files = Channel.empty() - if ( params.longread_qc_run_clip && !params.longread_qc_run_filter ) { + if ( !params.longread_qc_skipadaptertrim && !params.longread_qc_qualityfilter ) { PORECHOP ( reads ) ch_processed_reads = PORECHOP.out.reads @@ -28,7 +28,7 @@ workflow LONGREAD_PREPROCESSING { ch_versions = ch_versions.mix(PORECHOP.out.versions.first()) ch_multiqc_files = ch_multiqc_files.mix( PORECHOP.out.log ) - } else if ( !params.longread_qc_run_clip && params.longread_qc_run_filter ) { + } else if ( params.longread_qc_skipadaptertrim && params.longread_qc_qualityfilter ) { ch_processed_reads = FILTLONG ( reads.map{ meta, reads -> [meta, [], reads ]} ) ch_versions = ch_versions.mix(FILTLONG.out.versions.first()) diff --git a/workflows/taxprofiler.nf b/workflows/taxprofiler.nf index b6f3a37..500eab3 100644 --- a/workflows/taxprofiler.nf +++ b/workflows/taxprofiler.nf @@ -22,7 +22,7 @@ if (params.databases) { ch_databases = file(params.databases) } else { exit 1, ' if (params.shortread_qc_mergepairs && params.run_malt ) log.warn "[nf-core/taxprofiler] MALT does not accept uncollapsed paired-reads. Pairs will be profiled as separate files." if (params.shortread_qc_excludeunmerged && !params.shortread_qc_mergepairs) exit 1, "ERROR: [nf-core/taxprofiler] cannot include unmerged reads when merging not turned on. Please specify --shortread_qc_mergepairs" -if ( (params.longread_qc_run_clip || params.longread_qc_run_filter) & !params.perform_longread_qc ) exit 1, "ERROR: [nf-core/taxprofiler] --longread_qc_run_clip or --longread_qc_run_filter requested but quality-control not turned on. Please specify --perform_long_qc" +if ( (!params.longread_qc_skipadaptertrim || params.longread_qc_qualityfilter) & !params.perform_longread_qc ) exit 1, "ERROR: [nf-core/taxprofiler] --longread_qc_skipadaptertrim false or --longread_qc_qualityfilter requested but quality-control not turned on. Please specify --perform_long_qc" if (params.shortread_complexityfilter_tool == 'fastp' && ( params.perform_shortread_qc == false || params.shortread_qc_tool != 'fastp' )) exit 1, "ERROR: [nf-core/taxprofiler] cannot use fastp complexity filtering if preprocessing not turned on and/or tool is not fastp. Please specify --perform_shortread_qc and/or --shortread_qc_tool 'fastp'" From 95ad3801733773bae9e43e584a4c6a5180b84a3f Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Tue, 30 Aug 2022 14:01:52 +0200 Subject: [PATCH 310/789] Turn of length filtering by default for short read (to match opt in for longread qc) --- nextflow.config | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/nextflow.config b/nextflow.config index d188dbc..700beef 100644 --- a/nextflow.config +++ b/nextflow.config @@ -62,7 +62,7 @@ params { shortread_qc_excludeunmerged = false shortread_qc_adapter1 = null shortread_qc_adapter2 = null - shortread_qc_minlength = 15 + shortread_qc_minlength = 0 perform_longread_qc = false longread_qc_skipadaptertrim = false From afba604e8b54496298d3abdec96bfb615670f854 Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Tue, 30 Aug 2022 14:04:34 +0200 Subject: [PATCH 311/789] Make everything within opt-out, once QC is opted-in --- conf/test.config | 2 -- conf/test_noprofiling.config | 2 -- nextflow.config | 6 +++--- 3 files changed, 3 insertions(+), 7 deletions(-) diff --git a/conf/test.config b/conf/test.config index 5ea319a..dac0e81 100644 --- a/conf/test.config +++ b/conf/test.config @@ -27,8 +27,6 @@ params { perform_shortread_qc = true perform_longread_qc = true shortread_qc_mergepairs = true - longread_qc_skipadaptertrim = false - longread_qc_qualityfilter = true perform_shortread_complexityfilter = true perform_shortread_hostremoval = true perform_longread_hostremoval = true diff --git a/conf/test_noprofiling.config b/conf/test_noprofiling.config index 0b3e9ce..12c7185 100644 --- a/conf/test_noprofiling.config +++ b/conf/test_noprofiling.config @@ -27,8 +27,6 @@ params { perform_shortread_qc = true perform_longread_qc = true shortread_qc_mergepairs = true - longread_qc_skipadaptertrim = false - longread_qc_qualityfilter = true perform_shortread_complexityfilter = true perform_shortread_hostremoval = true perform_longread_hostremoval = true diff --git a/nextflow.config b/nextflow.config index 700beef..087c879 100644 --- a/nextflow.config +++ b/nextflow.config @@ -58,15 +58,15 @@ params { perform_shortread_qc = false shortread_qc_tool = 'fastp' shortread_qc_skipadaptertrim = false - shortread_qc_mergepairs = false + shortread_qc_mergepairs = true shortread_qc_excludeunmerged = false shortread_qc_adapter1 = null shortread_qc_adapter2 = null - shortread_qc_minlength = 0 + shortread_qc_minlength = 15 perform_longread_qc = false longread_qc_skipadaptertrim = false - longread_qc_qualityfilter = false + longread_qc_qualityfilter = true longread_qc_qualityfilter_minlength = 1000 longread_qc_qualityfilter_keeppercent = 90 longread_qc_qualityfilter_targetbases = 500000000 From 3f8f32cba8a8811946f692413ae3794e9d1ae2f4 Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Tue, 30 Aug 2022 14:08:05 +0200 Subject: [PATCH 312/789] Make longread quality ftilering opt out --- nextflow.config | 2 +- nextflow_schema.json | 8 ++++---- subworkflows/local/longread_preprocessing.nf | 4 ++-- workflows/taxprofiler.nf | 2 +- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/nextflow.config b/nextflow.config index 087c879..4ed3ecb 100644 --- a/nextflow.config +++ b/nextflow.config @@ -66,7 +66,7 @@ params { perform_longread_qc = false longread_qc_skipadaptertrim = false - longread_qc_qualityfilter = true + longread_qc_skipqualityfilter = true longread_qc_qualityfilter_minlength = 1000 longread_qc_qualityfilter_keeppercent = 90 longread_qc_qualityfilter_targetbases = 500000000 diff --git a/nextflow_schema.json b/nextflow_schema.json index ae8b694..64c64f0 100644 --- a/nextflow_schema.json +++ b/nextflow_schema.json @@ -407,18 +407,18 @@ "longread_qc_skipadaptertrim": { "type": "boolean" }, - "longread_qc_qualityfilter": { + "longread_qc_skipqualityfilter": { "type": "boolean" }, - "longread_qc_qualityfilter_minlength": { + "longread_qc_skipqualityfilter_minlength": { "type": "integer", "default": 1000 }, - "longread_qc_qualityfilter_keeppercent": { + "longread_qc_skipqualityfilter_keeppercent": { "type": "integer", "default": 90 }, - "longread_qc_qualityfilter_targetbases": { + "longread_qc_skipqualityfilter_targetbases": { "type": "integer", "default": 500000000 }, diff --git a/subworkflows/local/longread_preprocessing.nf b/subworkflows/local/longread_preprocessing.nf index 9d72a6b..c04207e 100644 --- a/subworkflows/local/longread_preprocessing.nf +++ b/subworkflows/local/longread_preprocessing.nf @@ -14,7 +14,7 @@ workflow LONGREAD_PREPROCESSING { ch_versions = Channel.empty() ch_multiqc_files = Channel.empty() - if ( !params.longread_qc_skipadaptertrim && !params.longread_qc_qualityfilter ) { + if ( !params.longread_qc_skipadaptertrim && params.longread_qc_skipqualityfilter) { PORECHOP ( reads ) ch_processed_reads = PORECHOP.out.reads @@ -28,7 +28,7 @@ workflow LONGREAD_PREPROCESSING { ch_versions = ch_versions.mix(PORECHOP.out.versions.first()) ch_multiqc_files = ch_multiqc_files.mix( PORECHOP.out.log ) - } else if ( params.longread_qc_skipadaptertrim && params.longread_qc_qualityfilter ) { + } else if ( params.longread_qc_skipadaptertrim && !params.longread_qc_skipqualityfilter) { ch_processed_reads = FILTLONG ( reads.map{ meta, reads -> [meta, [], reads ]} ) ch_versions = ch_versions.mix(FILTLONG.out.versions.first()) diff --git a/workflows/taxprofiler.nf b/workflows/taxprofiler.nf index 500eab3..4744af5 100644 --- a/workflows/taxprofiler.nf +++ b/workflows/taxprofiler.nf @@ -22,7 +22,7 @@ if (params.databases) { ch_databases = file(params.databases) } else { exit 1, ' if (params.shortread_qc_mergepairs && params.run_malt ) log.warn "[nf-core/taxprofiler] MALT does not accept uncollapsed paired-reads. Pairs will be profiled as separate files." if (params.shortread_qc_excludeunmerged && !params.shortread_qc_mergepairs) exit 1, "ERROR: [nf-core/taxprofiler] cannot include unmerged reads when merging not turned on. Please specify --shortread_qc_mergepairs" -if ( (!params.longread_qc_skipadaptertrim || params.longread_qc_qualityfilter) & !params.perform_longread_qc ) exit 1, "ERROR: [nf-core/taxprofiler] --longread_qc_skipadaptertrim false or --longread_qc_qualityfilter requested but quality-control not turned on. Please specify --perform_long_qc" +if ( (!params.longread_qc_skipadaptertrim || !params.longread_qc_skipqualityfilter) & !params.perform_longread_qc ) exit 1, "ERROR: [nf-core/taxprofiler] --longread_qc_skipadaptertrim false or --longread_qc_skipqualityfilterrequested but quality-control not turned on. Please specify --perform_long_qc" if (params.shortread_complexityfilter_tool == 'fastp' && ( params.perform_shortread_qc == false || params.shortread_qc_tool != 'fastp' )) exit 1, "ERROR: [nf-core/taxprofiler] cannot use fastp complexity filtering if preprocessing not turned on and/or tool is not fastp. Please specify --perform_shortread_qc and/or --shortread_qc_tool 'fastp'" From 8917e29e3560e828f73b5c7d0c6975051fc879d6 Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Tue, 30 Aug 2022 14:11:48 +0200 Subject: [PATCH 313/789] Fix accidental overly zelous search-and-replace --- nextflow_schema.json | 6 +++--- workflows/taxprofiler.nf | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/nextflow_schema.json b/nextflow_schema.json index 64c64f0..965908f 100644 --- a/nextflow_schema.json +++ b/nextflow_schema.json @@ -410,15 +410,15 @@ "longread_qc_skipqualityfilter": { "type": "boolean" }, - "longread_qc_skipqualityfilter_minlength": { + "longread_qc_qualityfilter_minlength": { "type": "integer", "default": 1000 }, - "longread_qc_skipqualityfilter_keeppercent": { + "longread_qc_qualityfilter_keeppercent": { "type": "integer", "default": 90 }, - "longread_qc_skipqualityfilter_targetbases": { + "longread_qc_qualityfilter_targetbases": { "type": "integer", "default": 500000000 }, diff --git a/workflows/taxprofiler.nf b/workflows/taxprofiler.nf index 4744af5..731e69d 100644 --- a/workflows/taxprofiler.nf +++ b/workflows/taxprofiler.nf @@ -22,7 +22,7 @@ if (params.databases) { ch_databases = file(params.databases) } else { exit 1, ' if (params.shortread_qc_mergepairs && params.run_malt ) log.warn "[nf-core/taxprofiler] MALT does not accept uncollapsed paired-reads. Pairs will be profiled as separate files." if (params.shortread_qc_excludeunmerged && !params.shortread_qc_mergepairs) exit 1, "ERROR: [nf-core/taxprofiler] cannot include unmerged reads when merging not turned on. Please specify --shortread_qc_mergepairs" -if ( (!params.longread_qc_skipadaptertrim || !params.longread_qc_skipqualityfilter) & !params.perform_longread_qc ) exit 1, "ERROR: [nf-core/taxprofiler] --longread_qc_skipadaptertrim false or --longread_qc_skipqualityfilterrequested but quality-control not turned on. Please specify --perform_long_qc" +if ( (!params.longread_qc_skipadaptertrim || !params.longread_qc_skipqualityfilter) & !params.perform_longread_qc ) exit 1, "ERROR: [nf-core/taxprofiler] --longread_qc_skipadaptertrim false or --longread_qc_skipqualityfilter requested but quality-control not turned on. Please specify --perform_long_qc" if (params.shortread_complexityfilter_tool == 'fastp' && ( params.perform_shortread_qc == false || params.shortread_qc_tool != 'fastp' )) exit 1, "ERROR: [nf-core/taxprofiler] cannot use fastp complexity filtering if preprocessing not turned on and/or tool is not fastp. Please specify --perform_shortread_qc and/or --shortread_qc_tool 'fastp'" From 5552c264b9b563ed354d5ae7bbc492b5db583c7e Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Tue, 30 Aug 2022 14:14:01 +0200 Subject: [PATCH 314/789] Remove now unnecessary input validation --- workflows/taxprofiler.nf | 1 - 1 file changed, 1 deletion(-) diff --git a/workflows/taxprofiler.nf b/workflows/taxprofiler.nf index 731e69d..2bd6c01 100644 --- a/workflows/taxprofiler.nf +++ b/workflows/taxprofiler.nf @@ -22,7 +22,6 @@ if (params.databases) { ch_databases = file(params.databases) } else { exit 1, ' if (params.shortread_qc_mergepairs && params.run_malt ) log.warn "[nf-core/taxprofiler] MALT does not accept uncollapsed paired-reads. Pairs will be profiled as separate files." if (params.shortread_qc_excludeunmerged && !params.shortread_qc_mergepairs) exit 1, "ERROR: [nf-core/taxprofiler] cannot include unmerged reads when merging not turned on. Please specify --shortread_qc_mergepairs" -if ( (!params.longread_qc_skipadaptertrim || !params.longread_qc_skipqualityfilter) & !params.perform_longread_qc ) exit 1, "ERROR: [nf-core/taxprofiler] --longread_qc_skipadaptertrim false or --longread_qc_skipqualityfilter requested but quality-control not turned on. Please specify --perform_long_qc" if (params.shortread_complexityfilter_tool == 'fastp' && ( params.perform_shortread_qc == false || params.shortread_qc_tool != 'fastp' )) exit 1, "ERROR: [nf-core/taxprofiler] cannot use fastp complexity filtering if preprocessing not turned on and/or tool is not fastp. Please specify --perform_shortread_qc and/or --shortread_qc_tool 'fastp'" From f393d1fe91849f7d731fb935efdb7307d4135bfc Mon Sep 17 00:00:00 2001 From: "James A. Fellows Yates" Date: Tue, 30 Aug 2022 14:21:20 +0200 Subject: [PATCH 315/789] Update nextflow.config --- nextflow.config | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/nextflow.config b/nextflow.config index 4ed3ecb..1fed9b3 100644 --- a/nextflow.config +++ b/nextflow.config @@ -66,7 +66,7 @@ params { perform_longread_qc = false longread_qc_skipadaptertrim = false - longread_qc_skipqualityfilter = true + longread_qc_skipqualityfilter = false longread_qc_qualityfilter_minlength = 1000 longread_qc_qualityfilter_keeppercent = 90 longread_qc_qualityfilter_targetbases = 500000000 From c2eaa3f6b04464b4ec966c95ac9b901791382f83 Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Tue, 30 Aug 2022 14:33:40 +0200 Subject: [PATCH 316/789] Prettier --- nextflow_schema.json | 41 +++++++++++++++++++++-------------------- 1 file changed, 21 insertions(+), 20 deletions(-) diff --git a/nextflow_schema.json b/nextflow_schema.json index cc85806..1da56b7 100644 --- a/nextflow_schema.json +++ b/nextflow_schema.json @@ -74,7 +74,8 @@ "perform_shortread_qc": { "type": "boolean", "fa_icon": "fas fa-toggle-on", - "description": "Turns on short read quality control steps (adapter clipping, complexity filtering etc.)" + "description": "Turns on short read quality control steps (adapter clipping, complexity filtering etc.)", + "help_text": "" }, "shortread_qc_tool": { "type": "string", @@ -114,7 +115,7 @@ "type": "integer", "default": 15, "fa_icon": "fas fa-ruler-horizontal", - "description": "Specify the minimum length of reads" + "description": "Specify the minimum length of reads to be retained" }, "perform_shortread_complexityfilter": { "type": "boolean", @@ -183,33 +184,33 @@ "fa_icon": "fas fa-toggle-on", "description": "Turns on long read quality control steps (adapter clipping, length filtering etc.)" }, - "longread_qc_run_clip": { + "longread_qc_skipadaptertrim": { "type": "boolean", - "fa_icon": "fas fa-toggle-on", - "description": "Turn on long-read adapter clipping" + "description": "Skip long-read trimming", + "fa_icon": "fas fa-forward" }, - "longread_qc_run_filter": { + "longread_qc_skipqualityfilter": { "type": "boolean", - "fa_icon": "fas fa-toggle-on", - "description": "Turn on Filtlong long-read length filtering" + "description": "Skip long-read length and quality filtering", + "fa_icon": "fas fa-forward" }, - "longread_qc_keep_percent": { + "longread_qc_qualityfilter_minlength": { "type": "integer", - "default": 90, - "fa_icon": "fas fa-percent", - "description": "Specify minimum percentage of high-quality reads to keep during filtering" + "default": 1000, + "description": "Specify the minimum length of reads to be retained", + "fa_icon": "fas fa-ruler-horizontal" }, - "longread_qc_target_bases": { + "longread_qc_qualityfilter_keeppercent": { "type": "integer", - "default": 500000000, - "fa_icon": "fas fa-bullseye", - "description": "Specify the target number of high-quality bases to retain overall during filtering" + "default": 90, + "description": "Specify the percent of high-quality reads to be retained", + "fa_icon": "fas fa-percentage" }, - "longread_qc_minlength": { + "longread_qc_qualityfilter_targetbases": { "type": "integer", - "default": 1000, - "fa_icon": "fas fa-ruler-horizontal", - "description": "Specify the minimum length of long-reads to retain during filtering" + "default": 500000000, + "description": "Specify the minimum number of high-quality bases in the library to be retained", + "fa_icon": "fas fa-bullseye" } }, "fa_icon": "fas fa-expand-alt" From bdcae4f934c9862c86911fb26ba6010859e04e56 Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Tue, 30 Aug 2022 16:04:05 +0200 Subject: [PATCH 317/789] More docs and tweat to usage.md --- docs/usage.md | 2 +- nextflow_schema.json | 148 +++++++++++++++++++++++++++++++------------ 2 files changed, 108 insertions(+), 42 deletions(-) diff --git a/docs/usage.md b/docs/usage.md index 1bcd235..1ee7bd0 100644 --- a/docs/usage.md +++ b/docs/usage.md @@ -207,7 +207,7 @@ Similarly to complexity filtering, host-removal can be useful for runtime optimi nf-core/taxprofiler currently offers host-removal via alignment against a reference genome with Bowtie2, and the use of the unaligned reads for downstream profiling. -You can supply your reference genome in FASTA format with `--hostremoval_reference`. You can also optionally supply a directory containing pre-indexed Bowtie2 index files with `--shortread_hostremoval_index` or `--longread_hostremoval_index`, however nf-core/taxprofiler will generate this for you if necessary. Pre-supplying the directory of index files can greatly speed up the process, and these can be re-used. +You can supply your reference genome in FASTA format with `--hostremoval_reference`. You can also optionally supply a directory containing pre-indexed Bowtie2 index files with `--shortread_hostremoval_index` or a minimap2 `.mmi` file for `--longread_hostremoval_index`, however nf-core/taxprofiler will generate these for you if necessary. Pre-supplying the index directory or files can greatly speed up the process, and these can be re-used. > 💡 If you have multiple taxa or sequences you wish to remove (e.g., the host genome and then also PhiX - common quality-control reagent during sequencing) you can simply concatenate the FASTAs of each taxa or sequences into a single reference file. diff --git a/nextflow_schema.json b/nextflow_schema.json index 1da56b7..33ebb36 100644 --- a/nextflow_schema.json +++ b/nextflow_schema.json @@ -10,7 +10,11 @@ "type": "object", "fa_icon": "fas fa-terminal", "description": "Define where the pipeline should find input data and save output data.", - "required": ["input", "databases", "outdir"], + "required": [ + "input", + "databases", + "outdir" + ], "properties": { "input": { "type": "string", @@ -60,7 +64,7 @@ "type": "boolean", "fa_icon": "fas fa-save", "description": "Save reads from adapter clipping/pair-merging, length filtering for both short and long reads", - "help_text": "This saves the FASTQ output from the following tools:\n\n- FastP\n- AdapterRemoval\n- PoreChop\n- FiltLong\n\nThese reads will be a mixture of: adapter clipped, quality trimmed, pair-merged, and length filtered, depending on the parameters you set." + "help_text": "This saves the FASTQ output from the following tools:\n\n- fastp\n- AdapterRemoval\n- PoreChop\n- FiltLong\n\nThese reads will be a mixture of: adapter clipped, quality trimmed, pair-merged, and length filtered, depending on the parameters you set." } }, "fa_icon": "fas fa-users-cog" @@ -75,57 +79,72 @@ "type": "boolean", "fa_icon": "fas fa-toggle-on", "description": "Turns on short read quality control steps (adapter clipping, complexity filtering etc.)", - "help_text": "" + "help_text": "Turns on short read quality control steps (adapter clipping, complexity filtering etc.)\n\nThis subworkflow can perform:\n\n- Adapter removal\n- Read quality trimming\n- Read pair merging\n- Length filtering\n- Complexity filtering\n\nEither with fastp or AdapterRemoval.\n\nRemoving adapters (if present) is recommend to reduce false-postive hits that may occur from 'dirty' or 'contaminated' reference genomes in a profiling database that contain accidentially incorporated adapter sequences. Note that some, but not all, tools support paired-end alignment (utilising information about the insert covered by the pairs). However read pair merging in some cases can be recommend to increase read length (such as in aDNA). Length filtering, and/or complexity can speed up alignment by reducing the number of short unspecific reads that need to be aligned." }, "shortread_qc_tool": { "type": "string", "default": "fastp", - "enum": ["fastp", "adapterremoval"], + "enum": [ + "fastp", + "adapterremoval" + ], "fa_icon": "fas fa-tools", - "description": "Specify which tool to use for read QC" + "description": "Specify which tool to use for short-read QC" }, "shortread_qc_skipadaptertrim": { "type": "boolean", "fa_icon": "fas fa-forward", - "description": "Skip adapter trimming" + "description": "Skip adapter trimming", + "help_text": "Skip the removal of sequencing adapters. \n\nThis often can be useful to speed up run-time of the pipeline when analysing data downloaded from public databases such as the ENA or SRA, as adapters should already be removed (however we recommend to check FastQC results to ensure this is the case)." }, "shortread_qc_adapter1": { "type": "string", "default": "None", "fa_icon": "fas fa-grip-lines", - "description": "Specify adapter 1 nucleotide sequence" + "description": "Specify adapter 1 nucleotide sequence", + "help_text": "Specify a custom forward or R1 adapter sequence to be removed off of reads. \n\nIf not set, the selected short-read QC tool's defaults will be used.\n\n> Modifies tool parameter(s):\n> - fastp parameter `--adapter_sequence`. fastp default: `AGATCGGAAGAGCACACGTCTGAACTCCAGTCA`\n> - AdapterRemoval `--adapter1`. AdapteRemoval2 default: `AGATCGGAAGAGCACACGTCTGAACTCCAGTCACNNNNNNATCTCGTATGCCGTCTTCTGCTTG`" }, "shortread_qc_adapter2": { "type": "string", "default": "None", "fa_icon": "fas fa-grip-lines", - "description": "Specify adapter 2 nucleotide sequence" + "description": "Specify adapter 2 nucleotide sequence", + "help_text": "Specify a custom reverse or R2 adapter sequence to be removed off of reads. \n\nIf not set, the selected short-read QC tool's defaults will be used.\n\n> Modifies tool parameter(s):\n> - fastp parameter `--adapter_sequence`. fastp default: `AGATCGGAAGAGCGTCGTGTAGGGAAAGAGTGT`\n> - AdapterRemoval `--adapter1`. AdapteRemoval2 default: `AGATCGGAAGAGCGTCGTGTAGGGAAAGAGTGTAGATCTCGGTGGTCGCCGTATCATT`" }, "shortread_qc_mergepairs": { "type": "boolean", "fa_icon": "fas fa-toggle-on", - "description": "Turn on merging of read pairs for paired-end data" + "description": "Turn on merging of read pairs for paired-end data", + "default": true, + "help_text": "Turn on the merging of read-pairs of paired-end short read sequencing data for AdapterRemoval (this is performed automatically with fastp).\n\n> Modifies tool parameter(s):\n> - AdapterRemoval: `--collapse`\n" }, "shortread_qc_excludeunmerged": { "type": "boolean", "fa_icon": "far fa-times-circle", - "description": "Discard unmerged reads from paired-end merging" + "description": "Discard unmerged reads from paired-end merging", + "help_text": "Turns off the inclusion of unmerged reads in resulting processing FASTQ file of paired-end sequencing data when using `fastp`.\n\nThis can be useful in cases where you prefer to have very short reads (e.g. aDNA), thus excluding longer-reads or possibly faulty reads where one of the pair was discarded.\n\n> Modifies tool parameter(s):\n> - fastp: `--include_unmerged`\n" }, "shortread_qc_minlength": { "type": "integer", "default": 15, "fa_icon": "fas fa-ruler-horizontal", - "description": "Specify the minimum length of reads to be retained" + "description": "Specify the minimum length of reads to be retained", + "help_text": "Specifying a mimum read length filtering can speed up profiling by reducing the number of short unspecific reads that need to be match/aligned to the database.\n\n> Modifies tool parameter(s):\n> - fastp: `--length_required`\n> - AdapterRemoval: `--minlength`" }, "perform_shortread_complexityfilter": { "type": "boolean", "fa_icon": "fas fa-toggle-on", - "description": "Turns on nucleotide sequence complexity filtering" + "description": "Turns on nucleotide sequence complexity filtering", + "help_text": "Turns on sequencing complexity filtering. Complexity filtering can be useful to increase run-time by removing unspecific read sequences that do not provide any informative taxon ID." }, "shortread_complexityfilter_tool": { "type": "string", "default": "bbduk", - "enum": ["bbduk", "prinseqplusplus", "fastp"], + "enum": [ + "bbduk", + "prinseqplusplus", + "fastp" + ], "fa_icon": "fas fa-hammer", "description": "Specify which tool to use for complexity filtering" }, @@ -133,29 +152,36 @@ "type": "number", "default": 0.3, "fa_icon": "fas fa-random", - "description": "Specify the minimum sequence entropy level for complexity filtering" + "description": "Specify the minimum sequence entropy level for complexity filtering", + "help_text": "Specify the minimum 'entropy' value for complexity filtering for BBDuk or PRINSEQ++.\n\nNote that this value will only be used for PRINSEQ++ if `--shortread_complexityfilter_prinseqplusplus_mode` is set to `entropy`.\n\nEntropy here corresponds to the amount of sequence variation exists within the read. Higher values correspond to more variety, and thus will likely reslut in more specific matching to a taxon's reference genome. The trade off here is fewer reads (or abundance information) available for having a confident identification.\n\n\n> Modifies tool parameter(s):\n> - BBDuk: `entropy=`\n> - PRINSEQ++: `-lc_entropy`\n\n" }, "shortread_complexityfilter_bbduk_windowsize": { "type": "integer", "default": 50, "fa_icon": "far fa-window-maximize", - "description": "Specify the window size for BBDuk complexity filtering" + "description": "Specify the window size for BBDuk complexity filtering", + "help_text": "Specify the window size to calculate the level entropy within for BBDuk.\n\n> Modifies tool parameter(s):\n> - BBDuk: `entropywindow=`" }, "shortread_complexityfilter_bbduk_mask": { "type": "boolean", "fa_icon": "fas fa-mask", - "description": "Turn on masking rather than discarding of low complexity reads for BBduk" + "description": "Turn on masking rather than discarding of low complexity reads for BBduk", + "help_text": "Turn on masking of low-complexity reads (i.e., replacement with `N`) rather than removal.\n\n> Modfies:\n> - BBDuk: `entropymask=`" }, "shortread_complexityfilter_fastp_threshold": { "type": "integer", "default": 30, "fa_icon": "fas fa-sort-numeric-down", - "description": "Specify the minimum complexity filter threshold of Fastp" + "description": "Specify the minimum complexity filter threshold of fastp", + "help_text": "Specify the minimum sequence complexity value for fastp. This value corresponds to the percentage of bases that is different from it's adjacent bases.\n\n> Modifies tool parameter(s):\n> - fastp: `--complexity_threshold`" }, "shortread_complexityfilter_prinseqplusplus_mode": { "type": "string", "default": "entropy", - "enum": ["entropy", "dust"], + "enum": [ + "entropy", + "dust" + ], "fa_icon": "fas fa-check-square", "description": "Specify the complexity filter mode for PRINSEQ++" }, @@ -163,12 +189,14 @@ "type": "number", "default": 0.5, "fa_icon": "fas fa-head-side-mask", - "description": "Specify the minimum dust score for PRINTSEQ++ complexity filtering" + "description": "Specify the minimum dust score for PRINTSEQ++ complexity filtering", + "help_text": "Specify the minimum dust score below which low-complexity reads will be removed. A DUST score is based on how often different tri-nucleotides occur along a read.\n\n> Modifies tool parameter(s):\n> - PRINSEQ++: `--lc_dust`" }, "save_complexityfiltered_reads": { "type": "boolean", "fa_icon": "fas fa-save", - "description": "Save complexity filtered short-reads" + "description": "Save complexity filtered short-reads", + "help_text": "Specify whether to save the final complexity filtered reads in your results directory (`--outdir`)." } }, "fa_icon": "fas fa-compress-alt" @@ -182,35 +210,41 @@ "perform_longread_qc": { "type": "boolean", "fa_icon": "fas fa-toggle-on", - "description": "Turns on long read quality control steps (adapter clipping, length filtering etc.)" + "description": "Turns on long read quality control steps (adapter clipping, length filtering etc.)", + "help_text": "Turns on long read quality control steps (adapter clipping, length and/or quality filtering.)\n\nRemoving adapters (if present) is recommend to reduce false-postive hits that may occur from 'dirty' or 'contaminated' reference genomes in a profiling database that contain accidentially incorporated adapter sequences.\n\nLength filtering, and quality filtering can speed up alignment by reducing the number of unspecific reads that need to be aligned." }, "longread_qc_skipadaptertrim": { "type": "boolean", "description": "Skip long-read trimming", - "fa_icon": "fas fa-forward" + "fa_icon": "fas fa-forward", + "help_text": "Skip removal of adapters by Porechop. This can be useful in some cases to speed up run time - particularly when you are running data downloading from public databases such as the ENA/SRA that should already have adapters removed. We recommend that you check your FastQC results this is indeed the case." }, "longread_qc_skipqualityfilter": { "type": "boolean", "description": "Skip long-read length and quality filtering", - "fa_icon": "fas fa-forward" + "fa_icon": "fas fa-forward", + "help_text": "Skip removal of quality filtering with Filtlong. This will skip length, percent reads, and target bases filtering (see other `--longread_qc_qualityfilter_*` parameters)." }, "longread_qc_qualityfilter_minlength": { "type": "integer", "default": 1000, "description": "Specify the minimum length of reads to be retained", - "fa_icon": "fas fa-ruler-horizontal" + "fa_icon": "fas fa-ruler-horizontal", + "help_text": "Specify the minimum of length of reads to be kept for downstream analysis.\n\n> Modifies tool parameter(s):\n> - Filtlong: `--min_length`" }, "longread_qc_qualityfilter_keeppercent": { "type": "integer", "default": 90, - "description": "Specify the percent of high-quality reads to be retained", - "fa_icon": "fas fa-percentage" + "description": "Specify the percent of high-quality bases to be retained", + "fa_icon": "fas fa-percentage", + "help_text": "Throw out the remaining percentage of reads outside the value. This is measured by bp, not by read count. So this option throws out the worst e.g. 10% of read bases if the parameter is set to `90`. _Modified from [Filtlong documentation](https://github.com/rrwick/Filtlong)_\n\n> Modifies tool parameter(s):\n> - Filtlong: `--keep_percent`" }, "longread_qc_qualityfilter_targetbases": { "type": "integer", "default": 500000000, - "description": "Specify the minimum number of high-quality bases in the library to be retained", - "fa_icon": "fas fa-bullseye" + "description": "Specify the number of high-quality bases in the library to be retained", + "fa_icon": "fas fa-bullseye", + "help_text": "Removes the worst reads until only the specified value of bases remain, useful for very large read sets. If the input read set is less than the specified value, this setting will have no effect. _Modified from [Filtlong documentation](https://github.com/rrwick/Filtlong)_\n\n> Modifies tool parameter(s):\n> - Filtlong: `--keep_percent`" } }, "fa_icon": "fas fa-expand-alt" @@ -224,45 +258,53 @@ "perform_shortread_hostremoval": { "type": "boolean", "fa_icon": "fas fa-toggle-on", - "description": "Turn on short-read host removal" + "description": "Turn on short-read host removal", + "help_text": "Turns on the ability to remove short-reads from the that derived from a known organism, using Bowtie2 and samtools\n\nThis subworkflow is useful to remove reads that may come from a host, or a known contamination like the human reference genome. Human DNA contamination of (microbial) reference genomes is well known, so removal of these prior profiling both reduces the risks of false positives, and in _some cases_ a faster runtime (as less reads need to be profiled).\n\nAlternatively, you can include the reference genome within your profiling databases and can turn off this subworkflow, with the trade off of a larger taxonomic profiling database." }, "perform_longread_hostremoval": { "type": "boolean", "fa_icon": "fas fa-toggle-on", - "description": "Turn on long-read host removal" + "description": "Turn on long-read host removal", + "help_text": "Turns on the ability to remove long-reads from the that derived from a known organism, using minimap2 and samtools\n\nThis subworkflow is useful to remove reads that may come from a host, or a known contamination like the human reference genome. Human DNA contamination of (microbial) reference genomes is well known, so removal of these prior profiling both reduces the risks of false positives, and in _some cases_ a faster runtime (as less reads need to be profiled).\n\nAlternatively, you can include the reference genome within your profiling databases and can turn off this subworkflow, with the trade off of a larger taxonomic profiling database." }, "hostremoval_reference": { "type": "string", "default": "None", "fa_icon": "fas fa-file-alt", - "description": "Specify path to single reference FASTA of host(s) genome(s)" + "description": "Specify path to single reference FASTA of host(s) genome(s)", + "help_text": "Specify a path to the FASTA file of the reference genome of the organism to be removed.\n\nIf you have two or more host organisms or contaminants you wish to remove, you can concatenate the FASTAs of the different taxa into a single one to provide to the pipeline." }, "shortread_hostremoval_index": { "type": "string", "default": "None", "fa_icon": "fas fa-address-book", - "description": "Specify path to the directory containing pre-made BowTie2 indexes of the host removal reference" + "description": "Specify path to the directory containing pre-made BowTie2 indexes of the host removal reference", + "help_text": "Specify the path to a _directory_ containing pre-made Bowtie2 reference index files (i.e. the directory containing `.bt1`, `.bt2` files etc.). These should sit in the same directory alongside the the reference file specified in `--hostremoval_reference` .\n\nSpecifying premade indices can speed up runtime of the host-removal step, however if not supplied the pipeline will generate the indices for you" }, "longread_hostremoval_index": { "type": "string", "default": "None", "fa_icon": "fas fa-address-book", - "description": "Specify path to the directory containing pre-made Minimap2 indexes of the host removal reference" + "description": "Specify path to a pre-made Minimap2 index file (.mmi) of the host removal reference", + "help_text": "Specify path to a pre-made Minimap2 index file (.mmi) of the host removal reference file given to `--hostremoval_reference`.\n\nSpecifying a premade index file can speed up runtime of the host-removal step, however if not supplied the pipeline will generate the indices for you." }, "save_hostremoval_index": { "type": "boolean", "fa_icon": "fas fa-save", - "description": "Save mapping index of input reference when not already supplied by user" + "description": "Save mapping index of input reference when not already supplied by user", + "help_text": "Save the output files of the in-built indexing of the host genome.\n\nThis is recommend to be turned of if you plan to use the same reference genome multiple times, as supplying the directory or file to `--shortread_hostremoval_index` or `--longread_hostremoval_index` respectively can speed up runtime of future runs. Once generated, we recommend you place this file _outside_ of your run results directory in a central 'cache' directory you and others using your machine can access and supply to the pipeline." }, "save_hostremoval_mapped": { "type": "boolean", "fa_icon": "fas fa-save", - "description": "Save mapped reads in BAM format from host removal" + "description": "Save mapped reads in BAM format from host removal", + "help_text": "Save the reads mapped to the reference genome in BAM format as output by the respective hostremoval alignment tool.\n\nThis can be useful if you wish to perform other analyses on the host organism (such as host-microbe interaction), however, you should consider whether the default mapping parameters of Bowtie2 (short-read) or minimap2 (long-read) are optimised to your context. " }, "save_hostremoval_unmapped": { "type": "boolean", "fa_icon": "fas fa-save", - "description": "Save unmapped reads in FASTQ format from host removal" + "description": "Save unmapped reads in FASTQ format from host removal", + "help_text": "Save the unreads mapped to the reference genome in FASTQ format (as exported from `samtools view`).\n\nThis can be useful if you wish to perform other analyses on the off-target reads from the host mapping, such as manual profiling or _de novo_ assembly." } }, "fa_icon": "fas fa-user-times" @@ -276,12 +318,14 @@ "perform_runmerging": { "type": "boolean", "fa_icon": "fas fa-toggle-on", - "description": "Turn on run merging" + "description": "Turn on run merging", + "help_text": "Turns on the concatenation of sequencing runs or libraries with the same sample name.\n\nThis can be useful to ensure you get a single profile per sample, rather than one profile per run or library. Note that in some cases comparing profiles of independent _libraries_ maybe useful, so this parameter may not always be suitable. " }, "save_runmerged_reads": { "type": "boolean", "fa_icon": "fas fa-save", - "description": "Save run-concatenated input FASTQ files for each sample" + "description": "Save run-concatenated input FASTQ files for each sample", + "help_text": "Save the run- and library-concatenated reads of a given sample in FASTQ format." } }, "fa_icon": "fas fa-clipboard-check" @@ -310,7 +354,15 @@ "diamond_output_format": { "type": "string", "default": "tsv", - "enum": ["blast", "xml", "txt", "daa", "sam", "tsv", "paf"], + "enum": [ + "blast", + "xml", + "txt", + "daa", + "sam", + "tsv", + "paf" + ], "fa_icon": "fas fa-file", "description": "Specify output format from DIAMOND profiling." }, @@ -327,7 +379,14 @@ "kaiju_taxon_rank": { "type": "string", "default": "species", - "enum": ["phylum", "class", "order", "family", "genus", "species"], + "enum": [ + "phylum", + "class", + "order", + "family", + "genus", + "species" + ], "fa_icon": "fas fa-tag", "description": "Specify taxonomic rank to be displayed in Kaiju taxon table" }, @@ -512,7 +571,14 @@ "description": "Method used to save pipeline results to output directory.", "help_text": "The Nextflow `publishDir` option specifies which intermediate files should be saved to the output directory. This option tells the pipeline what method should be used to move these files. See [Nextflow docs](https://www.nextflow.io/docs/latest/process.html#publishdir) for details.", "fa_icon": "fas fa-copy", - "enum": ["symlink", "rellink", "link", "copy", "copyNoFollow", "move"], + "enum": [ + "symlink", + "rellink", + "link", + "copy", + "copyNoFollow", + "move" + ], "hidden": true }, "email_on_fail": { From acd0570b4a640e03b74297eb2e837f052074a8c2 Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Wed, 31 Aug 2022 07:56:39 +0200 Subject: [PATCH 318/789] Finalise first pass of nextflow json documentation --- nextflow_schema.json | 89 ++++++++++++++++---------------------------- 1 file changed, 33 insertions(+), 56 deletions(-) diff --git a/nextflow_schema.json b/nextflow_schema.json index 33ebb36..c79d320 100644 --- a/nextflow_schema.json +++ b/nextflow_schema.json @@ -10,11 +10,7 @@ "type": "object", "fa_icon": "fas fa-terminal", "description": "Define where the pipeline should find input data and save output data.", - "required": [ - "input", - "databases", - "outdir" - ], + "required": ["input", "databases", "outdir"], "properties": { "input": { "type": "string", @@ -84,10 +80,7 @@ "shortread_qc_tool": { "type": "string", "default": "fastp", - "enum": [ - "fastp", - "adapterremoval" - ], + "enum": ["fastp", "adapterremoval"], "fa_icon": "fas fa-tools", "description": "Specify which tool to use for short-read QC" }, @@ -140,11 +133,7 @@ "shortread_complexityfilter_tool": { "type": "string", "default": "bbduk", - "enum": [ - "bbduk", - "prinseqplusplus", - "fastp" - ], + "enum": ["bbduk", "prinseqplusplus", "fastp"], "fa_icon": "fas fa-hammer", "description": "Specify which tool to use for complexity filtering" }, @@ -178,10 +167,7 @@ "shortread_complexityfilter_prinseqplusplus_mode": { "type": "string", "default": "entropy", - "enum": [ - "entropy", - "dust" - ], + "enum": ["entropy", "dust"], "fa_icon": "fas fa-check-square", "description": "Specify the complexity filter mode for PRINSEQ++" }, @@ -344,7 +330,8 @@ "centrifuge_save_reads": { "type": "boolean", "fa_icon": "fas fa-save", - "description": "Turn on saving of Centrifuge-aligned reads" + "description": "Turn on saving of Centrifuge-aligned reads", + "help_text": "Save mapped (SAM, FASTQ) and unmapped (FASTQ) reads from alignment step of centrifuge in your output results directory.\n\n> Modifies tool parameter(s):\n> centrifuge: `--un-gz`, `--al-gz`, `--un-conc-gz`, `--al-conc-gz`, `--out-fmt`" }, "run_diamond": { "type": "boolean", @@ -354,22 +341,16 @@ "diamond_output_format": { "type": "string", "default": "tsv", - "enum": [ - "blast", - "xml", - "txt", - "daa", - "sam", - "tsv", - "paf" - ], + "enum": ["blast", "xml", "txt", "daa", "sam", "tsv", "paf"], "fa_icon": "fas fa-file", - "description": "Specify output format from DIAMOND profiling." + "description": "Specify output format from DIAMOND profiling.", + "help_text": "DIAMOND can produce output in a number of different formats, you can specify here which to produce.\n\nNote that DIAMOND can only produce one format at a time, and depending on which you pick, some downstream steps may not be executed. For example, selecting `daa` or `sam` will mean you will not get a tabular taxonomic profile as with the other tools.\n\n> Modifies tool parameter(s):\n> - diamond blastx: `--outfmt`" }, "diamond_save_reads": { "type": "boolean", "fa_icon": "fas fa-save", - "description": "Turn on saving of DIAMOND-aligned reads. Will override --diamond_output_format and no taxon tables will be generated" + "description": "Turn on saving of DIAMOND-aligned reads. Will override --diamond_output_format and no taxon tables will be generated", + "help_text": "Save aligned reads in SAM format from alignment step of DIAMOND in your output results directory.\n\nNote this explicitly overrides `--diamond_output_format` to produce the SAM file, and no taxon table will be generated.\n\n> Modifies tool parameter(s):\n> - DIAMOND: `--outfmt`" }, "run_kaiju": { "type": "boolean", @@ -379,16 +360,10 @@ "kaiju_taxon_rank": { "type": "string", "default": "species", - "enum": [ - "phylum", - "class", - "order", - "family", - "genus", - "species" - ], + "enum": ["phylum", "class", "order", "family", "genus", "species"], "fa_icon": "fas fa-tag", - "description": "Specify taxonomic rank to be displayed in Kaiju taxon table" + "description": "Specify taxonomic rank to be displayed in Kaiju taxon table", + "help_text": "Specify the taxonomic level(s) to be displayed in the resulting Kaiju taxon table, as generated by the kaiju2table helper tool.\n\nThis can be either a single level (e.g. `species`), or a comma separated list to display the full taxonomic path (e.g. `-l superkingdom,phylum,class,order,family,genus,species.`).\n\n> Modifies tool parameter(s):\n> - kaiju2table: `-l`" }, "run_kraken2": { "type": "boolean", @@ -398,12 +373,14 @@ "kraken2_save_reads": { "type": "boolean", "fa_icon": "fas fa-save", - "description": "Turn on saving of Kraken2-aligned reads" + "description": "Turn on saving of Kraken2-aligned reads", + "help_text": "Save reads that do and do not have a taxonomic classification in your output results directory in FASTQ format.\n\n> Modifies tool parameter(s):\n> - kraken2: `--classified-out` and `--unclassified-out`" }, "kraken2_save_readclassification": { "type": "boolean", "fa_icon": "fas fa-save", - "description": "Turn on saving of Kraken2 per-read taxonomic assignment file" + "description": "Turn on saving of Kraken2 per-read taxonomic assignment file", + "help_text": "Save a text file that contains a list of each read that had a taxonomic assignment, with information on specific taxonomic taxonomic assignment that that read recieved.\n\n> Modifies tool parameter(s):\n> - kraken2: `--output`" }, "run_malt": { "type": "boolean", @@ -414,17 +391,20 @@ "type": "string", "default": "BlastN", "fa_icon": "fas fa-check-square", - "description": "Specify which MALT alignment mode to use" + "description": "Specify which MALT alignment mode to use", + "help_text": "Specify which version of MALT alignment to use.\n\nBlastN is generally recommended (nucleotide-nucleotide alignment), but particularly for very short reads (such as aDNA), whereas BlastX mode is similar to DIAMOND and will translate the nucleotide to amino acid sequences. Note each type of alignment mode requires different parameters during database construction. Refer to the MALT manual for more information.\n\n> Modifies tool parameter(s):\n> - malt-run: `-mode` " }, "malt_save_reads": { "type": "boolean", "fa_icon": "fas fa-save", - "description": "Turn on saving of MALT-aligned reads" + "description": "Turn on saving of MALT-aligned reads", + "help_text": "Turns on saving of MALT aligned reads in SAM format.\n\nRequires `-a` to be specified in your database arguments (see `--databases`).\n\nNote the SAM format produce by MALT is not completely valid, and may not work with downstream tools." }, "malt_generate_megansummary": { "type": "boolean", "fa_icon": "fas fa-save", - "description": "Turn on generation of MEGAN summary file from MALT results" + "description": "Turn on generation of MEGAN summary file from MALT results", + "help_text": "Turns on saving of MALT output in an additional MEGAN summary file (`.megan`) that can be loaded into the MEGAN metagenomic exploration tool.\n\nNote this file is generated not directly from MALT but rather then MEGAN utility script `rma2info`.\n\n> Modifies tool parameter(s):\n> - rma2info: `-es`" }, "run_metaphlan3": { "type": "boolean", @@ -448,23 +428,27 @@ "run_profile_standardisation": { "type": "boolean", "fa_icon": "fas fa-toggle-on", - "description": "Turn on standardisation of taxon tables across profilers" + "description": "Turn on standardisation of taxon tables across profilers", + "help_text": "Turns on standardisation of output OTU tables across all tools, each into a TSV format following the following scheme:\n\n|TAXON | SAMPLE_A | SAMPLE_B |\n|-------------|----------------|-----------------|\n| taxon_a | 32 | 123 |\n| taxon_b | 1 | 5 |\n\nThis currently only is generated for mOTUs." }, "generate_biom_output": { "type": "boolean", "fa_icon": "fas fa-toggle-on", - "description": "Turn on generation of BIOM output (currently only applies to mOTUs)" + "description": "Turn on generation of BIOM output (currently only applies to mOTUs)", + "help_text": "Turn on the saving of the taxonomic output in BIOM format (`.biom`) in the results directory of your pipeline run, instead of the default TSV format.\n\nNote this file is from the output of the `motus merge` command.\n\n> Modifies tool parameter(s):\n> - `-B -o`" }, "run_krona": { "type": "boolean", "fa_icon": "fas fa-toggle-on", - "description": "Turn on generation of Krona plots for supported profilers" + "description": "Turn on generation of Krona plots for supported profilers", + "help_text": "Turn on the generation of Krona interactive pie-chart HTMLs for a selection of profilers.\n\nThe tools currently supported are:\n\n- centrifuge\n- kraken2\n- kaiju\n- MALT" }, "krona_taxonomy_directory": { "type": "string", "default": "None", "fa_icon": "fas fa-folder-open", - "description": "Specify path to krona taxonomy directories (required for MALT krona plots)" + "description": "Specify path to krona taxonomy directories (required for MALT krona plots)", + "help_text": "Specify a path to a Krona taxonomy database directory (i.e. a directory containing a krona generated `.tab` file).\n\nThis is only required for generating Krona plots of MALT output.\n\nNote this taxonomy database must be downloaded and generated with the `updateTaxonomy.sh` script from the krona-tools package." } }, "fa_icon": "fas fa-chart-line" @@ -571,14 +555,7 @@ "description": "Method used to save pipeline results to output directory.", "help_text": "The Nextflow `publishDir` option specifies which intermediate files should be saved to the output directory. This option tells the pipeline what method should be used to move these files. See [Nextflow docs](https://www.nextflow.io/docs/latest/process.html#publishdir) for details.", "fa_icon": "fas fa-copy", - "enum": [ - "symlink", - "rellink", - "link", - "copy", - "copyNoFollow", - "move" - ], + "enum": ["symlink", "rellink", "link", "copy", "copyNoFollow", "move"], "hidden": true }, "email_on_fail": { From 806208c4b15cca96d54a215e1a6e51cde7f38103 Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Wed, 31 Aug 2022 08:30:26 +0200 Subject: [PATCH 319/789] Final tweaks to schema, and add a couple of notes for dev guidance on where their various `--save_reads` parameters are injected --- nextflow.config | 12 ++++++------ nextflow_schema.json | 34 +++++++++++++++++----------------- 2 files changed, 23 insertions(+), 23 deletions(-) diff --git a/nextflow.config b/nextflow.config index e82cf9a..06c3875 100644 --- a/nextflow.config +++ b/nextflow.config @@ -103,16 +103,16 @@ params { run_malt = false malt_mode = 'BlastN' malt_generate_megansummary = false - malt_save_reads = false + malt_save_reads = false // added via map + database args extension in profiling.nf // kraken2 run_kraken2 = false - kraken2_save_reads = false - kraken2_save_readclassification = false + kraken2_save_reads = false // added directly to module in profiling.nf + kraken2_save_readclassification = false // added directly to module in profiling.nf // centrifuge run_centrifuge = false - centrifuge_save_reads = false + centrifuge_save_reads = false // added directly to module in profiling.nf // metaphlan3 run_metaphlan3 = false @@ -124,7 +124,7 @@ params { // diamond run_diamond = false diamond_output_format = 'tsv' // TSV is only format with taxonomic information apparently - diamond_save_reads = false // this will override default diamond output format so no taxonomic profile is generated! + diamond_save_reads = false // this will override default diamond output format so no taxonomic profile is generated! added directly to module in profiling.nf // mOTUs run_motus = false @@ -135,7 +135,7 @@ params { // profile standardisation run_profile_standardisation = false - generate_biom_output = false + generate_biom_output = false } // Load base.config by default for all pipelines diff --git a/nextflow_schema.json b/nextflow_schema.json index c79d320..eb839ec 100644 --- a/nextflow_schema.json +++ b/nextflow_schema.json @@ -60,7 +60,7 @@ "type": "boolean", "fa_icon": "fas fa-save", "description": "Save reads from adapter clipping/pair-merging, length filtering for both short and long reads", - "help_text": "This saves the FASTQ output from the following tools:\n\n- fastp\n- AdapterRemoval\n- PoreChop\n- FiltLong\n\nThese reads will be a mixture of: adapter clipped, quality trimmed, pair-merged, and length filtered, depending on the parameters you set." + "help_text": "This saves the FASTQ output from the following tools:\n\n- fastp\n- AdapterRemoval\n- Porechop\n- Filtlong\n\nThese reads will be a mixture of: adapter clipped, quality trimmed, pair-merged, and length filtered, depending on the parameters you set." } }, "fa_icon": "fas fa-users-cog" @@ -95,14 +95,14 @@ "default": "None", "fa_icon": "fas fa-grip-lines", "description": "Specify adapter 1 nucleotide sequence", - "help_text": "Specify a custom forward or R1 adapter sequence to be removed off of reads. \n\nIf not set, the selected short-read QC tool's defaults will be used.\n\n> Modifies tool parameter(s):\n> - fastp parameter `--adapter_sequence`. fastp default: `AGATCGGAAGAGCACACGTCTGAACTCCAGTCA`\n> - AdapterRemoval `--adapter1`. AdapteRemoval2 default: `AGATCGGAAGAGCACACGTCTGAACTCCAGTCACNNNNNNATCTCGTATGCCGTCTTCTGCTTG`" + "help_text": "Specify a custom forward or R1 adapter sequence to be removed from reads. \n\nIf not set, the selected short-read QC tool's defaults will be used.\n\n> Modifies tool parameter(s):\n> - fastp: `--adapter_sequence`. fastp default: `AGATCGGAAGAGCACACGTCTGAACTCCAGTCA`\n> - AdapterRemoval: `--adapter1`. AdapteRemoval2 default: `AGATCGGAAGAGCACACGTCTGAACTCCAGTCACNNNNNNATCTCGTATGCCGTCTTCTGCTTG`" }, "shortread_qc_adapter2": { "type": "string", "default": "None", "fa_icon": "fas fa-grip-lines", "description": "Specify adapter 2 nucleotide sequence", - "help_text": "Specify a custom reverse or R2 adapter sequence to be removed off of reads. \n\nIf not set, the selected short-read QC tool's defaults will be used.\n\n> Modifies tool parameter(s):\n> - fastp parameter `--adapter_sequence`. fastp default: `AGATCGGAAGAGCGTCGTGTAGGGAAAGAGTGT`\n> - AdapterRemoval `--adapter1`. AdapteRemoval2 default: `AGATCGGAAGAGCGTCGTGTAGGGAAAGAGTGTAGATCTCGGTGGTCGCCGTATCATT`" + "help_text": "Specify a custom reverse or R2 adapter sequence to be removed from reads. \n\nIf not set, the selected short-read QC tool's defaults will be used.\n\n> Modifies tool parameter(s):\n> - fastp: `--adapter_sequence`. fastp default: `AGATCGGAAGAGCGTCGTGTAGGGAAAGAGTGT`\n> - AdapterRemoval: `--adapter1`. AdapteRemoval2 default: `AGATCGGAAGAGCGTCGTGTAGGGAAAGAGTGTAGATCTCGGTGGTCGCCGTATCATT`" }, "shortread_qc_mergepairs": { "type": "boolean", @@ -115,14 +115,14 @@ "type": "boolean", "fa_icon": "far fa-times-circle", "description": "Discard unmerged reads from paired-end merging", - "help_text": "Turns off the inclusion of unmerged reads in resulting processing FASTQ file of paired-end sequencing data when using `fastp`.\n\nThis can be useful in cases where you prefer to have very short reads (e.g. aDNA), thus excluding longer-reads or possibly faulty reads where one of the pair was discarded.\n\n> Modifies tool parameter(s):\n> - fastp: `--include_unmerged`\n" + "help_text": "Turns off the inclusion of unmerged reads in resulting processing FASTQ file of paired-end sequencing data when using `fastp`.\n\nThis can be useful in cases where you prefer to have very short reads (e.g. aDNA), thus excluding longer-reads or possibly faulty reads where one of the pair was discarded.\n\n> Modifies tool parameter(s):\n> - removed from reads `--include_unmerged`\n" }, "shortread_qc_minlength": { "type": "integer", "default": 15, "fa_icon": "fas fa-ruler-horizontal", "description": "Specify the minimum length of reads to be retained", - "help_text": "Specifying a mimum read length filtering can speed up profiling by reducing the number of short unspecific reads that need to be match/aligned to the database.\n\n> Modifies tool parameter(s):\n> - fastp: `--length_required`\n> - AdapterRemoval: `--minlength`" + "help_text": "Specifying a mimum read length filtering can speed up profiling by reducing the number of short unspecific reads that need to be match/aligned to the database.\n\n> Modifies tool parameter(s):\n> - removed from reads `--length_required`\n> - AdapterRemoval: `--minlength`" }, "perform_shortread_complexityfilter": { "type": "boolean", @@ -155,14 +155,14 @@ "type": "boolean", "fa_icon": "fas fa-mask", "description": "Turn on masking rather than discarding of low complexity reads for BBduk", - "help_text": "Turn on masking of low-complexity reads (i.e., replacement with `N`) rather than removal.\n\n> Modfies:\n> - BBDuk: `entropymask=`" + "help_text": "Turn on masking of low-complexity reads (i.e., replacement with `N`) rather than removal.\n\n> Modifies tool parameter(s)\n> - BBDuk: `entropymask=`" }, "shortread_complexityfilter_fastp_threshold": { "type": "integer", "default": 30, "fa_icon": "fas fa-sort-numeric-down", "description": "Specify the minimum complexity filter threshold of fastp", - "help_text": "Specify the minimum sequence complexity value for fastp. This value corresponds to the percentage of bases that is different from it's adjacent bases.\n\n> Modifies tool parameter(s):\n> - fastp: `--complexity_threshold`" + "help_text": "Specify the minimum sequence complexity value for fastp. This value corresponds to the percentage of bases that is different from it's adjacent bases.\n\n> Modifies tool parameter(s):\n> - removed from reads `--complexity_threshold`" }, "shortread_complexityfilter_prinseqplusplus_mode": { "type": "string", @@ -258,14 +258,14 @@ "default": "None", "fa_icon": "fas fa-file-alt", "description": "Specify path to single reference FASTA of host(s) genome(s)", - "help_text": "Specify a path to the FASTA file of the reference genome of the organism to be removed.\n\nIf you have two or more host organisms or contaminants you wish to remove, you can concatenate the FASTAs of the different taxa into a single one to provide to the pipeline." + "help_text": "Specify a path to the FASTA file (optionally gzipped) of the reference genome of the organism to be removed.\n\nIf you have two or more host organisms or contaminants you wish to remove, you can concatenate the FASTAs of the different taxa into a single one to provide to the pipeline." }, "shortread_hostremoval_index": { "type": "string", "default": "None", "fa_icon": "fas fa-address-book", "description": "Specify path to the directory containing pre-made BowTie2 indexes of the host removal reference", - "help_text": "Specify the path to a _directory_ containing pre-made Bowtie2 reference index files (i.e. the directory containing `.bt1`, `.bt2` files etc.). These should sit in the same directory alongside the the reference file specified in `--hostremoval_reference` .\n\nSpecifying premade indices can speed up runtime of the host-removal step, however if not supplied the pipeline will generate the indices for you" + "help_text": "Specify the path to a _directory_ containing pre-made Bowtie2 reference index files (i.e. the directory containing `.bt1`, `.bt2` files etc.). These should sit in the same directory alongside the the reference file specified in `--hostremoval_reference`.\n\nSpecifying premade indices can speed up runtime of the host-removal step, however if not supplied the pipeline will generate the indices for you." }, "longread_hostremoval_index": { "type": "string", @@ -278,7 +278,7 @@ "type": "boolean", "fa_icon": "fas fa-save", "description": "Save mapping index of input reference when not already supplied by user", - "help_text": "Save the output files of the in-built indexing of the host genome.\n\nThis is recommend to be turned of if you plan to use the same reference genome multiple times, as supplying the directory or file to `--shortread_hostremoval_index` or `--longread_hostremoval_index` respectively can speed up runtime of future runs. Once generated, we recommend you place this file _outside_ of your run results directory in a central 'cache' directory you and others using your machine can access and supply to the pipeline." + "help_text": "Save the output files of the in-built indexing of the host genome.\n\nThis is recommend to be turned on if you plan to use the same reference genome multiple times, as supplying the directory or file to `--shortread_hostremoval_index` or `--longread_hostremoval_index` respectively can speed up runtime of future runs. Once generated, we recommend you place this file _outside_ of your run results directory in a central 'cache' directory you and others using your machine can access and supply to the pipeline." }, "save_hostremoval_mapped": { "type": "boolean", @@ -305,7 +305,7 @@ "type": "boolean", "fa_icon": "fas fa-toggle-on", "description": "Turn on run merging", - "help_text": "Turns on the concatenation of sequencing runs or libraries with the same sample name.\n\nThis can be useful to ensure you get a single profile per sample, rather than one profile per run or library. Note that in some cases comparing profiles of independent _libraries_ maybe useful, so this parameter may not always be suitable. " + "help_text": "Turns on the concatenation of sequencing runs or libraries with the same sample name.\n\nThis can be useful to ensure you get a single profile per sample, rather than one profile per run or library. Note that in some cases comparing profiles of independent _libraries_ may be useful, so this parameter may not always be suitable. " }, "save_runmerged_reads": { "type": "boolean", @@ -331,7 +331,7 @@ "type": "boolean", "fa_icon": "fas fa-save", "description": "Turn on saving of Centrifuge-aligned reads", - "help_text": "Save mapped (SAM, FASTQ) and unmapped (FASTQ) reads from alignment step of centrifuge in your output results directory.\n\n> Modifies tool parameter(s):\n> centrifuge: `--un-gz`, `--al-gz`, `--un-conc-gz`, `--al-conc-gz`, `--out-fmt`" + "help_text": "Save mapped (SAM, FASTQ) and unmapped (FASTQ) reads from alignment step of centrifuge in your output results directory.\n\n> Modifies tool parameter(s):\n> - centrifuge: `--un-gz`, `--al-gz`, `--un-conc-gz`, `--al-conc-gz`, `--out-fmt`" }, "run_diamond": { "type": "boolean", @@ -344,7 +344,7 @@ "enum": ["blast", "xml", "txt", "daa", "sam", "tsv", "paf"], "fa_icon": "fas fa-file", "description": "Specify output format from DIAMOND profiling.", - "help_text": "DIAMOND can produce output in a number of different formats, you can specify here which to produce.\n\nNote that DIAMOND can only produce one format at a time, and depending on which you pick, some downstream steps may not be executed. For example, selecting `daa` or `sam` will mean you will not get a tabular taxonomic profile as with the other tools.\n\n> Modifies tool parameter(s):\n> - diamond blastx: `--outfmt`" + "help_text": "DIAMOND can produce output in a number of different formats, you can specify here which to produce.\n\nNote that DIAMOND can only produce one format at a time, and depending on which you pick, some downstream steps may not be executed. For example, selecting `daa` or `sam` will mean you will not get a tabular taxonomic profile as with the other tools.\n\nWill be overriden by `--diamond_save_reads.`\n\n> Modifies tool parameter(s):\n> - diamond blastx: `--outfmt`" }, "diamond_save_reads": { "type": "boolean", @@ -363,7 +363,7 @@ "enum": ["phylum", "class", "order", "family", "genus", "species"], "fa_icon": "fas fa-tag", "description": "Specify taxonomic rank to be displayed in Kaiju taxon table", - "help_text": "Specify the taxonomic level(s) to be displayed in the resulting Kaiju taxon table, as generated by the kaiju2table helper tool.\n\nThis can be either a single level (e.g. `species`), or a comma separated list to display the full taxonomic path (e.g. `-l superkingdom,phylum,class,order,family,genus,species.`).\n\n> Modifies tool parameter(s):\n> - kaiju2table: `-l`" + "help_text": "Specify the taxonomic level(s) to be displayed in the resulting Kaiju taxon table, as generated by the kaiju2table helper tool.\n\nThis can be either a single level (e.g. `species`), or a comma separated list to display the full taxonomic path (e.g. `superkingdom,phylum,class,order,family,genus,species.`).\n\n> Modifies tool parameter(s):\n> - kaiju2table: `-l`" }, "run_kraken2": { "type": "boolean", @@ -398,13 +398,13 @@ "type": "boolean", "fa_icon": "fas fa-save", "description": "Turn on saving of MALT-aligned reads", - "help_text": "Turns on saving of MALT aligned reads in SAM format.\n\nRequires `-a` to be specified in your database arguments (see `--databases`).\n\nNote the SAM format produce by MALT is not completely valid, and may not work with downstream tools." + "help_text": "Turns on saving of MALT aligned reads in SAM format.\n\nNote that the SAM format produce by MALT is not completely valid, and may not work with downstream tools.\n\n> Modifies tool parameter(s):\n> - malt-run: `--alignments`, `-za`" }, "malt_generate_megansummary": { "type": "boolean", "fa_icon": "fas fa-save", "description": "Turn on generation of MEGAN summary file from MALT results", - "help_text": "Turns on saving of MALT output in an additional MEGAN summary file (`.megan`) that can be loaded into the MEGAN metagenomic exploration tool.\n\nNote this file is generated not directly from MALT but rather then MEGAN utility script `rma2info`.\n\n> Modifies tool parameter(s):\n> - rma2info: `-es`" + "help_text": "Turns on saving of MALT output in an additional MEGAN summary file (`.megan`) that can be loaded into the MEGAN metagenomic exploration tool.\n\nNote: this file is generated not directly from MALT but rather then MEGAN utility script `rma2info`.\n\n> Modifies tool parameter(s):\n> - rma2info: `-es`" }, "run_metaphlan3": { "type": "boolean", @@ -429,7 +429,7 @@ "type": "boolean", "fa_icon": "fas fa-toggle-on", "description": "Turn on standardisation of taxon tables across profilers", - "help_text": "Turns on standardisation of output OTU tables across all tools, each into a TSV format following the following scheme:\n\n|TAXON | SAMPLE_A | SAMPLE_B |\n|-------------|----------------|-----------------|\n| taxon_a | 32 | 123 |\n| taxon_b | 1 | 5 |\n\nThis currently only is generated for mOTUs." + "help_text": "Turns on standardisation of output OTU tables across all tools; each into a TSV format following the following scheme:\n\n|TAXON | SAMPLE_A | SAMPLE_B |\n|-------------|----------------|-----------------|\n| taxon_a | 32 | 123 |\n| taxon_b | 1 | 5 |\n\nThis currently only is generated for mOTUs." }, "generate_biom_output": { "type": "boolean", From 0107330d92f9efaca0917359543e61604d20a766 Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Wed, 31 Aug 2022 08:34:57 +0200 Subject: [PATCH 320/789] Clarify specifying output parameters in database db_params column --- docs/usage.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/docs/usage.md b/docs/usage.md index 1ee7bd0..15e060b 100644 --- a/docs/usage.md +++ b/docs/usage.md @@ -65,7 +65,7 @@ An [example samplesheet](../assets/samplesheet.csv) has been provided with the p nf-core/taxprofiler supports multiple databases being profiled in parallel for each tool. Databases can be supplied either in the form of a compressed `.tar.gz` archive of a directory containing all relevant database files or the path to a directory on the filesystem. -The pipeline takes the locations and specific parameters of these databases as input via a four column comma-separated sheet. +The pipeline takes the locations and specific profiling parameters of the tool of these databases as input via a four column comma-separated sheet. > ⚠️ nf-core/taxprofiler does not provide any databases by default, nor does it currently generate them for you. This must be performed manually by the user. See below for more information of the expected database files. @@ -84,12 +84,12 @@ motus,db_mOTU,,///motus/motus_database/ Column specifications are as follows: -| Column | Description | -| ----------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `tool` | Taxonomic profiling tool (supported by nf-core/taxprofiler) that the database has been indexed for [required]. | -| `db_name` | A unique name of the particular database [required]. | -| `db_params` | Any parameters of the given taxonomic profiler that you wish to specify that the taxonomic profiling tool should use when profiling against this specific. Can be empty to use taxonomic profiler defaults Must not be surrounded by quotes [required]. | -| `db_path` | Path to the database. Can either be a path to a directory containing the database index files or a `.tar.gz` file which contains the compressed database directory with the same name as the tar archive, minus `.tar.gz` [required]. | +| Column | Description | +| ----------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `tool` | Taxonomic profiling tool (supported by nf-core/taxprofiler) that the database has been indexed for [required]. | +| `db_name` | A unique name of the particular database [required]. | +| `db_params` | Any parameters of the given taxonomic profiler that you wish to specify that the taxonomic profiling tool should use when profiling against this specific. Can be empty to use taxonomic profiler defaults. Must not be surrounded by quotes [required]. We generally do not recommend specifying parameters here that turn on/off saving of output files or specifying particular file extensions - this should be already addressed via pipeline parameters. | +| `db_path` | Path to the database. Can either be a path to a directory containing the database index files or a `.tar.gz` file which contains the compressed database directory with the same name as the tar archive, minus `.tar.gz` [required]. | > 💡 You can also specify the same database directory/file twice (ensuring unique `db_name`s) and specify different parameters for each database to compare the effect of different parameters during profiling. From 5274ac57af109125f0974463a23271cc142aef99 Mon Sep 17 00:00:00 2001 From: "James A. Fellows Yates" Date: Wed, 31 Aug 2022 09:24:24 +0200 Subject: [PATCH 321/789] Update .prettierignore --- .prettierignore | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.prettierignore b/.prettierignore index 2fd5fd6..a48d0d5 100644 --- a/.prettierignore +++ b/.prettierignore @@ -6,5 +6,5 @@ results/ .DS_Store testing/ testing* -tests/ *.pyc +tests/ From 169c7437c8bdef0cc4d9414321a415951f93daff Mon Sep 17 00:00:00 2001 From: "James A. Fellows Yates" Date: Thu, 1 Sep 2022 16:28:05 +0200 Subject: [PATCH 322/789] Left over from template merge --- .github/workflows/ci.yml | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 2641adb..fc50f82 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -70,14 +70,9 @@ jobs: NXF_ANSI_LOG: false strategy: matrix: - # Nextflow versions - include: - # Test pipeline minimum Nextflow version - - NXF_VER: "21.10.3" - NXF_EDGE: "" - # Test latest edge release of Nextflow - - NXF_VER: "" - NXF_EDGE: "1" + NXF_VER: + - "21.10.3" + - "latest-everything" steps: - name: Check out pipeline code From 13e9957e143b3f6ae10bff397d8f29ac307d65ee Mon Sep 17 00:00:00 2001 From: "James A. Fellows Yates" Date: Fri, 2 Sep 2022 06:03:05 +0000 Subject: [PATCH 323/789] Fixes process selector warning --- conf/modules.config | 4 ++-- conf/test.config | 5 ++++- subworkflows/local/profiling.nf | 26 +++++++++++------------ subworkflows/local/visualization_krona.nf | 8 +++---- 4 files changed, 23 insertions(+), 20 deletions(-) diff --git a/conf/modules.config b/conf/modules.config index 43f7ebb..d4a2693 100644 --- a/conf/modules.config +++ b/conf/modules.config @@ -274,7 +274,7 @@ process { ] } - withName: 'NFCORE_TAXPROFILER:TAXPROFILER:PROFILING:MEGAN_RMA2INFO' { + withName: 'MEGAN_RMA2INFO_TSV' { ext.args = "-c2c Taxonomy" ext.prefix = { "${meta.id}" } publishDir = [ @@ -312,7 +312,7 @@ process { ] } - withName: 'NFCORE_TAXPROFILER:TAXPROFILER:VISUALIZATION_KRONA:MEGAN_RMA2INFO' { + withName: 'MEGAN_RMA2INFO_KRONA' { ext.args = { "--read2class Taxonomy" } ext.prefix = { "${meta.id}-${meta.db_name}" } } diff --git a/conf/test.config b/conf/test.config index dac0e81..a39a107 100644 --- a/conf/test.config +++ b/conf/test.config @@ -51,7 +51,10 @@ process { withName: MALT_RUN { maxForks = 1 } - withName: MEGAN_RMA2INFO { + withName: MEGAN_RMA2INFO_TSV { + maxForks = 1 + } + withName: MEGAN_RMA2INFO_KRONA { maxForks = 1 } } diff --git a/subworkflows/local/profiling.nf b/subworkflows/local/profiling.nf index 61aa394..17c96f1 100644 --- a/subworkflows/local/profiling.nf +++ b/subworkflows/local/profiling.nf @@ -2,16 +2,16 @@ // Run profiling // -include { MALT_RUN } from '../../modules/nf-core/modules/malt/run/main' -include { MEGAN_RMA2INFO } from '../../modules/nf-core/modules/megan/rma2info/main' -include { KRAKEN2_KRAKEN2 } from '../../modules/nf-core/modules/kraken2/kraken2/main' -include { CENTRIFUGE_CENTRIFUGE } from '../../modules/nf-core/modules/centrifuge/centrifuge/main' -include { CENTRIFUGE_KREPORT } from '../../modules/nf-core/modules/centrifuge/kreport/main' -include { METAPHLAN3 } from '../../modules/nf-core/modules/metaphlan3/main' -include { KAIJU_KAIJU } from '../../modules/nf-core/modules/kaiju/kaiju/main' -include { KAIJU_KAIJU2TABLE } from '../../modules/nf-core/modules/kaiju/kaiju2table/main' -include { DIAMOND_BLASTX } from '../../modules/nf-core/modules/diamond/blastx/main' -include { MOTUS_PROFILE } from '../../modules/nf-core/modules/motus/profile/main' +include { MALT_RUN } from '../../modules/nf-core/modules/malt/run/main' +include { MEGAN_RMA2INFO as MEGAN_RMA2INFO_TSV } from '../../modules/nf-core/modules/megan/rma2info/main' +include { KRAKEN2_KRAKEN2 } from '../../modules/nf-core/modules/kraken2/kraken2/main' +include { CENTRIFUGE_CENTRIFUGE } from '../../modules/nf-core/modules/centrifuge/centrifuge/main' +include { CENTRIFUGE_KREPORT } from '../../modules/nf-core/modules/centrifuge/kreport/main' +include { METAPHLAN3 } from '../../modules/nf-core/modules/metaphlan3/main' +include { KAIJU_KAIJU } from '../../modules/nf-core/modules/kaiju/kaiju/main' +include { KAIJU_KAIJU2TABLE } from '../../modules/nf-core/modules/kaiju/kaiju2table/main' +include { DIAMOND_BLASTX } from '../../modules/nf-core/modules/diamond/blastx/main' +include { MOTUS_PROFILE } from '../../modules/nf-core/modules/motus/profile/main' workflow PROFILING { take: @@ -109,11 +109,11 @@ workflow PROFILING { [ meta_new, rma ] } - MEGAN_RMA2INFO (ch_maltrun_for_megan, params.malt_generate_megansummary ) + MEGAN_RMA2INFO_TSV (ch_maltrun_for_megan, params.malt_generate_megansummary ) ch_multiqc_files = ch_multiqc_files.mix( MALT_RUN.out.log ) - ch_versions = ch_versions.mix( MALT_RUN.out.versions.first(), MEGAN_RMA2INFO.out.versions.first() ) + ch_versions = ch_versions.mix( MALT_RUN.out.versions.first(), MEGAN_RMA2INFO_TSV.out.versions.first() ) ch_raw_classifications = ch_raw_classifications.mix( ch_maltrun_for_megan ) - ch_raw_profiles = ch_raw_profiles.mix( MEGAN_RMA2INFO.out.txt ) + ch_raw_profiles = ch_raw_profiles.mix( MEGAN_RMA2INFO_TSV.out.txt ) } diff --git a/subworkflows/local/visualization_krona.nf b/subworkflows/local/visualization_krona.nf index 397251f..86cbb71 100644 --- a/subworkflows/local/visualization_krona.nf +++ b/subworkflows/local/visualization_krona.nf @@ -2,7 +2,7 @@ // Create Krona visualizations // -include { MEGAN_RMA2INFO } from '../../modules/nf-core/modules/megan/rma2info/main' +include { MEGAN_RMA2INFO_KRONA } from '../../modules/nf-core/modules/megan/rma2info/main' include { KAIJU_KAIJU2KRONA } from '../../modules/nf-core/modules/kaiju/kaiju2krona/main' include { KRAKENTOOLS_KREPORT2KRONA } from '../../modules/nf-core/modules/krakentools/kreport2krona/main' include { KRONA_CLEANUP } from '../../modules/local/krona_cleanup' @@ -87,15 +87,15 @@ workflow VISUALIZATION_KRONA { Convert MALT/MEGAN RMA2INFO files into html Krona visualisations */ if ( params.krona_taxonomy_directory ) { - MEGAN_RMA2INFO ( ch_input_classifications.malt, false ) - GUNZIP ( MEGAN_RMA2INFO.out.txt ) + MEGAN_RMA2INFO_KRONA ( ch_input_classifications.malt, false ) + GUNZIP ( MEGAN_RMA2INFO_KRONA.out.txt ) ch_krona_taxonomy_for_input = GUNZIP.out.gunzip .map{[[id: it[0]['db_name'], tool: it[0]['tool']], it[1]]} .groupTuple() KRONA_KTIMPORTTAXONOMY ( ch_krona_taxonomy_for_input, file(params.krona_taxonomy_directory, checkExists: true) ) ch_krona_html.mix( KRONA_KTIMPORTTAXONOMY.out.html ) - ch_versions = ch_versions.mix( MEGAN_RMA2INFO.out.versions.first() ) + ch_versions = ch_versions.mix( MEGAN_RMA2INFO_KRONA.out.versions.first() ) ch_versions = ch_versions.mix( KRONA_KTIMPORTTAXONOMY.out.versions.first() ) } From e64b3f85a4caabc47d34435b4a3cc814581bf45d Mon Sep 17 00:00:00 2001 From: "James A. Fellows Yates" Date: Fri, 2 Sep 2022 06:07:33 +0000 Subject: [PATCH 324/789] Fix final linting problems for template merge --- bin/check_samplesheet.py | 20 ++-- modules.json | 232 ++++++++++++++++++++++----------------- 2 files changed, 142 insertions(+), 110 deletions(-) diff --git a/bin/check_samplesheet.py b/bin/check_samplesheet.py index 7db3934..ca54ed9 100755 --- a/bin/check_samplesheet.py +++ b/bin/check_samplesheet.py @@ -6,10 +6,9 @@ import sys import errno import argparse + def parse_args(args=None): - Description = ( - "Reformat nf-core/taxprofiler samplesheet file and check its contents." - ) + Description = "Reformat nf-core/taxprofiler samplesheet file and check its contents." Epilog = "Example usage: python check_samplesheet.py " @@ -18,6 +17,7 @@ def parse_args(args=None): parser.add_argument("FILE_OUT", help="Output file.") return parser.parse_args(args) + def make_dir(path): if len(path) > 0: try: @@ -26,6 +26,7 @@ def make_dir(path): if exception.errno != errno.EEXIST: raise exception + def print_error(error, context="Line", context_str=""): error_str = "ERROR: Please check samplesheet -> {}".format(error) if context != "" and context_str != "": @@ -35,6 +36,7 @@ def print_error(error, context="Line", context_str=""): print(error_str) sys.exit(1) + def check_samplesheet(file_in, file_out): """ This function checks that the samplesheet follows the following structure: @@ -118,9 +120,7 @@ def check_samplesheet(file_in, file_out): num_cols = len([x for x in lspl if x]) if num_cols < MIN_COLS: print_error( - "Invalid number of populated columns (minimum = {})!".format( - MIN_COLS - ), + "Invalid number of populated columns (minimum = {})!".format(MIN_COLS), "Line", line, ) @@ -183,13 +183,9 @@ def check_samplesheet(file_in, file_out): ## Auto-detect paired-end/single-end if sample and fastq_1 and fastq_2: ## Paired-end short reads sample_info.extend(["0", fastq_1, fastq_2, fasta]) - elif ( - sample and fastq_1 and not fastq_2 - ): ## Single-end short/long fastq reads + elif sample and fastq_1 and not fastq_2: ## Single-end short/long fastq reads sample_info.extend(["1", fastq_1, fastq_2, fasta]) - elif ( - sample and fasta and not fastq_1 and not fastq_2 - ): ## Single-end long reads + elif sample and fasta and not fastq_1 and not fastq_2: ## Single-end long reads sample_info.extend(["1", fastq_1, fastq_2, fasta]) elif fasta and (fastq_1 or fastq_2): print_error( diff --git a/modules.json b/modules.json index 33c0c10..2d5bea6 100644 --- a/modules.json +++ b/modules.json @@ -3,104 +3,140 @@ "homePage": "https://github.com/nf-core/taxprofiler", "repos": { "nf-core/modules": { - "adapterremoval": { - "git_sha": "879d42c5e28661fe0a5e744c9e2c515868f9e08a" - }, - "bbmap/bbduk": { - "git_sha": "e745e167c1020928ef20ea1397b6b4d230681b4d" - }, - "bowtie2/align": { - "git_sha": "e745e167c1020928ef20ea1397b6b4d230681b4d" - }, - "bowtie2/build": { - "git_sha": "e745e167c1020928ef20ea1397b6b4d230681b4d" - }, - "cat/fastq": { - "git_sha": "e745e167c1020928ef20ea1397b6b4d230681b4d" - }, - "centrifuge/centrifuge": { - "git_sha": "d2726fcf75063960f06b36d2229a4c0966614108" - }, - "centrifuge/kreport": { - "git_sha": "734d0db6079a4aa43b6509b207e5d6feb35d4838" - }, - "custom/dumpsoftwareversions": { - "git_sha": "e745e167c1020928ef20ea1397b6b4d230681b4d" - }, - "diamond/blastx": { - "git_sha": "3531824af826c16cd252bc5aa82ae169b244ebaa" - }, - "fastp": { - "git_sha": "d0a1cbb703a130c19f6796c3fce24fbe7dfce789" - }, - "fastqc": { - "git_sha": "e745e167c1020928ef20ea1397b6b4d230681b4d" - }, - "filtlong": { - "git_sha": "957cb9b83668075f4af101fc99502908cca487e3" - }, - "gunzip": { - "git_sha": "9aadd9a6d3f5964476582319b3a1c54a3e3fe7c9" - }, - "kaiju/kaiju": { - "git_sha": "8856f127c58f6af479128be8b8df4d42e442ddbe" - }, - "kaiju/kaiju2krona": { - "git_sha": "2f0b19240430de6807b1232e6d9d0e8084e8a28f" - }, - "kaiju/kaiju2table": { - "git_sha": "538dbac98ba9c8f799536cd5a617195501439457" - }, - "kraken2/kraken2": { - "git_sha": "abe025677cdd805cc93032341ab19885473c1a07" - }, - "krakentools/kreport2krona": { - "git_sha": "8b2a473f586bed003e72d2b183acc43fc0ddc422" - }, - "krona/ktimporttaxonomy": { - "git_sha": "0e9fd9370ad1845870b8a9c63fcc47d999a1739e" - }, - "krona/ktimporttext": { - "git_sha": "cdefbec66999c0b49d8bfeea9d6f9d19056635a2" - }, - "malt/run": { - "git_sha": "be8d7b3293cac26cc63e4dbfb364deb8ed6ec7e5" - }, - "megan/rma2info": { - "git_sha": "2d38566eca4cc15142b2ffa7c11837569b39aece" - }, - "metaphlan3": { - "git_sha": "ed4dd1a928ebf4308efb720de878045f7773f8e2" - }, - "minimap2/align": { - "git_sha": "1a5a9e7b4009dcf34e6867dd1a5a1d9a718b027b" - }, - "minimap2/index": { - "git_sha": "e745e167c1020928ef20ea1397b6b4d230681b4d" - }, - "motus/merge": { - "git_sha": "b02e648c221e1da17cb589eefe297e61ec9e9c49" - }, - "motus/profile": { - "git_sha": "b6ed584443ad68ac41e6975994139454a4f23c18" - }, - "multiqc": { - "git_sha": "e745e167c1020928ef20ea1397b6b4d230681b4d" - }, - "porechop": { - "git_sha": "b78e19b9dae3671db2c7d4346fe04452c1debfab" - }, - "prinseqplusplus": { - "git_sha": "f1c5384c31e985591716afdd732cf8c2ae29d05b" - }, - "samtools/bam2fq": { - "git_sha": "5510ea39fe638594bc26ac34cadf4a84bf27d159" - }, - "samtools/view": { - "git_sha": "6b64f9cb6c3dd3577931cc3cd032d6fb730000ce" - }, - "untar": { - "git_sha": "e080f4c8acf5760039ed12ec1f206170f3f9a918" + "git_url": "https://github.com/nf-core/modules.git", + "modules": { + "adapterremoval": { + "branch": "master", + "git_sha": "879d42c5e28661fe0a5e744c9e2c515868f9e08a" + }, + "bbmap/bbduk": { + "branch": "master", + "git_sha": "e745e167c1020928ef20ea1397b6b4d230681b4d" + }, + "bowtie2/align": { + "branch": "master", + "git_sha": "e745e167c1020928ef20ea1397b6b4d230681b4d" + }, + "bowtie2/build": { + "branch": "master", + "git_sha": "e745e167c1020928ef20ea1397b6b4d230681b4d" + }, + "cat/fastq": { + "branch": "master", + "git_sha": "e745e167c1020928ef20ea1397b6b4d230681b4d" + }, + "centrifuge/centrifuge": { + "branch": "master", + "git_sha": "d2726fcf75063960f06b36d2229a4c0966614108" + }, + "centrifuge/kreport": { + "branch": "master", + "git_sha": "734d0db6079a4aa43b6509b207e5d6feb35d4838" + }, + "custom/dumpsoftwareversions": { + "branch": "master", + "git_sha": "e745e167c1020928ef20ea1397b6b4d230681b4d" + }, + "diamond/blastx": { + "branch": "master", + "git_sha": "3531824af826c16cd252bc5aa82ae169b244ebaa" + }, + "fastp": { + "branch": "master", + "git_sha": "d0a1cbb703a130c19f6796c3fce24fbe7dfce789" + }, + "fastqc": { + "branch": "master", + "git_sha": "e745e167c1020928ef20ea1397b6b4d230681b4d" + }, + "filtlong": { + "branch": "master", + "git_sha": "957cb9b83668075f4af101fc99502908cca487e3" + }, + "gunzip": { + "branch": "master", + "git_sha": "9aadd9a6d3f5964476582319b3a1c54a3e3fe7c9" + }, + "kaiju/kaiju": { + "branch": "master", + "git_sha": "8856f127c58f6af479128be8b8df4d42e442ddbe" + }, + "kaiju/kaiju2krona": { + "branch": "master", + "git_sha": "2f0b19240430de6807b1232e6d9d0e8084e8a28f" + }, + "kaiju/kaiju2table": { + "branch": "master", + "git_sha": "538dbac98ba9c8f799536cd5a617195501439457" + }, + "kraken2/kraken2": { + "branch": "master", + "git_sha": "abe025677cdd805cc93032341ab19885473c1a07" + }, + "krakentools/kreport2krona": { + "branch": "master", + "git_sha": "8b2a473f586bed003e72d2b183acc43fc0ddc422" + }, + "krona/ktimporttaxonomy": { + "branch": "master", + "git_sha": "0e9fd9370ad1845870b8a9c63fcc47d999a1739e" + }, + "krona/ktimporttext": { + "branch": "master", + "git_sha": "cdefbec66999c0b49d8bfeea9d6f9d19056635a2" + }, + "malt/run": { + "branch": "master", + "git_sha": "be8d7b3293cac26cc63e4dbfb364deb8ed6ec7e5" + }, + "megan/rma2info": { + "branch": "master", + "git_sha": "2d38566eca4cc15142b2ffa7c11837569b39aece" + }, + "metaphlan3": { + "branch": "master", + "git_sha": "ed4dd1a928ebf4308efb720de878045f7773f8e2" + }, + "minimap2/align": { + "branch": "master", + "git_sha": "1a5a9e7b4009dcf34e6867dd1a5a1d9a718b027b" + }, + "minimap2/index": { + "branch": "master", + "git_sha": "e745e167c1020928ef20ea1397b6b4d230681b4d" + }, + "motus/merge": { + "branch": "master", + "git_sha": "b02e648c221e1da17cb589eefe297e61ec9e9c49" + }, + "motus/profile": { + "branch": "master", + "git_sha": "b6ed584443ad68ac41e6975994139454a4f23c18" + }, + "multiqc": { + "branch": "master", + "git_sha": "e745e167c1020928ef20ea1397b6b4d230681b4d" + }, + "porechop": { + "branch": "master", + "git_sha": "b78e19b9dae3671db2c7d4346fe04452c1debfab" + }, + "prinseqplusplus": { + "branch": "master", + "git_sha": "f1c5384c31e985591716afdd732cf8c2ae29d05b" + }, + "samtools/bam2fq": { + "branch": "master", + "git_sha": "5510ea39fe638594bc26ac34cadf4a84bf27d159" + }, + "samtools/view": { + "branch": "master", + "git_sha": "6b64f9cb6c3dd3577931cc3cd032d6fb730000ce" + }, + "untar": { + "branch": "master", + "git_sha": "e080f4c8acf5760039ed12ec1f206170f3f9a918" + } } } } From 176a0a6280b03c63d90b9fdbf8b1843d28421aee Mon Sep 17 00:00:00 2001 From: "James A. Fellows Yates" Date: Fri, 2 Sep 2022 10:06:20 +0200 Subject: [PATCH 325/789] Update ci.yml --- .github/workflows/ci.yml | 6 ------ 1 file changed, 6 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 2641adb..8268d52 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -23,14 +23,8 @@ jobs: - "21.10.3" - "latest-everything" parameters: - - "--perform_longread_qc false" - - "--perform_shortread_qc false" - - "--shortread_qc_tool fastp" - "--shortread_qc_tool fastp --shortread_qc_mergepairs --shortread_qc_excludeunmerged" - - "--shortread_qc_tool fastp --shortread_qc_mergepairs" - - "--shortread_qc_tool adapterremoval" - "--shortread_qc_tool adapterremoval --shortread_qc_mergepairs --shortread_qc_excludeunmerged" - - "--shortread_qc_tool adapterremoval --shortread_qc_mergepairs" - "--shortread_complexityfilter_tool bbduk" - "--shortread_complexityfilter_tool prinseqplusplus" - "--perform_runmerging" From 61560cf065fae116cb74df26a838445bdd5bd575 Mon Sep 17 00:00:00 2001 From: "James A. Fellows Yates" Date: Fri, 2 Sep 2022 10:12:27 +0200 Subject: [PATCH 326/789] Update ci.yml --- .github/workflows/ci.yml | 22 ++++++---------------- 1 file changed, 6 insertions(+), 16 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 8268d52..434b494 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -64,28 +64,18 @@ jobs: NXF_ANSI_LOG: false strategy: matrix: - # Nextflow versions - include: - # Test pipeline minimum Nextflow version - - NXF_VER: "21.10.3" - NXF_EDGE: "" - # Test latest edge release of Nextflow - - NXF_VER: "" - NXF_EDGE: "1" + NXF_VER: + - "21.10.3" + - "latest-everything" steps: - name: Check out pipeline code uses: actions/checkout@v2 - name: Install Nextflow - env: - NXF_VER: ${{ matrix.NXF_VER }} - # Uncomment only if the edge release is more recent than the latest stable release - # See https://github.com/nextflow-io/nextflow/issues/2467 - # NXF_EDGE: ${{ matrix.NXF_EDGE }} - run: | - wget -qO- get.nextflow.io | bash - sudo mv nextflow /usr/local/bin/ + uses: nf-core/setup-nextflow@v1 + with: + version: "${{ matrix.NXF_VER }}" - name: Show current locale run: locale From 8fe7f8bf4b034c81667a6b645c0e2c9978cd05de Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Fri, 2 Sep 2022 11:47:33 +0200 Subject: [PATCH 327/789] Revert "Fix final linting problems for template merge" This reverts commit e64b3f85a4caabc47d34435b4a3cc814581bf45d. --- bin/check_samplesheet.py | 20 ++-- modules.json | 232 +++++++++++++++++---------------------- 2 files changed, 110 insertions(+), 142 deletions(-) diff --git a/bin/check_samplesheet.py b/bin/check_samplesheet.py index ca54ed9..7db3934 100755 --- a/bin/check_samplesheet.py +++ b/bin/check_samplesheet.py @@ -6,9 +6,10 @@ import sys import errno import argparse - def parse_args(args=None): - Description = "Reformat nf-core/taxprofiler samplesheet file and check its contents." + Description = ( + "Reformat nf-core/taxprofiler samplesheet file and check its contents." + ) Epilog = "Example usage: python check_samplesheet.py " @@ -17,7 +18,6 @@ def parse_args(args=None): parser.add_argument("FILE_OUT", help="Output file.") return parser.parse_args(args) - def make_dir(path): if len(path) > 0: try: @@ -26,7 +26,6 @@ def make_dir(path): if exception.errno != errno.EEXIST: raise exception - def print_error(error, context="Line", context_str=""): error_str = "ERROR: Please check samplesheet -> {}".format(error) if context != "" and context_str != "": @@ -36,7 +35,6 @@ def print_error(error, context="Line", context_str=""): print(error_str) sys.exit(1) - def check_samplesheet(file_in, file_out): """ This function checks that the samplesheet follows the following structure: @@ -120,7 +118,9 @@ def check_samplesheet(file_in, file_out): num_cols = len([x for x in lspl if x]) if num_cols < MIN_COLS: print_error( - "Invalid number of populated columns (minimum = {})!".format(MIN_COLS), + "Invalid number of populated columns (minimum = {})!".format( + MIN_COLS + ), "Line", line, ) @@ -183,9 +183,13 @@ def check_samplesheet(file_in, file_out): ## Auto-detect paired-end/single-end if sample and fastq_1 and fastq_2: ## Paired-end short reads sample_info.extend(["0", fastq_1, fastq_2, fasta]) - elif sample and fastq_1 and not fastq_2: ## Single-end short/long fastq reads + elif ( + sample and fastq_1 and not fastq_2 + ): ## Single-end short/long fastq reads sample_info.extend(["1", fastq_1, fastq_2, fasta]) - elif sample and fasta and not fastq_1 and not fastq_2: ## Single-end long reads + elif ( + sample and fasta and not fastq_1 and not fastq_2 + ): ## Single-end long reads sample_info.extend(["1", fastq_1, fastq_2, fasta]) elif fasta and (fastq_1 or fastq_2): print_error( diff --git a/modules.json b/modules.json index 2d5bea6..33c0c10 100644 --- a/modules.json +++ b/modules.json @@ -3,140 +3,104 @@ "homePage": "https://github.com/nf-core/taxprofiler", "repos": { "nf-core/modules": { - "git_url": "https://github.com/nf-core/modules.git", - "modules": { - "adapterremoval": { - "branch": "master", - "git_sha": "879d42c5e28661fe0a5e744c9e2c515868f9e08a" - }, - "bbmap/bbduk": { - "branch": "master", - "git_sha": "e745e167c1020928ef20ea1397b6b4d230681b4d" - }, - "bowtie2/align": { - "branch": "master", - "git_sha": "e745e167c1020928ef20ea1397b6b4d230681b4d" - }, - "bowtie2/build": { - "branch": "master", - "git_sha": "e745e167c1020928ef20ea1397b6b4d230681b4d" - }, - "cat/fastq": { - "branch": "master", - "git_sha": "e745e167c1020928ef20ea1397b6b4d230681b4d" - }, - "centrifuge/centrifuge": { - "branch": "master", - "git_sha": "d2726fcf75063960f06b36d2229a4c0966614108" - }, - "centrifuge/kreport": { - "branch": "master", - "git_sha": "734d0db6079a4aa43b6509b207e5d6feb35d4838" - }, - "custom/dumpsoftwareversions": { - "branch": "master", - "git_sha": "e745e167c1020928ef20ea1397b6b4d230681b4d" - }, - "diamond/blastx": { - "branch": "master", - "git_sha": "3531824af826c16cd252bc5aa82ae169b244ebaa" - }, - "fastp": { - "branch": "master", - "git_sha": "d0a1cbb703a130c19f6796c3fce24fbe7dfce789" - }, - "fastqc": { - "branch": "master", - "git_sha": "e745e167c1020928ef20ea1397b6b4d230681b4d" - }, - "filtlong": { - "branch": "master", - "git_sha": "957cb9b83668075f4af101fc99502908cca487e3" - }, - "gunzip": { - "branch": "master", - "git_sha": "9aadd9a6d3f5964476582319b3a1c54a3e3fe7c9" - }, - "kaiju/kaiju": { - "branch": "master", - "git_sha": "8856f127c58f6af479128be8b8df4d42e442ddbe" - }, - "kaiju/kaiju2krona": { - "branch": "master", - "git_sha": "2f0b19240430de6807b1232e6d9d0e8084e8a28f" - }, - "kaiju/kaiju2table": { - "branch": "master", - "git_sha": "538dbac98ba9c8f799536cd5a617195501439457" - }, - "kraken2/kraken2": { - "branch": "master", - "git_sha": "abe025677cdd805cc93032341ab19885473c1a07" - }, - "krakentools/kreport2krona": { - "branch": "master", - "git_sha": "8b2a473f586bed003e72d2b183acc43fc0ddc422" - }, - "krona/ktimporttaxonomy": { - "branch": "master", - "git_sha": "0e9fd9370ad1845870b8a9c63fcc47d999a1739e" - }, - "krona/ktimporttext": { - "branch": "master", - "git_sha": "cdefbec66999c0b49d8bfeea9d6f9d19056635a2" - }, - "malt/run": { - "branch": "master", - "git_sha": "be8d7b3293cac26cc63e4dbfb364deb8ed6ec7e5" - }, - "megan/rma2info": { - "branch": "master", - "git_sha": "2d38566eca4cc15142b2ffa7c11837569b39aece" - }, - "metaphlan3": { - "branch": "master", - "git_sha": "ed4dd1a928ebf4308efb720de878045f7773f8e2" - }, - "minimap2/align": { - "branch": "master", - "git_sha": "1a5a9e7b4009dcf34e6867dd1a5a1d9a718b027b" - }, - "minimap2/index": { - "branch": "master", - "git_sha": "e745e167c1020928ef20ea1397b6b4d230681b4d" - }, - "motus/merge": { - "branch": "master", - "git_sha": "b02e648c221e1da17cb589eefe297e61ec9e9c49" - }, - "motus/profile": { - "branch": "master", - "git_sha": "b6ed584443ad68ac41e6975994139454a4f23c18" - }, - "multiqc": { - "branch": "master", - "git_sha": "e745e167c1020928ef20ea1397b6b4d230681b4d" - }, - "porechop": { - "branch": "master", - "git_sha": "b78e19b9dae3671db2c7d4346fe04452c1debfab" - }, - "prinseqplusplus": { - "branch": "master", - "git_sha": "f1c5384c31e985591716afdd732cf8c2ae29d05b" - }, - "samtools/bam2fq": { - "branch": "master", - "git_sha": "5510ea39fe638594bc26ac34cadf4a84bf27d159" - }, - "samtools/view": { - "branch": "master", - "git_sha": "6b64f9cb6c3dd3577931cc3cd032d6fb730000ce" - }, - "untar": { - "branch": "master", - "git_sha": "e080f4c8acf5760039ed12ec1f206170f3f9a918" - } + "adapterremoval": { + "git_sha": "879d42c5e28661fe0a5e744c9e2c515868f9e08a" + }, + "bbmap/bbduk": { + "git_sha": "e745e167c1020928ef20ea1397b6b4d230681b4d" + }, + "bowtie2/align": { + "git_sha": "e745e167c1020928ef20ea1397b6b4d230681b4d" + }, + "bowtie2/build": { + "git_sha": "e745e167c1020928ef20ea1397b6b4d230681b4d" + }, + "cat/fastq": { + "git_sha": "e745e167c1020928ef20ea1397b6b4d230681b4d" + }, + "centrifuge/centrifuge": { + "git_sha": "d2726fcf75063960f06b36d2229a4c0966614108" + }, + "centrifuge/kreport": { + "git_sha": "734d0db6079a4aa43b6509b207e5d6feb35d4838" + }, + "custom/dumpsoftwareversions": { + "git_sha": "e745e167c1020928ef20ea1397b6b4d230681b4d" + }, + "diamond/blastx": { + "git_sha": "3531824af826c16cd252bc5aa82ae169b244ebaa" + }, + "fastp": { + "git_sha": "d0a1cbb703a130c19f6796c3fce24fbe7dfce789" + }, + "fastqc": { + "git_sha": "e745e167c1020928ef20ea1397b6b4d230681b4d" + }, + "filtlong": { + "git_sha": "957cb9b83668075f4af101fc99502908cca487e3" + }, + "gunzip": { + "git_sha": "9aadd9a6d3f5964476582319b3a1c54a3e3fe7c9" + }, + "kaiju/kaiju": { + "git_sha": "8856f127c58f6af479128be8b8df4d42e442ddbe" + }, + "kaiju/kaiju2krona": { + "git_sha": "2f0b19240430de6807b1232e6d9d0e8084e8a28f" + }, + "kaiju/kaiju2table": { + "git_sha": "538dbac98ba9c8f799536cd5a617195501439457" + }, + "kraken2/kraken2": { + "git_sha": "abe025677cdd805cc93032341ab19885473c1a07" + }, + "krakentools/kreport2krona": { + "git_sha": "8b2a473f586bed003e72d2b183acc43fc0ddc422" + }, + "krona/ktimporttaxonomy": { + "git_sha": "0e9fd9370ad1845870b8a9c63fcc47d999a1739e" + }, + "krona/ktimporttext": { + "git_sha": "cdefbec66999c0b49d8bfeea9d6f9d19056635a2" + }, + "malt/run": { + "git_sha": "be8d7b3293cac26cc63e4dbfb364deb8ed6ec7e5" + }, + "megan/rma2info": { + "git_sha": "2d38566eca4cc15142b2ffa7c11837569b39aece" + }, + "metaphlan3": { + "git_sha": "ed4dd1a928ebf4308efb720de878045f7773f8e2" + }, + "minimap2/align": { + "git_sha": "1a5a9e7b4009dcf34e6867dd1a5a1d9a718b027b" + }, + "minimap2/index": { + "git_sha": "e745e167c1020928ef20ea1397b6b4d230681b4d" + }, + "motus/merge": { + "git_sha": "b02e648c221e1da17cb589eefe297e61ec9e9c49" + }, + "motus/profile": { + "git_sha": "b6ed584443ad68ac41e6975994139454a4f23c18" + }, + "multiqc": { + "git_sha": "e745e167c1020928ef20ea1397b6b4d230681b4d" + }, + "porechop": { + "git_sha": "b78e19b9dae3671db2c7d4346fe04452c1debfab" + }, + "prinseqplusplus": { + "git_sha": "f1c5384c31e985591716afdd732cf8c2ae29d05b" + }, + "samtools/bam2fq": { + "git_sha": "5510ea39fe638594bc26ac34cadf4a84bf27d159" + }, + "samtools/view": { + "git_sha": "6b64f9cb6c3dd3577931cc3cd032d6fb730000ce" + }, + "untar": { + "git_sha": "e080f4c8acf5760039ed12ec1f206170f3f9a918" } } } From c479714a5e99def23807a01f52f0f9490e82ece3 Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Fri, 2 Sep 2022 11:48:49 +0200 Subject: [PATCH 328/789] Revert "Update ci.yml" This reverts commit 61560cf065fae116cb74df26a838445bdd5bd575. --- .github/workflows/ci.yml | 22 ++++++++++++++++------ 1 file changed, 16 insertions(+), 6 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 434b494..8268d52 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -64,18 +64,28 @@ jobs: NXF_ANSI_LOG: false strategy: matrix: - NXF_VER: - - "21.10.3" - - "latest-everything" + # Nextflow versions + include: + # Test pipeline minimum Nextflow version + - NXF_VER: "21.10.3" + NXF_EDGE: "" + # Test latest edge release of Nextflow + - NXF_VER: "" + NXF_EDGE: "1" steps: - name: Check out pipeline code uses: actions/checkout@v2 - name: Install Nextflow - uses: nf-core/setup-nextflow@v1 - with: - version: "${{ matrix.NXF_VER }}" + env: + NXF_VER: ${{ matrix.NXF_VER }} + # Uncomment only if the edge release is more recent than the latest stable release + # See https://github.com/nextflow-io/nextflow/issues/2467 + # NXF_EDGE: ${{ matrix.NXF_EDGE }} + run: | + wget -qO- get.nextflow.io | bash + sudo mv nextflow /usr/local/bin/ - name: Show current locale run: locale From 55d7919fa7befebebb673bdaf3352e842be44a73 Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Fri, 2 Sep 2022 11:48:57 +0200 Subject: [PATCH 329/789] Revert "Update ci.yml" This reverts commit 176a0a6280b03c63d90b9fdbf8b1843d28421aee. --- .github/workflows/ci.yml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 8268d52..2641adb 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -23,8 +23,14 @@ jobs: - "21.10.3" - "latest-everything" parameters: + - "--perform_longread_qc false" + - "--perform_shortread_qc false" + - "--shortread_qc_tool fastp" - "--shortread_qc_tool fastp --shortread_qc_mergepairs --shortread_qc_excludeunmerged" + - "--shortread_qc_tool fastp --shortread_qc_mergepairs" + - "--shortread_qc_tool adapterremoval" - "--shortread_qc_tool adapterremoval --shortread_qc_mergepairs --shortread_qc_excludeunmerged" + - "--shortread_qc_tool adapterremoval --shortread_qc_mergepairs" - "--shortread_complexityfilter_tool bbduk" - "--shortread_complexityfilter_tool prinseqplusplus" - "--perform_runmerging" From 7917e1d656fc303a7aab59bd377b11d7acab7036 Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Fri, 2 Sep 2022 11:51:18 +0200 Subject: [PATCH 330/789] Synronise mOTUs CI setup --- .github/workflows/ci.yml | 22 ++++++---------------- 1 file changed, 6 insertions(+), 16 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 2641adb..f270829 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -70,28 +70,18 @@ jobs: NXF_ANSI_LOG: false strategy: matrix: - # Nextflow versions - include: - # Test pipeline minimum Nextflow version - - NXF_VER: "21.10.3" - NXF_EDGE: "" - # Test latest edge release of Nextflow - - NXF_VER: "" - NXF_EDGE: "1" + NXF_VER: + - "21.10.3" + - "latest-everything" steps: - name: Check out pipeline code uses: actions/checkout@v2 - name: Install Nextflow - env: - NXF_VER: ${{ matrix.NXF_VER }} - # Uncomment only if the edge release is more recent than the latest stable release - # See https://github.com/nextflow-io/nextflow/issues/2467 - # NXF_EDGE: ${{ matrix.NXF_EDGE }} - run: | - wget -qO- get.nextflow.io | bash - sudo mv nextflow /usr/local/bin/ + uses: nf-core/setup-nextflow@v1 + with: + version: "${{ matrix.NXF_VER }}" - name: Show current locale run: locale From 3a33d81e80d8769717357fd3b9526a41316c9265 Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Fri, 2 Sep 2022 11:55:19 +0200 Subject: [PATCH 331/789] Black linting I hope --- bin/check_samplesheet.py | 20 ++++++++------------ 1 file changed, 8 insertions(+), 12 deletions(-) diff --git a/bin/check_samplesheet.py b/bin/check_samplesheet.py index 7db3934..ca54ed9 100755 --- a/bin/check_samplesheet.py +++ b/bin/check_samplesheet.py @@ -6,10 +6,9 @@ import sys import errno import argparse + def parse_args(args=None): - Description = ( - "Reformat nf-core/taxprofiler samplesheet file and check its contents." - ) + Description = "Reformat nf-core/taxprofiler samplesheet file and check its contents." Epilog = "Example usage: python check_samplesheet.py " @@ -18,6 +17,7 @@ def parse_args(args=None): parser.add_argument("FILE_OUT", help="Output file.") return parser.parse_args(args) + def make_dir(path): if len(path) > 0: try: @@ -26,6 +26,7 @@ def make_dir(path): if exception.errno != errno.EEXIST: raise exception + def print_error(error, context="Line", context_str=""): error_str = "ERROR: Please check samplesheet -> {}".format(error) if context != "" and context_str != "": @@ -35,6 +36,7 @@ def print_error(error, context="Line", context_str=""): print(error_str) sys.exit(1) + def check_samplesheet(file_in, file_out): """ This function checks that the samplesheet follows the following structure: @@ -118,9 +120,7 @@ def check_samplesheet(file_in, file_out): num_cols = len([x for x in lspl if x]) if num_cols < MIN_COLS: print_error( - "Invalid number of populated columns (minimum = {})!".format( - MIN_COLS - ), + "Invalid number of populated columns (minimum = {})!".format(MIN_COLS), "Line", line, ) @@ -183,13 +183,9 @@ def check_samplesheet(file_in, file_out): ## Auto-detect paired-end/single-end if sample and fastq_1 and fastq_2: ## Paired-end short reads sample_info.extend(["0", fastq_1, fastq_2, fasta]) - elif ( - sample and fastq_1 and not fastq_2 - ): ## Single-end short/long fastq reads + elif sample and fastq_1 and not fastq_2: ## Single-end short/long fastq reads sample_info.extend(["1", fastq_1, fastq_2, fasta]) - elif ( - sample and fasta and not fastq_1 and not fastq_2 - ): ## Single-end long reads + elif sample and fasta and not fastq_1 and not fastq_2: ## Single-end long reads sample_info.extend(["1", fastq_1, fastq_2, fasta]) elif fasta and (fastq_1 or fastq_2): print_error( From c3427e44b3a9eb198e6ef31866ee5568fa51b749 Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Fri, 2 Sep 2022 12:24:29 +0200 Subject: [PATCH 332/789] Try with retries from sarek approach --- .github/workflows/ci.yml | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index f270829..3bc0dda 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -55,11 +55,10 @@ jobs: sudo update-locale LANG=en_US.UTF-8 - name: Run pipeline with test data - # TODO nf-core: You can customise CI pipeline run tests as required - # For example: adding multiple test runs with different parameters - # Remember that you can parallelise this by using strategy.matrix - run: | - nextflow run ${GITHUB_WORKSPACE} -profile test,docker --outdir ./results ${{ matrix.parameters }} + uses: Wandalen/wretry.action@v1.0.11 + with: + command: nextflow run ${GITHUB_WORKSPACE} -profile test,docker --outdir ./results ${{ matrix.parameters }} + attempt_limit: 3 motus: name: Test mOTUs with workflow parameters From 8456f934ed7ca6c17a13af13794cc4ae27dc3e29 Mon Sep 17 00:00:00 2001 From: "James A. Fellows Yates" Date: Fri, 2 Sep 2022 16:15:46 +0200 Subject: [PATCH 333/789] Update subworkflows/local/visualization_krona.nf --- subworkflows/local/visualization_krona.nf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/subworkflows/local/visualization_krona.nf b/subworkflows/local/visualization_krona.nf index 86cbb71..f06768a 100644 --- a/subworkflows/local/visualization_krona.nf +++ b/subworkflows/local/visualization_krona.nf @@ -2,7 +2,7 @@ // Create Krona visualizations // -include { MEGAN_RMA2INFO_KRONA } from '../../modules/nf-core/modules/megan/rma2info/main' +include { MEGAN_RMA2INFO as MEGAN_RMA2INFO_KRONA } from '../../modules/nf-core/modules/megan/rma2info/main' include { KAIJU_KAIJU2KRONA } from '../../modules/nf-core/modules/kaiju/kaiju2krona/main' include { KRAKENTOOLS_KREPORT2KRONA } from '../../modules/nf-core/modules/krakentools/kreport2krona/main' include { KRONA_CLEANUP } from '../../modules/local/krona_cleanup' From 331231ea28a5c18160fb5f4f785f6915d33bf560 Mon Sep 17 00:00:00 2001 From: "James A. Fellows Yates" Date: Sun, 4 Sep 2022 14:02:54 +0000 Subject: [PATCH 334/789] Standardise CI execution --- .github/workflows/ci.yml | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 3bc0dda..106de1b 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -98,5 +98,7 @@ jobs: echo 'motus,db_mOTU,,db_mOTU' >> 'database_motus.csv' - name: Run pipeline with test data - run: | - nextflow run ${GITHUB_WORKSPACE} -profile test_motus,docker --outdir ./results --databases ./database_motus.csv + uses: Wandalen/wretry.action@v1.0.11 + with: + command: nextflow run ${GITHUB_WORKSPACE} -profile test_motus,docker --outdir ./results --databases ./database_motus.csv + attempt_limit: 3 From dd194f3f47f8746826aa49b3e490b3e2f9cb809e Mon Sep 17 00:00:00 2001 From: "James A. Fellows Yates" Date: Sun, 4 Sep 2022 15:01:58 +0000 Subject: [PATCH 335/789] Fix mOTUs CI and old param warn --- .github/workflows/ci.yml | 3 --- conf/test_motus.config | 4 ++-- 2 files changed, 2 insertions(+), 5 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 106de1b..5cea5b7 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -64,9 +64,6 @@ jobs: name: Test mOTUs with workflow parameters if: ${{ github.event_name != 'push' || (github.event_name == 'push' && github.repository == 'nf-core/taxprofiler') }} runs-on: ubuntu-latest - env: - NXF_VER: ${{ matrix.nxf_ver }} - NXF_ANSI_LOG: false strategy: matrix: NXF_VER: diff --git a/conf/test_motus.config b/conf/test_motus.config index 1405447..d5eb8f8 100644 --- a/conf/test_motus.config +++ b/conf/test_motus.config @@ -24,8 +24,8 @@ params { // TODO nf-core: Give any required params for the test so that command line flags are not needed input = 'https://raw.githubusercontent.com/nf-core/test-datasets/taxprofiler/samplesheet.csv' databases = 'database_motus.csv' - perform_shortread_clipmerge = false - perform_longread_clip = false + perform_shortread_qc = false + perform_longread_qc = false perform_shortread_complexityfilter = false perform_shortread_hostremoval = false perform_longread_hostremoval = false From 7c5f9d0c24315a793c79a01c4b6dd5e0e8e42ffd Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Tue, 6 Sep 2022 17:34:45 +0200 Subject: [PATCH 336/789] Start work on more merging tools --- conf/modules.config | 31 +++++++++---------- conf/test_nothing.config | 2 +- subworkflows/local/profiling.nf | 4 --- .../local/standardisation_profiles.nf | 24 ++++++++++++-- workflows/taxprofiler.nf | 6 ++++ 5 files changed, 44 insertions(+), 23 deletions(-) diff --git a/conf/modules.config b/conf/modules.config index d4a2693..7c1ceba 100644 --- a/conf/modules.config +++ b/conf/modules.config @@ -268,7 +268,7 @@ process { // one run with multiple samples, so fix ID to just db name to ensure clean log name ext.prefix = { "${meta.db_name}" } publishDir = [ - path: { "${params.outdir}/malt/${meta.db_name}" }, + path: { "${params.outdir}/malt/${meta.db_name}/${ext.prefix}" }, mode: params.publish_dir_mode, pattern: '*.{rma6,log,sam}' ] @@ -278,7 +278,7 @@ process { ext.args = "-c2c Taxonomy" ext.prefix = { "${meta.id}" } publishDir = [ - path: { "${params.outdir}/malt/${meta.db_name}" }, + path: { "${params.outdir}/malt/${meta.db_name}/${ext.prefix}" }, mode: params.publish_dir_mode, pattern: '*.{txt.gz,megan}' ] @@ -288,7 +288,7 @@ process { ext.args = { "${meta.db_params}" } ext.prefix = params.perform_runmerging ? { "${meta.id}-${meta.db_name}" } : { "${meta.id}-${meta.run_accession}-${meta.db_name}" } publishDir = [ - path: { "${params.outdir}/kraken2/${meta.db_name}" }, + path: { "${params.outdir}/kraken2/${meta.db_name}/${ext.prefix}" }, mode: params.publish_dir_mode, pattern: '*.{txt,report,fastq.gz}' ] @@ -297,7 +297,7 @@ process { withName: KRONA_CLEANUP { ext.prefix = params.perform_runmerging ? { "${meta.id}-${meta.db_name}" } : { "${meta.id}-${meta.run_accession}-${meta.db_name}" } publishDir = [ - path: { "${params.outdir}/krona" }, + path: { "${params.outdir}/krona/${ext.prefix}" }, mode: params.publish_dir_mode, pattern: '*.{html}' ] @@ -306,7 +306,7 @@ process { withName: KRONA_KTIMPORTTEXT { ext.prefix = { "${meta.tool}-${meta.id}" } publishDir = [ - path: { "${params.outdir}/krona" }, + path: { "${params.outdir}/krona/${ext.prefix}" }, mode: params.publish_dir_mode, pattern: '*.{html}' ] @@ -321,7 +321,7 @@ process { ext.args = "-i" ext.prefix = { "${meta.tool}-${meta.id}" } publishDir = [ - path: { "${params.outdir}/krona" }, + path: { "${params.outdir}/krona/${ext.prefix}" }, mode: params.publish_dir_mode, pattern: '*.{html}' ] @@ -331,7 +331,7 @@ process { ext.args = { "${meta.db_params}" } ext.prefix = params.perform_runmerging ? { "${meta.id}-${meta.db_name}" } : { "${meta.id}-${meta.run_accession}-${meta.db_name}" } publishDir = [ - path: { "${params.outdir}/metaphlan3/${meta.db_name}" }, + path: { "${params.outdir}/metaphlan3/${meta.db_name}/${ext.prefix}" }, mode: params.publish_dir_mode, pattern: '*.{biom,txt}' ] @@ -339,7 +339,7 @@ process { withName: CENTRIFUGE_CENTRIFUGE { publishDir = [ - path: { "${params.outdir}/centrifuge/${meta.db_name}" }, + path: { "${params.outdir}/centrifuge/${meta.db_name}/${ext.prefix}" }, mode: params.publish_dir_mode, pattern: '*.{txt,sam,gz}' ] @@ -352,27 +352,26 @@ process { ext.args = { "${meta.db_params}" } ext.prefix = params.perform_runmerging ? { "${meta.id}-${meta.db_name}.centrifuge" } : { "${meta.id}-${meta.run_accession}-${meta.db_name}.centrifuge" } publishDir = [ - path: { "${params.outdir}/centrifuge/${meta.db_name}" }, + path: { "${params.outdir}/centrifuge/${meta.db_name}/${ext.prefix}" }, mode: params.publish_dir_mode, pattern: '*.{txt}' ] } withName: KAIJU_KAIJU { + ext.prefix = params.perform_runmerging ? { "${meta.id}-${meta.db_name}" } : { "${meta.id}-${meta.run_accession}-${meta.db_name}" } publishDir = [ - path: { "${params.outdir}/kaiju/${meta.db_name}" }, + path: { "${params.outdir}/kaiju/${meta.db_name}/${ext.prefix}" }, mode: params.publish_dir_mode, pattern: '*.tsv' ] ext.args = { "${meta.db_params}" } - ext.prefix = params.perform_runmerging ? { "${meta.id}-${meta.db_name}" } : { "${meta.id}-${meta.run_accession}-${meta.db_name}" } } withName: KAIJU_KAIJU2TABLE { - ext.args = { "${meta.db_params}" } - ext.prefix = params.perform_runmerging ? { "${meta.id}-${meta.db_name}" } : { "${meta.id}-${meta.run_accession}-${meta.db_name}" } + ext.prefix = { "${meta.id}_combined_reports" } publishDir = [ - path: { "${params.outdir}/kaiju/${meta.db_name}" }, + path: { "${params.outdir}/kaiju/" }, mode: params.publish_dir_mode, pattern: '*.{txt}' ] @@ -386,7 +385,7 @@ process { ext.args = { "${meta.db_params}" } ext.prefix = params.perform_runmerging ? { "${meta.id}-${meta.db_name}" } : { "${meta.id}-${meta.run_accession}-${meta.db_name}" } publishDir = [ - path: { "${params.outdir}/diamond/${meta.db_name}" }, + path: { "${params.outdir}/diamond/${meta.db_name}/${ext.prefix}" }, mode: params.publish_dir_mode, pattern: '*.{blast,xml,txt,daa,sam,tsv,paf,log}' ] @@ -395,7 +394,7 @@ process { withName: MOTUS_PROFILE { ext.prefix = params.perform_runmerging ? { "${meta.id}-${meta.db_name}" } : { "${meta.id}-${meta.run_accession}-${meta.db_name}" } publishDir = [ - path: { "${params.outdir}/motus/${meta.db_name}" }, + path: { "${params.outdir}/motus/${meta.db_name}/${ext.prefix}" }, mode: params.publish_dir_mode ] } diff --git a/conf/test_nothing.config b/conf/test_nothing.config index 5cd89eb..91b0aa4 100644 --- a/conf/test_nothing.config +++ b/conf/test_nothing.config @@ -12,7 +12,7 @@ params { config_profile_name = 'Test profile' - config_profile_description = 'Minimal test dataset without performing any preprocessing nor profiling to check pipeline function. Useful when you only wish to test a single profiler without having to 'opt-out' of all the others' + config_profile_description = 'Minimal test dataset without performing any preprocessing nor profiling to check pipeline function. Useful when you only wish to test a single profiler without having to opt-out of all the others' // Limit resources so that this can run on GitHub Actions max_cpus = 2 diff --git a/subworkflows/local/profiling.nf b/subworkflows/local/profiling.nf index 17c96f1..c4c5195 100644 --- a/subworkflows/local/profiling.nf +++ b/subworkflows/local/profiling.nf @@ -9,7 +9,6 @@ include { CENTRIFUGE_CENTRIFUGE } from '../../modules/nf-core/mo include { CENTRIFUGE_KREPORT } from '../../modules/nf-core/modules/centrifuge/kreport/main' include { METAPHLAN3 } from '../../modules/nf-core/modules/metaphlan3/main' include { KAIJU_KAIJU } from '../../modules/nf-core/modules/kaiju/kaiju/main' -include { KAIJU_KAIJU2TABLE } from '../../modules/nf-core/modules/kaiju/kaiju2table/main' include { DIAMOND_BLASTX } from '../../modules/nf-core/modules/diamond/blastx/main' include { MOTUS_PROFILE } from '../../modules/nf-core/modules/motus/profile/main' @@ -185,11 +184,8 @@ workflow PROFILING { } KAIJU_KAIJU ( ch_input_for_kaiju.reads, ch_input_for_kaiju.db) - KAIJU_KAIJU2TABLE (KAIJU_KAIJU.out.results, ch_input_for_kaiju.db, params.kaiju_taxon_rank) - ch_multiqc_files = ch_multiqc_files.mix( KAIJU_KAIJU2TABLE.out.summary ) ch_versions = ch_versions.mix( KAIJU_KAIJU.out.versions.first() ) ch_raw_classifications = ch_raw_classifications.mix( KAIJU_KAIJU.out.results ) - ch_raw_profiles = ch_raw_profiles.mix( KAIJU_KAIJU2TABLE.out.summary ) } diff --git a/subworkflows/local/standardisation_profiles.nf b/subworkflows/local/standardisation_profiles.nf index 92ceb16..8be6020 100644 --- a/subworkflows/local/standardisation_profiles.nf +++ b/subworkflows/local/standardisation_profiles.nf @@ -1,7 +1,8 @@ // -// Create Krona visualizations +// Standardise output files e.g. aggregation // +include { KAIJU_KAIJU2TABLE } from '../../modules/nf-core/modules/kaiju/kaiju2table/main' include { MOTUS_MERGE } from '../../modules/nf-core/modules/motus/merge/main' workflow STANDARDISATION_PROFILES { @@ -14,6 +15,7 @@ workflow STANDARDISATION_PROFILES { main: ch_standardised_tables = Channel.empty() ch_versions = Channel.empty() + ch_multiqc_files = Channel.empty() /* Split profile results based on tool they come from @@ -26,12 +28,14 @@ workflow STANDARDISATION_PROFILES { ch_input_classifications = classifications .branch { + kaiju: it[0]['tool'] == 'kaiju' unknown: true } ch_input_databases = databases .branch { motus: it[0]['tool'] == 'motus' + kaiju: it[0]['tool'] == 'kaiju' unknown: true } @@ -39,6 +43,21 @@ workflow STANDARDISATION_PROFILES { Standardise and aggregate */ + // Kaiju + + // Collect and replace id for db_name for prefix + ch_profiles_for_kaiju = ch_input_classifications.kaiju + .map { [it[0]['db_name'], it[1]] } + .groupTuple() + .map { + [[id:it[0]], it[1]] + } + + KAIJU_KAIJU2TABLE ( ch_profiles_for_kaiju, ch_input_databases.kaiju.map{it[1]}, params.kaiju_taxon_rank) + ch_standardised_tables = ch_standardised_tables.mix( KAIJU_KAIJU2TABLE.out.summary ) + ch_multiqc_files = ch_multiqc_files.mix( KAIJU_KAIJU2TABLE.out.summary ) + ch_versions = ch_versions.mix( KAIJU_KAIJU2TABLE.out.versions ) + // mOTUs has a 'single' database, and cannot create custom ones. // Therefore removing db info here, and publish merged at root mOTUs results // directory @@ -51,6 +70,7 @@ workflow STANDARDISATION_PROFILES { ch_versions = ch_versions.mix( MOTUS_MERGE.out.versions ) emit: - tables = ch_standardised_tables + tables = ch_standardised_tables versions = ch_versions + mqc = ch_multiqc_files } diff --git a/workflows/taxprofiler.nf b/workflows/taxprofiler.nf index 2bd6c01..28d248b 100644 --- a/workflows/taxprofiler.nf +++ b/workflows/taxprofiler.nf @@ -267,6 +267,12 @@ workflow TAXPROFILER { ch_multiqc_files = ch_multiqc_files.mix( PROFILING.out.mqc.collect{it[1]}.ifEmpty([]) ) + if ( params.run_profile_standardisation ) { + ch_multiqc_files = ch_multiqc_files.mix( STANDARDISATION_PROFILES.out.mqc.collect{it[1]}.ifEmpty([]) ) + } + + ch_multiqc_files = ch_multiqc_files.mix( PROFILING.out.mqc.collect{it[1]}.ifEmpty([]) ) + // TODO create multiQC module for metaphlan MULTIQC ( ch_multiqc_files.collect() From 175be0075a72b62987b23e237808d8938dcfa780 Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Wed, 7 Sep 2022 11:22:06 +0200 Subject: [PATCH 337/789] Add tube map --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index 08916c6..672c2a9 100644 --- a/README.md +++ b/README.md @@ -26,6 +26,8 @@ On release, automated continuous integration tests run the pipeline on a full-si +![](docs/images/taxprofiler_tube.png) + 1. Read QC ([`FastQC`](https://www.bioinformatics.babraham.ac.uk/projects/fastqc/)) 2. Performs optional read pre-processing - Adapter clipping and merging (short read: [fastp](https://github.com/OpenGene/fastp), [AdapterRemoval2](https://github.com/MikkelSchubert/adapterremoval); long read: [porechop](https://github.com/rrwick/Porechop)) From 3a6536b1494bb0c7a60af400d8e7ba2de25b5f39 Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Wed, 7 Sep 2022 11:22:22 +0200 Subject: [PATCH 338/789] Add tube map properly --- docs/images/taxprofiler_tube.pdf | Bin 0 -> 166185 bytes docs/images/taxprofiler_tube.png | Bin 0 -> 663369 bytes docs/images/taxprofiler_tube.svg | 4407 ++++++++++++++++++++++++++++++ 3 files changed, 4407 insertions(+) create mode 100644 docs/images/taxprofiler_tube.pdf create mode 100644 docs/images/taxprofiler_tube.png create mode 100644 docs/images/taxprofiler_tube.svg diff --git a/docs/images/taxprofiler_tube.pdf b/docs/images/taxprofiler_tube.pdf new file mode 100644 index 0000000000000000000000000000000000000000..63d8c06090681b872fda18341063fdf52df96f65 GIT binary patch literal 166185 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«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�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