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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] Prettier format --- nextflow_schema.json | 579 +++++++++++++++++++++---------------------- 1 file changed, 288 insertions(+), 291 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'`" - } - } - }, - "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" - } - } + "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" } + } }, - "allOf": [ - { - "$ref": "#/definitions/input_output_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." }, - { - "$ref": "#/definitions/reference_genome_options" + "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 }, - { - "$ref": "#/definitions/institutional_config_options" - }, - { - "$ref": "#/definitions/max_job_request_options" - }, - { - "$ref": "#/definitions/generic_options" + "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": { - "databases": { - "type": "string", - "default": "None" + } + }, + "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" }, - "shortread_clipmerge": { - "type": "boolean" + "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" }, - "shortread_excludeunmerged": { - "type": "boolean", - "default": true + "config_profile_name": { + "type": "string", + "description": "Institutional config name.", + "hidden": true, + "fa_icon": "fas fa-users-cog" }, - "longread_clip": { - "type": "boolean" + "config_profile_description": { + "type": "string", + "description": "Institutional config description.", + "hidden": true, + "fa_icon": "fas fa-users-cog" }, - "run_malt": { - "type": "boolean" + "config_profile_contact": { + "type": "string", + "description": "Institutional config contact information.", + "hidden": true, + "fa_icon": "fas fa-users-cog" }, - "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" + "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 + }, + "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" + } + } } + }, + "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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] Apply prettier again --- nextflow_schema.json | 572 +++++++++++++++++++++---------------------- 1 file changed, 281 insertions(+), 291 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" + "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 + }, + "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" + } + } } - } }, - "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." + "allOf": [ + { + "$ref": "#/definitions/input_output_options" }, - "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 + { + "$ref": "#/definitions/reference_genome_options" }, - "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`." + { + "$ref": "#/definitions/institutional_config_options" + }, + { + "$ref": "#/definitions/max_job_request_options" + }, + { + "$ref": "#/definitions/generic_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" + ], + "properties": { + "databases": { + "type": "string", + "default": "None" }, - "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" + "shortread_clipmerge": { + "type": "boolean" }, - "config_profile_name": { - "type": "string", - "description": "Institutional config name.", - "hidden": true, - "fa_icon": "fas fa-users-cog" + "shortread_excludeunmerged": { + "type": "boolean", + "default": true }, - "config_profile_description": { - "type": "string", - "description": "Institutional config description.", - "hidden": true, - "fa_icon": "fas fa-users-cog" + "longread_clip": { + "type": "boolean" }, - "config_profile_contact": { - "type": "string", - "description": "Institutional config contact information.", - "hidden": true, - "fa_icon": "fas fa-users-cog" + "run_malt": { + "type": "boolean" }, - "config_profile_url": { - "type": "string", - "description": "Institutional config URL link.", - "hidden": true, - "fa_icon": "fas fa-users-cog" + "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" } - } - }, - "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 - }, - "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" - } - } } - }, - "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/532] 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/532] 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/532] 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/532] Add final adapterremoval options to match fastp functionality --- conf/modules.config | 70 ++++++++++++++++--- nextflow.config | 2 +- nextflow_schema.json | 23 ++---- .../local/shortread_adapterremoval.nf | 10 ++- 4 files changed, 71 insertions(+), 34 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,15 @@ process { ] } - withName: FASTP { - ext.prefix = { "${meta.id}_${meta.run_accession}" } + withName: FASTP_SINGLE { 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" : "", // 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 +78,61 @@ process { ] } + 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}" : "", + 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', + pattern: '*.fastq.gz' + ] + } + + 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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 | 66 ++++++++++++------- 13 files changed, 222 insertions(+), 45 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) - } - 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()) - } - 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( 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.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([]) ).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([]) ).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/532] 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/532] 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/532] 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/532] 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/532] 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 | 126 ++++++++++++------ 2 files changed, 118 insertions(+), 39 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() + 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] + } + ) - ch_adapterremoval_reads_prepped = CAT_FASTQ ( ch_adapterremoval_for_cat ).reads - .mix( ADAPTERREMOVAL_SINGLE.out.singles_truncated ) + 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] + } + ) - ch_adapterremoval_reads_prepped = CAT_FASTQ ( ch_adapterremoval_for_cat ).reads - .mix( ADAPTERREMOVAL_SINGLE.out.singles_truncated ) + 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 { - 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] + } + ) - ch_processed_reads = ch_adapterremoval_reads_prepped + 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_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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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] - } - ) + .groupTuple() + .map { [it.head(), it.tail().flatten()] } - CAT_FASTQ( - ENSURE_FASTQ_EXTENSION1.out.reads - .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 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] } - ) + .groupTuple() - CAT_FASTQ( - ENSURE_FASTQ_EXTENSION1.out.reads - .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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] Move profiling to subworkflow and standardise outputs --- conf/modules.config | 24 +++---- subworkflows/local/profiling.nf | 120 ++++++++++++++++++++++++++++++++ workflows/taxprofiler.nf | 97 ++------------------------ 3 files changed, 136 insertions(+), 105 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,6 +190,16 @@ process { ext.prefix = { "${meta.id}-${meta.run_accession}-${meta.db_name}" } } + withName: CENTRIFUGE_CENTRIFUGE { + publishDir = [ + path: { "${params.outdir}/centrifuge/${meta.db_name}" }, + mode: params.publish_dir_mode, + pattern: '*.txt' + ] + ext.args = { "${meta.db_params}" } + ext.prefix = { "${meta.id}-${meta.run_accession}-${meta.db_name}" } + } + withName: CUSTOM_DUMPSOFTWAREVERSIONS { publishDir = [ path: { "${params.outdir}/pipeline_info" }, @@ -198,14 +208,4 @@ process { ] } - withName: CENTRIFUGE_CENTRIFUGE { - publishDir = [ - path: { "${params.outdir}/centrifuge/${meta.db_name}" }, - mode: params.publish_dir_mode, - pattern: '*.{fastq.gz,txt}' - ] - 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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" }, - "save_runmerged_reads": { + "perform_shortread_clipmerge": { + "type": "boolean" + }, + "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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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: '*.{log}' + 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: '*.{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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] Add draft version of DIAMOND --- CITATIONS.md | 4 ++ conf/modules.config | 50 ++++++++++------- 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, 216 insertions(+), 27 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,6 +264,36 @@ 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 = 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}' + ] + } + + 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}/diamond/${meta.db_name}" }, + mode: params.publish_dir_mode, + pattern: '*.{blast,xml,txt,daa,sam,tsv,paf}' + ] + } + withName: CUSTOM_DUMPSOFTWAREVERSIONS { publishDir = [ path: { "${params.outdir}/pipeline_info" }, @@ -279,24 +309,4 @@ process { saveAs: { filename -> filename.equals('versions.yml') ? null : filename } ] } - - 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 = 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/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/532] 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/532] 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/532] 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,21 +14,43 @@ 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_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 ] ] versions = ch_versions // channel: [ versions.yml ] 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/532] Only create profiler input channels when profiler activate --- subworkflows/local/profiling.nf | 142 +++++++++++++++++--------------- 1 file changed, 74 insertions(+), 68 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] - } - - 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 - */ - if ( params.run_malt ) { + + + // 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] + 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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 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ு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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/532] 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/532] 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/532] Module update --- modules.json | 232 ++++++++++-------- modules/nf-core/modules/bbmap/bbduk/meta.yml | 1 + modules/nf-core/modules/bowtie2/align/main.nf | 106 ++++---- .../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, 354 insertions(+), 207 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}" + + def unaligned = "" + def reads_args = "" 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 - """ + 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 - - - 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 - """ + unaligned = save_unaligned ? "--un-conc-gz ${prefix}.unmapped.fastq.gz" : "" + reads_args = "-1 ${reads[0]} -2 ${reads[1]}" } + + 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//"` + [ -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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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 | 27 +++++++++---------- 12 files changed, 37 insertions(+), 35 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) { +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 = [] -} else if (params.pep) { - - if ( params.pep.startsWith("http://") || params.pep.startsWith("https://") ) { - ch_input = file(params.pep) - ch_pep_input_base_dir = [] - } - - else { - ch_input = file(params.pep) - ch_pep_input_base_dir = new File(params.pep).getParent() - } - -} else { +} 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] Update workflows/taxprofiler.nf Co-authored-by: James A. Fellows Yates --- bin/detect_reads.py | 100 ++++++++++++++---------------- nextflow_schema.json | 4 +- subworkflows/local/input_check.nf | 6 +- workflows/taxprofiler.nf | 22 ++----- 4 files changed, 56 insertions(+), 76 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 -def parse_args(args=None) -> argparse.Namespace: +class ColumnNames(str, Enum): + SAMPLE = "sample" + FASTQ_1 = "fastq_1" + FASTQ_2 = "fastq_2" + FASTA = "fasta" + SINGLE_END = "single_end" + + +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): + def _get_row_values(self, samplesheet_row: dict): """ - This method extracts data from the columns for given row of samplesheet table, based on - previously infered column indexes. + This method extracts data from the columns for given row of samplesheet table. """ - 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 + return ( + samplesheet_row.get(ColumnNames.SAMPLE), + samplesheet_row.get(ColumnNames.FASTQ_1), + samplesheet_row.get(ColumnNames.FASTQ_2), + samplesheet_row.get(ColumnNames.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: + 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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 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 382/532] [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 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 383/532] 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 4352d35937560e977904f1e9154691b76aff41f8 Mon Sep 17 00:00:00 2001 From: "Moritz E. Beber" Date: Fri, 14 Oct 2022 10:52:17 +0200 Subject: [PATCH 384/532] 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 385/532] 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 386/532] 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 387/532] 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 388/532] 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 389/532] 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 390/532] 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 391/532] 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 392/532] 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 393/532] 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 394/532] 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 395/532] 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 396/532] 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 397/532] 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 398/532] 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 399/532] 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 400/532] 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 401/532] 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 402/532] 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 403/532] 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 404/532] 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 405/532] 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 406/532] 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 407/532] 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 408/532] 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 409/532] 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,12 +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.preprocessing_qc_tool == 'falco') { + 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([])) } - 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 00038db6345d0492bc0a1a4ce0dacdf86dbd836e Mon Sep 17 00:00:00 2001 From: nf-core-bot Date: Tue, 25 Oct 2022 08:51:58 +0000 Subject: [PATCH 410/532] [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 411/532] 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 412/532] 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 413/532] 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 414/532] 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 415/532] 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 416/532] 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 417/532] 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 418/532] 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 419/532] 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 420/532] 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 421/532] 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 422/532] [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 423/532] 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 424/532] 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 425/532] 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 426/532] 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 427/532] 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 428/532] 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 429/532] 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 430/532] 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 431/532] 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 432/532] 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 433/532] 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 434/532] 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 435/532] 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 436/532] 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 437/532] 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 438/532] 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 439/532] 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 440/532] 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 441/532] 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 442/532] 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 443/532] [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 444/532] 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 445/532] 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 446/532] 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 447/532] 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 448/532] 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 449/532] 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 450/532] 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 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

)7;^XtIFG`<6F?%=kFo4ax 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 glGsfkBAdti+IgfYOMAq zV)qFL0JbAXYM8DbJ&DAG&*nyFnABD}x_C4tN-zoQ5*N(g@jN_7_5oYR^X?3>+_MI` zNR4l|Lpe`v)?r4b%y;y^?hr_&k2Rq{eLO8DOQ38^I$_zz z;DYYa0|sG>HM2X^I|COM4Qtivsdm4!tL>8CJwW{07<{#{I8^E7dj*+T z#RF1>#x}Kj;g!AJ_xI)~mJNqu056Hi3}MPr=yv)r8)-}urHm9^iN-jUV#7I|982ji zhp|Vbc@Q0yoi{8BGtGut$gm{?)NA(~*SmZ<1N{SH`U3e6XQ>(nIGA&OSw`-we;5e}^R9ZZO(kE1+yfo>5Enty+rE z_58JE=NgB6@Ad}LdXF=DYve~$8hzT|?>IWfV;`IB^pI`lSG*LrA#gBGIO>E zZY6P@hKh1zRY*3;gtc>N@Vd(%pzJ*0{)v&&g>LB`W>j~{ z25y3H5N4;?c}YMgVu_sjd|E@;kVjAjMTMIbv?UbwqHml(z>!~ z-kY93`I3_wt47m+6w5J)dDoy6fIri_m0WsxYzWWf!Z4GQ_Ir(l1UaN&P{|@L-pM-G z+e|hzM%Tze1^-T^nX%sWU)vGbjB)U5!a?t~O+MQ&{7Az0pM20hk*r*`W81b!VhjlR zw@6a0AhV+xn0XV35qNEvioCo$J0NG;J4;Si9Xc(1Jw?!nujb(K+g^!jY;sK%4C0He ziAE-G5>vhjsCPNeaB-#d?u~t)b$@W<-t_rI!1p{0bfrG}&)9tYD+_gFcx1m7Lm*?F zL~=%usK&lSm3dpQ{&zJ{P<$=Of6}l>KbSvFtNX)qE3@1HOYT^LYVylejin#^74t!} zWVn}oGK7`?+a=4bG`z@UqC8vn!GIg}Fv+b^Xc=2F&|EzpUYFk_71pVq4HF;3`m?3O z`zJ#Wkd{$u_4Vt~8xKbHey0yPCW@ZGgJbUCQ-0IrROauv$nxYX^Vi z5X}l|8bMrS0~y(h)XPpnGAuS$a*)Jf#Lg?03=}L4?LYkPXMd~ywcc)M`i)V}{1vf$ ztBBjea~Hzd_47J`pMOj1+kM^b=rv0k8cz@&;vkSa3#CA6c75yDK<>n52O=>+<=O30 z(G0sZ+WW_?-c)psu_|fU_*{P> zI69o9Hqxn@Pd8oOcCdf#_?Nn^!&S?b_VR*oW@s=uXl2(iK%@SzuGb;aeMK&R4+di@ zi~Zv@VJ!L&_TT{}M;{}tD{oEp z;O4SNrTR-f1Sqk_gzQA923AV!A{E9lVe|qMSjS_PePG#tP~&&j*_wuzCmUXBX-D=HoFkJ1} z`2dSN@eD_{N;23plBMTBd_iL-9#<_gd3=R*Yuc5^Yc}mkL|%2&s_QOX178y3G8}At z!fuQtoRVum@f-!uscpqMp4`*cKe96iXlEbhiG%#v5_JF3&~ugv{T6XX{#v|*!Y zj8D?vRR>=T+?7{--P7vTzm2jn=UxaPiQ3B z#b0yx!+k2vE@hwl1=#T&1 z_@7lb<+1*rNwBvTp zzqP*^-_V>$d+zj}$7WWE`L@0jRha`NfrrI+ldTc0-Mgx^bz$^7==Mx@@?3pxBJx#k7rx;n<= zjee;g5#AUKagF1I6NQq-#F8e4a4QHBg=CC&H1U)i0ZF)0&$Ea_neDo3$mvCudz*;V&Ay!fZzQftWEFH1Rl)%N_&+qGJ~URU@s z2Njd@vlUE70uy+ppS>AfPHF!vsI>tV%J4Rv{w8bwMq)bhSa2J&ob6e<*Q#kgM}#+! z9|Bj-leR?ZM)awt;~Z%25lpLH01z$S;?c@jE=&dhyr|76a?N z7m9IOn=PSV6)qAck`5iu(FgIzi0l6ZdB!kD$so zP8|ciz0r&F{SxGaCYUC%r-YDX*%bF$7|@bb7>ADre;-r#M(X33T`O zOJg*ylMs{#;D*zP$&L(AbKJO`xh8~lk*afdW_QTv_fRQz!nnTQ( zh;u4{V_R62K^kEICJibmQMRKVL7gm*D^^0I!$N!K)~ykQM1sPDxMLF+NAjB(JMwFM zKABnv!6)LXNZ1A#JtYg-*51A?WG4$1mQ7mjp6%PC3knKW%B$Q$^4ytWVhi#k`tLEs z$kO)KEgD503bVb3E*$R&rI8;mcM+q@p0tS6JDR9-QH{f7{96}OfbHa$DMQVhQ-V9A z%fiqq314w(#NFdk_Wk>-QA8dmQ%y7at1{5oglt=?y*3zUWSk8Nc=kSD*COyvrd`; zr#8L)Qit}tcNTtm61f^9>`l$aR$(<9c|uMV>Y-iH>ejcz??2IZx#eG1(N}0CIml)! z&OY@)G@3c2#M(sHfOf;tSN!Ex3hB}+MuJM(Po<>aI6dl9`6fT(Vwo}II+{8tO_yrn zcl*sNNiV)sB`2$QOhL>B|BEjba2E^6_Ova5$8RF0e%E>KWqSPd4;oOk!KLC@GVuyU zaeP(eH46D**}!MatpBjGb(?m%mtjCK5fSKp_X&=IOG+{8uX3j|W)6J6T~y&UF@An< zZg?@D|I~O)bRKWVcd}wBvOHm%3H5jvS66m%aUBS(!a`dK=hqF*v0*l7;57kGvs{?B zWnyAtJ$m#!ZXEGbhK>al<4FU9muM?TV#UB2f%x3YNJ}e0mkQstoET7Y-z_4bU@sRc zs)19-Aus)uq$E3j4$@-eZy-ejS1E6LmD_X4J+`O7ysNq?26!M^#+PTGQnycV@L^ru zF40Oy=$jB=cqj8pis?dy`xgUpYnd~DG#s)@X)POIF}n+GHBdz&Yj*I6Tt?Y-L#^bn zG{|cBo9{-mdp361_J^D)=59b7)QVjn7|p(kZo^)2Eu5enKhn`&PytB+GG(X{Edl$n zkEki@@;NCbm3NrezrpiYpV@lc&ZbM$-MB{ASGI42(@@=)I!~Qjnm2uS!VqornH5(u z#RR^5H_rO?Yp}f4ri5#}P7ZB`1de>3km0g}(kpi8${7lus$V=G{&dq}3E|&1>+axGly504hwD(@$HH-Uf?dU_6NFRz?#6P=|jMSfeKwS&C!rkNU7fuql zu6G|c=$vRCI@Cd!0aAk%Hw=pxpUB@V>TB^TJ!y9{N1umw=}k_beYBNH6@&4xZYmmJ zae~af+O=!3;j{qh8vq2N<+!iSJfSfjGvi1_)i|rS!h{#lp?}ya3U$KV<2P!kf&2&| zg1WfTi^0B{Mp_PM(a@4{+XlZAeygF>QTd1M*;cySaI3+Eu{mp&JV@fdnQ&2E7wtE(P*S9rO;E%5lNrKmp4 zqfR*R^vQte$RK^gnM2-1-6nG74a(^}nGBuF{qR5c;>`fRbbMXS08R6-&V)L5`kZJA z75UcZ2Owa4?t`)PaiM>x*183Tl(#9+<(y)pHL>(EKIg>7ajSHxZA`JS6_`KJSVQQp z!DTx!m)js+0}z2SsG%FA)>3!?p8f_ST=3cSNT$oja^*p{Us#)=>qM3a z)M_XV`$CFccded0nvXpn!k7(NUtXG$A+g|@ask3F_UmP zIC?$59m)lU%dF3~tQ1fZw0vT(jd5y-_^-SY)S0NIRDUCh#lk=<+DVgq*EM8)RLWY#3TkpE%-pTEMZa0KUiWyUjkMt>9<*-1{?p6IqI&m4 zG;m2ub#7D=K?Xaj=()ch0@Q5aJF69rpDyuu;o0#mByp`PS7rQhBm7WWpO>4oab&yNfuw-kT0X?up zvx9%ixQ%#5)}^*ph(G2QE<10CCke)fs%@!VruJwPLEHB}hAZ@0YTw$Hl~&tCVPm?$-$ zzt%1^;wIdu_>$8%sHC}2q{fe?yOP+6e+XA(M^%!AGtE>0*o7wc{o zps*TD3>f-h{~U|eV+5ZfGJSy|vO%ae&xntsYX=HvAgM6Ei;Z0dnr2;T3aQ{5Z$|`n zMzgja&TI7b`}(P$Nt(xgO-X|O24=?p4T#6?By`As6VQ1s0f4!Ae#+fvE7u0CeYSnS zg_b+g`o=|T>mrm0H@IA#Zr0oK!UeKqPX4K}2_y@UmUj2rB5lRki8@U~!YRwHHM{}J zT&W+c7_a2mt6d?7OoctXIKzAdz+o%pXBYSJ>WR|X#srco!G5qd*Ac7JJq|yPV}fY( zWydWFMIWUyt+S0AV-xeTIuq8i3HankpYj-&v73!eT&dcT@~%}qF~xsK^d-S{-_G?J z>rP0=^a^dZX9HT)k?>l1IzH(p^nHeRy2=LX=KbbY8{1%g?dg}#^$HTOIDcM01=6q& zOaO=vJPa}pH`@Xk_hcmPVjK{@meCE~pajiQBvi0OAqN zW=P2A|(zicub=?8b%;QLm? zF}=F+F6kY6BkRd;QnYUemDugo-x@dnb}ou9L*RHeE^h*Cix;CZ7!5z4n0~Y6;?wG= zhZ50+3GVVYD<80`QzhFgga;7DC&M& zkhtkT`WnJ`NVY{XoKTMQInG+XB?*t#n=~8@eKj*+8kxm5%ow0ScCC3Hnjx`x_8{R; z*q*<8g-2v|^-Aw|zrUNw>>;1i1Aw_T>6$x#xKH0qOnykmqt?=8J!lp!N#~7;K@xbFv{I-aNJ`$^-8Mxw*s3@ z5SYdp<~iUfm6k0oH@FKjfu6j?cnms26x1h~#Kwy1hr_eJP1f}`9OaP6s_*{I$tWqZ ze>+tj&VlVaclQ4fXOi)$L5G>Z2h349hai$nI%kUuzcclUH?Oa17w>!5VQyQZ+j}yF9lC9i3FNc-rV8e6 zpZ!yUqChOS8AsuGra0&dNK1)3=UB*oW`dq0gqk)#2UJ^T(kH&r1ndOFS`uQZ}u0cNiJsQ!*j3;ebNQTt9t>O z=t|SZZ5)B#*Vic3(MyFzzh}FL{oZlCYRR}-Ze3Jd)MeK4^^#xdm;LE6u4n!7J4MCx zUkBi+H4YglY%0~yx#T#_mNaQ{-qj&@6Di)BbB5581L?p9xOqsSeeX-K63{;h2Xr*X z=Y-mPW7y1adNt{*+1v_C=yY0i#Lkhbt)1aI0*+oY3e5%>c*XRxnE>|8yj(=(I&}-p z7BUj#nm*sP_**wm77#w32`B57P=V{3p^F?+Ua0aB^m-;3irihZ^r9oly}fD$hMyk-?dttyW5|UzKBUrBfZi$L&X?|j@;nGuf(Kz#*Z;sV)PBhY6zZX1wjT8HMsoIg4W@5^Ol+pbB z-&5XbgHG&!x*f^jYjFFY;csZq)k^lA)`UP_?$?Ff{a1u`V)`uN^Gk#{u!8L8)V}B#U@yF zto8>zXOL(G&)j+asn=RFjl~DjpT>wLFOFN~3)%*xoBX!7T)17}hZF@#f3NY#WT)e_ zwm*nqTq)5PvG{NPN<_30dRIJ2b_Kc-hCs|Vj-;dWaX`E5-SswsqT=E%hs&I6HZlzO z9EOvLCpy0XjK(r=gJ^^7gXeeT*^Vuk^LWm!_dwei%7QTK#E4@oRL)DRxE`2JOAYZ^gUM*iB6S^?q*N%QCxb)KNK)6(U4qsC(K>m%NGMK z6U>8flV(27od&t4Txe>N(fIo5P_WwSr!CdVfCB(McJv4$Bd>vJ9+8TcjQw8oO`ghS$QAaZ*5o;zs{6C`JI}q!?{~o{WtPmoUk_rtH8ATEz4Me1f zP%_F485xntj0zDVky#Yk8X{Q@dz7qXWrgrN&))av`|F>(`z>78>v}#P<2=se9A=_?55Q_n#d`UIB^06Dj{-76za=*EGfm^P->ER~8>)jB$T(e(Rl@OIyCYjc@yOpvU^yh2Z@=HyuApF#1B{qepLpT%QEi z7a4d{{#u~gv}${nidonrbjw48`G+miFUSa82pFd?50MiFvb{}@O&O1bVMxr?xE-lj^icUiuQ=3&p+5cb ztj_z}{3N`P(&>v878SrUBJKg`n9!{ke*eb=#}#%SzCW$KeK<3&q^wBeO8R0N3d^6< z+1u$_IIjQ4!UAu`6#dAxzmwGkS9%n&?y2N6DJ4(oJm=TTr*>E*)<)-VDCZHy*aD@Q z@n;s|VddS~;+AFEx7$9P+!{P}E)(8|S8vYoDqPD4DYA`OLs<3j;SrQ^t4AlX112Z> zF$8{GPk_9TU9$P^*G*N!RhNODuFkrGNV;Qf@SSFLyp_htEthV&XA{VFWztJOQB*a-m?=coM?VYSmN}u1%Pbg0z1% zXKHr#E+|&aYq-6@ZFxpOh?ZD#gJI#_7E1Vj8#nd_Sd-*Dx%CRf1oW^_HTsV)jkSxu z?87N(7c`zfy!)((BhvJ|xO!i^y5IGvD#QOUCyEyDS;Z}$?FV1Ez8MlejR`&tF?S(6 z4IQ0GkeEV9LkWdHQm8g*lVKH6_r%9e?rxL4xAoh)zV;&#)gj1zt<3rktn=C#O~`dJ zEm!YzIU5>Y`nw`66S#kq=V!xfrZKwnm;c|j5&N&#Ya(-=G7mRg8}AR=wJbO1-R_2m z-Mojbi`$_(PM!JTZGAZ}uX9PPJip)8A-(bjyXT{g3lQXT9&UcCap}PbbOTn8Lx_@j zn{bUWf}Mbvg(8}QHJqG!&&)NpJr>&!n&U|00v_=`(Hd?+$KU#NHcGP*xc1$ zt)?xpn6S(C+o*4KT>em|P$H5;qvd44CLIwu$Ge_Jr1|KkB@3o_b0-$AO)tBy#u0jN z|21GlaGA_T7bq$%EnPhWT4k)PeR8*JAFKX5+RIj*jKelTO`_h(S*I@z-(sS3JOu;| z!-1%rg0;b_nDTxxa_LGXy{3MSafWf}t2>-)cVVfspqT6w?I$acpu4^L7K>RXvv|oy zL@qxaD(^)s1uej#J}M!>>-7wd#8cZdOy?G)P2L}KF+QAEAM5Xn%QTA^S?OE+-)s?RR)yN zYi7O)+8M~|Ua8EHDq8x>>-xm-cGC-Ok{@=sF4ea=IweTT?ATF!G8;}|$HlKuR)%Tc z_}3U|93SxanLO-$1M5YgN7;0DXhEY69g zOD3nEXTIfP(a^E^IyvyIOerMWLH|zihH~m#yDQ#)bkL9NDt@17g0EEQ$MBZ19(_He=j$j-q*8A(Z)RZ0`WVeP-3 zu=KbNHRX9sy(RTjRdgkI`S~|PMHNmAbuUWQBZLaE)mY!+%dSn;Y`Qg^o%Mn7CYLR3 zsoQ82OT9y%`_v!!V8r^L08P!NAF{ol_|@IExonY(IZf5KdUtrt@3Rp245d3EIu2d9 zB%8KpLvWSqOqIa-3ya?)(JzpjDK{~j-ucD+-d)VBSiF8-yjL7?XDCC&y?tfA| z;oNUZtiFi->Mq^aLU$SwIsh@v1j81QQwX6}jEL!h;75EMiZmk$ zCmH&k+uDthfDF!@>BE=Y3@~zCmyE9rtTLzfCR|YIb7#*AWE+->BQllAACwd8)5)4cH3)>_Y$r0RCiYP)|m{jRmb&Jd3#y2F1kL?W0d&C zW}?d9J4sjcwB~pOqriRo5;rD~DZ$svivP1F(Jq5M*L73q?ZEHjQD-VU$1rQdFZOjo zVLo-#Nfm1Btmo?2HQG>bJ~{gOfa9Gr6VdWze}8K-iZzAdsm8y%w_X2u&bE)Kt1P}s zyS8f$^R2xcn6fIC-W%}EX1M*1E<-ST2qO#O#jRcI)=iD_;mUhKDf zR2nA_tj$mK|;edz(5!@9e>Ay+L&1JLqwZQUA>r+x~FrV-HHuhvZh>`7W86SJdd zJmBY??1-~@o@f0;M=Vx|S~m31UFUyWWINI*K^qj{ z*G+&zrr19q3a^-vhmRD(IUNP#I$Y7UtRBl7adQr@3VVgONtjc_1^~7N$x8|Fj{r%n z7i!{4`1VP(&n6fb7>?cv9C8egin@Uh_ZzBI%jT3@o&D+q*w*yzfU8y>Bu~P|@8GNc zX(yidc$_S>Gi_~cT@^a$ds#(=E*MQ;?_gd|*#Z;b)Kl&WJmSVCKp17O{^AA8MU_Wx zp#r8ppt!%rBo|H*PiDQ)Wjy(!%p|Cs^dU-=#>K_OV`-*ks5Ngh^m|pSAIREMqqP6x zdhRDwMh-*&Kympxux4UZV$uU=22=bWtA_QEg9dQZ2kW&$0B_lY%z$^oz@ak1f#Tcw zdl3!|pTT9Xz6uMlzfkj4#jE;~upJcN>5G@ai-5{+NV}t_-O_?{K7iQ#E;vviS+}@$ zBQlsy^j7-XBIHVg_LDOCKL_kU*-77Y7AK(R;iBR5Gn4 z+6Vz+WQ_j4l|#zPQVT^jAw)U&foz1CyOI)Rzk-5vLIVU|fleHPD8)AzPJp(Ygf|Q` z=aX{T7$6Xfa!3uw+b-gl5w{J@%vAdf1D|+HN>bA=tu6_pRu27ObnG~f3{6vmkG7Y0 zbV28r|D<>$6h$R{O7D1=>whr1B|$HFr%t!)CO!)TBIY|XNw=u z)X+Ext2&3#dpH4jcpD`o*r87ArWIoaq>N}_f9vbp>>{dinnex}>@J&ymA;RQln>t> z^fzaRZ;_}MG-#(?RleCpS}uN$>bx;!^BiUE+aLdb$(4vnLM8Nv|7CG5D9f4D3Px%Hj z-b`@4(Ha0$fPnhCzW(?Kfr0V>&4j#TSuf88O{lNe9tta^8@nb-EYXb;Ny>HdsD^-~ z64w;Nkg(ggi4$QixJ^wG?U>#@b^dnsGO^%AYU{(`Ow2F1yUa5f5XUAQlc!4}TueL8 zl?k9Ufg@Jfi~b|KUIw>8AW8L53<&%%Y_RSub=QC7`502`xJz1M(PFOyU`$@1m@v68 zW9>BB&J7y+LHtgYMNuv$BJ+k}ui@xnPV7)rAPHqR-Iux2ZGziDJRWORt*pdA0SSh{ z*pTyNX^GR~tZn5ecsVsM?BEz@7K+VOze)Je^g^?QILXs>VBVbZRbafQyc$`OpaLOl znOGSa55l;FT>skwa%;#A{fLJpI>xVq&Pdafy_Ga1fx`QjA6mr{@I^ctx0e+HbaD%6 zX=x)Kt4~K?7gvgoiV}WRj@(=@a8y(CH4-Yx%`i4fH~IkA?>wM*@HJw>$tA9Su=@%h zk@Z*JWax-x2X+C0+gRIuqUV<}ctP{3v&s6&zQKkh0=S{*o7~jV@I8MutL(yG2 zR?`YQ*QgSb+Yjua*sUyk?l@b>j_dReGy)0Gm~2MD%D=W~^k**lBnWMhW17F_8~f+> zp}K*u4z>^|a3b@|_mb3rw%ua8TrfQvLwHwLpj9z87anCyM>kkL#b#a24u*k4K z^RbDxShUq#NKlY6gx@)Mc>~E>R-V|5O=lqo<~r}~v;Ecg25hMF7#E%xX*qqpW%NOR zw%UVeR*7NZ-YzcJC9N?l2PQfC9rNn%OD>! zitXNyIv~23wzP5P!Y3>-^&ur%&B^TEZK{56gNWoB$8q5*6rNQ_NL%##9@)=Y|NgI! zPWl@xa^3`ebk&QI1-XfnXdlSf)v{PQNeO>1SZ%)i8J4T|u*i!aj0l2LQ0>(`x>%Hi zO;}n8p@}&l4PxPq8#gQ!6lE}8MnT3awAnwbi&6oi+udzGbz}upHarG72fGWtz>%00 z5kw=bH=5wYt`^+e7*d0J^az82aMB>cdI$1n%OW zg@r2QB|_UyPe3Pa3T+p@E?MzZWc7m3on-28P}=SFhY!q1K+PiI^CvOGpOE&^4Gs#b z!c{}y&UUcR1+tOkI{97h1@tyH5cu-qEtM$2(_D00|I$TGg%__e<(Tt+JL7%xBAQ$B zumb~AW(OE^Qv1t4MR2!42)zfu}&LMG{ zCS{ez@fF5w72#bkl`e4hU8j?{sBrt^F;klhzgNOm3O3)P2#Z>}_jRX109^Qq$^j?V z9ba8Up2x(jtE;PnE&Ssd0XpfZqC_tvG@SAw=PO`hTIN=QwJbv`1w;h* zJv*Q!6O>b8i@KQx92iUaYwV$)|-#_*x9`kFk@2(p9 z0>xG@;^8T|ZrH2AI7x44;D)#ue3p$vz0fQWi$CK-8GYZs6C-hAmm=3r${3Uo{ql!V1Hmx#CNjQt z0VPZ)U3XpmNpOdW`ZCH!;v|oqCwm0okhw!DQ9UvD@Arad#$|i%m6Iq^#Z6Qj!L#$2 zqc#E)Dwv%^xk2otu*RzdE6ncl>ujhyqIR5KgK3vCQmj_qdDUn~7`h4}#S(vJ)QV{F zC&s$=5w~JEwLCG%6GCN)deYFcWXM!m*|+y9TrENdYBVtcmv#Qhg`yl5d$(R*>8XO3 z6<+2O!vZmITLVxvRJPu?Zdk)HEQY6m*T!QrfWAwkj>!mJaKO3>tR#TOV=LVRJftX)_J@)ll0?2?SC|T}HS_BC@ zU#fycNS1#Z`dL;`rtjbXG5%Hu4>JrRS2afOF76Z-rUkO8WMY!oJ1L>5sYzM}M0vS( zjPZR@d?y0TcheT*=;yin*5}qXpZ=XbJZ{CV{)XMJnGzC%XohpKD zax^FFsXoNgTw%4V{O*$T+-lEs-^ab76+gyRC@k zf8F}@yt=05A<*%OuO84BqcMlTK;hT$4p#38UyFzCm9DXyKD;-25xZE{v* zyLa2ro!3~PLTd(%FV2-Jzr4_Db26QfMW?B8guB5sns+BAPL>Rgjg0gIoA*AiVPBj}O z|Dkj^-uD7CYDBX0h!^Td>*kk7@U7@q8;8CRpomFA5+Gjk6W~=TrRxfbh^#`B@D7a% zUA0K`5m>QsAbWp&VU(oRd+(eVN7uc$IDTlv-39>T#S(g4L!%NSE(ziy*w8F~u1t5) zx+x9dQy;qGAR;P~z1>9bLHMF6PY;fvruT&zfTChDGab2jSY)dP zX}$O7&jovTOG^=euRdf)#xt`YZy2CNp2-=kbbT8iXFK`n*G+d+-V?Z)-_h%6SqrMD zJoE$Y*$gG<6Ts`14^e`oKj?!;X)8SX;F=~8~vc5$rl1o-@(APFJumQD($;He6fVDeW zCr>5jCeiP?F54||m7llQtgt%HHvZXK-Lqf00-5g>$3EbSIo(se&8MPqy|?P_qW`%y z2qjYs16{%Vu>xgG@6eEli=2u|q>0F$2$ol}Uk~wAUsKvsw7uzp!Ta#7py`n^kuf78 zA^YjZi{|F)y0>JF{2r~WZ`9RNpL~8P5ChEo4aKNALKcdPiion4;dt1a;Wf3H9}Mu> zB>(+IG>1E2RBI30nZm+C^N!0_RzWz`Np|0=lD~Q29DWjsa)YHzo3f8jX5s*V%4G0M zT0sZxEo^LT6zD*obpz~B=Gh$G^fgdn@I$GLA7g4t1>gWwlFb`8ZmcdW`NNWN1PuWQ zkP;}WqARP;A2dc&#?5-yxX8gGbi5R)kN7LYH)^x6u=~Ufly3;=yDe(DD(B^|{t5(^ zO!occ+F=x8dgTi75KRPnfDWG#XU1{bee%11Z)Zl;D`I?$`A~oB7_`AjhmDrO_kg&v zuD{(Jrs)$?We5y-9{~X9%+NYpjow57*E=vkAo`}3UXtHO5xy#LJnS$|EZ`B;6^r)$ z7KrldjW-pI%G?(84RqLBs{~w@XZo5R2FqHbdF=#GL^BX=R*bU#$09g=Zwc>qc5)mL z_Vmv$%*3w|D5ByntAi>kv2Dc5>MG0)NyFaXiVx=-Fi){Xd<=QN27%EG##x14 zORt8=VgqTt@ZVY%JV0xa2m31+11KPd*3vg0qaL+K{Zp{Gh&ppbYXGLJ>jD2Ik3v1= z9Y7duY%qs)K-Yl)PnoBm(_>!U#;5x$s)0|99%mMxxj$X zD?X6eHGUeehc4_AYO#&T!ElPwnU66+>?2mnwRd;MJ<7si1!{l8L}V6I7GmZdpJTKs znfi&PM(-lU#5{Omaf#}vko@a(O5%>(E%hrY ztIiOBxiUcVjDf+B6p>9zK5_$9z3|qbYa6XDU*4rH9iS?BP>;<9qGB5<8Y%~MHwGwm zgcpEFfD2|VH2_+jnd_|t^T%&36;4H@_q6=;Z99Z%aX#4%U+ zVYv^IDZ(@VvsmL{weXr7GYYlMQ1-?hyuTR@!s^wlV|hd)0Lp&H2wd(3dg;vo5G}&F zDTvneBwyNax+~&@HevUxaxdybpfdbq%d}}NJNri7+Wk1MXAk8nK7ofMHk!Bo>13i~ z!+`&YRAv$CDqo+v_B9Jd3%xiYybz=qy7&r%!Cv_5-OXGJz&cUcpD8)1PC2ItB_7zm z(e0*n83arR0gLM_tR0GAV#1 z+c)emaoAXQ7VZWLuUd`qC@o+KE?XHHnQGL(yUpLTSDG~8`k8?_#H;8bi_e~Jkf5Vj z3%V)5Jp1EaclQS5^|iJuc!eaBHTiR3^aBl*AaL(!-Y@J=wJO6sZ_>JeGB?^Rbq#J2 zbcO?8AQ_nfpdte6C>o+3d7{E6FgzYB$A%5NWDlE|Y((A;#L|Qft^H;&Hmjdtbr@t@ugoA9Wl5Y#ETmuq6M=`vbn4Z1?zi1MW|EV9d z&?{NU%27}`AC`(LLR**|eDxAo8t2`9yY~aTbU1+fqzp-acFxTn8)PxxLTkdwa!Y3K zUNvZI()kTy0iR@FtPpE0e!umkSIm%ULY~T1M!GZc_B|PIRc9X#cW<$s{|{~W%rV1j z(6WA2gIj5QrG$7S_xrQy>7CK++KR-zSyo>Dr_*IkG4P!sdc%oa@!D>Uq`-^g6?19N zePbRS0J-ng0n*w# zi;}{6z1N>BL~6v6lHEA?0`ai244(p-t_e#IAA(O-f}&?^-z2E~qflV%1FZw_tiqIT)$H}TvGs%=)ssA} zZt3%k?b^)G=#f9T+r4-Q#5tOV>N5riG#FE;TL|jqY{BT6({^fV>eGuILJI<|veXBR zX$5YCnepGa@v6>}wDHcIf%AAU*$hXVNDsjJXypsYvIOKwRY zDEMy*ba-Tu_SSS&{klKj1hg`eJEH^L1?hHNVH8+svkQ~Cm$mw@-G*N>XlmW^;@WlAfWTTL)W+94a((6( zarPWziQda|Cgt(t^SE$)A?tRZr^PT?s+*_(c)Gfe(4oZ^dez5X=kx(c1hQy@uVi@! zCA;H#@wFLo5fSheS(P=i5EUIAT`TeEI%mff9ArIut$uyP*S82um{5qc4olA6J0fm+KoGR9?Km?-$2407*90#s+46T1s{qUh)G(Q+F>x4jIi;~e_~3E zs|p3XbyE%zmq@m4M{A@t|J(r$C258c=~S?8NsOQOd;HOA<^w??2s)DlQqJ${?lyij zPp0Jfq1ede$0oWOK0PuSL{O-D^G5hg5BiQLe;1qZ0TXb;0LKnp#ZBb&pk1^P;0Yk4 zUFf)AWyQqL9~Z`!mj{HmZK18Tb*RKLX)hY5ZLfH%F@Xy~AMp(h66Vs?sJ^!Uc`1RW z4u#?umvl^chya30hr{B2M+l2Fy#U5$hT#aDhci#_A!S_t687<;Z0u7{5a#9d6=4dN z3N*@2cMyAQg~ zU!^&kE+!jXGHD*pOk_Bes!OT9XYOzD#{d5vx1}@Jm~yL`4SG1$gYFdb*`tL?IjNL- zf%GHukiwP3VuNq>36?(NuLxhHr*^n^Fe?5d&*{p#)n9&Ot2_|ml-)05y<6#!LigEM zOcP5zrQ=qnBxgy;d{{S8#vwPp79&E+k`p9T=vbK8zW`^_*YBg>-C)`C8Z0sgIB3!AxGQ-50L zK7W4lxfPV>Pp?5^NGR!gvmff}-k`A{un3tNKvby`1^NWmjE)$xacFzZB4j`HV7&r* zu-X*Fm#9GfSYrbKXz|bTA>fiADETfOJ$f`3%{3Mcgga(&OtEvuiCp{!(*VcY*oHq~ zj4pPv^(tzgXFKh*^DVV2=MJF4eT!=I^TNXNv29HPcqoV1et3>a;KuoIJl(SH( z5w?mcvb@~FB6=wp$dOVsWiJY(T{zdksCaDkxoZW`2&0S+d~pI=loq{{<*b+?0nq2P z!8Z2#?6XC_n9HRrJd|hR*~P-Zz;MIgpYcVoXMl_fpvA&#GZ~hPXso3ST}>e*V}ONh zlQ`w13aH3WKtS8_>|h#(Q{*ty($Q%+EcvkK(b*t{`J;4tgn6DXvn6Jp=V0@r=VnvG z4v+(`kIK`nH(~ln7^ow8v1~_=xyi-IV?twMZN2?f#e?AvJ*W7ggdTcv{44*G}w>%=MSZi20?46e?aV@Gti+b|!M zrI&4qC|)B}TTSL&*#QH}L;n^kcYAGi6QP zbD5#Dy#|xV*=TRUU6k?yO1EM(Zj!j44_$$em$lC|n*UeW1TqCeCZ7>Tyu7k@i3Ene zOYZx7KJ_KSZt8vDl@0{@p{WQ!Y3+}XyWY-F1W^Ap)@jSy zDxtU3dje9hNev{}DtieZ2%@6U{BlpJ`@Nk}^Q4O2bAbgx=1T$$fwb+4wVoJYN;b6r z)TvWe<0p-CP%BYiAOwG{8pCY4p^L%OS^3oTx^M*^Q;#8ms#4`>y_C?=;Rd*qwQ{ zNb=0aDF$-DQTj|`^lsCEpG62PP2-z5I4oQS>(`@$W_;1s*4A(EYv3dR=oJm1TZRm#Q%z{AYsf`$=UtQRofuJ9^YxYf{z6Vs4o=_tl}V zlNU~0sYnU$?chM0cMj;-BNIkeIiQjt)B? zUl7cm-@JXhY4>hITh9e;2;>c|6m<^5w`pqP@Ml`r>h2ETzx#k%ur;j(A`dtQnxr?C zy0F8AN+qfsN^?|5wDKQ01O#^Q*$K;l$As~$_`xkz;Lbgr564RYwTjYwQpoASK}OYAcHV;My|oXfish=rH{3Z-^_~JwV3yvo zS8JHZzZ{mxi-I!1Z9t1&9ym7)Sjk}@Eyo=A!GY_FEpE)*Vk!41iCF2gS$T+MXf>a@ zj8$K(&CE8pAK10)c;u2-2FMD~1QZ~WNKFK{fUhzzlN$Y zlZQcsta|;H=gST-V1F!r=Fw}o86C|Hd+qee2N}w_(w>SB9z0O#K!N3tmxCiNzr5J9 zG9U|uS>URI2RZ;(opCBr^i7^pM!~4}0-^j7P;ZbDs}KO}kv`hiihsg(0X-Usj9JW! zl$8O`=xw-JH(HS5G5%_W?-NQ zk49d_V{BAZ1_-{l>05PFt{V7=ST34vY*B_{V*bI1N&D)ly{D_=jDFS_-Leu4laXQQ z<~ubcPpSCIc>fxeo!y<{$WFS;R0F3NHYAYvj6b!5;OOUJgO^Yd5d-aD8wZNmBoZ!O zCJj+kC8KGm0TX5`N<=^KO~{M@giP>J8L=B%iEaScxVS5;2q+O{|M8a8F<%VKufjm1 zIWRq)C^IL25&%FT3r>*=w+3YNkAO^w(oS9LRxXOcVJVQGj4fPGc@6yf#e#euKS0p6 zcRugP^a+gCoYT*@l6^P@y+f4nh&7KF1uiwM(N#tUin{)U>9`jPhU~tFirnQD&0oKs zLWI@>lc;j^r-y_imJk3Go^K6dnIhH^4%NXFnJ$mB}w-reMST(9AuD z?Zx*oCJrhnt1gd!dD>EaUB;%B9U0Yk313RP_i&#lKdi@Zhd7qA{DJ@+V2v%1CS>8^ z;W>(J8jHf0Np7GmfpPf7>j~4buU|-i`eJa_Fj*|Btubufnh2k~9SPh~+N#b<RkRZ7{*vf3Eae0d2JUc(8bx*1F}?)sW)3l~J>c zWInqPj7^W|hJ3?JJ3?639k}lr-OXY5#Lrm?xGI7X^Y0YL%&rZpqwN~hfCV+-4jMze zbR(aTBcO=0)eq$y)$A5|&Up~(v(b@H?fC1a!X-$7V{-VR&&p|!!w>c7YWfX|9)Xy5 z{*VuAO+G;ezw^ISzs`6j{@jy~k>1u531l$l@izv=_90NzRC%&Fn1;CAjj4J;@Zmd^ zsR*2q7#9*advSIr!K$!e0aD$u{z6nBBUxK9m8gIJeii0rguK^1%ONNzURVkdLr}^- zIG2Fc-8+l2cSQHz`MrDq?Ps0Ohtqzwz-L;Qu)Du zp-*XKP$?CwUkCILmX+aV#i%==Frc{H)7mO~Mtv#`Fd)P)cWNlOrK2$5mAU*t%?$03 z5BMODQ2ts1b;MX8HSH(U-9LX^cNpYSz^%|~6MxyVCa;H?5*Qr(DPynD!tEFysSW39+HA(t&G zDsIGc9ntY1cm^m>EiP)aOvux_PT&3avnbbZ)1NA!InQeItt&b8S$9WaK{UP~%3Z;D z#pIxEuUq(k2RVYu9Y(8=^#2D2V7k6C-*DXy&~VM%9T>-B)Mz^S{Vkp|J#yBq9BoGAeUqM=UCMmIjPzZ&L86DY0^F_i_=8vn@CD}+V;bm%TyOXcA7)d3X;Rg^9|K}GQm|ooSA06-q+|6`3EHv~T ze&+8&zAo5;{CJi45y6wZrfAPM%H;DVKA9m_YnX0g+?8c{-B$4c6PO?W$e#x1T9Zvt!VxBfMpMg5(X)`SVnH5D@66Ry-oQU25&c&liufbefqSg z`n+aF{hft{g(EsAj4_>BM~1vv?~Kv40@Ha1_M^1?;90G%Qg@l^5p{H~2g>f&L5O2Q z_9Fv1IbgBtjy)oCKidrImRo@;F|kyyU8u6QBE4T5i>F2&uU~v`#Q1M`qFp&PEh&++ zl|7d!+@#5<^yz07Q&H*+g9H?~_oyJc#WWg6xxB4MKPWI`ZMuQcsB+=bddQ0`A=5 z1SS}DWe?D=>0u1-EgKVkIxTSB&k(#egp_O5tikOQzke$`Ipx!GYiPE}+(Z9`n;!Wj zb_Zf)WS!_*S3NB#WNHt}VeMDKuD8PDDxcuyprmMU*FL!5 zniEZ$&kPU^&;nnY{xf&06?dJne(6UICwYjuP>f!S3z22=XEi0?w&T=G@uLhGr|$p7 zBK`#6sFLk!)JT0~?ycIfM^aJ(YC=$kxivcs=`qU=oKJFU-n=h&=jGMn5&g&5xHvQ5 zFMOjXF5{efG?sa~lboIJi6XTXOYx^1uP5q?k@m9k1xQQ%tq?#~klnYBd6sSU>UW68 z&KZYSKDW z#m{}+oCuKyLE^mXD!SoVXGwQ9_7Q1V7e`rYp;><;r$a_oFjQu7n!daAZgK3&d~V|T zks1g6-iFf^zU`-(JxPPtba52b6PajWbI1qNsUO!yACRKT6yp@aX(Br%P40Vc z1u7l}tyc}>9%K}DLBX84!`KM!JSWK!k#e+umv`XrhvH>_sNr28cF6nlq;M&ER9f6^yjMjgDr0S_ZLWx6_bT6s#!I+!VpTO{m={=8T1(M2Po9 zel{awfdS}dpO$DFtjBKUedxT@A7F?*qOPulb}*lB1kJMcd$%NIe+kI-XU(eq)DcoR z9cxlr=M*3b*0J_-WJ1Dfw9g^$2w(BcpL!sAxz}c_DoskkDCfq{#Pm)CwZz13yGsz| zaa}&^YRUrd8oYS@=i(~L1Z*Rq^MM@PAo8*h73t9Cv7G#rdFU#bIB!t@+5i4gQ?g5c zC(3d{wg)A637^^v>ik(DrX7Ci}9Id*DLAHt}at+>tL`bF`i^W zx%>`C@&LURBb{?F-FB)9z*=_DcmsB8-jRSD2Dz}x-RGHgA@R+J!J@A%F3%xg>V*GH z_R`RDDjhk(1jRk_ZB5J^=*Vbaf+x5hb`j-H~v>lmQSy)q}L4SsJg#nmd{ipUI9-gvWQkcnPO`fk_(cP(H@#Dkr*0=to-ATt&k@15yd?MiWRa0XRv5ds-r&KhpW_cAA~?`@2BDhhuUSrse3%dh z=aKIi+b2IvLMHM9JJeEP1@D}WN6o?Bo@4)U)S6@o!W8p!-zgA4&qF@nuw^q3DANEc zX%SAUF%!K7)E)c`B`1zOn?Ppu$COt%Sm^p?K$<{Nf{{N5+V#JTjNa_?Q&BM-kz&Yo zroMWcmMeqjvBauM25(S~>m7Xt`kq%Q{#RwI?_pb}U*?U!UUi=;@f*8IuUf_Z>eqm@ zt^#kz`o;+~YB!wY8Mwq*ekrpjp>BV^}_PXmEg=!mI-^B*zH)9zq{!k26FOUYZuYsJ?87dc zBrFoY#kB_0B zypn{}Vbit-S699Ph_RUPwrys(8WOvkdO{STi(QEmPq_Z*f-kL)DglK*WMK|AlFu6L z*4&L)vpQAibYxLfkd%mI_v_aDC&E)C=k_z`W#}Hn6fM_foLX6A@c*~~#+9>pt9@u8 ztQuq>0CJjUA&5tOHCfv^Td0-0gff(DcVO_XjU`2lGj0W}=MO@eZUR_2`I{;w7ozLa zzuGwQ3OQ}iW=Nw9Q7Qk5E7gZfCTrL0{ch$<=4nns7GwEY24^QMb_XH-C7msDz+UBH zvK?kr9Dp8*u^t?nZG|XDI8pi$_K1l)rkSAN1pp6B*L#VBOkk7tY+W%9_`id^g;>=K zQ#WPwOeQ$9K(Tv~|C7yteP^Cx1u_`}s0BQ}9WLv9ZES7nULICac~W4~ftrT)SJpHb*=ZV7O`QlSzF#)=TYZDva6c9)N3{{iEhr15QlLT$oRT_xRcHY(LhR7X8)Uya z%~NNrIWpmh{J9I)^6Qi8(qo1tWJHCv|Izpsun#9s_&mrupD!ig(4Oxsv|po_T1v(? zIpxdBPzAMo2%ILqyt_mSmk9xWea^Y^wKgZPH3G7nJ*vyfhDE&e*O)o(hP!c%{#z+Y z$tr|-)rX4+5CV!G2BY(sjBI=Lkd$#qc!mt&o>rjbqj3r_^gOAfV~0J-f(4K}IAEmJ zm?{MjRvWMr-OKIKN60b@#1hu5cgN~T6MrtAX{w0$2{?AJfJ*KgyiGvfX%(;@0LI}- zlAtH}fmsV$_8Qw_+)R{dQifa@ZEwWRPkz_ix2mH>QhLzQzm0r{hWx{n>gtr_pYwre ziqO!4?3B{7X5^2lq;R;LsCcy__XYoi;*l|{&r{QDBzo3c?p-_df+C?`8i*}a{As$VnNFMi z>pheC@!NNc`DWI|QTJrh$Kvn66aBD(_+yukh>P|qdIOso0sOIr@llFOR z=6#u&YO2aXpH_-*b*miKrJq$jn(}MauXr_fI;qZ6pJs2UgFZRWD%Zj>VaAc-fZ9N0 zF;|HHjT>NlJpKcJA_+*1Vb$k@(Z5B{{yiQH8Y+hNPEMfOq?u2Zx=qo8O0I$fk!RT? z1b+I7N0Yz}2x$XSP>dL=BfwB$1kA@Ec^!?0Qr5er4v^p^AXk@?l47}k7N-id^;FB; z=&e{F^{&{uv38e`aS2cHQ@l4dwhc1}(z_{6>q4yHM7 z+(W@n#bgO__lbT^LjB^FFU^q;HE<6MZ+|t5);iy>aNWk!;YbyXuFyF(eEqt1+wlil z>m;K1Pn;#V6l1i@o6U$b8uCz4vNA z@*q7i8FJeIln$5haDEroP{@w9+#73fH84!{JMOsZ($~y&U}f%_FHuoRi9weiT(+%d zv`Sj<`jv8EtN_;oxPnDND+2^|Q+54kg)%|N)qmOTiqjpF(b(8oe=K9+DEQ@s5@W6V z0h@#zoSVH?r(i9L@8dv$M>TpA@lp7E(;+^ohS0pAMf@Q4x#2Lix+Psx`QL zj9);N9)0qkRC>FS{{by1NfPc=Ry4l@!alz}yseggLcSgdJGzwGf=v^z=@NBSi?(Yc zhCvcyzQB9m;r{HcAMRy&59?F8kB&!#zYX!L_*Dyvi&Dn);2>GLQdfi`g9_gJlm(`5 zfO7BebJ>M)-PGxGi|XWzx9^TFrU=!Rdo2ua!(4n5mWrRrJydWH0G?-p8e8P#V;0iE z;FLYWye&5`&j*4D7=2A*$rovJE%r8$(dDrSyCv%pN^tTGz;T=stN|v-di;@q0&Ea` zh{&`q*%O#|eS$(TBKP+p?cw7SkcX#5Oo;q=@jck-gon?~)kTkPf4qaj4~ zbYL&2h`FY(Nii1vaF8kyf`+RY87l#s5@J`#+HW9-RN#s?f|A;#2wY?fR11ShRkdE{ zbcw4ylHUgW_5iRV+Gp4~BD@GY7)oAM=n5S3LhEW#%qgr>jM6N zqLa#mwJPz}F?6C$zHcxK(JT7n%av3|kpM79_Bs$yqRh*H3#dyrl#gOAh%j(7{ZeId zN$uOWbeQz(&Kv(m4dG@GVJZqCiSBcn7=MYi&tk0f)44}wdY#xX)6rsDn+e)6>#Hor zr>;Dtwthv?Go+My(Fj<-HzJ1t?#U%By1DOf znaOzo6I%hvgP^&{?qooN-HSIcR{|u(Om>YB4kOGT3KB~4vz*Q41ns`NP zp+HuMtj9N%U%w7&JrnV9>)o&8f6Qg%D{FmyJvQMzXY{iBh#UaGR2(pEi*lg6fdP^< zr;|)T$b5$cvl3Rik1hDw*-lw6wtaz_LL$3F#)=Eg#nxtXf zhvnkyp4Ca-d)6!!mfD|vE7m%_NWAD#@)K`w>OJKL9vf+0xc_Z^?_yDQ(Py`wLANVg zUw?~;B^+b!GGsZP+h8$!n zqCK&GYtJ*giADY-%ug*YUVMsc%*4i~k8J`}GTR}B_td_RpGO1B>DJKMdgVHqOzHs8 z3NIn}$rHOuqgTQZJD_7=c#3!eZC-8YO+<%>o1FBbcu$4!?iOm$xuC&!z^jBf1Y_<2 z$-xoys6=xYDg;sE9{62%pr;5w)DP$LxE6}k(Vtx|>R$_j%+`iJa;rgt;)Y!-hNysBj#HLU+jjUCprex=!`Jdmg4-#(9$vuITtd)ZHRIgZlnJJ~MH|;H=#(I<>DE0h%a3#_j!8*u=2e=%%TP#bjQszz4)P+=Amm!bHD9$}zfz&gj$HO}Zu~o5O|Yuy)VJ3+ zXJDjAI@ASNNTuS_?XjzyNiaj#_Y`Z5p|=CevBLZXqwA^t14OaAU^gXPxX4X?u0&k* zbHsq+rqjQ@mU|<2T(A~>d*YmCd_vUsYV{2z3`DhGNi?^QfA~X0bJ1U!d523M7u4q( z!uQX!&`?_D-f*6Hf?q(~bfNHDsK_QhQa-77KB(u~bGgHYi%I#;p-vr^>95uMzQ!q( zq%K}iH*IQu*_ZNt)@^8WTb%XI{B6Y1~YzI!LOZ(qld?CO4$A21cnGPox|G|to05@12S z30q6fVEPg_I<>?0u?>ogN3jMaJ~0ni$isC>@RYD^%Ql94Bc*WxKOZ|3te3oab%3Ma zJl^5`+3OZHA9as^6?OZgVmwz;*ZDLye~$l{!bEA^iYrIAP_WmreUAbvwO2QgTj`r; zutPG2=|xk3aJ;O&GE#K?l!2>j;iL0Z6mOyL*w2Uep)T@L!}C?o6X6#x4URn=cV#7v zD&?&9lmHnfg#>)Z4=2^~Qc+%5<4(iHB786pIFs?qC^@JNVuXo*r4k4bv)-s3OeGq0h^;n~8T6@hgqeKdhZQ~_Vph)kt*K*0{jPe4Te|pGA zVii85`iraIl;MqkqqtQjeNk3)`E*Ud+y^S}2&8Tz*@@{IaR7#VWzfylVH!Rh&2e}1>-NSbEc1x=Zr zi%W*SVtn!B?z8|+^Ic=~{%iE&e@N8PZ$hGr2jrfC@iYN%^3Y9*`~G8;>0nLBM0O zqQ@qqqGFPn^*>45b)C7E@^zH&)Z$e)t^t2X&FtoeogezVHSQ@?O_xVG8P(S`^-2iF zIGnUiQ0%L^MyES;XMFPGAluNnGik$r`hR#d$VGX@>Rg}%*gyS!PBiU)soW}&%Oy|w z;wdsjfD4{XPqDFR)$t;WtnrN(q3j}#_fa@lgZ9R&=$W!F7DmOmv~W-u7@=Z%a1vXD z7R2ZY(wvO|h;28JZpst9dq}NbPg1!e;MV zM!?p`s!TMRq`^r%QzGk4BxVgD~5rNNeMgG+o(0DXza-p2%m zj_i4$)5PtkN~Nv^#>)T1hRNUy^J_@2n>+_0+j+d( z2+Rw8u<`H|x!67~YH&EGvW-PX27kNg*03Q;u}FVmKy~;<)4MDgnGz$u=QXb`U;o*T zTWnmfcWLxybHMOdhk>!a6pCU4>`HpAPGz4>2N^SMtt12N)RA~IjEY~7sDr&53|?!@ zC9#is7~-`sB>sw7cs}%NN1+;W`t<4JHIWeh-#1=z66~G757-bZJ)n|Wu}Lj#Ll$B3 z#k+Lx#<4G594jWK6aX?HXB>AMjv(N`sZ~qp0@6iGk%H|mj|1Lk&k}P}fNJ@d>X79h zL_Pj<(Bx2|al! zGx-Wgi`e(xTq!1KWr1Z=Rg&XfCkRM^HJ*U|>lB=OS*I~VmqpjUI)3UQ2w<5&hT8rv z45Ct;Dk(?4vFa`3s!0^LXuX^{_tM9oigYI#tIp}4U#k!s2Ne_sHg3_dutKW2&b#v&I zkmEYC_=co&n%qB$o$jxz;Nzi>`Tyv83%D%Pt$X-UN1aj8(Lpf?gH%8z1q88Z1W83g zrKB4KL2#^5DM@K1rA0~_M@b23X{8$h>H5}%=RNP7_k927_nUK^5uWF{@B6y;wfEX< zt!;#S4*6*=ta`g%DI6KhGO0~lS3C2Nj8)Cja=vC3%Gy4YX07O4)}xZPue`}8R8uRr zY1H|+eh1IBq3N{ukW2{vspR`;V5ywODgS!NTM~53?&ZW`2|LW~*`d<1&op*tETW*g=bVgE-p3zv%1=*HGw$YUincHA0C{m}O~ciQ=0XwMkiD3X~?d(E`sRP;X))Qe9ukj*b2S0kOD} zK6@a2dQaWmIlC@Uq=dsLgWv3H|4ym3OP1Q+VIEP+IGW<8#J-$a-)j(SuT|Dwx3)l0 zxZP2ekS>p1EZUbwSOAg?(i=IkSy~YJIH@CgK~thWYL% z^i~{FcD)4Cba_LKe8;Oe?-UIU-#bWd`Mab<{Qf4Y+VeYvBcVCkZ5Rr46DiuDud3$d zn>WKTEJ~Qvw0f!9p*vQwLH0vXgZRwIpLw{$k<4V`^g!CMT^j>40RIKZFgsydfLMve zYv4Wxz!J#Vu1}DuLeWa9&6<D^aHyC?K-$Qs%{x}+O7|WA9t9$W5}~AnRbUP zMCzO}%l~izULy2j{#+SPm)DH1hs9xOi-rv2y}F zp_UvYICb|7ECE*H>Xh{zEklFbgiQJb!LXq3imh!1?!4m5RTkHq<6?)Ll`%qw1LOj1 zFI&;WJ^HxS<#evkd2?WMId&#Xr0t*PkVX8DD81wIz9 zZY2$GQ>~5i9hWfb$TWTZ#lS}?>q$*4K3FOQ_i@jVQ@%6m*(g*EN}zZs06sY1w-i#Q zqW~-lrQdX|^zlJ}$c_48PR!3X@Hvsmo6{I%ZHQjxb_t~DE?y5*v(}yR`I$b3qoin7 zYLusKLoFV7#yMYl+<2+@F1el5yI<3k?4 zioq{l-=4IX^$9AoZnv`J&@&Ot)Kc8xn0y&I^=jj#&mr-eE8TntC(bxHw6X-+UXRra zYm1p`ws-!%DApGu63KZcQ8iPzWO|TEYc%!2@Sk_yB{}#g`rQ$T%JFYX-qJK#anMaL zAhxkJW1vA;+L%+vkCDHlhYW;GAkP}frkz9$hRa~Aly%N@<29Q)S^i%83P0J~t!V}k zpbK5aK>FuMS&Yl&LEuBjKoX9SuRNR2VpQx)q!Yu0oQ_*3!+%?NBsn}h{6~vX@*n`; zi)yH0&>Ff0J|DPW2(tDaTIg?LNPJt;@a%BY@lI_tFEWg(!Y48R;TEt&GUyk!&nEj1 z?A`mCOlbr^Nf}M@5TD-*K8-ILfsHclygKWAF?bVY<<({W!9gm8hYn&aY`OJy1S8N7 zPk6Ym-(&w8FhGfPeOBu=QJdNjwPVrG^_sGJTARup~mV>GkV5IB}t3FT>+ zn4N@NqW9sUy@;TkOjnzNN-kXG|3yYX#k$G#v$BI}kW!vf)&P`uPULbg>Nqn;e-le11(oS{On(%rW4TN z#0~eMr5D>wk>?`S8`+Xy-``IMt{u^RN(O9)w7bg=5li1j8n(#_ zE<96A-Z?ZnUO!JTKPR;JY~7AQvPkc|WFfpbl4|^MZIrb+2!F*rSy}ynws16YV!CdD z=oF|+gZDPmf8Ma;^h==bhOmIe@$F9t-KeX;eq>{0yntt>b3n~KLrf)vfzHc8+UB+r{7%^@PEdkwwoGPdZ$sj9$cQUy8dazf0 zkwF6jXT#Z#R1_rPU^1@`?~id6t-Z9yhK z04pa63pk2oFf7WWdbEPz=o$MtND;PSt&ppzhn8R%jXX-z$08Z?P9}IvR{2d6Q&U!7 zrdN-`+67GZvZ*iLaw28J3l#P953_5zgQAYp`!>pQ3(9`ejgtJddMq)Rk$03WosPX> zRN^u`UjPx?EU~anXb+YIG=?ckJq;X<+$`daM#k`Fm#!Y10R({I1u+prKZ>M_782n`vfSN&uvxK*`q43HsBQ`3u!p~O|z0C&b=Wxk&mnHnZ4 z<@A@Am7#ZaABXRDl=ng>NQ8gN?HzTZn(M}2y^?2!UomuY)YFEQh(!7I8VayJw;uMY z5e&7c8k-0?Ry?pAL~kMCH~83ZxR*|g+R&XLJ2zIMK>l$L+vwZWR8qaH%^H=IJjpJO zp}b^#wA()J;zLuQIu11Jhc$qB3HYGfQ(&|K1mwKgjytwaqBCMpKZiqUy~ofUh01W0 zzow=9;Sw_Po*>1b`d~lYK-Y|)y>SIdD-UM#uCE>hxfZ(%liPFOOh`qlbPC7zBp|b3 zRq$2=H2b{L%^iD2K5n!l?;6&kG7=lI^2x7ob5EJ|W5_dBV>}uZLx}faJg5$YRpWM0 zD5alFGTZ(1B?mwT;(-&^hF$AK%Xn}LNrKzdMnH|xwk+=*_7rpB)_gBLVOCvr9>FKt z8!t-nPy4q}Jug@0UmFVU;&pV&E3H@B;DgNIXTgZNQ+{QPMZ!m?S2BC5#I#xSFq!Rz zndCSb#?t=lE`Gg~D^GL34vMw4wejdz(SpqSX-oiCiP%jJmCH!8n{qw&vRd2?HsH|D z_cFEKRk9_CF+Eq@aMn{PDR3$|)9&F93um_Jw5eoepVPUK#dcDOn|C za!y;zaf*Zw7mc(Jmli`*MbaQXGZ0gc(72ASi+MIy6be@_G^Nf#pcMx6lul$7L_J=; zioIy4y^|MWYmNZSPbN}A(l(xE2 z3Pc@%8MeD`uaJ}sSQ3YE#jg0pIREtFuFIGf8#^xOs+i~^fuX%XLKxn@ed~i1A1DjJ z^|RpFv=69u>-1W#D%tG3Rl6X7i6@S!Q0LgDud3W`UyJ%BTziS}Bybu9ix zM-*)Z7w*NV*xza=!dx$P-3BIUDjr+8L7{uhE5@Vd33*#;yFICCX6b2n1Jg`GeL{4t z50`9BI7k)9)G&D6dRHMPtqFM?^W&0koa_O=jKEp8ZZSUlqB;iiY9BjAc?-Gyd}B@h z*wGCN5kibRSWJr@CVYNO2-mJOROLLvYV;>jqocC;DL(IE8mO%8mY+Bt4xLBKBM>UL zI7Edmp zw4QC5yIRJslT@eaV0#Q7DV3Ozz)pZXP%rrfx5%GHpQhLtM}R*Mmc;NK1F10Q1pXL- z6}7Xwqe}dx+l!@4$K1m@Z}o2{1)&3E}h~jAHR^;XR38u zdBral$Y%u&u-j!Ix4|rz4?8R8z|=Vf zR4z!3rqL)fK)fIs3O3kQUVVfY0tmF5n2p%i)k?t9L}9Mj%@J#Va@*zXs%m{>42FXL01ivCu5+o?F6P88T(F zZ`g-)!c&P(!X0`j)P8?$<{M2+Wj^cm2XDA=uoK8P`GWfHuLITF8Z4!bF=kG#;7>#y%+@L zl82UWpmmSMm;x!e%w+uvRKKWv74d**gSQn<6DlH-zxw$prls`V>i)3UBxo{zo6Kxu zBvA0f7nOQ+!VXHnARC~E@H~R<{5CWP@dVm}e!z#Eq5kkd=eD%2(r9{|SG&rO_VcclapI*c^A1;w7v5BZ%m+`r3YEw-#Jo3DRzYUL+j zq=vecGe|)_-@e@tJxpQUhXo9y{3fHZ9aK~twQgDK3J)n%ON5CqnyiM^NIrcOl!F3T zDJDWG!cA#dr7R|4tr(_I^I9cYFX<0n54XM*l6EK7$G&Vp>0-o9r@@tg#$Bf=&ga=u zr`|cRr81)Dt^^fchQYR|ib9z8WSIW)t{bzksoe^YUM`zdHrHi-pVHHp>U8z?yX48f zadpWeWzX-28eG#w+^M>vzLu|%9?S(Y+bo~KTW@ntF%*l208I_s-lg1E6zIUo-2k|( z`5H9Y)w7f>F{t~<2CO;xbv?Ff1R(6mtGg+j_ka>np56nFLRtW9-{%2Fklw-EtL{yx zo!isqe$#ko*jc4tR91Pz=7&M+Wt4aSc!^s0&pqdv{f+HdYak8^$$^+UiviKKRwTe z@E3_Cbfa#sRKUH{SJ-P?c0>W~P?cKIKfPL9CmuJ`>R?sb*%-9^=V+K&HJ3s0!NEUG zI)kJhJe`gbq>J2d5*1e&Y1!a*=@$y+Iw20kV^`REgdqibv~6Ek;e{%a-^&J{s!2*g z0U`*KC~z-ngSUukqJBvNYznA}Q-}0`+jBAzUPO6#*HgZB!QX;cyLcOD7)#$jP;=3^ zUjxcg_?^4nkAR_K3Q@1wADx zHt(`XK%Af;)()`F3t}`Ku;aNUdig8pfsP%D)npm;z7uu-i5SaK!RD(-EE-$K&&8`X z1vqP2CAD4H;^rl@ku@&4Rnp-`%#Wgo+G4p7>XwTkExLJ$jwK8F1qWj-6^9e0Ty5G# z*aIuYfUd_*)QB@Q3ui!)QWS@yx)?qrSRRJ3>*Djsv+R8;viw64+{p6Z$|y^9NL5|k zDKt~a02C2Um|kEP6%G6jOwAcfy~?itNABFh!Vmyd;M6uZ~BxJ6Ctz)^pTtQ^TqU}h&}NIE643(wS()9*~ziJ4yRUcRtw*$B)KKlcsbR~rRTt{ zJo`Bb&3v&Kpq?(r-dSGd(r-P}QK>k|+5PTxkw%sB;E*ocF^zI5U#{bl{$7z=OQNR4 z6APkgGgr#1xtzHIBCkD?vUBSn|3jVvKdg$`DNQm}5*PXG)aA0tDxvX#loEPw!D1VP z?($Ec;tTsXZ`{bn!7&=Rn3tD_kr+QR7eVFh8I`qXmD>00s@e?0pmX&#{?hvmXPScU zACrFXd-s~z_9d&z`Q+hBq5S9h`Ngr=MPtrRzyFXN<@qoM(vVYca!!$%j6Z&B=d5{aT9X(n;@je)e z+{-9my@iz>s1DROxpSNmJha=zdC1q?qwn|?BvkJR4d;t;+zyI+@t$BXI8Hn(3dfA( z&ghfKr*=H7;QNd7z^m;$Wz*OPSt24%6}b#q?BCnoF+fV^f4^7_WK0!GN}?7rB~$5r zwkL86J~t{w>n|_l%uzZSp0%2a(sm_lNMUtHWOj(_rS%lAgfNdFA-kkqe`wg56g4%S z3^LKkvb>0%SyLOso;}gX!(Zdj*?;1?3*1ZSEQJeo1KJ|1R=xIHrzi0PS+*Ih0 z+8r61(&27=QV>I6UFz6RvG%4g$lp7?x-?bv7K;m^ zKc~vO{AoVrY3g)gXd

6d(NZN&v>0U_Ns|e+rELUZd@LG5B>4@)ju>83M`Z@&!?q zoq%CZRCB9duPAhH$ohRkoo24u-@c7jgSkj!5RynrPTNG@kI|E@B_x#xQDk!Vc)rmC zkP#Hn(njsBJ@q9fNWv`5`W)*itxv1o^m8&ufla1Z^=&Qqk9*!djfM5j3+FhPCGYWg z4{F-4qZB^Gl=Eh&sJgmXbu!LdH~%W!#Co=Rg{Kae{cU(GN;Po1l1F(W7)JlNY?s8xf>z}BV;Z`UF(5vdrwrb(oV3e0+rVJ@U zkV>vma5iJa_;2P(XBvZqq^Ck}=8?7}s|#&v8gp5G3I^_8Nde3n38E{Z%7C5tuu|JU z%<}@9)r6jcp&v-$Jc>3r_JSgym93|vkrQ2#QF_aCA-&FTYV(ij z6e=-sHlJ&MA23w+zN6Hf99(nxA6GHZ^_Zu2!rq2&n(ldvgxk&&`N};Za z085l^t4P&{59fD?%)RX1u9)0>WE$Fw94DV!9`AL|gbolj5+YmObiWU8z(ru<4ga%utLuC?#TYTUiow^9IMGbMkOq(Yk%$DkeggTYr^*C&l*XW zT|~(%CNBCLnb8X}#t_0eseG*WTl*HT9CqSXQ9F5=tN$la%v>P;QZqlNh=?W_*zQ!? zp2)3P1qIcx6yF-CCtXzYW}N=Z@)GA>7fWOr*EjG-kfQ6|7CY}CO#?wukH)O?W6^(~ zkv-b|Eh4}q^z&A?u}0Zm!}!bQKH18KvCjN=M2)g@U*TLR{ZzRk%(W!!Xrt=e7-%=l zy^t`})|4%~dmU1W$V1ZppU*%{5c|{@zlsDGnWapOi8qa@X9Vz@OWr^$1nK zk%vudm4W%$nM?{+hL0$70MFa8kRkPxV%RI^g*a(bjOd+rXvvy!E6AP?pE|8sB_w*B zC;QrcBkLNU4V?y6&(pKjT<8KnIQ?0l?Wke%*RAlGoo+p&V+N|E<@N8^ONj?fZ|}Y_ z7~g`{Ozji8f3aL^U&*|-UYt^BGcT)bCvj$TS$TOaWOLKVz>&+dqTio5TzSXuT2qi5 zU~W>yeBEWM^~T8+{TP%4bPUC!P}kQ(ENVFQPM9X-_f1LNvzC1?G;1^LYga?Pt48<* zcaKnmF$|y&$S#<Ko&)AkUW?DZM4ArvI`jJ z`Z-2z*Vh{R(}oJ$SNP7eBA~rnX0Ab+nSS;^_cWC`sIC}K5K7?dSYl9coUbuv;UlYoD;WTonuSX)9{2v+v7BS$_&Thy$peg6x~!#}6e zmd*^`t2SoPKdD${>=HyHaYpcK$t?8UBn;crBi;m|Z=o{xOq5u@`~Wet$9^QE)wB-y z;T9*iwUB$gBncVib<(Inzd(76ncpVa(K}l;Uvg1F?$);nH?=#qnYLP|nV%(TxLNaO z4Q7<;Ib_^8^KkK(X6r=ru!B^I4a(<@YN!P@clxO0 zRyrVzQlz3b_!}Qb+=YFtpor^xSc2BWgfvmBpd;Esyf*S!mRDwu_n+_6U$iBhkuLrb zPS_;!<%q-bzo&0FI;b^$4FB9=6J}Ao!x{4VRT^W+Cn?{Upq#&*?l;7#n_QgRB-G`~AG>`y+y3Q`QE4QpOjb!htE-oDadl^hR=j?u!!C!f^99+Ur2&_= z{d5~oglfI9ZaSdQ`o1>YKTKn$H88mwxU2>EjL3NZRf+lM4TK1WyR^9^^ZDRP`M!pHsl zZsQNE`9SZ+f;eps9CKQIls2Ya&PD#Za8Hd%OjOrcg?%Ls;jtEKU93;> z<1TpfA-lskT!Fj?(>22kr*0_yXb*h6_+`;1s{hofU!R6`ehMfVeg3H8`QOrd76KH? zoREs=vlPg&ZdJ8qwWR5${^!AoH*)zqR=!EiZ(_-I_;IidbHpEHC%YKM)|aYnn)tCP zwuVkD2LH)iWB1UqN>#VM5pkqQZ)YMkGU! z^c{OvIGR6|QNhl4D7c{b$M)OBTj5)5nc`0gtH5pOjO?D}I#GkOY*r_2yFUIVS)0GiKKXz4(8~u?-~Eu#nhqUb&J`tk61ym! zlLtcZj3|^X$qL%B?dKcM=^a0_2FCdqcdQWFMCFFsYAu|&vx#0wip9VlDDMv6`Sbu9 z^?&WC=4+;IyB=}%-K@ljEVJB+M})-%Iiry~bdm9d-UpcyAhjs)y$nGQ2LLY@I+Zuy z7X(dE);F7o@No2-f(zR1KoSA;Mw>ZaO-XSz1$5)1lVPWY{(uO??5^cd$z$G6Blr8|uN-6SVTDVv_7>4e2yYRtE4(Fyk2l<*leqXDgPJiTT9HaM6z z;s}M+@V)O!en;-id4t8($l!P}7P7=9cPlsMV|3i872-URq6U?`U{s#AbKFC{!RMsE z1FB)dcmPB2JT^LadD zKQezu@X+t-G`baY&tAOPOF9AzVEDMYE9l5Ddy^VgDqx)`R+te){LV{vTdU8+YP4S2 zP)EMlKVO`M1;O@|TMYV-N78jl6gVCauyVab(xsO?vGQ_;){pC72Ps7)))-LQ z3emqHDyE$BJ2=ObnkN-vSQ0aRv}+-t5i0PVNz_}bB{^Ru#3;R&6ZE~&`VKfaD~4l& zFj@7Ro(u4TvOcN|##oh?fBap@d%0NMkbvcwTqF;lI3>{K;eMkryM(rthGKazP;rdH zl<u?J*>1j?Z5(;;q_c;qwglX}c^w2H5NIMi_fb3x zJdY|oF2R`?`J1G35`PX&0xfV9in(9Q*$fZh?KP;xNofEz=o=$-IwATq)Z8()l3{Jf z^4hK}STH}VV5&zTo$m3Liz7-!cXt)YBX;lJ9fhPeZ?5YZS5W1=yBmU4Up~6M%2>}} zchtZTd6F&%NXMC~#buBtd4r}PFxA5B5<{3Z0Qrf;VnI8B^bP%sZkE}#q4m%JJ_v5n zWkP8tQ4T2{QDUM8S8W#zCKuLUF^9ziQiw z)()XNvO++I&#$slNA-dpja}t3dV!?7g$X7-y}iEuU%s2?uUqdDRI~1S!Hk84^U{iA zxjmEVyBP+OT>QstRi62R;q!yjVTbc_wE{gEQN$K)N5`34kdFMEYM-J?T# z+BwDAugwZ0_mPwr$tx&$VRwlmX)L^p+qcI~dijixrbyvh+V)gk{o*2#_{xEdNos#^ zCJEup)-8Q@;{H~lbm@g2&B5Mch%4E2IGNb@e6sO?tv)0c=p|WL(>@Lqu+qyf!61Vv zVOw->n3$RS?zB}`C(CD1UNU|^AxIf%!h9fm2Zy7r!AB$)9KNk@ugwT~ANwB{hs^0F z^TBh5jU^7=IFO_^-}Q7~Wu)um44J!H{_d8s82Rao)pe>*jaijVZ{}Uh%vfpe(X-~F zZ09m*WQ5KMvXFNUIu;gycES zza@63kWZdsxw115O$Ci^!_AVu>N(GLXZ-V-e|D1!@b>cZ@$w4y^z<}x$C?y6=68Oi zBTuMPo7sCXTib55B??X5R^B}nsSPBrgztgP(3i{4{5hX9R<2BL&6}SbhTfC!6ly9~ zQ_P#U!KoPne_6O5WaEoiT3PL;r%!_5jCA7=HAYNH-tj*#m)ckAyu+h?cUE)9mv$Om zEuIKlWv`MDV7^-MsEGXFSJ8Dl8~^S-DjOx`mdI4`EuD$KY2}~@Wf2fFAzG3)kB{|@ zn#Q29#i@L&f|ZQMr75!m8%*`r0;=uQl&6}ne8O0{3`*1nB)O5v#Nh+sA=gH3Mr(g2XSbeX3{vt8FI#OdHV0)jO@kAPY%|yv2}+}pC&(Ad?HKo?%BrL zUe9uc?`D~vM+=s-yrySKA+b^ZBcWY@!%iqCQW2f}n~WFyP5){$9_*52>wV{AS)bkL z_-#(BG06K0IUPmw7nCxSedf{M2o%1Pv1vQ)z?}R=9Vqi`{oQAx1fy<8xbAblk#Yr1 z5(?`hR$b0Mhc^3|auH1xgMEz*zjoNKYT$^Zh=!tf9uBh15Lm#qa5^-mH%qx<4HrFG zctIlBd*!o_@_lur-R?@m^lI_M;v0XLEO9LkUezRa-Xe{zOIAi|0j+74I=ZH*^$J$H zYFWFurMbnEc&virD+2C3_?5L(^KmD`%G>t>uH2_ws!MDvHjYm?bZ+*o>Y64;$-iEw za-=p&wJ)+BxPDjTW&*Xd>eHNKMdHiC^v?cTTM##Ie}1Ux*>#wsbA0gl?ykIcuQ6Ut zzi%D=rkY;jB4u^s9nR|tAHX@Gy#^4}Tu|z8C(ULhr>Wsx+T+5H{_^OW*E3>dk$7@a zLE%s8RgX<~@u#>Ni>%2lcE@8SHj2kkJiQ|sCEv%4+!0&x@-o}G7`m?Ky2g<)!z-ej znV6aM?Z-j=`q5@pjka?2_Og*-EV|EV`f{`^7IZyqxV|8TQ>{4GlOtF?azH+|)z(RJTuW~R2mHpF|J3LN4IK2 z$L&#@N{zWEU4L{lN#1|7qoLdPXuM(X(d{Iur8R+30#Pu)e}>NTE_Rm;y7SKq`nfbbQ%UkpE&wl=%G@8d(tCJy{UTwB@EVGK2+{)F z6q~E@EYeL{`JT<}-?oYHcV)wMS45l8Z5#j^JWBwPcI^x01 z!9iy2Xsf}h%O8#!3C;-@XIHodj~g971gj0yc;asFfyt2(GyC~FBloI zU7+duiBmo56c>}v_yXp3c1`+IG_YLhT@~L($Z;<-HJgmIJC$gu_N~L}fZkjjKHRw= z&eQ!T()7=7B)T>s4HRahi4`ovctZS;kx9F8wDmU_P=G*a4FL0*5&RPsKskz}Qe0R1 z+eoud^DUmhkYj3TuiL9OQoe*ick=X3%CxbfnO-|ZrgMp<`_33E>JvY^CpT9WW$_rjg>Zm7G$avsnykTY!h+to4lwJ1ij0!Cj24jiY69Ra6KeVs7JAs9_krmGLFZ zejfEB3)_8jf`UG9b-nijUknN773B}$MAy{R@Janbv2O)eE#0zLO8h@a4gdT7@h8tp z2&JNlWF73uH}4>l5+XQ-6ZGsyF?XD*?rI-~MiBFdB+WcSswecX!$^CA& z@gX(Up?C%t;D+S+{<}FkQ zqRC`t!Xm`3GLBI4y9!lZ=-mZ__yb%t@T)<`JMHpOih!H&9ZoY3GI{`}FD4 zBYx{B*BLn7kz@~aq&!=h{r+L-OH9t+M~x@yr)(k3o`F zK--%T_XljuP&*h5e0~)OsUKN6J}0y>RsHh;v)osp{j^4QKg@xC-Na~l#? z+PK8qY-N z&Y^cmoAqs1z-r<_FAuN6bwpbS&W#}qoKzaHEJ(3WSe1FJD~qIosIETJl+TGOhltK` z)zrIp>v{)5l_!-=crgl~sUP?Xe9p}eJ$4VZfO*2Aaf-n0T!oP?6JS&>D=D2 zp(MxEg2oRGvh(=2u93r9atv95Ii;=biu6gVXZpuD^jY-h?H9g`ANZ9b%IVdyyFc~s z>nGshY#67O9*5ak2{5ujb7eRt?5+ab8Dy)-Ju)6dr9;F#GF9mq4gc0OfX2=gx z+|i>B2N5L>+ic6$t*O}^5Y@zD)WT(~=6b?4#zf&ycx{p#M>K4LhM$;JV5;9IJsScU z!j_>mf!-y!tV1>+A|isQcsVq(l^`rh9llC&89A@mx7j6GPGn={@;NFM$0RsuUcM=% z5XgJdA|-ID;V{RQRHcwmllTskocK$1h$}!;Y{DU4Z2~V*V=!^8u{#ahL+M%_3mgDsj{k-wwX3{4HHGUX-TcrucfB|qx zjD-hCRDd*)24X!yj-Vkca$mn8cd5r6sdJ?{sw4p}&LwWR&)$Wb>qnhLC^kPeH8nNv zd@f5c3t$vM!L3gvQ+SJ$>=Z$Mh6K33x2;W*9s^gs^Gh37);%wxLaX@fH16WnESoFYG+iJlF>{9 zIkc>63Z`1Iu$hKC$7?_<_|JY)KCFjOJHvWk6}0C%px{3mRJ8)yw9qyY5E2Rse&*r9 zf5#M79L=o=x-;;8GXMm_+z+jlj5`8M4)Y?f#O#9lI#JDYc*LbH^vMH*EQZ5H{F?`U zM4gdIlDs6@Se|HhRW$Ep9vld6*a{-1k#&Hv=$&Wpx=4q6(*6)ZneEv30VeYar=a1L98p0!%2M`^L ziQ^Q~hj>GBG83o!=FMZ6Elp0iIMw7N5WM26)_=dg#Um@8@j#yZhC-g>s&?}ZeYrFn zfdQw%X*YEWTSFC6+_&m>=+(pQ;6~sCw5Tr}y;hMsFgHop!g;~C*2f;=cs(sg36G$l zAn=oLlXt{oc9Er>U8dkxmja^m8KF8tk+HI~^MAa#I*foJ|K}wj39ks6h4#zB73wp|`t!Q-&`Y@;>Ez>o@j5gNZ{NwLBbn)JXaY9lrHgn*iPE+w#!% z1i6Yu$XYE!s-%ISuMG0Ur~-rN4EKJwY^#3vqD7MiZUaO}f`0qW;yE{UadYIg!*B&K zR_Y=>r8MzY`I1Yl%7g{oT%WjX;28~W|4RSMv3e@|sl#5plz!jDsL!%5m}+JyCfGfJ z_ST}g-5)otyBar!{F?VVUEkSnn^&rL>QNep3vzpsU&cIDR=WQGK3_0qydqzsd3{$Zxk0vekI z1jY8l!ks+D=J~@HpAO&vu(T*!mQyAQXqw}iX>pJ66v*8I7g-h$&#R!Iz^!)OjwBox zS0ItLvEFu2j?j}eZ+|0i{ok+e3`EEU$qtSZBmV`sqyCFBi+{P=3kO={yYX1^?u4M@ zLd!mDmwndH{$0*+9)E{&UCe>k;}4o_jM}O_Xe`thaqVt|f`XgiPKV1Ze{&j6 zJYneR8VMhI`040N9c5lN<@3s0{GNLsqHzX9o7D&*?2U#M2tncy0QjV)GQkmT$z?`~ zCGuoKIFc)PI) z?y^*2U|1HbcA8BJRj-k|Z|9i6+wZKRb5n*-_ZNyNIVKF95#UXH0DgS!gr{aa8ksup zOd+mo_GF&LI&~+l1CrCO-NFBU050mrknb))-9$_G!4#~fG{<>Ms=X%)*V>?-TR;2E zuj}vcjz7-qm=NXNS6K|Mz#oe{o?$_oo)aF?zeY zx&~PJdZDkuB8vs34j1zEOmOfm`zOxbxX{n0op4=|uYse&ZGp7s)=C+HMq^JR< zPs1Puu)-_xAYRD7mOmseF1lS2Bl^U}DHKT_-Qv|n!%u2VF^r$S24`G-^WJp%eyYML zJN}dIQmzdx&+bgON98%xC%@B7`u+8c$EMP{=E|BH3dR0Gx@s(nNn1{v>>5VV4R9)LufTE;d^BT&U8Q1@lw7aNRw6YiVVcpl;hzoYszx13~3ZZx^e)iet6}dYo zKgB?}BtyQcnJV~r2UX(>Ex)0NKRV;==0)?A@&j@;PSetDRgpj{fnT=4JUlQBj{=m2 zSCj%M+Kg;SR3Ry!oSO2EkB=u$6FC-%3=ThP#HW$G*KFgZkp`;~S(-ImR~8vad5o4W zR3tW-TS*QGXhacdAwBX63kyTFfx&cazHEwO0mKc;tJy_U+%#6;AWq|-@m9@H2E zh)+ay3cv(VjxNuB=+>DqmIF`W6S#R8TOkjb1JrQ>!l*&W3|`X-S}2PTQY0^&Rl*R9 zx4bz5sQBI8DF@*6*aXf9(ba0?IVb~2Qi0$M%m8XQ$xC7#`{V1uj1qN8GD-mgRgyXk zcWdD5wd(;y1`BZoPMBKo)W=tIWF#ePV806gm?LoAT3ltue5=>+t|Mdjj-q6b=-xn) zx$;&=GVmn6@op4vs!8gS+?mJ;;0hTpdT)KRC+DIsy!<^x7G9TSK@}W_QW;Hg&%UY< zql{wY*WB$s0*4Qu!_q>NrPaEpbSIXgG}^+Jwzet=K*~{4yCEl(fjv~|zqr|3%wG-ZBfIT{i5nV~QH zRRtgf%0Q9Tr(~-1IOfz!ovWBQ@wFN;A~{uQ9}+dFM%S z$iaiLYh$oqyr%$Dmc9`~V@hOU;0Sqc1h3!@L-<5sKuKvtED!Jt9Zs_vP$o!iI=@iu z94z9bhEXQ3(ABV7y}1*2QVL7nq*L5xR*s=jWfW=+DrM|NRQjK}57zv_Re6 zy~Gf^Q*&cbD-neyF##s%#i2Ek3}x;aUc~x|RI=n9F{@^1Kw=+(mWXXEDyT0w;dIW4 zin`!Xh=FB1T(B)&b}>o4#)fu>mf8!jlBAZ|a#hXF$(I%U=K0>gN5vN0O)ToqFf@KsTU|B&ozRKv-*!cw~kSY~f^SSNEo#)6P8-U9J;h1wgf*OtgJEfi2` zC>cjP3!tp7R6wAZ2J$`#a)J^F8^#WeNDOiN?xa@cy$#3NMOG}>g2tXBW?~VSA^O6? z_E)wMS((#@zWFnA0I>-ttOH_Vgr=vlLY)tJfY4Q7-~y-}gbqW}F~lPF5}u)a%+}^J zZF>z#D~?2sJ^VLTlCf}%FpY;aPf6tjDJUz1z(d*SEvrG@OS(7k!e}`-SU?U8@G6n@T#7%Jh!206!A zfgi^x@gKz2Cj%wO8YYWE(uCroi`nHe9amoCAY6uk_x$ssC{g%wrWfXu&_@y|b8yN2tF zzT3pYZvhk=8@6|3Bmpb6yvAbf2TG^#-$+Qmg{*qNutS>0;>eXa5P1T@E5WuLK}>x+ zfMF#nSi%sP0^i<_C&B|`z@XWr4HW6#(5mD&L3Eq#Iu}3cFnp`vr+F0BnRqAXT=x;) zl`sBkj(3B^REMLBFHV_mC~rFm;yH$Ar4vdRiF%0P&9*Z*dC2oYw2?qKOoMIwOW;J! zk+z^1^1_zAGVDy}kQ$zK130^IPC0#maj_NSLJ~|%+h7VG#G^xu4#9#+!fm{!aV(z1 zGzhX2HF8vlB%e4Hnif1ZtluG63Z*aFL*h()5y6V^?R_-joQ1$aa2YV( z*aQVzihq-p#!W`oH{EH`7ClTUtP7&O*Ew%-5XuIQ)B;%T#E2OoT}~{bCaIs~762R@Va^qY z#nUnkCWAeMO_JPwNUcHCF9i&P?2h058=3DtfQYitxw_&{#byD2B zae1g|-|Kt2$#ecVY5;=F5~l~^d?&bl?WcA;z;1~}w%Y;LKe5_tUn`e&F15Lb;3gvYNUEaID8v@c$0Zc7djORoKhR?R!g$?+HeQSVVtxpvC|TsEIl$*7vn(ytH&Mo zo!}ZGU__H(j2b0FvJzS;Ej+cil8I>77Chk5c33OYtV8NmUn1k$pw7A)??dMu$;^l4V%7YnYEw)Dz z+P`|&&iAcmLu3adzeM<~5Qh2oGM8W@oIi2!u_MM5iO%Af;y}6$gQzzuGPphHgrcFb zS6;=u>mTLEl5gQtY|ToSYg7lDJi7*->#pN7LAlI3%EAJf6vK3R;c?-;> zh`UqiDdw1l%E!}n^YqPGJ}ed&6s+2y4Od*!IUw>fx?U|3FK{3Q85{a3hlYj{pFz|g z#-1|76m4Z`N-lmFBb$h0m5QTdZV@lIUPyC}0@A#qt_^nt0ADJP+$w0v@H}Fh3RFNl zlN*WB53rc<2-UW1+lCSF@d*puWtY%t8fr<8CucqCS@DwR*5lReFx|m9YH3Z~LqTVa z5J`x+57IqB#``t5>fzI=Jzd@EYTTM3OBB){u(8C%P2cVw2IiOdUs>o$Gv;hjKgR7)0->plq zx&CpH7A-w8>3iLVO}D^Sa6n&c8h%s65qmKI4LvyMIHLlBgSd3jiV%;(@FkL?5D$BV zuZ6j857@*kvKM$VAQVEa?`=hfF@dLK4FgKzSO;W6?XAueVqF;ZfBU&3Cg8eGPES{w zw^L{c)~=0JXAa}sQPZrj5L!6)xMtxqv_(2j}Zvl6aX{9%)p+t71-*c&0|yF=dF9B!uX==-Tzz`V6-y)vUTBSRYG8oX zkl=+jGcfA@PRN?YUkXYGqhf zX01Z|@2d=sBvi>+wkB_PNkV*Lvs}@n%785;xTfAxhYuqjtY*qCWKen zDhBi_L57)cx&qcSEP;i*hnWTmV+Jk3=Y1BRQP!lxXO!2V_Txy$>H;=qWfell@~|z5 z^TdSm2hLlPOagk8iT;BEI4%H@#|Z$#7=^7j(lAHLN`FM|&$8Pwd?`)RY{CD6Z%4y0$_OYNKka^*nT* z2kl$fAdo;!W=W7T507^M3-@Z$Jk%&;ECiOHJSK$UQJOfUQg%=Zm@IK)Vg;Uly>o!n ziMKpSJ#ay9vsKj9gOL~PcABc>=acYT2IHT!e2udX=kOBiR{~CuR#Du&`TNW`A!~Lf z`1$xm!qX?R_4?MY**O#+m{`??5EfFESJkGI;mEJ8gF7z2QHvzW`kYE9D8VsN2QUuM z)GOG9p!b7Sa|sRz5OI*NzJ;3gC7e^@QM(c3_G==b!rQlRmwx!rz0!nwjJYYmaFgqZ zZj#*d)KqS&)O9^lJi2!ag;la$9dmPcd;jh~(M8+wMxej=lhj++rj=cHFBLop^G;J^ z%H8r>JC{_5yjcIUDgQrdl7Qyo}-T3i+4pQXw9K3pIS zo0&`abyhwB$(be+ez?1tTT|;qpdr!s?ooyFJdhY=K#Xqm!YxB;VUCl(QK94M6^Y(j z5G@{>c3=w7A!Nb1NR5aI8ei6J(MvZfi*7xoX1h6aR|o!#@CboF3<_YbYjr@f@sw%+ zRMbJN`{_7y5Ldxu`LO^QcH&V2|D!jM+xh8nf)`!+1w^jO#{GiUx1y^nU7hn;XSIO0 ztqlx75*eg1g-%^S$p2}_m2QWC`jVXp7ncIDQ;6ni#2n{rn5}z_Et-7tJ;vhf>`??tP+Sgs+}JkunI>d3I^$4A56b;I?yKC!x; zp3M5Q+f+z!*V{7OM;@HC@x#;{YD%EHr%8IJe*Aa=3sM>j|7r_A9KS$CE$*^fUS7s( z*NSSDKXwFwR%RSq+7TSiGH5=aqxER8VxZ8GAKsDoQ(22Ai)MJee**8*cohSLnJpx zFNZ%Uo5u}-DPUPo8_6lNtn^bEu)?^qs@vXKk56<$y~qPoM`E)icY5LhtPT?Z7Or_< z!6k*b*GTpS(F8frI-pVMZG=lw21h^Dp8Yb`N2(Pr1*oX+k9tKp0|W{{8wY8^{=H3q z{z2f97?r#2SX)4E=d4xa%a<>$`>8;bLSJ6i;NL&$*;M1RZ~vF9%z4SjKNR?0%xxQ# zl;kyRPv5YmZ6!%WB<~WsFyi9p_%N64uH08qw?L&bx~fi*zT8 z`T;#TVVn^`+&Pjg!1e;OuN_;$4`3KLNYKvI)Lees4uXx9iB&fejA1NJfJ8!w(=Sjm z^bYLZCk4nEhtMsaUny^%K*06FczYY7C9 zZ)$5wTF-e7>CGO9&;K7?{~gbD-@lLJ8d_*b$Vf#Jl`Rnp4WjIj6_OcQ$w-SrC@WiL zb|hubWJFO`DkDNDWMumukIwVF-skzb{eJ$qbUBUJ>-l^<@8dX*`*9Ede0BcCcPc3y zx6=qRM8hHs(%1@SWylvF(9IC^2)F=IwYMTmr{e8}XY}?3O`Fvs*aljl^u26bEDTja z;Ljpdz<9Yx-5f0`swdHGwcs_{L#7zf|G$g**FUnsiS zhQOkR#pCvE;T9&AzBM&9LPh}T+mN*4;f{SNugg@(9Mmy<*tC=0-S-w))Hwm%Oi-8o z4{i=1$=KNq3>-LuG{85*n4`+Qw&TAS`bK))phO7ZE^?Wp?sq;J8Xb*Ml>6T|{W;nK zjMQ@mgN&+zVN7)qEG{z3*PMIf)LVYKpN-JE)L5uqkb0}Da+yhr&hZTE_3-ow<@`}f zJL3jKWP42Gr42hdJDcP2Ci;Y9+-7JD3a}2fz=HTo0w>UPJ%MUK7-rT!zn8zEM%QSo zSx<^G;DF*{Cthd)^TUbl8)Veb$~N>sA=N#|m=y>BZwOtHNE*@k!s_`HDX=jgo`eo1 z6-SGppbc+Bp`TdwX_A)0fEgq~D;%*e+x~>AkDTyYe=;Iu*^rf$Wgj6jAVOS*K_rj5 zA3-5$(ndHY`1RJP>AL8w`&z0PW@Kd4f}PkAQQye%mV<9qpv6{NT1(r0cd~X2k5bM1 zXb7N4;X)=Pbp`%+PXD@|#u_JRys@=CN>R>o@BaP!zgz?TXGvJszdmjhy{&3m@j$RS zV>&3>qFuUc^rL0d(%PhRIdWS0Q(E(991iO0Cl>pdcF2A3y^f~DdA^<2_i3w)^^V!A z@kvs>m($v!{h#kQ$gAtm(XBiY+7FBx1L|ni&%(hHY=9c(=s=G-^uDIq?t7vz3d`b{ zh~{ia3?)VjVl^>QO0yuiD)cPRh_dimQ!C2b=f<_PKEp(2gbK^n!6A3|H;HK{Bd>A; zrH8wZV}ac+wEJ}!fgB$nC)FfG11R|{ubV)#Ll8GIIMAPK#}wa`Ogx~|qw#})3W>K1 zLi-SWcvNw8zYPtgl2vFJ8^UWLbr_KSz@C;?K_1L?0WRCs@LAwNc=*uZIxTwm)8oPI zNYKDNBc9W#sD(M12c9G)5kzGUvxWe;1ky_Mp+qI>Gd!+)Eq1S>*kRE6x%%u`Otga7 zz4)l(BZ}OM&O<3r5Fs#kQN6>Zexx@59hMH@Qgx)F4;c|SVmWrG$5e=tEOM&US`%=& zFS;PbOkqZ9w6xL0dJByY_u<1@$Z}Xnk_9;M34~OEE=xS_OADOCUD&<;W>%0LOgq7h z(bT!#c%r*&PNO%lm%(a~A&oT(fceVy7W4C3!p%0qh69eE$4w-~VyXzr?}? zdP{0ob-nMuEgod5u=M+tyUQC!1=l0pR$+qdXrNq) zjX|b}P}t5*mxd$S!U5REqo|08I{R1FNEfTbVq{?KZ{P2L_et7Y1%JZD;T@vrO2d>X zDT1*>{qnQfEDmgl8bS+Acz}}Ger8B&+LNv!W2Rt@$;X6N(yoz40z%dyZR`jQ1iuq6 zq!?XUQ9)K|`V5Of5rP}Qt@l}^;kBah+8kLlP|eT@k!KoR^h0!zA9KM^zXuxe95owU z3iO~OGifuaLKQCre~7y}KU`oqPBe&6lEotTzrl$I8p+xA8vCoDSiveCbxd3V;U{Yi z{-%pbQ$Re)rqgkwzoS4Csr>?ho7+s!U4p~aUIQ6RC^le{YN)tjA(jC7#rKSto$pah zW=Oi@Y!H>Se8~Q=p9Q%2N%J`x0dSJHRF~;Qo+DeD!t|DrS~XoY^j-qm0grWFom^Yh zBn9GS5pp?R3Y;e-y??aaL?HxE$}g5Vuj)g=epH4FkeND^UCn3!(?NZo0%l$03fdfVKM=&dc(-OT@*Kd!0(^H^^PgU*y@eO;0=E4;1p{L_+-MQ z>ACz64xB&}Or~vd9f$%i#{pXbx8&HtbrUX!@#$|1KoSS`0(9vBbWVmn11E^B{&;Wo zhx-u){;H3Ut_T!{JUTpOz9GcM!Ql_|4kCi}u&petU*DtDCgV+bjS*k2Vj(U0I+3k6 z2>!pZ@ih`*eaW&)z%MKi^EI=qY->C8Wfog$Ead|x^79%w|Mz5+F%@;(ny-^wxVOf^ zNh?Q#S4FINSphp@X0KP8sQNsN{^>8Ga_p+Uo71mP3K{;2XC4HW?~L~{i9BZ{ojc~w zCiGnTJoA&HYCs)sbCdkyxQ!p1$;m8v9%=Z5^}7@kL5Qo#GC}~eKEx>4N(>_5t%$pM&1Dy zRKFN0vKKKb#%($bu5U3v3-GjDnz0*0t)H8^&ki6bR%{xKUw6sw7dc!9%WHMCftx0T2?>NVG$yE_iKiq%ihQQe$75IlLj=k%VyGyxe96OtAn2IFiotav zTsrB$!!c#l6fGU06zu0F%>pL~{)aS9=)fFd7}b)Gz~3tXM#aKbJy|o`P~%(Cm0r)< zaZJL6S=B`DQ1!n6&X24{3LM5yr{WS`nvG2Fn;kY}01B@T84F}qROtV-!SQnb#&Y7Y zqDM&xm<^(58(rryzFqz z&>sV{7yPpM5Ia->A0Vhs#ZlAzLM@EBbkI7)<+l%U8qSk6p@SoTQfOR%qcm-$#$m6$m%*w*=)Qub8yCV>6pGnk1Ah2LdOwtTsr( zw3|3g;0wZsM`56MsMARXqXMvTO{f(n&8^s03X1a>y7B}jZfJWMR5#&nzP!EO>w8E+ zFF6*gb5^rk<+4Ws3M=|O8+OzZBu zk55fE-H~J$9*b8NNjca4@&=PyYNBg&r~IiiYC0;ne!i0B78Ou9XN`HW!~DHT4PoY; zk?J42$_@)^hq%fIFPt`e|MXaZSHEn(=*27%vBPJi*07yR3plIAJbtqW`ay&$3rt%8 zna{oEhSWo-FG5rRercJ44C``EQhflKM1XSXEOFdx$$c9m^%QuP8O)2F;hlOQQ#DR@ zJ!$wY+4)WaVvcSR*3s3S0{X`V2!kk})pH$3J2N0r!E`LZ@4aHqlct{5^mR2j+U9|t zg9i^DB%9m_6M#{ApJCu$>InMhPzGeY4Pwyx#3ES;NLMSj)TXB*{K&Ou>cU_P;)&NZ zYB~BJUD#uG!uMH&+cBVlJvhjm5utMLQS_la|EM5Ib+qtffb zRly4Dpj&N5d!g`_8RKQZ_|V7-y6Bf;YQ-c%8>WNrNF9NaHwhZ`U@VNltM$HrzZtRk zInl`giASHURN^`d0qQ}hw`w~`XMwJR1WsGY-McIL@=}uOiP8xIIf82l*?}uE?|7a9 zB%HVjr-Ajt9Z*MaMmRA{!@ub}91tYsz9eKsJO;=gzrHwUhMlb@%!g6JglAa1sqVon zArZ4;m7=xdb#$EDmuxkh$wo-XbV4JkKxLrVI*@4vaM*NuHXFE3VRSJdT>v_q4KrBL zBvlw4@o=(aFSw$Qk!$iBz|24>_E4x7>E8b6pFNI$pW+3`TT2VRq=-8 zH}N!+b)8yTox?vz!h6DXckMN;iaC0pDb%lNylc8KPXNaovOk0V z2flU#RVJBOQs0QvX@uJkEJjZ7=U?2saRCZ=9K#5h7Z%OSbOlrU14E znS3@CBAt*kfOi~09@sMzO(&VDLe-)mqPaA@und3M_dr64k8q$%Tzvc#L_xy{yoU~3 z|75ZIof{Y!NMIfaD)bQt&LLq!1gH+~K_6F|c=ZtG*!C$DqS4OY16mYi%1|g1t!~Z) zc^2R<*ar)ZZ;-K%wgTY^ij1_h?Q9Y59q6@-BT64U7n}oRd>4J&l-gLxt0`>kYYK!gEA`8dAEZf-Gy=gAEZ`%nr0j0pR;|V%X zQDi{F`On9LVL)?cqT3^detzpQpO`+)X(ISLZfH0|uXX0F%m>}xk-h}^J$1<{UIIfJ z1D)HndIM>nFIPP6xYqyJG4gOi&aOv-Y)7Iz8ysB^v~O76*pjKHt2pZr9N@c8%Xz%u z&bbv|?iU936sSHtmlHX53``>z5gmPcJ25$_hTSaW3u!~Is;WM6HFZHaMU>?jeBr{h z?~pTM-b<%ZjD8Vgobyq;o=i+lwLqXI1h@M?XN~=x$VExClIruP(bu4s`oz^B!CO2T z0F3}4jkR@9@URjFibnMtE8@7H-vcvb;T9t5AHTkL?_LDBYECVX1qUwILFD?U)5#x* z&XJ?XmbaH^>H~X`><)eEZi^(SpcOZCFF{Wt1OTe&5lAmxtDm=((6^vclu1V>c!`gZ zu+#*=gL>la*b!Blun!Y|jccF9Y8tbCsG)>_BNIO5!xXoAsF zsL;YiP*G6{&R@-hG8m!kpSumsd=Xi|F2LlABQ8*Ag6DN^;+@nK)}Msw5{&|0PJ&B_ zaA_|_@wO_4@|9cCAPZuDjmeDo74(Jm>ZKOOyeMMKVYmIS@z*}*e*KG;t1`y7PN~JJ zY57b`s=r8mZSUF=SG*(hr@2mS2K*N_`JwU4u)u8B#joLmxH*CQ+rga<&eZaC%q>}=vEJ~18u z0-50NLL==Q9a{ku5E3Tsof&-pJKdMv(uNn>*!_>hf#dyDbdaL#1;EY>U`zrZhM`@X zLOnhVjM7ozKMs8DXUOo$$HZ(%8sQ1}vAlq@|Z8VsmjYtivR7UDdTU5$0LC&}K6r^VCS1;QL=2+G?tYljJ2 z22s~xF&wEGsp+4BJH6AaR*e-G+CR{v6JO`O?Kq8Ld8hAddSBY}aoMi|W;i)Zn2Zb$ zg_v4qKWg79{-Rwen}^o-@zJB}3}Uagf1B?~i>cYaUp#03SGPsEP{D!2@1FVa3)Z{c z`}-qV=YdG@gF2cp1<#%@lCPfY55#eJRVAHxtvU7GlFPeY{UrzYdGU&Og$xTtF1y5e z*FLKF+5Kwqjp#Pod!Y$?1JcL6qh%r{9&Wl=lKRR*I4k9*RnH}FiL+r(D?W@EtMRL{ z{gj>S85-Jvi)?ISVy-L0`Qgi5d*munhaox)XJ_OHH(zmZs3K~z4{hgKLn9*M5lh=) z+TSXS+sSd^CbD}_9Xsfh)`5e zXavAd+m@!5LJOjRJ@4bO>(?cT?olB|viOxl7rlsxNT`I12ui&t)7bF)(*V`GdFdvU zanJBj+V_Run;q^l_Wv-vPn4J#cp^?1xowWE}M7||puCiWF9D5KQ%BS`i7Uxle@ zXvP8d8z8`$FZ)?pTIzf)DDxQ|g~GC@yZdpA>w7kAhE`^Nv{`wa#Een;4cqa<5dC+5 z{i-sO4>zSUbmXUF(_XfrhW5v4lde9nfB$474K(-v`B+hgTB-@<k~AFJsYT8GvqjjuCCf!QLI7}HECpNaA!IN!cINYD`5V56$H%h+9L|k?`lit^U&jyK zV%eKFREWPHK8jfj2n$z%kTAG7_0x@1)jZrmhq<{oz(b2qNGK?aXK@}ny~ipkvMs2D zyl_hTe*8FKULv0;Ei1bkDlCqndy~6FMKzljko4u7YpF13sC`$!$L)aZP@cGY(^V>2 zj$Mf=UWjbv@M3S&MAZSng)(F4Iu=}>QdHc=;)2U@^J$uT8fV`1VD1X{&i0QV*GF$U z`m9t6Qz&dWB)5!Up;q;lO~P3S)BK)LE#(eiJt{ReuxT(;>tHS8>NRT&VU(c>svVO_ z>k?H`UPNbS^J5{Y9}=Je>agR}hp>0bezcPnqRMjIR;( z+~wZa)~*LhQwiWS8*~PXs0{_$&Es#)nv=JXfQRM4Ye1PD{Ph{P-Vi-kJBDw`;p&Ic-2YmR5o88_(n1 z=g=17aivdqfQU*aK7kO@IX`%Lq5B>xl=#?aAIX(*lS*rk#PV| zD~IwSN{kIx;tqk1&~96|Y11XHoExq*%i`zgKbN}eH@kvUUrk9V*GywG+9{DSaN_v! zU55|n*DwF}x_58#bgWW0P>O&yRsrL6q-Sf&|M28&HBfHh%r8KuCr3W2ergr6#c@=g z*tUUkBb(&@f=wRMH_@SPCM*Sn#c%|)l9iR+$=B^`0Sg-~4 zxV$_%LF(@AZiWuj zn*6T%>eZ`m=+U0er2tOvpb>kHt;0UBddK7!yRh)K4IV4u+-ZYq!MSpqZta^lGWPaD zXox`YY{=JHNKhzcOCfmQy9!c zeUUR)Meu|0Tb}9UuilDV>7@?_4!_tZY}t^`SC+GNjgzBvrog6i@kwfx)Ko{(pIV8woVLyX={^lvjRz_~Ix^t(whbeFm4HYb zO3rAJ^|UqLY?IZvGc2&$i$7?V2CZUX^41H8$#K$Q!n1;&b(siAN8IMr)O-OioND%U zLMM68+glo1xXCXY@V4d3aHNQAPmY}Byu7@@gy~^iA%H;+zm^XRgi#~#k-3;XPZecl zFIJK)2nr6XLg<-LX|wE*bmemP#rZb?k8;aMYGF*~VNWUnrn_IOLG5**DQT585WoY7 zeUudIHg42#=|tas1s(OuY5+K%xE1uG^qV*Dbn<=M+DebP4z6d9VAaVY;Y&VE+IJvm=0)4s_6T?>D(BPAPz$4<2wIP0$DAuiXSh(ViGm2O;5&`VQgRjUN z`_I3iMk-P-94AmWKg4_)tEvPA1Z;lw$*~-^T@7LCtHt@>4+8^L2al{;wF>(_fyizo zH3(UY(0b(hg6Psr?P49T`t>4VPzP?Q;XwW}x!Wc)h=pD^Om0f&% zo7ZmI@rt}#7M2BbyTC($-Qv+hF#-kd7*$jrE^?JZ2e^fn_Eu5R5iYt7?VmoyLv(}Q z3A<*0-bdamYgEed)y0d-1|dB1rH}zI%59aD{q}wjA8vuB#&e%)(z>Pm^Fe48E};Gv zb)MwHRQKYL9g4~|YuBy?G_(m6^I+RkHX_uB>p<-L*T*+4L&M#ekGp|Mw^MWT4-i(W z*0QTjl zqs>tZs|PACf7O{euv)hBguLU4l&SZPos_~Ekq<*6yxQ*%+-p#fRXG!07AA0{R^e7k zEWbeT$7Qxwo%<$^KiA2xYfEO(-|NX8BCDW4jS&zpJRJ8nymtFiy1e9ra?}8`C?wM3 zoWX+kfZXGtcBM;-kbSJffZI`YGjCgy^-CoQy^%9#y$V-c^Za>stV$nd0!l>ds3vmc zTAbFpVlhxpv<|x!MtJj*sXCq7)>G039|xUbt@t$D+t>FZm*8K4Czwh;krt#NlItyB z--fha-a~zX(x#?d;H&nEPRA@SJgHIY2l=vI@7xTez{foVV#FLaz;Tmzx(E+h58yOP zKg>|ZDRE6;&Z&EJRNwSE9>^<;a}K#v{w#-Yp=vNM+NX8-@%o>A>9a^1nzar z3A@wWh~y}*UZZmMDSok)p57DPv>{RuDKS77BnCzUqa;7X&K^HFuZ7n=GhWS>t8D~} zP0b>w>=SJdCw~31fzAmy@HXUyy8YEzH?)I5X~?x$ONG2 zHKaF0Zv*U%PHO_%E6n8cjtw@k`#O`XNv>VG)@`ud7l0%%SxGv<$b=Mgz#{euC8=?5 zVPo?LO9D826}o^Mfq`2~=7x9_qL1X)C?4I!CV3y}VK*mdQq7c|t*s4e1ePOCoAJ25 zLPNj7QjHrs>e#?5l;O%h3=h{fJ;Khu3Mu*C{rj)*lVe@WOAK(*)x=u_@K?OsV(Y(C z%$8yvl;}+uLaC3IU`7FXQ#!V>AVfZ~0su50gjK#V-<@a1cA<^B4YV{4NTBx9#rJ?$ z_~8>>KHv4tOFFg;O~}-jHUIj(P2zHks=n5Z%HtCVa}* zFjr4!;ZKk|w9w%$_R}qUZS~2e`)p!vo{|o3%2g_E>uxa$)MTYMII#?luL^m=c#kuu!&Ll@*P2nC~`EQ)AVf z_K86c9Mo9&@e&te%@g#ozMdNW$8B7*GehT+l~w>B zdC$EwwkZ4gb2?!u2?^b}Gj)DnrB8VqSzGhM0s~{?T;?V1Z71iZK%@>8Qq~g6ypZy* z2oguD`kU_~LM+vhqRH;^RSKbev9iL+eSjUjQE6GQ)GQ<+A5b&$QJ^ml&dXuQ#kTL; zNVvhKIT`pb_9N|E@NhqP9)tSqKAY4IA{m*@t-t`AdYbQ|8uvDgrFfx9WP=I3*kF1V z`YKbpngz~ac@NN@kCCdh-K3COgqC!WjmefhQHUBI4zP;a9PK^Ye<(`Ag`RY}PEJj~ zDL1i-t=8A?qLp~SgmVZ0g*GfK%>12JuK6~}neN+$tHQdTqa7hBLOxOD$6@Z^4WuF^ z(v0$>CJyKkmfu?clKWR|mX)1MLN&fHAhmo9oE$&IDzse#G*ncTkXMj;oO;I*O}vgr zfB;DLAy)zu$K2zi45%Px=I7%P%?bLQzsZ>MUr~AYqCn%-RcazprL6ZpZCYMQH*{O? zo50~#-8xPD!v|rv>WlVM2pnCL z&~Lnxhj(q*wU75spDn9QV3d7A@4hwP&q{dGaeNC)n&D-CZsGH>)(sj;{XAC|&A84i zyR3Z_^SSzvujH$n)i;?+cTla`n(!^f{pj2tnXnbq-xjX$p3&3WfrNY;a9i+DICN$V zx=)@;1Mewz4{4e*GHt#kaM!TZFs7 zvc#Ra6NchB{GF1?g+1$EH9ZNq<56?~i1_4}m47{B%3j#0y2_tT>NV;mDqsB1CIDGw zXz%y{^_E+hqIG3N7KGu73e%4es-es-4o*%(Y@v)hBvt?JT{TjwGUnyL8y#26coZbR zM-tUi2HWR1Z{NPYv0~L2PFH1Xt42UHZ1Md;fy$|zZUeaEi(9_}_Qg$Cd8#l?a)cx- zNLPmKqhNoE+sX(!Em=qFP{hX*Cr=uoN6m8@-`)4C!i5*2n@VVCewB?tf@@fDXT7$5 z8l=oz&=UH9$zA8itC>ZCle_K1?tg_5{IhtMkPsczZ!}PSZ3Kh@0DK*S_6?Nj05mR` znR($)lLmm3a}EA_9;_%^BWOwwA}Eq>8X6x1L&IArU1QPHBx__afvsK1!^0CA7PbrD zgCq&_3TZVpI*^rq@MqtJ*_T_R6#sq^%HyH$;$ zuU=SBYCO4^ExG_^c<%CXp2Y32{KI8>4Fq)zAc(w%9mcH~ zVHspR)#<3Ap%K^rs9MP+`xxzs6DLSgx8$%EHMtN-d&w=o6Q8n-_;+X{ePKEB0v6xHylGiR{H1>qlb4hp=L zD0Q2r=y~<--?%}M+Y7K0u9PRWwV8l*aLr_O;Z^csCKtu6g1r>Vi5cLo!eVWoKNl(J zoL+#)V+>?e<@@(4T^V%4cq^|lSIDDvzV-z;0 zi;Rk*VgVUmjSitD(;96g;(b|N-3GkCysM+p-7!D@6Ru=A6j1hZaIA*V4n@Y!Nb_(Qcq2y>Pq%ywz;A2Dh$i4qOp_V+%nu+?LAK%dz)N8 zU8+&pu$E6FrTekEm4|{~%GBJ2Mvqw~>6xDXN8uj}d*27nGqtGqr#%RWSkEIPm@((f z0EA#5gT{D`yi}0Z!AC|IZ9ouQkBI3f;5aI(+1zzZ_e)5yqE=&wJOog4^5++3 zR2+>CK8c2qyA6KM7o_M0C_%8=?rRv>JPF8b0}GrDnw(f2+N`}h#?Vw#A+_Co@?>v% zdisN~Faob#KuwmYm$&D%iy}LCSru8vS_p zz`$M9FLYw=c#jaru@P8KSpou&9iW`dtEJ%BaDRsc6Nsd{DJlCfE@^{)+44)lHl%5p z%a=1XhU>oBqVJ1C!Ra(w{JXoaZ#B@8ygX50Fc(lNI*oPT?EZ`rjYaA@3*A`lz?{hZnEH(=%Uzhsu|Xi;M7YeG@0Oui0+4t^x{aRnT+oELVmOo154fe8)q_dU z_}SMNof(;#8ImV3j%);J>-y#TkZcdPe6N>S;PNu6!vCjPJJ6 ze=@VR>lhT56=(=1zj$&bvLe7i9eo3yNyf4DWTpnu_n=r&Tv4NlY;WSrJvA>l^fu`= zo^W<9kd0dRrml|m@633L?UkqJqvOD8<}Tm-3wb$Zfqq5QZB7UkR%+8Mh(Mxs^eg1n z1qALqH44{xbD1z)WFKUJV2$$>H$ZZhH#KFKWs|gk&=CsLtk~|>N1zT5hy`5(oNK-+ z9tg1hPAo(~mO&Z45h}D*2wIe{A=n3HynYhMtJ+yIxF-&S6af(YDP{bKMmUxgfMWNa zi9D*Hpy1Ui$j4U((w!frbUDROf@k5sV)fWD{1tMV%Ei!vQkF~uN5ex!u@eKoR$O*K zCrRhw>x>?r5!eQ%cW$Bg*~Wy4zLU^F^5H*Hvxt&Ly*atGvDe2!uKZAU9ApeT$sC zVbK!)AnRJ!-T*PkP{31*+4EH@J zyoXYb;4(46G>RO!xpfzJNL?>V*i?u*gkeL7(<3aU^A5K*G2v9+d+~0&QvdVkLSAB9 zIHx6yxN@>y?lJgWQ2{XSlwWN9U#Vj9#XP3G;nAWua_z;77wyF^hp1_~zBF)EHTKW> z=H|{d9Kb{{JVZB@XCo>dOH>JVDsGFCJW#YR2`DY(M(m;{W@agvMU_y5b~cSB2{Q3L z;N7`WOCBJk5@E-!oAplxMMPesPHy%)ooi;K3?%qI*>lbJVAcW2UK0c89rJrsrp=Mm zfM}$#mf9Y7QfeU(i5vNJz5o%gcTOvl6{So2bRFiubx&5W=fSUe!ad9uBJUl4Td8_w1>;WT+ zrsuJ?aL@3#+FYOQVdzEni(>DOH_SMEQlB2=0}=kR#^MKxoLkkSpYz#MW8kfk!paQT z>rCcy>2{k)d^1M#F-X2sMC3&os7>bm2M$mU2fg+*x1J6U3Gsx}T)7^&$Bp9R;^ks0 zzdO+1YS?gu|S zJpE#pet5@@>eL79HOk*sP|yh+o;zpl)pSlHD7mxc(ykiSeHV6~qjUcyZj2if&=yo{ zoUD^C0R7!YfXNu%Sb-iAeA6*=b8h$&jxWsG)wbVFluGtFO+8+ zfm!U=$=i&PD_Ry{P~3=lT6Ma?yajpJi5Mf-2nj72M1h9G#Kgq-SnL>Q2s*QBC<#vM z2*TkYO;3+|NZSU*fNaabI)F@B(6$i(^-q{b*oRb?iquGKZj)OS6crx^1gIpRF#8fA zip~d)19wObQ&4Jn@ggOZ?&KRGj8!h2jXLNIm8=A~ZnZ%t$Zk6h1H^d+aCrGUd%sF*H!Ck6T`2szsC|G^CM+j7 zKcM;010KFi$4!&z?^!Hl7Oxy!Iw8LYcwQk37V^dQ8m+IOVLr zRiQN5lVXHw2iZ3k)#4bI!OcHjIE|@qUQ%A+o)F{lJSY*9r%v-gB+y>HaF1k^ZdrtW3AjO636|XNU12R0`u!)8y7(9bvoW;!S z>;;%@(AvxVUFkoahY)id9mrP{LzI5=GcyK&3!R5j7aEUq<=nn~yMsU0#y}Bbd+8Lq z((L|Wuwlm=&dRH}KRwCNb`9ey{E#4F2~%QC^upp|&*-Q>q7M6k1Bzoubh{$pPg#YI zi4eEBF*)c`NF9h8pbX{o!{FdOPSFRQGt^Q7y2o*|5)u=)b<|kl_0J$!V^i2ZQC`%_ z@aQWC!OI8Xac&z+OK}KjG{!$HhQuWkldt&oqK+esWY`@(x!aNMk5+opP({s~XuhQD zTqt@8@S%q9`y(`SSwI(HbH0Y404N@S)kN6lAKUYv0x$R=)Ld>akN#gL#6*-$$~h*A zZZF5rsQ$L3+tT#O8#s7~4rjGzich1Z>sbzCI@iYwzst5#UtH7prHVP{p!Es8lGL*C zz7c!5wiJ_}HxBzs9kj7jeY1~|DQlhA;fhTaRQWS~J7mK2x3aSOVlMEceH4MN5F-x? zaC}w7Pz?yX6NvO+&Zx1!f*SK++P{^UV(Y;VF+yz3(UtR6r@($aYK=L1g>>F}cfsXUJ)#;4&TRG{r1JZ-`E{*lWRIwMP7mRRYm}2zR?qwZx&dtqL z7Y_*zR^J&!99TlJ;ox;HI*FFcoyk9QT_J$RW;+T<^M$o#5>cQ<<5WjnHNde$3g6nnoxUjNLseFfYCj;C{$8 z>JdS8K*R-sR<8wVC)@Do&9`p?LHVc|<19{%+wsbJ^L_a>6D`+cwf>?AAK#6Lh&$I*nCR5pfj;5cxdMv@m!av1nd(r%n6( z`Qe1j2ZVz|=^W7V;ajm6%oC70<)1kh3<^u=It6NkDQI-NHPqIY!#IND{JDb+B~{j! zFZ+Q)Dyy!3B0KdA4>^)AI>h9%E4m9s>)etG?Z4jw)(r&XnQShJR%AUxYU_U@>L4qb z;*469T=9PonAypCLE{9rq@?hHU9?+*_Y|p~sv7D_TKghqag}>#@xoAhPLS+KsVj?& ztIKe9&a+tm^E^8D^3Qi`ntnCvV`mc>6ybVV;^2@zwZsyCkXI&2;7R+$vb?vfwjSqx z>KO(G3XdHJdH12|#VmHR+f1?0_kz2azwgGd@rUnB)^%^*RFb%fi$N=OZ}|lzPLav8 zc-X%Ea#unb0g>B9u<53{z35GV)7`$KTWo{b4CM((my{q9@G98lHa<4CdD}u1un-hs zhG;%%9pM}B=Ytov32R_Kf?Tx*3p@18hq;60GhTOIJR6l4ET2*eL+jc*-$ z4@lq@G{w28JSM%bHjIP{3<*iO>pHC6&2ly?}NQ6sGT+VzCDZ~={|Ze7+&pvUR#^q$>2BM zm($#2N_YPB^fZxaVWG!r$PE}78M~pd$#a_*A*fbkW23a4xAOtGb-^r=0;M8(uU`?h zAw%Py&V_=;0Np#hRBO|Wj=PBv6Rnm@AJ80(IiZ1TdUo;j0wAw{9^q7EUgZS@r?Igy zt}DF%9Ob`0m-+aXKx69%R`>hA1z2-2DDb`)QgZJCyh$Q*!ZxU8PL!}tUc0GeLZRts z%04%5e>*$&VRQjEvvdBOLDQ7(y@pdx4kNDvm0TT7_DNcdNivBKPV+h{{`j2rtN04z z)hPyJ9y^~S=b+p3y|k(6g`rH;^yCYqQ#8__J~1QDgd{UxvES~xnSo&~#)lwq`)*0& zfS||+uE4UhD8IR__0i;{J@9y+)TU%*cCUhcE-)tB$sII{X){gCTijtKbzYoI*qaF# z&Jd-eXS9gX=m-R$YQC6pG{7hTpNL3EGS5H3_6x47gKcqn&8fxW0EFn~Ox^Q8LJO{U zhWNJGk1rNEjmLHH^Y5xMF)_goh*X2n%Mjy1f1@_k^&3cF3adCmW5-Kt-jCWu?DnY= zEzkuM6OHaXA0H~T)_3t&gPgf?3iMc6SZrX|fKoKJ>w$k{C7aRF=F(VgswxHixZ?er{_^RVN-k2u}U5LtDJH za#~~gX1td}_Q0AW`AnVC5)a4viX)@fO=!!6Fx z@4)n}mT}$ldxC)b8CYk+lPpBN*_Xy^#KJOyCGX0>{wj{G351JjF9W zfH?*|{|=XTAQfO_JXLxr1-gR{Vr~%Pq;T*NAsX!U!n3loJ36V2TkpL1%_(&4p1ST+ zpn`g_M@L ziIlI;wnu-9(}bQ9x`XEFEUYqsbmjS-CXHrnIi zr@Jt}rYNaoQ`hpw*9pE-25&xgJq$hgrLxD`$A8$-Gc9*wxrBRW=VW4gDPLdn5j^n@ z9Wv|@;WP0++?y)O<7*}i1-IIF+&$RW-#=vh$SnKV>yFiQgWj3aVV4kFL5*7opTiBn z&{TjVDJ)SVO9eD@zdOG^U(xGL8O&zuAhT8+NpcPO#}C-GxU29hf8 zpVff$VG_NC#bs`C9~tNp2|X+(rahKJxvuL_*0X1{M-IXAwDPi#e(xTKV;^pq#N@vp zQ9lJ6u#QoeQ>WHRE>5cE+I1EAS(%ybbJ7FWs1f@~`stp1`_}8}>E&Uv;^71txow7T zugyZk?{uUG^LM`f{wE`= z)uOC!SQsT5s(In`8{VvvDh~V9W=79n6}zY$GE%=6ZA!svT6Q>x{wgq(31*YJjt=VU z_uWCWXf{ZMZ=C>JbO-)^a_>)L{sBT;PxLQxL&54;QFRo9vB^vT!%Ul#AIh=@O8|L= z(vU%&NJU?PyW;ph0I->1FJ{DwhTtb$!_1yTUzfc;?OvG+>^ z9`S?8(gu`)Cy+Tv5sl#6jm!{`xts(Ai_y2bU=quL&TnR6xsOyI2Q2sxsz&$@hT>@= zA~J8eGa8J@fN^`u9Xoc+45dBI0s@RoXau+e*JT%=BWe^A_QS0-;4F_{&J<#{rJpLm zM9EzyVRHkNN}Bn$d*CH_8ytoaFnm)C>vilP=814?$#b6K#thaa}9X^rW0SGg#Ium{%7hU_Uw^k*!Ru8e5j2#wthf(}J_PlPqG z8xA#~`CEX1UrHn}o3WAINl&?L(xN3b(eeI&B4aWKW`q53(v!cqK1xo2Z{`)KVv69N zHFw$LpYI&ZFfuXmL`z`^837T2mwbvn1lF9;7kD}aK)EE3I^MhYTthTFICL`0heUB-G-ut^C!)fc$>MHl!4J4K>@}}RXhYb z>n-djOm)vk3?D-B=eaUwhj}rGIEHDTPH}=OCMriVh3;|&vL}oWayTDQbc5U;x-5Pa zHmj?#CjjU~IBkn1%C1-=;96yPYAD~a0jGf50h#D3gB}NUC1C1XSbft$vo#|lqa_pm zD2fnp?G_ZwX$%EFjhL(39s2U+)mXikmLGR(y8P;^C8#`>53WOdZG7=!@sK)KcV04q zV>73P3DJfeVP5UwI{)J(pYVY^FAKD>yB@uXRY}1#}=&Zr{DT769PF(EJtbxX>wbQnrb{d2(Qaxh%0*$Q~Q2t^Uk z+z5DE^SS931SK`g!Dl``d5=e6;D-0C7Vw}O*FkwAv4}q=D#{l_5JaPxHtXr>NdyS^ zJrqUjn5TdJdSB2<%tye4ijkCIe;{Q6;y$by4r>+9g=U*XyU;_{(HuQFgti!Dx)_C} zAcHsVf=eYpDFXCujP`pC@amVa;D`nGNo?KfBy;gBsu&E`dLiH3%M1pNPwo*QrBF#X zF_g8rOA~r2YG08lX3)K5W0Du$@x7lgZTR!C0XK^U=_F3%l)5U8$QJ76ZSi1Ph@J#^ z8%M@@Z4d#cS>$zs;KWJ+8C^L9-+R*bc|z_ApU4}K91|h@%=#*5sx~#^k(aKXhoZf2 zpc~(qXa7Cm^)Q&jR94VGCjb+XqQG~!I1>Kumm_#e6#KremeG|25%PRTc4ewNFH`6nCxJS!Y zCf(Ym-8y|MG0danQ?ob^yPexhB@>MCq!f>*6OZr<$i<+8B?0GC`GS%(AQ`;$x&&wm ze%RR?S`_5xdkw9pAcz%VgW+nT-3DKzKgEq?0`iY4djL-I)vk1HOz zj9>EJd|0D_nX^+&53a*+I8w@e2mCh&ThbUn_O3d6_T6r&98Bitxi3qC_`8cvvIi0q ztZ@iR|A%_zu5WIp!?PxhD87ZBK1tmdvH1d&5VTjGEdol`<9FPi)kbwePTQu-+5%PqZO%jDW{!mmleCx~k5r>It1EFwhaacc~N?}*(nD~eH&3VfRTBHt4*jQq8PwP3M}^_rhd=eoQJw7 zD?5A3HWlRI9%x|PmlyvS%*s(j0?oNC{hh)Y3J#UHb_{o<3t5~{i&m) zqN9TegGe=)$pI%wOH2D8GIIa-e?F?QpLV&IH3 zGlX4;{kMT!$!ni`6kCs#Pz0ku5xVD^6{ZVeJ`o3q5GTjhtI`CoeFM}Oas;y4OnL{P zEWIQq{~Y*aU0Q{qc<-YALCin_#55p<6)*=cm*>x)zXI!$tjw47=n(^IbYFy4YCPe4 z^oSQY5#*fkV*#?8pmxf3qagFJ(J$+qX zz5>_|xC{=|=-P3@HyC2t@N$eGySTN#n{H|c@z9zq$#qvkDR^f_{Yq@vwy=ETYXl!2>xjZjs7#Lk~H1p`TLT}S^@0iuC zc)U|1o~V2sET)Kb-F)xClZU6?)!w=7K@+Z);Uh`YQSm`*=7NDDbINW|$z%Ay0d7&90ho)+OLGcceZ)yO(gHb24#WS?FTLFw-3ehtXZ>$fJkH~!G|Sv?ro$LMq}zF4`4R-)B8St%J+=vhfN^5W_Y%V(*-VQj&~E zfRmRsG3ig^hyMYoY4QGVqM+)qc+0zO>KdA^8JgorX+99q_u$DWBYgurb{RI9hJf_f z&gDjPdmHdf98hh{|9BWPbCzVH+96#wmege7;OdlKX9cMT?3vpp8h7Bxkt5wde!x!4 znE+=@Ynz>2Tu5kw45J!qBpWnWfOmG|wKnD>yu*`220Nn&t&M&=L$BkWn}Wnh&}mT;kPvSx&`FabN~gqiJ1{+h=G$lDvBWHu5)nQ_h=(%dZhro? zY>7H!BHvn%Us*~1KE|j%7rQXPnZ)Dz!^RXxj7FJebWd&$& zEtw2MeKihNlfl{gCc~~b$ihS=i@e&1@sQo45(r>D2(o0f5kf+8Pa!PXR^VuAY`hve z)j!w$?#3!&@2@;cVPI|TPbPnWACcUMhQkjNcT_l%ly3zw$yrz^j&OMgU{oxAjg7rM zUHa@Vw*nkj0ysdY3lSt~^~ zpKd6usWE;~JN7kZ!{Gv9^V@85in5A#x%Xtc2@Xk0cDm)Nj<-aP9xtH&?+}Yus z@OkoFm;a$$H0mCTCn{R=jEf(IpkuxOC@8VO#MSi(03dG(YjkyEST|@-k^*Y0$5?g@ zg@ufxqlkb2G5hp}E)=!tHs?^Cbd1^4dh9IP2U#pGIT^sq%_PVtpr6DVJJfV5h>EV! zBj6b_1HfEDk1IQXt@0<+81_ek#PASLn2ruT#JINt?395fWJ zf;oLrxIx4Bk6TL-5*acnIS_*^3bZO9J?0U#?S6P}%_K@;7J)}6PQwn}!EFRBv*Kw` zXU9ES&W7@>!14d!eBBIg(c3X&$C2uZqn|9*1yafj+FI|SKZ3|pQDD{NUSx0DvfiRS zYZrL0gi(>Y=V-qGVbfu{3%nfm@Rqhsq8HyxM|TGZlniHJER=)ESRcX>L9w!oY=m=E zeTEAK+I)pm_P%q{(kp?{LA1I8$|f$lJ*DqB5{d90YQepG*Wy?5!E|5L>D(iUJ<#Gq z(1I@kf(@9QPf+8Aa^@E18c;w(L|!KVKFjrt6eul-_Mew`6B%>n=f4T7 zSB~5d@89dSyvWYJnV6W!;h>Lt>(r@JM=^GM-`5v4Qc}}m{#Wx7S9kqZv|Ay`M*q#1 zX8X}PqSB#f5x??vwb<2zvpETB)6m<1_F8+(h&ylgobGSEciPRb za??ti19OtmCLHDUHLHcKBAc3Wx4T*h-PGZfv2|pc`#DeVPa98J8K7TR|K|18n-OC| zg6s92Y4-Dlgh$-0FJfsA)0Ey7$gogyC#v%5%a^&>%lJGmFv3;eR}Ha7G%nZBHCrmSqmstcDUD&ytqPPe-!k0n~Om0seEy2BB4 zRC;~Yjh!1}DHD$uWbIy^ux{ms4e3JJk5yJDa-GWQz9qkV&t|2Bbp?#!_Ix|n-I7|7 zxK)~FGwrEs%QoM(2?~aV)f*ozi5dQ?Z5wSDJ&{m0U4{INLyD#%c$iR(MgZB(nE zxcGS_&JU;tvWb1>DD=l-@y6dJzk~8I58@B?5|o3^t^LN)v`*EI|Z>p$JHCN@q~o z2nc-ZCg+^@-+cp2-lTnP-gG_?B}`fwbs2>4M!t#J@a~6WLjR(x_d2Bi=xIx zQxMXY>{PEk>yvHrpKg_`eN`AZ)BE!| zxOEMWwfTi4wJz5BUL;Xj+_>mlInJ9qGuFgiV2qdfxM!&!+xyFo8S~356cbA_0^Co3 ze5ti?rhjhRovKx$(L0AOSnG@(>E^iXKkCHQxO(zf{?wer2+Ov@gZ_P*}*F!f+DoYKZ~VwLKnMppW_&X zt$~kx(Mo{_u!+jG+}y&}D}k%(U2K7NaJX!g8wVXNjb4@_c+9ihYvbYg8x3X2?+H3^ zSK6@X3dDjp$T%0~Rk^jzZ{u);g>1I+XXR}B<~!K(A*Bs1%L-T$J#k-xC)>bmdH>## z%Zd7-!5YjJZ|T4MMgQlqPyAcxZ#z!-sT@35k;LVzJ@?P{&;5{-$a$5UTl`Yk;7wO_ z&OoBMU;Bt~=&As_pJV-#ZS%dQPM25fXLNH^(od>M3XQ$mB`vh_-uBY0t6BrSTK)EZ zN8C2rXFh(MWH+g)(UA+xm$MBLe&L1^Hd+pF-ViL*jInw%xYqu{l!F zHT1Cuap*4?2M?J)IOvB4ZPJgi4ZQ`lbv>;8W6umIzS(=%drMusfr-TvU zyBhE(!JBNfV$GVI+7<8i;Z;q6HyZrI)xo&)mi|YA%b%YT&owo&t7+N$N(FX`!-*Zt z5y%RXO$*WlYB$=Hc|;gy9e$M6%AYb^@u{_cr1A$Re%(;DLieWvw=?#ts#mYxO5>!( zOD1g+mUZ4Z8uPgCyPKbfn$)@#ykFfJE1w)Z9(X+<-g!{GyrkJcIOD}!pm=WZKAq8} zfD8>6OHeBa5pv+Kb#jNF5m|2e6dD7c#!6HJLHdFZuw5PQ0;wa0*v_TETln;h#>U01 z8-Rxidasiz9M*Z{?1AKs!|;%V;ixLm1Tjzi2+2h~U5e!t6oRs!Y!GW0)2Hhq>KRjt zcj1lc?DsF@`aj>0KmLoKDJRFCBk}RQ|N0aMwYr~QPyKOI{-eW3x8^)y&v0yiSvENx zei~N5_$7n)PdypV=5fZo3c}=cCf(N29D`)T(jpv!uQ zBoGMefe;ER;`R@t-ms_J2;cpuB5d9??6v4ZDJG$rr^XWk{#%Tv&U>5V0Qd_bW3uqB z%c;Fr<9M>y<;QcZ-B2VaA9*niQOhj%d0)DefBxE&$hmnQvqQGx%~pCU+|*mJ+0)U( z=I7c9xQ0`_{8XoKwtkvDr3mI?Yp=cct{q^w4z?HcP)lSL5pm!N0pU={5tR6FB`whL z1MN!D6GI&zBdMSSVxrpaxCVT2DX@w%SUfxXoy=)RZYaPF&z$ph3W&5NM>D!vcmP{s zp}Rqgd>?4i|MuZ6@ZtSr+y~>J|7hoJbojP1Fq5;bXYoeUUzn~f!IRmgOF>eV<4+oR zI%W0~_jyUv7f8gx_@NCc2o782-2maCkA$^0$B`X-^!nf8$tPkT_|N8%{Ne>m{s0eQCLIwjIqh>7ikYf}bF_5AN%cD?Y#zp6TQPjliA$E8`>1dhy1`rBMkGCoTP0MqZ3_(sb0ZS(2MJ3G>vDdrkiG0^#EAPY zl@bPUFD!we3%WaD+8Mu9fSU}d0qp%sZR1e~x`AL4?vR5$Y1q~i&rR95aImt;tR8gi z!g+H({t=G_f8`i><0C8lWm6sg{0`7WX>JF>1e9TpFtmsJ`ZeN$O9QW8zaC4msc=4$ zk=lY0NCO~|C8S%Xi{^|DhGNpqE0%}a0fVkF@NlMd3mh3*5X2<0F>alRX>K{YR1OBZ zb(!w??gStU^`?xKD|aDWY(LWzvtUh+Kh)vV;9fSBR|Ax10a1O;OK~(-&hQv|Oc`0Y zifW0RI=f`vPj)6U^@y~8`+?_?XX@zAD;$g@s^dDb z`)7Cz4B`990@`EX6AMQny(i!SPOET;qz0${$f{??`pnx@;We@-JqMePWy`x+WlsOp z0=y2UcHxERYxs+)p-+**d>_1`%cI%j6iPER>?_djx6JFp`SUVXKeYnp3#YhXimU-T zAi+ZSxdX=%S)11W{bd(y+|j!Ga1*iQ(AzjP?eZ2<@OT1V_T7getQ(*49e1&d(H!3k zXP7M*0rznJlo>B!k`)Ii%Ld4kEP~(n_4LAY7Ol*DVc~cXvTd;XJgMJkY|o z6Lel=0c~@i%dkj$N_xKk=JQAI=Z-D>;E6Z>AAfrqW{qQck>s(9l~s5Z>Z^A|I`CuE zBQ6OnmA6d25f(O@!}%sv4Q&iIh*R+p{M88l4eNtvjB1G@6>+gvgPf5YF7EDPkaSVS zjW^fK=^)Ib)=gW$hbe7B=HD=Um-OQkYzSIl(h>#$Q;Mx!`^uDqE4Hi6(5kDeljeSi z#H?K`bm$oljb|%|e>fd6c2vuyyeU>e2?Mw$c|c8S}hw58sKVsemY0YC?lB(8+RlxR@g=jkjF4W zihWx>Jv@>@ENjK-7C#ulOA~s@AfY5$P$fou1<>pZAbFG^k zf=bAYmz9R=t%5af8D)Z%Vm(24vyK&R0pIZ`AfEIFrG*_yi^R9tgfN;dm$kqwo{ZExFTSHOl9V zOD%3Wu8eJ<49Qn?p&j0eSQ2OCrmhz`=_i7k`|_T9dz)T{i%$C`qnihLnKi(>VQ7c? zVKk(KZ8o(t)ZrA01S;X>`a6!dAo?i=Yza{30GvFLIA>JpB*DKABR3{nE-LzZ^!(dvF*Jb*RlbB@2^x>tS&F zn^Ba}8AO3i6hsdYqH=V~OV0G^)74ReQVt{T*vqEaC4zydDqA}}V6+{uI=vR_WFkev zqwbibjE57*p`q#D5BBw)`V_~YQyO<=B8d+7It~DS2UJ(Zxa|0`>=1D@gb(oHVu8|I z!yk94*QX;vY?E^1;4;C4;YI&h+29d$nRVB*j5%Jl35U#2J@Y{e8QzR5??3^(^BEIM zo7|P<8H@phNU#peR?zCHb7`IhSy*MlDd5?ZZ)7X*V@eLN|9;F4+W>@h3d?`>>JSRK zb<-qUbCAf<``Nh}8=Am*Nx6KiVC2XD?ErQg;$omkvLD&h10!^DutrAcL33_oWTXwO z1N0Fc&vYJLm|&v{RT+h+`qcSw0QzYF03oYrpTgs~!8G}vaHvIYJIawVH=uer13~59 zo*eQjg~Cx$68Nsab@afVJr`QI;S>W>z+_ZUEuDW0ej{xWLB=PyUSz;Z0b_H;Fn8}S z*isKIg0?x|6Yn$yUhL#!h-(KqePWlv;jZD+LU(fd-|xKU-$dIGg)_eDiEF^9kKH)y znY+qH&hjvpmq^bQ0k6;USC(c32k=c&-4-%VuaGO{jfp?EZei!1zr3e8zNneTWN1a+J%P@_jRHyV?66q_Kb8P(9jZ*y|)Xe~k%EDmD(bV9kr z`7KK5E2(H=BRn%NFRui96J-aI$q^9k3cMnLAt5o)AA!Dw$F&YVE-VWnF%G9T1d?Zb zhbl$1Sz110e|jD^EcM+#j;nwB$J>1UZHJNdFx}zrlO{Q=*{7mS~s{j>5Jgk)U$A>F8adjIJVj70Ddt1A_ zKoL>HCl8x@o{k^0u;@eyUyeoGTidC63Y{xzO=+$tUcK>)hgwi<(87ke>?UBUSW4{p z{OO|vXAKlsv~ia$5T(X@O!+&rtZ!#|H_uA3F0D$~l%=5HX7N_&iidY*!u?3Sng#Ec z-Og{X=wgb*?fw4zg7p#coH0vBlhBSUDc!G(!#GZr31b6!Iu&J?H+RdOdSzQ{xgknp zphec3q4lee)7zSg7nUVmIVKf;xg6_`tGhD-Pn30Kg{%@4d5gFLzn)YZd+&oL1u=@c z0etW1`!jqBcps%)+bc)(qn;eRy{9MmxX!rf&t`ArHkeqHRmD0z%czJ21IXV>v%n9!&Z4en2gMm6~cL?r5bRd zKZHgUXvAS~niK2!r=KvIBIoS)AIYk;FrNO3H;bi&e;ew@X<1+T^K1V=APU%etx$d; zR6Y09ICNxE*zAG|(GNtR6z&8ZqDj#;BRVkZqk4W-61mDzcxi7E1#5X8d3#OUnP3f>uh=Lj$QM?-sC|eDKY_H34@Fw6OXg&U6JQxSN zqU3LS{;1$k0(Qys$&(yJWQixgR%en%df_Q9!|iU@LmxxREfv$47O{E7my0W0j*z@|CgL zte^{Ht>UX}b&pi+Kg!CCa&ipqj1{i8D&(73btWoym^96#arWAo!qXnYq1um8J!m{ zxh~K?cI}e&Ty2f)%o$>GYm^K$1ll-}PL*$}>tE;uSP$IDJ)G>i)EVruI>P?oURKMP zPD|qd`f8X5u;LUS`^oZU5VhWcm8L-)s#+=rD6*c8Yls{=fIw-On%;Hlek{KDo&AZH z*9#dVT}e3q&X+Ai2*-@n**Yi9jrKR*EzR8Nq1oC(N^Q6NP9Hy9^<~&3H7S)hY)H!r09?Z!lz9BytL4 z8Ew$gr0Q-Fnn^(gw4~58A~+UPh7Ls|;gI~(B83Bq~j zK|emgHdSR>TT#JJZLLJl-3G7?36XEG{AW0*SID5Dz)ly^nuXmIY`u1j?xVYC`^`28 zod&4VU71AnUO9^K-mZ;apIt!R>BYgVBNo*H!3pz(grdOqjecqdcw2oO8K|}uBV_Jh zBZ6hC#8$M+*w0+;xw%tOoA2u8VqJ1kadPmgXqRiIZte|>>8}jtwFKYjAkEED7c&`b z`>^1#=R(5rUb^mAmp-(*;hom?;AYef|N8=J;$=U^MA#pzdy_7*KJajcvInWN21F4eR{QMk-qTt zbO=TaJRZWxwkhb&7{Mxt1HgH2gva9AVgYuCY&dcj>U-Yf4Gm{gk$*@baf@IsR_O*b z3-D(&%F+dI_d_~}9_u`Ah8^D5-O+kMCKA3P_x^zh$1zY8*A6D-#f_N$(vAoC5XZ>U?=8L{2Ux|qP6 zbg)PgvPWpj&)4J>O7KUEByR-)^5}r@P`ZZ;qsNkwPmzfH#-8}X)(+(Z1vl6-v*%)# z{-N%S*|RI~AvIBbCJlf>w<41|yo%Yam1vI**kHR<^)p=_RaU{g^9{$_JGM2f5#hX# z76l^XY zeR5(a8S3HY4ZxA9>Vq+HH_ih0Sl^y;zqx-kThS~dYh>6!%D!mt>VWpt48JtLD#dbb zxf_WU92S3L^^1yXr6bw<>I7e{Qy$AY-{1X9`laaOqoL-@4j#YKEvwlao;Nz($apDp z`V0ZJ+}llQQzggS&p$94$evN!zwPGGGKEDmr==v6ANuv2d3$5;Y`w7Np2?Y`{U=yQ z^eb&*hTqu7`l!@J&KdtHW{#oC0ns<*pUg*-+k^d%&p4J^b}l>5W_R@ox6J1&B=ud) z(k`9fDV0=wcviIen9r7Smr!{riN}#G(k^<%tCsouwGSRQ6`S@;$MtVzEzL@cV;1R_ z^Txigg7HheJ<*ZOlYeZX5K>q?l1AU@`}6CPW!ob`ACv)yq2f>Ha;sosX744h;r2C2 zDHtC)2pb~1Zw{`6r+ty>-Zq2d>6B)2d2xD`jv!SQE&DmOwkIRF_nl347|dn00v$& z`GbSyC@gHHiO7y)qZXoq9cIU(F!YqK+l1TLP}tbW`=-J8z};n90c}c-W6!4we;&9k zVVDuslzpl5nP{0N#08C6-*}CM^yO*Vjhm&lBpAe8QS5osJ|h=X5bEcP9He56O*}&! z)pf7^U7)@=>ZD!#V!>EOj(2g(PL^ZG$xC1(w6b)q82af~^8~+le3G_OYxb2x14S1- z1~x?AH<^3jc>h`B#9FPzs=Truox-(@&Ic-=rpDU;nipf7e0Tqa&+j9Y=EufGnO=8X zA*T_UXmV&z`GNWT?=>F=aRTaQe0hOfC9w)1%q||{ueT|nReNq45800NK$J%0Rk+M0 zV@S;6%6o0J7u2jK;~c5pA%j7x1e}vBGdh5A7TY6-w9oG6yXZwKFt1_gmX;z7?iKRdXtx1+4WMEPTCXbK(O1Kyh z*uDN2C5t4lny`L6br7<*1{;EyVaGU@^f?2!l&^&So6b;bLg*5Wor$ zyBxdPs^$lKul=OGGkpA*WbkJAj02<8-*a@VHwicL%-J1lH?36O?K@9xG)n1K-Ikb> z_wR}-$+COGFHgJoQ@*y^u}W4?*+m>pYONP7gX$X1`VYC>nG;m^WlH&}G-R=5K_*_x zd*@@@O6Pp5KURjJ*5l`kTTmV-K`(!zT-P3VU4i`g)N46B;9YGG08?JcVsTPL}MAtY3nc3WKIHXg|9-2T3RnNl~kg^64BA6+s&%zsC zR2@A9o*}QWFm;IARLB%pq^M7vDN+@~VDh7J&!d6Y=V2m13*qW_0HL1N@fyEY(MR)3 zb{(hE6u9=_^iAW@qZ1YNf(@9@-o3giXBcApVSs4!=gvK%(SsvWMxOK-hl+SvJ%L|d z)03X$10gh~I6yFq6V>IbNc_Qiak!7lI5^FBT8@hlqBVWK=*{?on;Un+zwx(~45SPW zqkcQty)k${aYGswZdjohoEJ$-!OgP*GJq>r1AYQ;|7b(^%*@RGHyQ_J%x+Lj^DHqQ za(GroqjnVJzRbyyGn-~0bY%}>#dPD4(EZ9Z9sr?RcS^;&a&JHm2f}2v2;G7#HZ+#k z(~}6rW#yKKv*H-iu(XaQvRz!fpq-zg4}X>fDM(lV#Zdg>%(IG)9VCluZE81sQPtWD zs;CT1>U4*Yvv9AG_D#V_FC%5if{;|u2AZ%-NT!A6D$I$vC5Oll4*aj&Hxz-mq;=&? zk6vY#8$S420OHg#YvLvQd=*3#Zw}hLA{+(wsW+}&yJNw0-Gc|H0Ts_Ygvr8J^Q>@D zHefc2jVJU{=aU0fLwsKRH&dorer(D%=lY?+hmZ%gF|*X1C@SDI5x6rVVq%@C`YA+Tn?#F+|U?Zgs^$kWGT;1K}9Es+8 zDtwEtzUC`Wr{+DJUDlNYpGyY$7wYW^@`;wycgLnpYFO67buhAla`oQNQ@)MC22Riy zGQC$|I5%O^12G|(d;kf%RjIF{a;eUv??6%tcGtEmTk0Hg_d}yg$+4AH;0eVG$Jas}V!< zIv5~H7~o_b-VdM2_sz{m2R{Rj31l*PkB1DiZ?sloSWRupw3&wp42N`wUR|J6>(8_s zipj`SS~KM3Yoht{MbvlUlC=4htOW^)b#-byqS`6VuM=>u8fs<@3)+YYgZ#?P#xK8Z zL+zxFRcKcg3TOcrUcv%NIL6Xx=sN(25kZUc zTm^_=Dbv+1tK#s63DWi4tv;l1sZ*q2!3ey@?-MqLz9I&vH_i8>%}YNftpp6q27X-W z6XvW9@)Hz1PjP@m*lcB?n}Tqo|&O6yp>DP zFKJ=T%k$k_U8(rzaqq4A16<#p;D{;%lnpO6WewA12goV&5ll*Mu7CCv3{?e%xp(Sd z%h7}+5xNZ%s0swRenJ~}KpiMuD}@07=mBdVurXGaEVj9NE}fqkMeI@tLW(<(>1dCk zUJAvXu{x<9yN)9U7bYrR2G`po)q*TvL+aRJP`z_CwsU&CWc-g;&b&T?SW=Rk&#WtNmtqfyIEQR-b!z*s&g1 zmnLS>BWqb$!C@Hbt8l~nee(RSZ>LS8fKu}jV0^pr__-D9Fg;NOd_AxFJ9* zd@W!Pv>6iq&>pI5!5VT<>dv8`xjO5ypmuG|1285PFv@srm0GhLd#CmE9|1DsVt!x4ku z5&mnmWx;JRW$dr1Z*88PovIp~Ydl;2!x_|CBH;5_g}e9c=|JI2G!a*f zPCBUXTe>xdXJCl*)vqND5ME%tXk*A%Q(fI3GirqMhjLA@FhIkfX#8brb9`D|$&1;F zw`|xL_X*i#arN@cvwpIqt|Wbe4IAiG2*W)UAa5xTikd)_^I`X7mn-~WTQ<4Qf!Ldgs5PX%Ii&Pg%xO2^DiT={y#Ck-Vd`>u;dfOYGDXO_y|y@%*v zdjH<6ZwT+RHEJJ;TXS$H9Rv_l@YOr|DiTYUx=x~O5JHCPdp#(VwcJx+&D2n(8#!10 zFpmUvc)?i1)%oD00j3;saBxUSK|{;xx8DbEhZG2@OeEcNVH^LHMHxNmhZY!YSU7niWzU?$q;xt;#x~^;1p{_V zA|$opO^nt)()Qs#QQR-F^0*T$ssdo1>W*u z{R_x^dL5-A8f}QjKKQk~9{)k&KiB5x0PGbVY<`^v$`)g{_Eo+kRGFb6s!25$UpELK z4Jr>@nqHjVjIqmx}=a17KPcTNC6z4gF(yGfGi>-l}uPYe6&_ zI8qyaC1HvYD%Udx25}Z>AvVw`%cHVu4EzfXmP5AXbQ*T4V2sdK%|k92TrfItiROIh zvgds`c4KE&pBSulaC;n;k2^zC_67ie76f~-Tsce?XhClKjcSX~z2YeRP8>YNww@T8 zwfFS8f^>NN(mbecpal!9ZN8c_3%B9$dU{p)$&zMyQD{2^!e`H%dAe!y#0`2n9~^8g zXHrtE0_&3A?550z}^{7-}C2D+qG4wRqqwo(X z#`nJO>!a%FlRusa>E>D(o=!XWteq`P5)%B`z=gIPoKqyq6aY=@>-p*XP{%{QI&aAm+rD5DE#O)(R1sR4!SFj} zfkC|zoY_VtaxfvM?0T?vUH)T*@7ns}QXV#)9W!jn!S-#tG0+t_7|AmrLF-5!8S5Dz zI|vuQ$F3Z}HJH3KMGBq$ur5xGhPvG-Od6PjRW^z3DHX=2_(K1=sPNxsSccdq%7E)S z`(Z;oGkF6FTCir$bQ%;iKEP|G-HENUFa;+912Tr%t}$@(RuGhSR3=51Wnq%?4WV(5 z&;mNfwhAL)(MCh}^mdX{E7t>GvcWqc(JrnGT2__l8Wd?(0OkoJC@81W7!0;GTufBc zxx%#Pp<(RAh+{c4N=N$A@w4>eg57O1N^s9$<}DI5@DE(du)JQ6_&&T_*65?8eWuFw z%DYEe*JrWo0EYSw(22zRlvYvjlqOU6x6|BdOq5vK<&F0fC$dVYxn~XjK+Cp z_B`;D!Y$z$eXSrlGYi5UmeQHUV2GUk=v$W?q}mpro2?LqUZ3(rv4YYv>h+84U|0Qm znhoM$@(*uV3+kvV{m6?8(fBLo(4DiDZfKk7mDQwz#_fqjBk|r{8`2K!2kzQ0E@9j<0T_aasHiAbT0Zop zq|QWMC{m-hcL3xdlz@jGF9pBb;*l{XL3J)$si79E9KcBzgDHFIfvpHgr;0FD5KS}Y zwCm^B*TWD|4_mDUb`vTg8NIJoX!8x+nd0D-RRY&GcFi?fjmD5HTOk*+PW1u_&-nb| z#qhg;gS{S07132=vS0voZwH(M(c&ISV1N|}fg3D6I<(d#xE0lVd_S8BAJsPyYm1l9 z7(PKo&(^bFJ69fV$NWzXV{%Ot@I&X_4httuTDukNP;0|ZjLnH7PH9WtS%D_;EVPiy` zHc~q3n%LM*HL;xSynU|igT-~_0D!S5@9{Bd{t$g1#I#8%5UO2SrdW6F<4G&DOt`%d zFaVP@K(hi9so%;VDxLDec#kn73`N@kuq-+#{AscU$dxj@MDWx}BTOx8LAYYQ=?7Q5 z;kW*N(JmH93AHNbHgvAwYL07!qh@MDfnJQ?cdCq3EBK5xQqQXCy##McH3$@ygCHkS zn2166LtqK)A`yAG;KgLjm&D*3&sq7~1*3;+i-{ITGI2z>-s3A41wz`%JV zF(J_ziu~)r!B(YVaQ-g_Kur2Q(hH)6j{(R6VfVZ_b8Z7wvqI?`vhnBz)mvMSJmS`V z`UuG6Dck4kj};FCdv(o4F643#TTsA-01QEoZc`zHQE^B*UzvJBa3#1icojjW7}_p| zpz2*`rx^Zs()Kv-R#3axgWpPt+2au27_XP~(zc*(TM1qcy_sf+yZad@RcrEs?}B9= zV{mkcUr6Rb@dm|kDJYZofg?5IQc_x&aZN$rV#DGhkuFx^=Bvlpb!+&d78kIw!6`WYhccYhg<>vERH7! zNjw1nk##VbjX*PEjn>I29H9siL|?vf#mb+gvmwKs{`rNkCyS{N!k*{E7jg&y$;@(x zI_tx1(puuF8N|Uk`vobP4zQu2w%1smwDQ2s4cmc^aSpg2sRQg7i1d+vR`yA;I;cYD zqYX|SM4x2?Ojw}6QWe9fR6rTj_7%$YSVG>R%IdR!1D8t_ib>mglIPv6!D_v}R_%F$ zG4)fr`%q|8Sv<-!2e)|$FHa5Q!cHJ>53tQXai1BA>bGU#Pjs9UZ%xqI7rqwLc7`by z-qI;k?0Qqhh)(I=`F(xGnG(9!8@qm4) zs52Tx{T)9|2G6FtZ2fxd@@nuu%pL|JQijxZGjns226RNn#Eq<#YJ&(z_8wu?~Sh{Ns))dfa~ z@PW@9`1(ak+1KdO)?WNdu`EjmR;}B?ldTFrg_3X|Dp6GEYY1OFt$;|B@gc7FX3yc% zp@WOB>>=F&4mya>PPVBkL&c_z4V=Wy4zoWWA<;Xe)RiGCzRB>XKf^bL63WoK3Jgd^ z;yR!v4J>1ztt85>l(+6X>?tLfNQpwjY$qApD<1DY5aUVN4TjL;qkte4 zHQM+Txy|JmLkYHEs^M+MWkjK-$7F;C&L&qTXf1L&jaXpp@~lO%0@7RknG4_=mu%y- zZLDhUcmAA zw4%7*ln!-bEO5?_dJcznj}N05%t-pQ@s-#I=@lzpV6Ds-joS6=-vtV= z;Fi%;rES46NfDGIrcaNf=!XfZeX8K1Mb;HdR;dI&{B%MD=X&J;gyV$KlbjG|#&LIM zO25!Xp_$m+U&c=yBh^x^CVK9w(U7tjv4QM}XN^OC`8b`65;YFMPAATnax|$Cgu!Bi zQ8{oxip2pvM+yi~dYG_@f`;CAz4RNrjC3qgHw!fB0p$5~YGC5xmuy$K^7gmg^P^d0 zs_NwBFD7HTJgv<}2zx*?@5e7MnFjj+z)UE_Z0IMes-_CfJkQz(eZsuCbMNFVb$@NT z4TbO-832+h(31T_Fp2u=)!_|PP*8z}YYKBSfk=@6dMp@HfS|bcM{TwauF=@dM8ULR z7uJRhRHJ7qPa4Q9{xmgf>lkSHu|chR|L)ydyur8|X>u!td3~*YUE$nE30_S0Vluv? zn+x&V%F(%JjpB4SvL=U%D<3#e27=q(GZP_}?{JclSQ8xI>Hv{?=ZSaWzaou)+>Iw| zglZXIzA^vytJ}6O4@A}U-@j^p`06J1KfjUxxBmvD{PBHH8D!}FzkE3y{D1gJAI7WF zr%d2C+sDe!87}_300Joc{fG{Pkl0``wuI*Y5PE+ws>H`={IS*J1ak+wuS9 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 451/532] 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 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 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 z%EGZ}c*5}K;RM5wA}A11ELHc>hzhe`*8)I;nXiVSo<{|y0~cOigS#L@>+4aLEi5@0 zDZux*4NdvTex#M1G}q-&Sro*o*)+3nxzW}}TUnjjQ9HInKYQAg_ag&b)AevNPcIpZ zrv;CLQ7sjb_F>4#$av$roY=l>Wj;aC`uW@S8EvB`m+z&io~F5w8aQ3mWl(onfKCFQ6r~t@7`uU< zpTe+Z$>Pr}QSTWX;ZwEGR2ec{87;e0u1?RHioY8CT_h~e=)_FgqP1mMe!ywUIAR;z zzwhMR?jYXC=Y;d_Jsfw52?^XwUJ%M8V#tqZ1fj&iZ($HrsSkk!GUku*1RbOrbH)f9 zPJ4vLWP%@7&wOM63}4yGiVNTkMK$h6;A=vgQh=CSV0&IRR_HB=@pL1Ql+|P4( z0QrSM4Vx@!el7{siP1}X6o=+F30QZ~psg|7P^XGEK&s6qF3tc<2(7@$WK1p_YwOHW z{i^zDs*TpQwvL_zaq5%p%CG7#jpMT)M6ySBTIsa@Zbf+KSM;Qj52w-fCrIbcO}Rqc z^j!U~4q5G;Kh8Ebb_n=V0UUWhw;8{gqtb(k|f-6~-%ehKE57u6#I@3fs4G zHIn@yHz)LQo8bN2h!v>mH(=%Ur8_ z1}$#Br8ZHUm0qX zdcH1-n4=OH8{3;!R&1c2DgO}~s?nfx6O#x$1wE5_i3J`goc4x0!NlJPtY}P9(ydh+ z#Y_t^=iNm2HOT>dPZ^bB&Fap7e0|phflxXM(Ar$Q?YsJ|-|?UGG%zkOI1$!s`l8^2Wr$lk`e;3Q2-z6w(rpZQK@%z@#SLg0V?6`L+y-~4q z?Q8~EKF4OOfE?uc=&f!7NHz#&1A!!eB76i6I;e0Y6g8Cq&oVUblo>V&+xA2K@xu|gU}8R zxTZirf^J4Y8fmOA0~W14#Lj^sN))_WG5`avlRN(Tv>dBeZPC3-ZI$guS(c7x@ zf3#7sjC4P{rs6gg;-#5Z9884N;eL)Jm?egX@c^QuImN|4XIHtoxs8B~0X@Mqt)&5- zA1Ov|90SW4*-N6JIw&+7p|PBT=(S*%p(~WQTsNOjYu}-MC0!N8OZ0Q&(t9b>%Wt9z z4@~oCjAVEDtXPK1k0p|O(Akq~{)Or|wS?t#p)304@fG3~O2ubvt(oT+xiFp7h z7u3-BsMG+CA!IZ;zXJk?UbP(1D-)9WM4sjqszs6rzR3w}sL*Hxi(~AU@ zo7k7}+49(J`f@aNxpMY+Frp`F%~aEnlk%E8RUa&;xTbQ$sO`Kd-h8J87997!$wZ6m zBnWlm=0AXp47gHiv6x*LJ&1$Kav@yG_WKyngQO{9v_IayzHleaxEE4eJHH-oBD#2O zSLxP1Ye_J2Zyq_@yZN$|E7zJ|@ISG8$~0sz*7(J4k2nLYNobqyRN(J2Tp%96(Ael| z-M&Dnai%db)^F1|$JFWEHaY#LOd{(UkHy>JumA5?+815hhNLwa!SMXcm< zabQRcJ2aYMs_zcRB8(E(-Y%)Eyac4SR)#ztm=PPgyUCoY5GE85*VJr5k)5>(DedjP zW&o%rCMKdg=YUGN1V)}u+k$kU&;k~!et4J;B*7?x1A=vcuK=sr0OVKF_rP%Jv30oG zOQqT7Rz9f;C-j=?eX=du3@1T#*Dps1pYcICXdv1Iyj%Cwrx zFZp?(kosmr1JKmW4X2XUyw?}j_4l8wyS$G3``C#Yv>7Tq2~^@KS5i1NF~QKfWx(~Q z)B3wFy-LI&`-4WlK_PvLDqYP_Yn||n2O*7QaJnk?z@ncPmQ7iXrfqCE*51%Zfprfe zHN9(hWP*f|ePW>pjD2=@RsFH-CTu=mNJ6nsh=OPf}t`s2WSX|B|Dgj}LZ5P6qF zE{kqsxasuRTyghMQo8{((I{*>GE)2@KD6VaFKw1QIQNTTZ~@?Sql~^T!(c*w0I-OB zE1>D&Kor$%!S3z_aUei=$DkEMJ%#C7^tFV0zl}mfiX&!!_`K4{CEH$u#9{`W`JJt;teS!7}Y`48W1BKN&S+42NUqQ z9005{0zrW#<`i&bJUl6c5A`iTps@2_G;Cef(Q(|}v_1gY^9YDBz92I*5j6&$nL4&5 z-@2r{nO(`Q^b;fAajxw(Tkll2(C!QTH({wQrSBUXH&A6wdi@To^p^e62c4TFogG(a zS|{yq3{Equ^h}>8Z4<}cdvjgm-4ptc&&5{~sK+S*ar)0o*A6Edp^*Q;O<09si6yZk zvu4=3M1JXs;!H80p4Oe4nmFG7YC28YN1Ta?Nm0{E3__XeQTa7UMzR*}Jj;=9>k8`1 zajE$QEb^hhNmkGD%i^D#Jc&X{_izjeFaPx)<9dGLK}E^o_$N{4^N;3!AIb3l98uBI z20?BF1*jWQDV=s$F%q9le9zIb9$Kh}PlQnUV=EY8UzNpI!N*4Be_(dW(8WZ4?gVfg z#?ZEaXbhlPZZumK9eAK^dnQ3mBjq9)++E`8G3GjFXn|E zEfGJJfuJal`}gT2E;%~#gZ`R?8My)`aD5)<9JK^gVNOcVU!PZ*1=JY$^F!g9wgBJ& zzD+t*1P2GcMbV9J!xqzDgawj$)D9`aB9fBTT{8L2AVxvo90V>nd>=aqd~s7n@on+L zr%K(aB>aj4-}6Uf4^TyW*=q^Kd`W$(&_wBrJqq8yDNsHok`-B zF?(556a^Yd7}IY!0pUVXkZs3#x^-vy;f1K!>sLkUN%Pe-KRDfdQLny%)&uCPE8w4J zT?E%EGrD|GkP0O1ZC2LrlwvyyQQau;+}viT0h-L!M4r9}V>Ox^Z_&N6x%nQBtB1f~ zG1fc-zyOqky)fhyq%|~9ehGPzm5?%tQbIqh45Xe~`6B?j;OqGae*_3wcF}xuDzw6TwC{QY>)e`5HKSON>_35{~ute9|#SyZ2f=IM(0PL%7+Lx^_+aM!cK zi3{JpMFRR}xi#Od+%qWYt9=LbH5Ot*M&VeADt{S+v_CaMBk=o`d9(*)_w?Et5(R(9 z@8`n>#kb%Us5AkJR#8`n;yAFu`P<40;Qey&&BuF~-@m_4U38-W>fb3K=7Kd&O>l=o z;|9;Y9{&9iXz)G`oh5+}wM#Ut@dOR=5S1{wlwkvQS8X`{O>4Xc+mdlMkH2cj@M@3P zUetrK0I|(1kIC}6YfgHHB~--!@CN6?U7G*wSSYN*^U~zoL~+=+L<75KWE&Lnk5eTW z<6))-tozlHQAp8=VG&@Hz9vZTc7A%XGr4`tgPR>KCg7D|4LHP~PmO~sS1++veGCFq z;MDwG!Xe6*JVHizpr?RJ;RK`}%0f`##Fq5_iV!$Ra?r$6ZwMgFJRw*I9Wpn%)1X>D z;q$F8)Vk}tPD7c=scuH-4ck<+A&i{uxLPvyVA&|2^$DuZ$L&uB@>d?QpT+rD_sKSI z%I-9%vH$zZJVG!YSnPLM0|%b5TRp{2PY{P%&2cW#Z^d*5&AcQ)%UPLdMet~o0!35p zvGG37Q(m7Xu*ih~%Hbbnttj^xib5iP2#{N1k zigm%~+W!$g!B_m*aH1^+CSIio+~A4kA-!3Yi{XlULDR6jwpv$NORW4V!em43V`AoES5mAA7_*6skH2(nEvE@-Qbb`>P-!#(4LZHJ7zV(G%kmHz0Dl)n zD?!H--EKvRyZr8>pLJJu#6=krD9E!G;1pX)=yA901;rq+zMQ5|clj)A?%WWT` zvO*{7MKEHwf7hAEauDJwB~29i$6dIH!k)ihm?D6^P(?AS@069~TRMM(#coEKFeK;qCzK5J>;1JRow zQg8DQPr`WDj5cQ|`6GaHUh+nu<3`1{AgA~!VVQn~x;EiSpB(e5X>Yipor6VS1K&lxD3 ze;?)V-+e@gb}9Qf*ti^mqwir+3hSKaC}j}24BSY|^0~`CPXo&}V&YW(y`dBp_exTc zzYKRBS#U{ThqvMZV>?i*fi55HSXD`nbu7SIF6rv(mV6kt5r)*K^I9-41eG~>^=xf! z`h$=~`RdM>T_B(S=~K{in2zx+DIK}<|6563!LS{eB2&@$XVec$4i z93{U4G9d{Q6;6T~-U}rUxI2uEVf}rkWfw%ROpqDOCV(wG2aR- z738ygUfS0F0iXQ=ZSTc4I`pv|VpyV0+JBP#pTpZqY13XdrJCq{#1Fr{pn=<=g?$0J zEj>{4$bzuH38CN=xLU+Lcyl&9RnhqWd6-!dy?*^#=h99m$k&ZJG!(5tI;u(yAb*Jd ziwj;8&=8O&3U9cQ~vj(%qO zb8#63l|oCq?>J{Gh;5Ae34R<%rALL{NnpX{SK4p-=XUwSOPy_Lm#1`WV#vw&} z`)OMPJ3Bj6=-x@d(bIJ?b4aP=l_)jz2CdixU+OLZOA$5nzYlZLzfw16`D$Xf5zN zpvN{kb9u1|wocG%ww`RyA!9rHrDg6sjr$Ub1n_wJx&Sb`z42KV2!kthNw$CAFL$Q#9vU;!PtmU|Iu)3KWSmA&@>ya5@mdUPnC@>AUD zW_+7xMOeC5ax@im?XBj&*6NQ&gFF5)yXxZ9;^J)=o-!@A!)}N9??0X91BNXHWSoRv zag8O3pZI%wYUkJgeP9U^n3$M&AO0AAEbfXCW{Au-LV!`FqNdiF^~A$_yZ;6~YIKXt z4vUg#iSaP{g`sdHq$5YaAc{{2($H)?!}7eLU{F;)my`ugEc%Of^q|qigMy-MZqwj{ z=gvAi$Oi90-VO>~f(I8B6+}ctOt}6?5Hts`Qkw?AJ`k315v72@`+~4zFvKvRn*>HM zKY}iO#!M~-I?(nh4~P>Cij9|s#~Mqi``pK#aZg+~F?rAHHc9p&gAoIqN@~Y0nK14c zI0im@$BFS2ec#ha^(##?Z+11bBkd94x>ImuYTfnUz46~SCMx{lI=WciV<6{ILf*Ui zmK)(v?-ZQYxdu|bjevM+$o_7*Qo5-#4|v1Lx5Kvny>BCp{=Q}5%9i=(%C$%Vo)OhB zfDwdQOl*E_<{j{h`j9F2)k95<7-$g8v&ReZ6MJa3#9e+uxEQAA|ej% ze-1BzthmC!HUJF|nbI%I6O@#Y0fF^>d6)tQD$oLLjm5~=$ohIuEt!*(v&4IMlVhQd zhMqnY?o$g;6@wYK0eC=^vV&{rt>ISlJS+>x1EkLL%<}Wf+DFCqN=c8!#qp+Y9MBFV znYVssIYFqbzmW29)X?EQGMNWs+nXt_5{rt9KM_7(J%{J=E&i0#lhV#XPNFCW<&26g z%ktIJu21^7xp^6#ejI;lsTM@)rq+y5oRR!>5aptC#*V!$HT{7UTV=@m7TWFC+r?!+ z0|TBOOMQxYKX{f>>y0XN!td_n-(T{Y0=q0Jsq2EH5nn97Ra>R7wgacF$Y+)>hfQ(( z0s;a)I^$NfkgBQ`0ikr)cA(Mk!m}^4Pi=u{{_90Vlq}Z!{H9#nhk*1xEX;*KZ(24i zK?&}3UD@a554svo2)f^D8)w3tKY95DE-% zmb%^U=9^y|Q3!p-`Sn|>Xsn!o-3Y(kMD@wzr!+wB^ZMg*d|*h(v`z;^ zzmag4Jj6n*zaN#kPfly=k}%d!eo9=4HB%u}&6Cg5QH-9zrK)xeiU_60qr$EV&-0^I z)Rxm$jE_2}7jw#A#X%=KFbx-ni;|6K(I>8Zwd*Ir60PcJ_ljnzC(_e66ZceXp*k$u z&aJ09Ao10u4r%SllLgB6*{lzVc{UW-j>-=kW3Cb*FK>*txMh7j;~d-3Ftm2}vLtzC z&a#7GZvNXqhAj5L?x6S$&g`aS+35>8oO&$hsJYB&Zn0APy_flQ(13$=hl23!by)*~ z-l5=h5^NWCzjHMHwLIw?2B*&def<3OPi--kPZI3h8X@uSYKv#U#6Cs*IJ}S%nJK(~ z4tsR_8nJN&bF8k}?sNG<(btU5+jfdNubsbn0!4(rGW%4;lnw23-aGN)S*TrX>N2hW z%&4EQtK~_bzPaUB@S1gi-B)Y(&FE?Vm;lw-KxS>K9h-gQ)OWNmT>dm2nV4pa64|U9 z2{&C6Kt>F3z!!iLY!HxX_T3B3Bc8cJ?Q{kJn?jSy4@>elZR2%2NU^{-tc*6nwLbS# z=1<^aL)tkXWQ;uoEFD5tidWt$V-cZI0{ns7)i@p-z+K3TR z;l8oFFlQFvPWm<~J!oo+6n8BHu6b*tQudQsSe6J4)|h$N%kAKF2ORp(vi#-Pq<7ih zT*MDta-F95KaWuFoX#qh3Q<4X9Fs1fCx?+KEN$gZFEYwjt8ncO##{zx1j!Qx{;E^; zu6VYeV4^gqQ<>-Z$AY17fSE)WrmytLB>dBC>9Bz4X96-3$Qbr zfjqAk5D!Pdj(`Dcg$d7|nJ?XgtAT(!zYEUIA!m`1ZAEd&xtr%o2zdD{>E+zeAcE7G zoL^dICEFoIJj-%uexs}aAJ@k@U0H%~Rf_G6JNCeY+HL)>L zuM8@>?_N^q_61fRqTaAU+!SK$b9CA3@~PvHx$oH1+ANUL4X4kW1$3g6FsMTY?9hx4 zIF6BEC@(n$1*xI;gOl{ZN1H$p;(&P_tx&$Nd^!#;0e)c^w^Dh6mUjAJcMI_`H8eC_ z@r1;?+CuyQY?R}5Vc`Y)h3Q2>G#LLR|Mqy-7_v@8$J@M=RWd zM@S5f1U6W@ry9EstnGCWkDzW(H8q47`aOWV;N%MiBb_CLvp1X3Z2lBeivxc!I+=?e z9J#1w9gyaR!NI|$o;eVRpnZt$7d&Psh{WXk@dn0TdlS=nLEDz)# z2koKvWEF_~(dZ7y5PJmS&GBz4*Fay1*O!iLajU+EJANHjHU|b%Fi=%fQ-j72Xgm=ng0c`JM3N8{@BYR9 zr1Q2t`i1h0*&52sLrNQeN_S4;s(})$D!`J;eA6SGeVBhi<@jd}XD(e5Jdyd;o2d)A zWywx^f+voBI5hLBffmg@+9$yk>33Q26QbU67=^0+vne_DKY`L52*0+QAF5KKFfd~~ z3P8z3uMfOM)&9^L(A{4FQ;A`@4Hc?Oa{n1SNyzgee)kGoUya~6nVO#uhA@{*kaWSh zNANqgd}Cq)nLxc0!1f!x+Tz7`hHO6u#Q!zIQ5vFWLDXi<{ovoYu_QOowq=6xi0TqA0*rNmX>%{lhpCQ(lv z9tf(b2Ti*9tF7b5k0Yop$9t<=L`6-_A7semrOhfEYt>4nD`uzS zH`Iqk3`Ihu;v3&Xafnp3d8S2N;(9*6qcQjR= z7`H0FxvJmp9S&g%T)E-=leq3ReffD$pila9G{+o11#8(Np`vb3emuGC;3X|BO5BXu zz7MmrR;byP)-1O=rwi%m?rsJ(;0DOnvH)q#Gbmy~Rg3hIErLkvQ2y1{p~w2~JW9Tg zcS69vACy*o&F@S;6cS4iXEfZb?^Rxu)eRFa;7pHqxXg_XMLf7cqpzi(y2H`8uJL?zzvlD%_M? zY^S>XxJ!Am%LlKs3uzCo%jS`#oSRPFKL;3+eZOczWlEQ7e2fF8$v`PDLZ+^a!n7nUHy8nyS&qr z8TFU(65P|5Kn$UFi7gZJkT!gl-`+mQf#ouoS}*@*EZiNLMY1 zT6PhCtnvIl!Xn``OQ@*LSHa~4PJC3O2_{+NrMLdqpWzImnM-gHyCs{L!QFB{Xt1m{ z{*y%sOba?jFKiS2R7Y$AS|2-x;Wy;!$<_@{H=Rz*>#E#-0lObx_!p&jh{8HEp4_DF zqSb%z6-{e+58Ny%qW2IE;MLHy80bBlnwxJx-w&~1WZ-REl`tsQR$nPgpxHbuBGVfebkwkccvOj9f^uU4%7ZU z(jIc3BMN%gBa7ir@Nweie7;b>GsFIs2a z4Q668T{12y$*E%lWbF}Lh)EvRaPxQo^zfU+%*!JLsV`fa53+4E25ST=v2Ce^3HV*z zuRUJCo6Wy?d)2U*ytZp7weBp2d~x^!(;+Fy_~i*eFg;+b5kF+?3xh3vU~G_}GkNiq zCI#^b(zkaHYSx{4x z5%O!f^naI!-jimF29UBxNDYC%zZ*9P)9#@8vb&Y-R+RdN4626m~@>ARWCntCO#v#K#8$;WQ0-9B17g#hqS5 z#z)|pI$uHE&NT0mdam=w^V-5^Es25<6&es`SLaHWL(U7DI3>L^b*$@|3@adc=bU}_ z6tr=gQi>EhM$%oVISSHmlHqy0#Wt!MiUho+5u}WdF0ptvNjEUrfv~1|;%hpe|1C1Y z3#Q+q+kAne`m-T)k;pJ=jZ0ZtE_(%isu<*An`(ZM%mxl1Nz;5~^QQ}NHA1tO}V zBtDs`#qOdd?CY-}>j_&RWxPlV0hd^{drQ2j;;zK7@Ou|s)_?p^f}OO{r+yytF%m>; z;j3$sUywmr8E|WW)-y_STgI{3qxS!P*gk^y2&Hp6}#lW^%w*dNWV~ zh!Skq2%VnYgRPzoxcn!#3{~mwz@w-e0Mj%jE;hu4z{zAMD@eBRGrB$ z-m!ec^)7GPyC-vWAOunk$nW4r&Je)GJlVnb5Tji#!t0;0G*;CCmzm z=4wydNPTLfX8yOBzz>(_?u8~32dsIQoJPtR(g94mIwSTdxzW)f8hNdGwWIpZASR_H zKj6?x(?aIou3?^!gVBti#L)8!)GTXd6<=HB0={v2n7Vd(i|!U^?M5I@ zCC%eYm{Zio_wVs{eHL1s=9dZ-)M-s!WgoP^y$1^dEyF>iXZ7qldHMAQoRpS|yBziX zm*@Fi&L<*5ab;8_Y}R&u@g>-fWB~>9yp-OTurT%(|0T*XMSbB($nG2+nyq)fc85dw z$(PD7P)YZjef+ig?C2nOY=MCk|NFO5Iv6`M?$b(4LSn7qD)UmGByRCnqynl6EWh2q z4txo8F%=^v+vi@tTH=~PlvG4o*Oc-Pm)fgN7+=b>-*ljU>dr{Ki2T`(f-6U4+;{X0R4ySXN zoMT!)NTsNB0^U(K-5+#apBIDsYbMJ zH1Yx6ei@N{586J!6U`lZeW-E(no}tM*qk|9-@<(fbB`VRN6fzM>b}46>&z|v3sMvr ztAh18wS8fsm{(KOO*W{3BU{~ zn5Iny?l*GH9hu=G^H$VB47)E2#e$*5Lh~9xa5x1QV>38Uv9Ul@*ZhbMx8c<;gj1S) zDS>Q9)cXV@K}g|C3IMq4-OYOpnN$|z1s(cwm%T$8vU*f;YzH$KQznTEMk$2^9U98^S| zsVya-#wU+xw&)+p-P_C$Y%EDlPK^^dl8Xa-T= zlI!)y&?XMbM1vK{?Q_Sp|4mzJ-j{H` ze^z#;43v&zUQ8ARTS>I)E%G!6E~GkcwSC%o)W^AF{->2;`` z;QihYT7cRGc`V|(ilpLipxSees4#B1+RnEFWi;-CI~HY6Kh-^kXJL z1~-qj$S=3n0yu>>plIqf!Y?6#fJqG1NA{2CN8**+7*^FKiC&N+X{aEY+QiD1uMJbz zloym!Ga=)-ONQIyONnC^GBu&MsQb^2@cTCjeQ>s*LA+>7*K;9R1CgM1)Q!3~;fG*7L8%4ug^-jKM%aT9pmv41 zc!Xe40r6SP>4%R=Hil?acp@64+z`$@?8|JpNm{au2+mi3_OJ3-cd^p@j`_1_y_*~- z$==4nB};d^D(;$ZKT#b9yJY<54nTaE@=FHVMymA$-Pr8{IX|%c+&Qr7ydIhKkf+_h z$MU@T!uZlXNDT1+cx4>|fje0{u+dCH5T2&AJo33A{C2z2ey#G1>KT5cx~f5|l6pIV zB*cL%A{56N`_zvE5#sQ0Hltk!xp>9LU2`TcxZop+yY8NI;3=kQP^v!0y5;K;zMyTB z813*ey*E=iTswj*izQ5%d3ARAUTdC$+KoBh_owy=x3^oDYn~})J*i0e9a(2(@Z9_O zw)ftP#-XjkIiiXeL+rMTQr~;`>6uE0kY}W3__&qiu3w+bC3x~OmxL63(RAV9s-4x( zxovtuYgt&!c2Mi~K(Ec9R=%Fr@&FcY-T(%R1Gj*RMEfKFR^(u&0z@+eL+1o@9vK|n5qAQt*@Xqp z^XDnhAS|#ng1rZgih}U)ce62@#8aiqlK2Qe(W}*j{R$%;<%rL&Hw5XXWA-lho+{4( z=(-@Xkb@0lut*~-FC=vm9F!?QC3h3^7=!oM`X(K@!1_&mOOBFDIGe4NL%k5{Z<>hg_zJGmSKmPUxSUb_E55Pk^q-vpP zhccZJGQk4@V&!CK&*&0>G{LiI5-Nn%Ps5y^78w5tCG6q69f)JMSH~mZh_r;WYVO0% zX>A$-K<-e~77bVd&s+!7)imVvN$BZ4R!Uk?ohBIZ@t|-DFe^HLp%omw8}L`63Op#F zoa(-^G8w9-eSPwUox9sVew&$1&#sJL&pyq*zV0oFVP*f`IFXT&5gI@Xjl6Y;)wZQz zGO9^YxwzWq@w)D=LsuN>LpnBY9~>Ub;~rFuVyB68h7dOuqfsc^11Y~_{k9WokB2>>)U+>UM~LOu{Y3=Xgm4XI;OF7fQlNNqM#d0b zuS(S=b~9EY-JgsR?*@X>5la7Q2#=)pujNiB!N+ZlKOq)=#wx4V8%8^-&f(?N(5P@7 zV|7Ts$;xw%O9{b}IH%bf(S>8eE1>6&ANp(}XDTDS|@J%9C z{f1D2UO83s!=QokQ(G#&zy_xZ&ym4u&3MoW+E)tFrG;`)4&_LX4X1+=2-9D%RL^mJ8P&BS_j_$`QOYBZyqJhnbmKIJj6G zYW-onvo=m?WQVyDl7-c~Wvz@Zh<6?8nyoqA?_#Ju2bW56uShr+0XZXfR<5)n zECy49E^^o@YOQDJz=(k!ypS>sSWN&ZI6;AYT`*b8&@dE?b?8pNc<}_B;efsed@?QZ zM@%6#7a$|5ar3$_lA>_zJ!QOcpQThD&S1`9E%75!+^8r zk68ZQS4V+j55^?r40wWynv#i$G_GBD=J(Lm~9TL`c#nQLNUVQK5=z+70Kgc+R{o3lteI8q|?_QBMZ8hXC&pmc1(1R!SA zZe&>H#O-_d!yu*O%1hKLB)Pv*MlbE{@yWVhhrMaEpN+c*k1J?Yp6RmQF@KYVcOuDd zwg^agzva7NLI488hyK=cat1K0pds-gY-1;E64gsaa z`12AF(LpJJ3-RUu`KlggCY8>ncc^L^mijJIn{=wG z9*?e1%2DzYBSGweqxj%)rA#5(^Qvz~3H7Bai0%E9IL(y$jfW;3QA>DUDKBi!rG-Rs zJE^+8U%d=Wx*aRa2!5q(>#sC=N_~=sm-4VTRjEHr$~XNy?YIzox9+}9bN&T)lB5gg z81jUd-ieUWU`6U5OVB5)P@XH#sR`kru-u*(EA2i_h=UHpMU_-=$;JG@e+ag;$3nNr z^UE*($ z_|w&;9K+OWwL~{Lk-E%qB1o78^?p1!o%Lwclb;&uVXRNJ7OdoS#VO})e6pSMw$@qI zxtSg>dY8v}mi)SzOzTU7x?}t~J8KPk?SMh` zLQZE&D+S;+sQSJlzLkaV1j!!kod78CJ_(yadKJ){U@=MVYA-lOq|>4tTKOF3)V`Ty zl7s$?Vz`L!mFYeYA?Vt_7-b8fPEv7n6+?=6-*)67OyBi@7Agkvqb)ghpF+$Qs5vjzwHFRzIRtKv z9}D3(^P>@AvT%`5ImxI!N0J<7#b&)0M1M%wG?MG*->LS;hT2ivGJOU~27vS5kX2aNVjZ?<~2Z#z`@gfA=7)|Rr66KIrJHWO0-uS`1 zt#I2PqzAfWLki;<=7LkL83l&|xKU<D}ysFEdcqp?xFZG*`nG zW@mM))7b?CsL(Y9j1nq9Zm`Igw0;S!l^o2!uGwhvlYaBMjt*E;>~_`jp&xf-*O{^P z8oRY*JQxeSCgs){aPz*ao#wpXf6~v3Lc(6^sSM7tT0}zyeAwomY4ZhFeh9q9F!7#3N|Svx{~EHB z(aJ;m0wGy7UKJ_2^Qc)l>#)$EWU-41_;fgZwYjqgZJBFt?)?y6d0av}Ix!I#NK(mE zTYHrX>*b3RuhP8U47-H5hf*A{63SlhXWJS05nyoF;mz*5#=(B{PxyxqEB)%9pRAnn za%y%69)OA*WO57;s!~pxU)Ya8(g}RoQ-cQPFV{_#c9l&(S6>R&)xB1nn%w5=VyB4i zVkcwOTUjwFZLjEIGc)Z_<5KA{95Fv{QCDF4emBgzOBY8DYhI&ZgmD=SOaZ9z-m?DO zXG%00+huKn8G7Q2JvSWjCRno)1!%_u02vvI>4GDt-l+sRnVsE()t>Ew{&)W86+)>* zg*tOVI)aW=d92Y~XI}8pCS8ZN?ldnye{s_;%u9;!8M6|+0dNZ9Ym`o%z^OW4;rR-LP2{1&n)%V?(%9(IyS_ z>P8u!2x@Da3ZUqS@7Ps6$+)^opnlE2qdcT9y(HbdjhS!7o7^CHwPEwstzMxsc$kb$ ztL(lxn%S8u+GjJ7krCQ9Zha~0=t7CPT>k12uk{D@&c=-0{bJ8P@iFn^YsIclA-uJB z$(7%Oamolxf@HQF#kcS7Tqq=3qhx(E_#N?kk;}r6^u@e0XFta(=lb|G8Ex7EipT)5 zNJ&G(rGOcI0||%FgrYEZ`RDM%cbbySK?7fH1-Y}9{Goi=biTof${b?))x?j#bb)-P z%(``MLJpl&WwNfcyp}N$X07iXf;TZCmm~;x+IlmciG-E^X#+iE)5FbPx1x#fYbWW%U0W>g3iA8hx{YQ{yRNKTc z2bO^^ks=fIK=}c}_5i9-&^1|rfdu6Ctl`WvUv&1AmUFC`rM!f}rr-xC1}B7DfL^i0U1N%(4WDa*r551_4RtNU~pW;oHp=a{*v&E z(()O87mr#lPlDN9q#@4rcyZNFB1Q6vkj1;_GG3)PH`#?Ys_`e9S8K<5-q%SL3F?WTh;SAKZit9iCNPZ_+b)Ui!q#}I>yLbJT6uP{wcD!x)X$zOp=G04;Fcr|?tSgGpN;4HH8(x#BW4IF@ z5-&`m^Vyxx;59;`g;9lS+tbRURsmYoDmR1=s}5w>uP zp!qw-=JhWcd0QE0G#fpzb^1<63toJn)TJnR<_(U(_H9Cz&J5yRCda#(|G#7Ejq?II z8lQqXRpwYgxAT}f3gBxp$fY^A;i0P3gQW#B3zQ@W=xEdjreKqxf%}l89xrhV>>h}^ z)C6Q59)JXcnfsTH zXI`7}{wwk#{?S!mj0j`8d)9!VNlcQp5G<16h z7A3E64+!-lpy9g?O59&&0Nw$=*7pumaQR~9Z{cZX zM^F2+i2~Q{cV?R9p`o7`BSY7&)ITzRM?($ra_A-iOl^$ffS4qBn%XY=2%`QCTe`@38j^MFka_}_nDd3~O+i~tFXqK>Lte^1i8{No~wDEZ|Lwz3h)UsoV7qYkLg`~}IQ zgDrqRl!Jy#mFj#C*MSf-zMve-g*Kp2EEkl5l1cCcj^(Xzk3~)@r34?_w2OoVpM~Hg zA<_FP!e{mTOVt3@9qFkz$d4~ibK_59p+Wh=w{U4HKdofTAahXy#BT-Q?lp zL*wCLk}#tYaWc5WLeU}d!B(1uQ-V$EPuV6?b-96v(&Se8dNSUhc3g92C2oIX@_C8l zu>Lmdqd^lGxszrtKu}b;e*#bG)Stsd?~ecRB*7Pm>m5S3J>27*$I&Z`$;{C&sH>S$ z7sqtWblR++S=!Zys<-gs0mDGxeLn)zv1>+cD_AlIuWRLJaxbUoqx{zZq@IIlnfy-0 zx8~)0@1o=jrYfowkwl^M6bLit=bwRc1{*(nLJN-5NpquS2q$rBE|n9%YQd_VKwyse zvT?lgaxZ5%`uS+SNM`HQi;bZ(7k+K!5l^tVnLf7e;tC+TLPS5Hkan3CWzkWcC`j1Y zIXM*)#nh?k=t4kUl?jnEXxb&8v*vx($PX`5JqRMRz(&<}4@79QyTytX!SOZfi^6DG z{qL)k8n@v&Qc4LnESS{`yl(oy7Bos|u8zq}2Gk`ewJa%VH_0^*$#CFVMnnH{(iYa% zqChS(H1Dd58GYR+z11azj<3<1>AoohmuMu~KgZ5W?kgw$;5jhxC&O}O(g7JBGtldr<(8oaFWZy@rX)fn_5~rgf>{wIRy)8_sK!``rdug=k#ch ziPYzOervAtqvfuwMX zB!Y|p_}-}K>1|wxz#(Y?Lzlp<t9|d)%hwEG&U5i^6Vm&jl_UlzY@s3&LdZ&p zY$CVpy%otOBNS3(m1Kn|G9ragR#wRRpO>EJeSh!&KAz)!s^fjWeO>o;o!2=&W0Amc z_`Ar1Eh}M;aLro_`XVo}CB7IF%U(p{(kXvfEn;xgQn1pN&e{31bV=q@VgnkJsqdD! zzSAcu&z$_q@iWk$4@(l;s#ShGAjDBRY>Zjub`4|#w3GzlA*JJY>Q=gCV3HHtHDS5V zo+wTQ@R;zDw_r^7PdZs4rI_%zJYFdMKfUZMO}HBUZn?S&FKxg@bWQTzB^%#AK1Vqn ztXe%sM^7vF+b)hCpUS%u_o2a(?!;w(Qic`Fr43cGdQOjk6Um9OC~XXGsz;W=onqHgeQb>kpxB z3*RmNu0yo)gY=K|(UjQ;Q z2qNCCu0Dknd0~2mkPZMcg0>RyhF9p{CBD667#QV% zpg;n^;28(g*=;tbl>^Q^~FjlIMkG zL`rW+(0qA$Qk2MVw)Dj>FwK5<=E;dT7ixvNGxTDkx~C&}c*zExg>i>6?Soc+9Faf7 z{oPj2u5N6P<^0c`Jm4F^qj@>*s(=6cqwa&Z@uKmw63XkUB^(A_ds^bUNC+nOJFE%TqHwSNj z^K>}vO1R0FDr&{=f=};1==;6w!;^XZnRg9i;&8Yyx+{taymP+ETSDrlNQlsRBIJYk zK4+rx05Bad6BoRA)*5)tqwb}W0ZD-U0d?tGympI5_rlu()sz|%2YqZmD;@}`%OI%a z*n0qYuN>&Fz{DPD@PA!gqyfGOBrjk=NdqdRC|QPgj+lUOV{-HJw>o0p+jUi^R(F(b zP2QWoIQcNy+?I;8ENxbk;0@)@7 zt?cNC9Rtz+IB+q8S})XUW?1dj?@hbvpX?RvI6(4qDwP(|%95ON?6vFoaW2*M(%pfZ zqMtI=Bl^1TfOz)}ROQT|8*o z!%{RlQi5I{k&o#aI%r`oVhvl=0bGMOqlGkt0#d}NbU(1;az5N(;Mc_Wi=k;gd!2Pc z(}SwE>~N=+tu~kV)Nx!3za@g{m(ZgqdBBqFkZL__y9?@0SyXd z8Blhjg^<;FX}ZgdfTr2KbWfZHP)JQ>g`~AlRQ38t#PC(g3hq=#yhm(+)>40z=Kq7wJR;Ppjx^Q#21Qgz7<@p0O+N4)0q6qo4c zE-$+Z!{wCovndsOuTwkt<*Db+x*_{jH(E%Qj`J0>N|YH@zpQQQSEea71(sjMhc6Uc zH(B8pMv^z}4_llOI0}5rXpsm=>;+j4P#angF<)e=D;n;QoU;5JJaNhwTg!ovC3K`T z%j7>gjMDP^XDIn2V6WmHJct0jg`v`vn&W8TiqyMfM6CFVAM|n3u3o^qa|!p>L{BFP z*Un7EprY6zPbDad50OE^%}v)jyoPq7Rk>}1@^ZSW|1rZK|8qY<9cDGvg{6faId`w^ zbb(gE8^BKd8gYG}4cBgu-8-|};~@GEGooCW&mdqPtS~}U0JjSHfkFye@qPP7V-O34 zs;^kL))B^+=7j+^sCBEal`!Y4#9`3!@Y_Q`X=e@0A|ELv3T@I&p#_Wc?u~1U>n+m0J-3U2qhxi`|3YV zRe*5rYou)iP-;O?Lz+`%BUEG~^jgLKj2#KLIF>gu5$Ez7f5?aXdnVr3y6-C(zx5(& zy6L^nRQknM`VWcppJWM&D0-O7H^ETOD(yWuh`g6uXGb75$Q#;@7Z{bQ{o~Y<_vjI_ zV0{hwXnbm_;JfWi5vJanD*v-GZG(?;i}AS4F?zkbPWVFgzAN-Q>7Jyw4mXM0=gT+= zp1^JV`7@3b;$^+W-~i{lvDX6Sfflf86!jTniMv{wy9dWhrEu+=zlXn^g{#S!g!CjQ zv7IcX;@HoOT#w)N^cLXS`J*9=h~@kKWh-R`@!ScM-^grjhJPlL!6TBoSM zxO%4Io+o(GnSgEmpQn%@El)R7S9fE!*YD)nF)A-(I#02aGs9KQ=c*=2W zatQgv8pVTD>8f;?*TNkNt@dCOA4_;F4mU2?Z^#`ubhMy%(E5xFy1 z?*XtC-C5Ay6683m4-ktcpm1dO{;G&-3{wkRngG^`{^{@?TRWv+UJL;~o}>$-c=umc zoS(gU>rE7Y(~`rMsn=G)cfhA6iLB_pWnf4Z1OF|iuo_o3r**bRfBQvtuU_YO8oAeW zpRk#l=-Iwg&Eou~J3NWMkZ?whs>i1?Y=|Yj(XaQBv$pIKVL(8DmDYq85KGXvf#L(b z2I20##mu=_m@+)?El$$f7t-s$f_5YXXNy?i;9UFOkxY$%?Jg78f;|5t-KAtOxbXP_ zXjhbBA#OBaz%^Top28f_5`ZkEq@)*taeSG07>Anvzr4u-n!ZSw7u6MaTnaDPS+k&$ zP0*4+q~>f^@j3_L`nVbGU#;!`92lW@_8^H5(!u2KFM$sT8p}agOXkKdZ^A}LEoS6a z0NF8!yjPKT-G4|Owb>JJbEU)J)+P4Wr3ZrIYG^4-g_42`M|=UX{xF#|?4W}6R%3jz zLcvF5|BAE`5kbOGn3U5wyP$8eC9c2Qd0tMuN?|F zGC1sat^UN_2UX>Mowb83jCb49?u{F128@2nS&ru=JG8igM|S1L#%xrzz`!-Jnp6|A6M$C2g3X9hMSuVf!NL^A^21ExXj>*cJ zO!0QGh+7b%QEFI@ZGZJ#TDZXRg9?v5tFTMQU2I@7Sj>Dh^TGZcBLK9nq5w6(;Nt*n z2o%p;@EzveEg(7q^^M2H4k)nT#7h`LbEwRXA+4z24vBKXF#;+cU9y7z#auZQv_@r# zi}?z;`fiilx>@2Twk4n$#Qc%QqRCC6c$n$GQ^&u*il5*B(h@Ma3xCOi*f{KrAZ2JR zl>u7y)SW*PAyjPo-)cPAlYf2mYyWfCPP9;|!M}Lv%)#S{mfkW?ldeb*5J|@vYbyd` z6LD+d(h3FbocxKw5&#h*xCDHdVuuX%IXC_SA*+KBq%O~=UX-fExnnD~g#q%xUq8{s zyre8}`uP0R+NXh(C6!Yq5=NmV8u?obgO1x-G6lRuokVgfrb9~buU%5(8U_F8jq+LB$L{@H+^>%fruW0#GO`_n&o<;7}-9dpfq zj86vBwaHarn3UUeu_Dwqh|_4cmTSWCL)w%`r3n;hewC^v0YuFI>3ez;C8P9FWgGg zhK+`X2Kfn8(akADR&qhkrw6Wh*dpJ+z%~sB5A7-imjIEFh~ITqRX1Wn^5ZOxb0< zXkpjr$wXWQfjKA#Ku>7=qI0b1rLsE&n=^q5y^K}4dJh@!xqWGyhe^2j7K1MSIPxm4 z#E88V@Fj~IyHr1BJ%(#kuRsM6#ZphXc#xi~4WB)#WS4E4kk)f|qwEN>7I#mUl9Y&>2qar{M_n_{2SKqWA zpa(iKd@jfE{6k9rr9n>e$etSt#rmI^nXMgI4iDRY3;EYAu*5|CfSj43MpLk`2HHwc zQWC=mcmmh~sza2IP$Gm`hDmpag4SLn*u3UYgInX3Bc7rqp+*Wd4O;X2I~48Gzt1EQ zlDSDrN+K^62PQLOlJ(fi7LZy4-3QGgxJj{?%mcR;j{jQlt(l`*bEZA;NvWiPwnt66 zPCkd6jMRN`ce!GuR-T5Ig(aL(Sl=8%LgCfVE0H#AFnBzUw#|%Eph2b;$gajZJCNy91WNo z^-Y_GFnQ63Ix^&_p7E((I!^bxYambkgM1l*o_~@P^;db(CrxWBsg7Oab~yrEVx2)@ z%>qIFVg9czN_v*gET5SMr6tGD&r1^%3*Ud!oqETjrKQvm0vAwO?)P^G|G5KP=-xX< z=aJK?((UgRV!HS-0H$NFNe=n?17sx!EHms{1)+(LI6TZ({s}D= zt0?|fXK2FssxC>N)nT2S809KxAQT9;`~Mn_JTxFb5et3F7fSYsqvq7G z`6!WIdH~cY#UKK}`>;=qk}$rCNd^#d+fn8X3(|_vT(*^0VYH!iS=`-znzZ>G`82|i z17!^GGxWt=IuBhS^g^Lik_-K5yVfNUP43APf!vvFR9Wo#TN&yV3WcjYdAD1+`Fv@( z^GLX6`n0SQxkzVRJ&m`QJ4D=^++v5Fx4*odWtsWaOStVag%u9(cT5WLRl4?$Rla}U z{U)T{e(7CPCbx0@>K!dIiQ7~G#e|2C*Blo~4$SKH?(X{9R^MGCu2sLakp9B2JV~$|o6#d7l*SOD-hdbJTsguTl zZ5sjSFO5QT&~YNB)|6h~e6utPWlQ1NlH-Ysrf< zgBk$ux$Cki*Ct)d)gnsrtk;g@pI80wzi3u~!tk|;s8#;ZA|L^PR`b1CrF$KaP~+oo zBN0!49ea@JN{~{i)MEdBccS>l9rosGZ`$*v>2V2dWKjp#7oL0#@mZg~1_B?@;|hhj zH3EjULe2?niDJ7)(Az_8Eg%$zyf(jhGV*MNX{c`nQ&LHn9lvuFAH7B2EmAsVoS@;n zgh!+ViRJ5$qB+KI?lISlTUt%N{B1;s5&3`pAm{ZYYQ({9cjlzX+#Wq=$-K`IYjl8% zZ>>aX>%4S-C^X-E*&*Y%T!rXXcXXl~-su#c&YrZ*hI@`RE<44_E51t)`oInjiGV=j zO2aXM#k2ob$3rTF1ARKcvgg^w!M{*Ro6ft?8v~zMxl{_!*OHW+>$RSfS&_x z^#!jI;7OWH*N5eVK`zGz(jtoR#{eIWgWk!rXA(%g9GIjC$a}LpHZ074$l;iC$-Lls95M+>0*RM3rY1>zr4*nKfCFD=c28tA)gPcUvizLuL?M|kjY>fE$K^@M_U z3`w1P3N^9>nhR&DE?o{ws3rN-xDaA!Nk-_(R<%Dbhj8-G6CWx7Gc@4HuxFTo5gM`} zq$Pac_`quzdv*itC|^TH&i-KUH9gDWtuWH#c>XwUU#{ljkGS5+zK1G|ITW`RcS}?k zMl(anDJh#l=0Y4A>?KB3iwk~NzZ5+;9GYh ziA~UszdZBUL5n_h(r*NKyg8Y9H>9-ln+>MEo~d{|Li#0_GTjU zLQ80UXpULsR{vkeVh{S0Jk(Cx2WroJrmks|Ta>@rWiH7j_JJ~8r@(_@SxjnqzERxJ z+#IMFWpe=%KS62#S#45{Kx}@k8wF^yjA)PF)kFuwB^P1;MMO$E=Q+K;Vt5ZvIgiJ* z0_PeHsncAc%13G|VDo(tFtqt)7^qMIu!k809A5)0W083lq}ZSzZ!lh$lfwgswxuK1 z9Y`ZZnMO`;d@zXYfEakLyOb)cOqQxt5yZ_>0qhkfs`@g-n}tBqrUQH&{5t;ZW3$FH zHr?1mWb<(iMm;kC%m$`ydcz?_TEsX*Uba5J=UziK@C$llhdppqj z&>FknZl%;3!-3>OOu#<~@le3rsawg$cscgX?YydW#^d(6T>5DQMGMzRNZj3ZK`06#qB+{Lf;6?N;t#p58c#mwf^7B`^)?2#a2d~eD`n^hwBUPJKU9A zIK1q;Vduk?)E$^9Qj1iiD3<3k4zRP&F-je9Q&CqB8+DCXrZ9;Ms?+$?#b#LNN%2QC z<*usFa~OEHMN2en&hA&L+vlNcgOu^kKRi|52{6jA=;*f_*wO^D;eH0Rg&644+=Ibt zZnHNObV#GNBUuoXiPp!=mZ`!h$jOlr(tUdl9v-KbN}?Tv-k^o~E25WY`IBrHjYE(G zP*pg*FhrAsd}Wy&J_wQo6<8=d93b3Z!8t=tRY;-$!T*emFr%7*$3|5`Ku^|zx(r!V z0uw>i$|~>i_yM}hDdsn5UVq@!{A44*#HY|cTHwLkDi9p^o;ozHa;uRkblKwH>;0dY zk39#PN$51pUFaalxLB|bM1rw1M6*cX#hjAB+FLG0d2MlV5y?oi#2+A|$Fdk|uA5b) z{hkO$US}}-w*;~Fw)gK_QMU#F*W)1c@(S2+uu4lVnQTr#jz~!f1Fhx0CuWDB?o)Dsw`YY&W3}|$)S7hE5x6+8`#F!N7{L8c#^@q2EF#Wt1$dR zw(x|6gV^C4K((2fnUUeF^;kFKqCjR^YWUAmZD{2d+fo^^W-4-X##yr z7AE7E{5{ZLfV!Ut)Jg!?3=&t0fFK2RU$|A^A6g7h>B!i?>UdE~Mp&D3z;{2=ds|M) zCo&Jwd~d<4IxMZyZb&J;s2#Q>jK^Wd^f#c#PoDQJF=0clI=m-ynOrYxk z<@1&kwO^2qtrF~t_nv=NZ#;yYFQygp3h?L4)tmv*rAF&T*$(BNX0yZtQj zKuzmMZTV=#ngj@Z?x^ef_Jfeat)hnoK_qeVwMzRP>-LI%xveD^;JE-u1HmJA{W|Tc z#$ol4TZ4zk@3Co9@_=9KoA-c!2j3P>S+GFFPdPl%M^;XOzT@Jr9^`u@xzKY3$r6iC zabOBe1s=>ViZ~AjFNSKj^ic_mxlfQAS`P*LTq?kO%T}B`x)<_PvY{V*tXlG#LQ?k*+{-*X%hnMk=7Gc9 zBj*`ZMXppdX9JuZ3`>}RQLYp|{RXD$2N0|Unpo$qPK5JkJe8J&@Q#sR=jB-@7P0<) z0^Ua}xD5Sj=g<5Kf?G|HWjKRX0Sr60>$`#}b_3_F{sj{-f#^~b{qz{**J$H))Hgzi zo&cqmBQckuS{+PhYP*9}o`FPO-dqmcz--NAA#AT!t3Vlq_Q7~977D6?a+(KWSfL3p z?0^#a$OB9*UQ}Q1u4C({a^f=cqH2>V_Ta4*l=2H+`z1$fU*d0WR|MO8|H+}xht?|a zJ3M6%a&p4#$EB#LNeSH*AlLVD0-VRxk*KmzKCFu`GLL`=vgmdG$v`DKmTiGYp>zir z6?GSO2lR$PoGtxfn;aCc(9vc0ORoUrD}sw@X{k=CLFdyOQ?w<4>Zk9C*CrOyWlOP`KV{C6`jJi1 zr)=M&_(8L0hL@C;E&)`TNoiH+E&_^>;kA+Z&X%^lB3%S|>C=N>ZkJ@ujh;?6wZw9* z939L4iBAF%)h;JUlrk3m%nGZYzT$E#8e?xQd)TVo>erfIVsCdA<5@QLmcl(wTYT)S zO2FVf-CBbZRL*ltQ)&6qGrL=hXCXJZ8M8QA%LIs3MD_=n8g%b~0vrPn+49SLKyD7r zg7z_{zCg3ezjxf=u|C!Mh^uzEC9vpWG=05ji=Sti5w_VSfVk7htwr2KO3#li2<2P&>uFet=tC>V~~%hE3W`GE*d7>GSbmLC!M~q!v*&S?(De?*w#kS zUBB*nU9gg)l`?EZLt_hnIW-$MvN0Bz+l&iK=2r+~r6LvKv%gw-%+K$~9ogEAI}Y2k z{!njzATi#hsoC^S8FCd(hpM@Tt zuAPY@CiRV-enHQZ8&Av91*9CtAF5wNRPRYBuJ(LIsmcosyEJVE$I1*fd{{jr=D-??rxYUhj%{? zLxv-cdqAc@WixKyW0;|KfpXY8<@jq&oE6#?}mz2f5_=4+Tq6#JRscDOI3voW~{Zx^y%E}x#+fO5YAAS+aKWZ@OZ+@>>S(koqsUDeg~iv0GF{!oqgNfJjnjJ z+S#&P$>!^)H3fj*y#{e9M6*tN+kwgiK(JqgjLX6jq&ZRT3O$F*<0JeTUOCOJCr+Fw z_gb<@14554)%&l!=(S@!@415&qWsu&=gqi-Rxip#r!xrLf24S3h$+sg7ehDYyKPFp;@`cO=S$;X6|i$JLYKI={zEXmB7AF*nKkvlfihAqdT9Fd0dA z5Z!3|3}>kA&g%B5{Y14+56oP;%0UN=5a+<^G>_ ze+&bwqz%w)ml%HGv^XV^apdGlMs2w@1_o81vr};(KYHEB^o$ZSGh|%2VndeSMi|gCcf@ zh{ce`;N7E~FmW(5@-~+tKIR+y7WMTf*~@m?uI%h=id){o@f^sdrDY{mr0t8D(207D z7gl_k#ktF#EBgXH{qT{)C2E9RI4P{``}lB;y}G!7H94H1d!}Dz627|XhIGCyTcQ-2<#9;!zxiYXbIC=mGIBIh!g|5bv5f3R3<6B+V1|H|H!5>A$9KFCZ=d_#aPHI7COGMFe+d2z_gY@3Mw^!sL`n#&y8or$C5>|`s7jE%STqef}bQpSHy4y45>1YEc6N4gfE~7P4 zs?D;dHtEWw;7*<-%W^9B#j;La8TBGUOOCL1d1Yv7dkIEauCg9IGbhJ@`X^c+3OQOA zpQfOtc&K{qT*dod)@P)Vu?n}&ld6O-da6VR_1Il2^zd}&eRfXGWosC%et-a%s0_`J zL1n!AkJHPp%O-x7n1dO;asC746_Cz=xBt_1RXX^rfwK$!vMQ)#y8w{jiXz%GrawV! zPYpm#sh%vRB2OK{ z`*@YloM6@*_N@v`(hT#Ww&<+&x4kG6p^cg#ePt$8+TCdp=dKLEu`tlbI0vZ%^&_RV zDMJOGs-o+Ty_wo5lUtofBsqYVc6>}q=hMu|r+Q>+=IS^JyxRi$!poH_I=3c1F-f1T z>geZ+;IWc%Vt@_vNlG&w9cm7#@E0?;}>P0e}f9HKR_QQVERK! zP3Fo{#U1ASSK!nSc}Zrg$;Jq118 zW&iZI5{xanHoDQ2o2w@-eqbu(XqN27l@B|RUehj0Z=RNTk`Xm;c|B{oAaTk5Ct20R zMl!S=xt=_wHCy$;OK2MdvX6?Dys^|dzD0|t%ybMKlse0e13>`-uXLrErvy&8;bEs4 zzKAGYGsPociM*I%mggaxY2C*b&yW_TTtNN#6b=CtEIqXg7{1zw9 zU%x=vt?TD8b(Myg@0}{$x!>iwQB-V;tOtGsXoVug8ljBiS3vC|5hw`w6fnCKcK?hP z=}VpWkr*mg3DQgqUMCb$a9%V=rV_Q!-0inJ>M5zsvs~%PQ;gd^1VZod)Wu4&S~MAj zIj`V)^E@6@2ol9<%MpEF_W5tq*#*wlE(=g?kHmmNJ>}{2?yhjz&yWs^fh}1|Ap76o_i>475~sQh8A2#5_*Oy8rz_IJja{AX!#Nqo}ML+u)}%DTD<$}7<4 z+P|2xpr^O(Z?U$mWOMaon8s(rwmGHbK&A3)%~ozDJ}-uKw!1qBK8xS_=JWLBmKqK| zZjudf1O2?wVR3fZq(ujR8U%N?e8uS%Um_~^G&p-c*N_Xj~4ns-bYIJ>i%-_ z4xNMnGn!KyHu}kdcEtPxnHwMSj=#79tkvVkk885q4?h$9Iq)PFa<6RIjBi_3R#ukY zVoYX($?b_Ms;WgCcf;zKX{7hVU;F@l(;vlRSK5G0Q|NC5;!Cd`X`5~(_^J`Nze@0< z86&Pnnk5Kxcv#Xe!u}TO%#iymXfGHM00^leb_{@Cy)e=U{Zyu#PY%SuZ?+Qqsa9rk zV&X(k9gybv`Ij(C=qPyFn(FJ{OH8Dd#)BklKv2K!x@>LS71GEublQ`3@)ao|<08N< zJ55#wT~YNMxG~;S2N%URFlqF3VO@XM)#YBDgw?18p4QS*-i?4=9P^Rfj(N%_dU~6kS*)xR1#dYRM zRVLqh5%cd~Cf-t4*_)d$&{{siC*7-E+vR z5%!PKbQ*eU)owo$x|V=Dpzn2PfAQT4KuRcd3X*DAK+2diqGuapRgQfJ36%JP)kHQ} zzJe`f4bKw)wlzXh=nIt8u*Ml`P8>@R7$3Wu(NtopoK1HGf(0WiBEtV{l4$UAm)s@{ zuvFsGZ17=M=nEr_rczG+BOX?KmFSWB2|^8j6J7!lomEn*L^j2O{vkPS9R|cGIi@~o zirD|4e9Zp9xKigTe*rg!?9sMv+*!9~KtK6rHhftKwe-->mxX;73}7M)=;-8k7r{>-s^P){_#1L)S ztre|wj{sIh>G}ud=N&jqOHSASb=aq9V@z7Y6YTOfAiH_^u8ua=n6#<9zu4)vx-7v8!)qMdYdPQhl08-h`l?^13rWz3I z1@wfHP93DD4*>p&MeH8(n*}e&RC}LdX!n2ZJ$nd-zjWT>SoAR7{!%~|C-&)XTpio; zra_j;ruzJ;eBBRB3iq6pN_H8!Z2y^pqQCzs;x0frHRWYu@^Gu^lsVuKPJt;x&GVZu zMy^>9+0%yHiwQ)`arr^I(ICY%Q8S(K2IkT8rt5oVZ|;GRiLFEfX7>uNNDOc=-;Tck z@1$ZjWQa`{FE8+8?T$BTfRm}<+{{XXHN@ethYHRs?~g!i;9wA*{78^xC88sv(Jpa~ zcA_!F+^*DvzH$9lI-lYCcAD2*qEvi_ad}$1&gRkKN+O)tboe*gJF9Cv@Y&LIwT|@x z0_0CsLSHdkLAdxxh6UhUlUV+69ahot=UN^Nk^150bk<>a(TCOtN_fPQL4ybb&gl%$ zy+Rj3&q&C;kp!Qer#ks2xFh#GBBl&e|M!+zv?hrs-0L{f5SC7fhiyEOuvIqZHm*|_)u5+I~(o9 zeS!ef`BUf{p@+KW*0+Ezlu@rI3j{12JRmOTi;ktGm$%>6Yf&;~bP519?|q27T_aH(ASlTxb)+~ZNd;Dn745M z@SUyMO!Q%Wreb?h;CR{fK{-#z77eR!acA8ADagd@nvN=blViN3_^i+BTie6KcKO$g zSUu9WDWC^#AVVH+(1VdHGz@d26VUbq=E%KMDZm4TSPKv~d|0mLW|eK2y1oTlQ^1*i z%fD~h1f&2Y2#6@RB-HG$fG@}W?l_cuVz3y%`Ae#P0)m$SiF<02+PJkKgG906iW7DH z49p9WE92Qx8^;2J4`)IBQds@=$ELY|XUU>_-fI^JJFz*wn5;2h6znaay&rqF%81(RA^NCY` z>SWhiL?@@MpzlnB0-`+C5zAC~gS;t5N>OG+woQP~+lymn3@ptZQyr*r`Wj17&>u4) zrO#RIzMZmPkgI&rpe0Pn5fKZP@lcl1=KaA-c$qq+uwNnfI$fn`94{HhVeI}Y$32qc z0Z_W%BjarlNOEyGK7b~bpfV2ao5`N-pKJDqpSdI@UZMlrw>BLk#d$)sttXuvt`fMV zy*5{XO17gu1AYN28a<$-SnE<^SdI_cy#fQzD@67+x?w{2Zo~u9^L*39$s!>0i9<^0 zhAn=%3ZZ+Fz$=6rjuhNi$F7Pr=XKHYgaR2u+cjUCsrqkwwwcybnfQ59>~)vDhBVL%HDv(Qi3 z-f%2p^QvpW|2jWyQV3vViS=?X;-sI^K$ak4_1ipIgnPqp!`N0Q_Z}pc9sf-%`A|}? zqQ{+}uVlM+D^t))(lClNoJ!Tum)DI?jw1EW`Nr-$*&lzhKS%@A5VXF&LWf67>pLql zuY&M0`D=UYw%pHV36&QeDF)cw9+}zvmu4j!9unJ)cmx5Ys~Ljg6p(K{#Tk-{(4oC-)sjyj}L-0Sq zH#@Gs%)gU)Zfomre-ELUPD?C8g`}l5&cc4j^tq#na-NXq{o@p}`I#mP*IrFS#RzR_UAUkM5elGdb^~=VAOaLT zR@ZkEiMAkw4sXUg35P*Ida_`cH3<9i^OK;q9fS&V$+Z3$b(J$g*KffEkkVzNS7vf$ zo*8Wfz>qy-YMz|;Z+JPZ=EgSrtv0j%`aQKrj|WCn80bmZ)EXest>YH{OFHSas0J>zmLwTLS6!%eK+awcT8GS^qBaF^zdtWvNWwN4}LHSw;knL>Jp#K*sz6YRa(t zo%c|lAor#mXq_J3JvGsloY;4wqzN#tflfiu)SrC#pcd zxfOu=k8O!z31MH0vwM7;@0NdY@E0E>4IILe);Y&C7SUfJs^|1$j~qDa>=o_3GQ|zw z5@ufjw!CHWG9ndRL_sGZnY>h|-t;K%m(d=L@U}zwrsv+2C1T|Ocx>lwu-adzWQWhs zsQ?g!$f7-^##bC?*ZyJ&FhxBnBvY-HyR^6jivp8T5-8-o%WKd*<_CiR|2j;7pM5kM z6GMO^B_|Ka5vcZ53-NqDr}i2QQnJ^{Wb%H$1zcQ z+;0IKAiGvnJb1` zP-n<^T`++Mc36_@}{e6}9%d7ntlP@$MP#hH%<&thV84FEO z5U?VjaeGPr(9su$hFR&9VjLTgU>s*wLI%!m*9ZQvn;bU>y)jO&0t!b1dF z5;6f?Lg`CSB}}E?mOqaNOSpZMO8EC)&=U_Q3+@x~6yd%*C@l?mEYa zu(o$glv+G4#XUV25&HzL^pd~$@ebag)u5Es16h$eGMeE@b2kADhd;^w7iWSl^`WGP z4=L+S&Bjx51Wvh5MWr3^j)lYkvjkW$*p$Hr4~vMXkUj%W?Bt7q`zsb<|M5|@@(Oa$ z+urt_4$%qE5iqRtDpz)e5#{Wp#NSbklI9=$w&|8ah&+PK7US!*o%4NKN?MR~+sOW= zj7%MMfFhasQE*M7m?kr0w_J-dBMsW|wRxnv8I;qeCBz`P zo_6sRtZcjVr^q6y^CYC%1h3vi7@dr#J%IVs4w}sKPU63aOwFu)Qi=B9c)hWh`RntB z)>3>Ly2iUD-v~qqn@rySlWA|*M8)d?YSD_%o$10btwwWN24|L zOghL0CbnrOdtBQFm^-XqxC^!e5Fx`_kE3ca?BM``mpVg%z7>D3n)3N!a_+)Js27_5 zyM%6lX)l+)2a~=Q-Y-AEViZ$=(kb{80MpfrCSWZ476uza&uGwR@VrdywN+V}iebE< zm3d~g{YIbo&0&eqDF8oG013KoGO+Ck8hQLm@^g9Ua+qkjr~v0>sQCCfeRFd(Ek0{u zdXR}aEn(f~n_U0y!s=gge;bF|LLI`oGD_kBm;l!)NlH9!JiD`kQdj+{UyE~-7O|3F z<$9M=_zGHD)JP2*K0Hw16paHPZmI_Gy{XxninXO138?z z;Z`811KE52!6jBGU15oG;KoKcQDu818IEk4{6NT$zO}Nla;Zm|CL2x=<^@=Mq;5?} zOuQ@SH$Qw5h3aarr5t5IY{9c^0G-fgpu)^$yzpE!MKexlpf;{3*TBU^4s_(%o)L&` zr=_Xl57g97CO|Gy*hCSh?Y36ORzGXOeZ&!ewZC6W$?;Zg3JY#(cV=)FzhVr^89W>s zQeZHpIE=QIj1^7oQcxZp9X%6u>1%1#sQSUkkrTCLr;7!P1|HGIRB(RWw_FVtR!ur%pz4AX|+lm4rvG0LY-`?!Hdm5D;y zogJq-ui|+TrGj6mEV}yrnX~>yC4%syJ1E`3_!azRL?oZXP%Lzy3%qop_MCrk0^|>C zHB-lY7Ug^_uYqcl7HEQF{xG$@1_DUvJ#d&>BC~^@th-$n*Hv|%LO&Ui9B{M@41|$y z0|4K07{cJUo&90gW+kfapg4n(NtMq6xVlCG$W~$X15Z7SofLK0w@m7R3IVG3p22lzOUpR8$xB&QuIG4J*^bmmY65HWN!N-9wyegcXZVXi451)C6SYe*6QE&WGe(TO(#2h()*XHcQ`?(!H668Qnjzv%*6PMj#Xpj+KB=3)LB{|~5Hffp8_3t_Rmw$=F zfhHm#7+*<^`Cf9EgM{+b?NtFl#a~vRx{3%e*MMWQ0XlQ+56l1niulWL-j5n^kHC!p zGI;Kxzg1C)RC%Ft_AK&P7<_gk5%9~vgw;N?NeBV~4=ECAK0(+lzxIYWbV|~;2M7P9 zC*}gd5~M`DWmzD8WsjW7@`#i9fsTz8cV*`Pc{8l1a}RPmf1^F}9*eeq%6u)RV*BdI zxu3vFkvL7on@*gd|7TJD+@8-|^3s!K-{H0s0=U$Hr#6o{rl~c%soPp#{>25LAST;!KwDM^en1>xf#dT# zze6MvLC7c&Wp=amo5s4+5hiPOaqJMB88@Rc(4o;QHR``HyMKXhCIEO?8d-5e8~H3~ zE?g{qu+CuksGz_SE_3Slivv$G4}7Gp@vl9XdL>80BjHl3a{IP?mF0+r*#X^gJ_V*+ z4|-j?$khJVe=niw4@5udjE*t{gfbnsk3OA(38!XL^gQNxI~|@t8m&l?uH!TN9>?*F z_~^5i&)ApSCb=IKXo;#O^i#MDlSB>UR9qR`i8gv0;g5i2JRhgK&ZyPcG zWe0ujO{DaM_*TGUfHouiiR{*ae{KLqvU^+Hd=5B?Z*b#Gd0^rv{%@9shkNNUAAuYe zPdx|Cf2o2cQvkA=VLK;5tChnv7lfb(>wTmkU%vcJ7OtW=I z<^bNBx~r?RQw8!9or@R0PU@9q3y>o_LZEobNXUzc(E>atDG|FwC!Gq5N0jkF`+Gs2 zsK1MM$guc=mAZe@Dgi|**{i*X|D+!O_Mkc(cR3KMY0{FCk3ean3C-#lAXF>angBs2 zUFCx&DGWdW2$GW^oIQNiS-o16tV*U&IdCDmxA6LbzS$2r4VpeR-^YY{H!=1|&8o*- zCAUujz0sVK+W%A5TDa2GXYfu$c_)*p7tC3XeS`}N*y6HU zPDL_iNT5q4zJO_eYC2>g#w=!MXcjt+;L=b7LNjO}6;PpIgE0SV8;CjZg`2{|!%SX{ z2HyjCgo`fbxJ$e_Ck7j~Jq{=6d>|`YUxv(^_TY)fmXJ2jtbeZ+cxLpM2R)g*Y6A@| zW#Lun`o}-c6RY%v`Ac_*jNR(9cDczme|SP?mbz?mJ+^m$NFv; z9ve44!u9CdNfb_~-nR8q8QE%=e~ zRwg5WPn$L3;zEB#b)GqoN0Ang^@j>M0>emmw={5QLFsh7SrWL9+zea;w)ZYs)yEOV z_947YFR8GT1_TxWK}Mkfp0@XEaL^O^wOfKIm=?TDbQmyXXbIQ}k8)`;GO~*d0~s~D z?`6xzJEwbLT-C-Xa+jVE4_c~cp>Kwue2^l3gGpjDRGaa@Yym_!bF>-)0)rM9ve1Cn z1yX=BNz-BugJP6yQ*}96u;C57qG8;8f3FUG*LaNe^!Uj-nVrLV)+3mk?Jhu&!@xl$ z3Xrqy?GLYmhLzWR)c|`2aE-+5`ULnvfq^a<@|wFP1E~Gp7PFJ#Or|`JQKUYG98+SLMYVzl+0qdfwHTYWVC{9C0Oggs2F`M zFITuRM87YXP0N0aLrdz;tI-6PRv@BI!K{d}!7rrl9Dvf#>}|Wc%?~pIg8s4$HQlCk z#x<1WKQUWhyLcCh8BFu1m>%3k6sW3P5UMU<?uG_;>QRf>=(pC`8}xoHo&KAW z=xK#y;Rsuyqx^>NY8K}`q1Qb#US)6PHH^rBmPbl?f}4vM2cU|X3%6sB4*a%(t5+4& z7L&!3_O*QM9ck3hX@^ksF3!W?%`ivF{+v3!U$01^&{j*BG>xX=jzKxKc7 z>M;hOsX!>T0I4n{=%%9+KO7$xhUC5k1q3e2;7e=x`85pFp?wYb6mpAkwYIZ|LR?ln z|K0wEO#h8IKapc1EC)NBvigZ7qa zUlWmI4n)3FV2bzXeCqgQP)wSfk0ki;;9c>kE0hFkAONFWEQENN5=wy^+oo$HlxjcGN~s3`i&5G2<4|7;M6F3X@9x z$$7%Ubn%G#H0jDO>J&b^Q_QF{B1EcM%6M^B*8m7eghDxUSv))u*7q+wC!|k!YL&K9 z*CUXUT5`gbFLi8vr9HCqPWMh@f<6X^@0@J(lf)dRiE@3C#`_oSf zyQM>T1;?)^P_GG|K0T}~__!=9O9A`yF;fBt0~qV#Nzhn*+q!lAHPywC%RBhXcH#oo zAwK$FT%>8_Y(1kgb=sorvQmaP8BP%3aC)!A81Az!-k0;?rsIyd$;^M&_UkU^b>h?r ztr&d>{;GUxf;`;1j{>JJ&K+cBEpFxXIS+uk$51OhM)#J-Ss?=e1*43%2;Qa#b`}rk z74~D||IzgxU_H0*8}K(gHa*D5D9LCkiqcL-8ffo9R2oWq_sI%rX_p4=o%SAtG!zZ( zLMm;v_j`WA^ZUQ=alGH-`2C*8Ltme9-`9O!=XGA^rPV2sV9lY4yO5W|u)^Iu#z_c6 z0k-XaFJ8Qm7;Zyqxm)k9;fV1aKVRP{l#!-SZKB9irwWlzL_~r2tBx+4_m&yM0v}%) z)oM1q;tm<|cPJthxD4cJI{Z9`(=~i74Lu4sn_s*fu_1r+^KnJuQV(bMCvomsCF+)`&`Dn1%~$bO<0@>qf2BPf&=%^<}s(B8^Pk5oI8e>eF>Huo%tgw00w z9qn&l(WEzG8h6#~{Zto-O|*a}p_y&4IqllXt`}Ruj3mQBLmHc`9xu$WP)lCkHw*;& z5^FA10tE)Fk>bL-2ER!l-C zPans~p6XH?_M-yqq7!PdjmynF%q+ZoSBlqUb$BtH8OMx-?+a61N&w|U z9+9B#1u^`Hob-(rm{c%91&mY_f$FA`1Jl#n8Od9sTv?g&`7CXJfB$-F>Ky*nMq6oV z;|a15LhiSQ%^tggXdmmGway`*5>`Jp9`D%j@>5#=aSFxK!*Xal@06Q&V$Ro3l3tqj z4Ga&~q|{mRh1&J_DK&s95uE)V$p;t5_dJ$gkaXKYgVqR3O0Z7iAcpB$rXbFRL1(f+ z`p(Z>mn4F&62g7YOR6fh^sL?J?{WJCr75rfRl0A@zds}%2R*RNtsY^bx=%hK%F>R# zTasSKh_83woB_cmp-D5zoGZu$U|f<~V>mVmcfAizl~;utxBkq!F< zY(6l~Nz|d>Xi9OS(-sLPzze{6f(u}l4-!Qbx~w#6%qj``Nb z+OR5D;eNK06T3{yz6C-?WGlhD~0E zovQ4uTQB+^P*LVxuTEQqd1@Ue_YZ}_y*8bnGGC9Sme?D2kehVHUT??1eS=ck4-g+8uVx?*~ zb*<{!*yWH@&msQ4@z#yjpfxid)+ouq1qtv?FsO@qw0HAV&(TYu@vayj2OAF>~UPN}vDCw@5rY$g9fkFZ#4Obd{yo z)m^)#OWY6YH>L?rx~$tD{ia&0gGY|xbYb*HoI96d%A}@H=xF}>ptj__zmO1G$U5t;y4`#+tO9Kq}f{ zklh4C9+KV=ur&fYf-JvGz~lnqpb3ft-|+BMXk-w{B++y?Y2%@VX2{Uq+VE6VJ5p;` z6yA~5ZGM+$5+eVieq@(7<9Xe;Yh-sd`Ip%<>1Hn<&J9i;`=@w%ez`om@<2kuVN9qy zf~&aTw0lO}YrPDoiY;HI)eY|4DH~7>GCC_7<^A*ss}ONi#^XxYBL97YpJVZXXNJzs z3lA;{k-dqmh$9|oC z`|bnppN>eUempd5mS|mNh-SWV(3S(}`I{IB`31^EiflNPl5)FA>%4nRhnees^{L0$ z=%3P*hCLW)893Fd1GaqZ961Pm23OlP!YYP6bW$&QVQ`yS;5^$3%Cqd_QeE6-L8oKz zSmds#%PME}bsD_tAOA^Q4058`yCW$#^B$j^>fYVk6Yd=rmoV~<`oLsd=TiBYdf^LD z$L|lnOr@I{RNEIEXU9K+AUjkaN$s>T$ zuxS~%{P_-%Q0-9V1AQY;4<*K__LZL{B$h(Ie8{r)yV0RLx`V4N9yUNi%^~e7O8C>ZhWT{{$WGeTe)g%lh2IL zWuChlhU_o<(x!d$GMChub^4Da48oG)zTGJ3{(CPJ`90CqankaHysvS=Fn5Pl+f6G# zAqvG{&Hwv7y)YB@HJ`dt!4mgTXx;HTZ@s;{?W`a9Cnejz0WWX;3Ei1~At6TAG|zh3 z=>0kO_+An94l#4Gek||MKC+)vcEtb5iMo+pYele`5y+aV!jER~Un&hOF!ehqQ@s)K z=kv-Z;xeuY^heKRK>)x$dzE!auhvu ziGFb&t6}Xy7aG64$=_#>XJvcw0x2v9_r;y@AJ4_pV2AwvIP)>S8(IEWX+7Quz(arY zK9lP`$(j7`FS~uGOHbGI8ms0ef@n7!_VvV$1yd3W)yuSG#*Y>utli)wfI5=cWF@42w>xeX`{y-$egOa2o?p;$c%n9XaeG*JXy|bN1&Xwe@A7>+^8`KNR4W|i zc~gDff?CCv^`Q7N-W!ia?c={sjdoA!6Z57C@3G7#LU&_9t91F;-uy3gvDriEh1}(8 zvT|}0$g~IGlLg@V*|wMs$42o+BmWTl^O7|V_Sf#6@NfAlSmBn*v*rgQ-qm#J6YsOf zGpMni@c2|*^qJUCYCe~_Y9$t*9yoj4pn+Xs%g_1HwZE^Rw1^y^(bEn4t*}l4)d>1n zD(8VOEX!B;Bb)wlko)(M?6;>1fFN*G4x5bpK4_PJTKGy&s-JoJNg>-!Sr_Hb3~HHv zUzCY?C0Zy{!zfkX0LkGvWQ?-!-14i$nYkRwD(y}yc9u`N9J`~#?WnQd_zLXgb^=?O zjGDT4$gHR&+T9aR{AxTR|FtUoKK=$vFa2QG%aTc!_p8%3bvN`@j`@AeIC=kf=0%|x zZKIc?-M9`O&=hpNH{NO2&duJqY@w_|_Kqy<#b#|5hdua*f8#%XkMNQIhiXA>j!mEaaDO*`%XR)7!k+e2&d-K!PUP#p!OFCkxQwrv=kagP+P{G}Nzhc@K0eWVXWxq#a{-WhSN1^LnVNTDLN(@sOUI)>m-1N;eOz@gd)Bw!NTG81vphFzvg@W?VlZd^zlX}I z6@%lw^y`Bjd$#Q(den8Js&|a(oV6kyg~!W<+haIVeTwrngF6-S(f9UKx#e3_J>htKgjr|vshX8j&5P#cQiS4qLmk7_&-ngAB1#XJ zl-$qwb?YCk&El8Hix_+pcd;v5;$}Fz*o(4}Q-AUA4<9%U7@!Rgl?6X#92Dp2Q`>269Ko#wgaQ>(x> zF0jSt|8?1DoYb9#3OxB*IpGmHHVt|<3p2r?+ihNcpL`h_huTuTTsJF?OlP zGb(z^)r^jg8L@Mz>pr&SjNlj>DyAgV{JP4_741(|#y88M63f%JvvjR@%eX?tmYZ6u zOYi=-2!$U@cqjsLcN|wYTgBgytC8Rx+>}8k5r6V8XRXL(3XL*pm=%gdGcFUZd=OAU)YEV%*h@Z7xPGwmu%x z9ADe^V;kSRd8453WV@uBIF|)Eu3=B5-|S?Y3HmhIdwP4ZSLD!BER7x*>=%np+rD^6 z%ksZRJZ3q`$jK>-&0L3ud#jpm4Bm(*tv*O@LZOBXz|>65GuIf#p8xVRCsba~bFmVk z^5aE)W&rX}-}`TI%}PIVd+tGx!1%-DE!C^H>6~3`{j||J_P>KE>f!W- zbB$xQPdi^ny=Eygm%D%VR^*jGi-Lk<0+myI79)b+RClsnXFvBRW3#Ns0=Mjs4j}A| zN>Dj~k%mg205?XhZQ94z(DM_riabOF#onLo?dpdP9?T7uQ&v{)|JAX2)9yH!RLYhs zqWsxC-XM2*VSEOXL5oHOC0nBSPM%Z%SXP8G^CVOd z_a8h^8fb?Zq0BYnt($2cH~w1@jKg&3x(cjQF=9-y*A%d(hJW-1CR+K`6r*HrIo#UV z(+ae0Ink)3WDt&3LGl6^W7vQir~>kZ_%Wzp$oZ}l!);2C>d2sk*FgtkY~_ogdmEF8%Q7H0s*XJcFr7A*}eF8?9j`$NuBmJYG(gO;)fEt(_ z{&&)0`c_Ukga)NL;?~$QASaZPhj0;bF|UePTAZTg#~1Pl&pn7wsZUzI9pYu5)g-s} zRulFdFBP-O%CNp5_45y5cBk`NvpZ;kVzWBB`p14&>!75ebe^MOlRb+!tR-YZ7e^3j#c7svs%A?gDjYeiWmG9d7=kI8`72btp6_+CMXFH z|D2Uw^67ys0skjZ#o4E4WSj&sMZQpy5||mhzy6Dsd-cZ& z?S`1z8CR)?nPd?A{Siqn`vd(vSrGXmz4B=OR17GV^(a7DmTlshb{N6NBU^P-YiGy^ zOh8N)hv|lc84@UsYN1xe-b7B14)4L2u2sH2N3dNNl8-#lo1xNTZWvZ|>z&arZ?{}S z!{VKk+6)I}HhnW*LPJ+ah&8mupv{4C){OR1Nybf~&xRlZmbu-3|3xZeT6jnF&d?<@ z4`1$0z8^FE?!3D5n_2xGf2CPxni7S{+i(tFP_7Ai3+9a z{&I?wg~2yvRNsXhYglPZvAGYxxk(~uFv)u_>Lc1+4qURjvuxrnj^pLW%v-(3U%mKgcB>3Wq4b(_O^+2WTz}Yc-0ACDtGJ5Pr_3pYY2kmFbK71% ziwlQSFSi;DD$W@zZl;8x#6aHibcPn7;F1lw@CHAI~{J|8nk{A$yihN>rcKIWijx9mYAr6Wox$dX8#h3d#2M7=Tkz09I z-`;I;1U)v3ul#0_&k<<%_0bUr%}OH`f70e3KM;>dK-We<)`*IB94x2QNWfk<4+%{kn@%>HWNP6r*O*J8s?iI$Dd}}J zT;7a?qVBAer?FvAs*h`N>f&mbGuYGD54L~LlcorG%IexUk9~-gHTAza_WrG>HeG8P@}U6+DI(Tp@`HZb{Or%^9!krc zG2_5X?H1rSL0?cGQbts29qp^RjimWV(3Zb+2OZ7Mow2y#mVJ?Lp(|AxnT5;wV76}_ z^lbTGU0DUZ8PT7Aq^ov(e0+T$6a-pL8rGq0+PzT!F>!EQMki6{!|!PO^*7G%KkNwk zMxXD2rUo1yS?FrY8H8Y_cn61O5(Xa;0fXSx2U;>>?Iwrf;b|ui!S?eor&;}@nuWQt zWA@|UNiKQ&jvf9g_OJ>ZpYHaoI_6gCcpNtvx3`}E{z1h_{*$NLe1jGX-R^bSu~Abv ze(Er1^yifjU&PiI`&c$)@T`to&zS$f?ORtHH~o(_*iZ|4m+D-HpALHv+m00YsW`UKJ(~FLHB;6=BOJ=e^+chp3L(oyjL%%_ z>g&nUn%~>s5m#C*aG7@re^Wh^*wg+o{0|%8tV)jA?n%+p(V1ZqS0R?>x=7N}a|q_} zsc=^<&>-k}j6=|^tD0QYmSq?VC7i-QGxV(a8t{q|&+5g&{CTGls^)iB?bI`xSg=IdD-}noq^U5veiKhMxT*Kj<-eUFw)D)9+2Od}1UcR@?hD%E=+#L_6 z{oL%VTd}~E{vJI89^MoOPbFoe+yh@3K~ygj%e?{D-&y?F`-f8^R@CpaZYR^NwtXx8 zNHn8i^W{FuHqH{={(%%q$q&#;cH^7+&^RLt$%$aLmPVG{guwz1&qhr3j)113{U-Bi zaO3QG-?n11l?KdoXrx^6`SC*cTgPT%_S~f`t%R6 zQ~eowAL1db%ZG?;JI(9VW0V!`|4VpBPV_My)#c{eaY5I&!}Rw{`h4El*f?(x(QRC2 zYZI)vl92bSz;lSu32r3J`yt2awn_$5B60b0>SU(^=@gV>xJ(f?NQ--fw9QrWWyxSj z?X(vmC4TG|HA z78zzg!V4};#P7q6wUi$lV7Oj~FwmE_07pi5KDkN(qz>T{uC=7tpkO3FQPrN*n9mMs zEhWIlH$k=>1KA89se)_blf}uLl74uJe}c^_nK3CCE)qbw6X@<6gpgSVdYZOwWOnh8 zR2V?GsQTi{ZL&!k@J=7TqO*9wshAlmZzx1*SogQ8(7*zFK%`clES5?7!TFdZUKFf{ zB-pr#^hr3nWiko}aQ@Ltn2mwmJF ziGb|+>w0ayE3>HHR8Kx5Io}2r7n+X!iZS$=qlZpjj`5<+3aDr9m~^>5`>gWo!kR)t zcqIt$*7K5~*NTMuZr#ot_MPg(+jwRMA!q_t*mr2yKh2Gnq((#>C}8};29?}yE?qZZ z2~DI?Z6M7O?vdhy`F1?iOjrnTdX~R^tC;7Thrws02NrAwWQGO&b@acyx~~dsj0TGs z{?Wn=iN2DbZ}$-S$h-WWK2=MeK?ZGy@!Jy!@B?Mk!VTM%)Mb(#QL0+L5nPkaM=1YO z8P2%K4>ThW{2m`0_RB1y^(N>xKc`Fl2M?Y_ja{?q7lwoPyYqD3DnR>Q04p>vhGVtd zfbs7``IS(|vdR;}yk~N!!lIJU&zclA`}VLc3$6A!hG0OIVDc5+2TLzS9L&Z|K0ZF% zw{P#6)b&HR{W6SrmLOq<7=QUw#U}OuL6vGFom#*t-AJ+PQS(~veJft9LuF_6U^5ZL z)iz8^=gXAw<;-ODY6Du=pyAVG{u_4`;b{Bro<&P7EkgW;cigxKC`u~%u8M1QvrSRP zIX2ccFOSyMD0GHWQGW1CW<+@$_wMhRyTMlB8+_i*nq-3#V$fR=3^Q5SevwwSp{Gn= zja;CrJ+?7ADk=^VgZ1kpKGBE_zh1JZqWrsGLPEj<@c(;t)L?^f#-hGI%Lk+V+l}7!i!HUXabpX2kQB=Xd8icN4{s_GHMuBM}>qs zhg-iBA0r`9_$5)>0-L*F?xRZ=)1Y24mJC9V2&*6o_`O4p^tAJee5$Ce6s~4`Q+-LL zWsJo!69*kFb6A1UYUfQj02Ng3o6$K{XaCggW|oz14CkR*vHkBBm@ats;mWy2&oq9Q zue-|=0lURD*=bi58h>Pz4IrK#s();`V*{NRTb2DBs;jb!&odd62KEjX(LUG^_1<!vTV(||Q1V$#D)H({Rl`yX~XaWbvcYihGkH~Bi3axE>>VYE_ zI#UlvM6?SF!=9+S>>!>;R>+ud2!E=dUrB=5gQgdOEtOhFwmWLYUwiN3bN$4$T2?RR z2cs`%q-#>OUi2No>}u|a{E7=~OS2a#I)8Z^k#l=rZdU8v?ed%mbV=j9X#dpfnyhwX zlG+B^)$Y}CD><#j2eo|iJHCc4P#Zrf4mqM@F;%mO(=hvl;0yL=l5@^LT zTL76)#sSu9S{j-tIzc-oM#k>gA`d!2GKNc#prGo&YD%f+U+!IG6IifIWIvlx&;mle zDvDwC;Dgjt2xx;zaTGhI@39Q;K_jWvQ68Qg3HwHQ3>9lTNnR?2B|g)O*W_H|rNqQHvduz@h zB(#l~{Ee(cNf+w1tHFGh2~KluT?Q@bI_$N=reE(Ns~VUjVo9}~t?h`GBjlVPNJR<^ z3Xv36^c)9$@d@T!v6$VfrtpX{yj z7hkMbirw&v7!aFt7-d#X+gSXSuk3J~^ekGMq$(lu~;A}ntzgiA8AMYW0 zdg5QakOuF85Lx#R&=_kgvE5}b!)E7^A!GiZdCfJPm#{f);`Q7oXeW=!@g8kSq~r+n zB>RK1FOx(dpywc|W5c&)=~V3qC?}fQ=0b45O(3zXys{P;eNf7x>p zZFk84p$Yh>5b;zc4C$yQxp{$8DwA;7^#gOo*EywVK4!)6ITG%R0eeqxJ~`Scd-{1{5548zy|V@$F*YLU4%2(-D5WN= zLKR9w6qs(l^W!VGGhQnDr>?g!T-dW)>BREe9uQcZUqe}SZ?t&s5=;z8afl^c;d9D$ zbaa?mStTKQZiJsYDKc~4$4~0bWN+NKao^m`oG_nw$LRT8YiTwBQbvuDw9}_g547c^ zlK2Lc??fyRyKoALIZh2?1L$~Q{7r_?!g#$oo&CZ@lY+AHcQb0TvOmyZwjoFo^?@7c zyU8C&NK{XOH94#lb@HK{ud1%Csxr6rI4FpNcKZ&_r8-QeN`fa7ArJjxLY*z;-`{!o z#Su97QT9{B&z_dYt07Pqj-glTRf zxiZ*}3xSsOn}n0){kAML)W02Wh2h3CaC{+S%`og@by$cMn3xORdGcN`q&>-KWJSLClQm2V*gt#dF_0#SD){ITj(~Dx-{-MY6XX z)$l5}{C$Gz_;*(0an4hSr-TUD$^w%s z0+W+iaU>0sBV^E<0O@jrL=i(tZm#l%o$T_MC2s)>WtN@)z_ZOuU z{*pLp)cj$1mSe;7L;5qndW=2ckXujU4_3h?qZoY_7FW*8lv{)4+PaMS1(3EN>+-L6 zT!-jJeiC9Kr%Y!X4DtMBygCn!s2%3DfBY4^6-t6ziYk<+@H#ob|I zo!=?P>9L*Q3&dn9j%U}Hw6kA?gu&=NW%_l5*g?HCy-8IZM&TtZDbra=qWWiMw*TvA zMdXUKhV%s$E#IWb@Jo`~hMf_wmVN_b7mLk6ZC45K;E)SNbwTU}s%GE=|nlsC@8#V;lH&H;1_ zy!gEe;&ezd#96`)JXFVyt<@pCa_|XP$ma$ouBaQoDvCkG-?}#3=+-D(r9|#$Wtq)zNP;klkinkKQ83zyxiw zKaNDuk%BOEnE=XZ9iAnj_EEL$h8yQ~&|T6t+=@vCaUY~zeerEISN-1Q>D@~TnJVIo zDMZR>pHfxs9<_zDUhe{DVcqg%X0@;3p-z9&R0XY0cu;sB%5v!fZeMNS{j z5L|{=#l36OQ@wa0;)kpXbjpi2hV>+rX%8MY{k?Vsmha@5)jH^4 zq3zHOj=^aeOQN`=M=xSRM`d+&!$?QLM5p~|KYIL)YeNO?v#Vskk^=&Ih@YDuoI&!? z1Y0wjefy49rDqaLPNat`&NY9My6z2uk`Jq8Ahs4`87}tp_&M$nMy{9BZdS$Xc~Zab zTSzTjw+1E+pG0M5W|}o6+SLHOTvzem*!_Sf6oX}R+lzv^d%kX={CEU$Q7Avb$Z8VZ zpV#|7p8W7A5nFr zJ7f*LH*>{}V?T$)bO@bVR`aAMr_{+Jf^Xak%V3VG{U`;pU}nr+SUm4~g4dZMNZ+ayq{P^j^hA&c;kbbK1j18$;>!KcP3; zu8$s}S7p)`#i)b&`u+{a&nJweDob)6s>*nR>-tQTqbXxazszM5pW|$1hs?Yxx^mGg z#Q31BcuzZ(GY470{b3K!i#i}s7Rw$_U7z%4CQV>pjL`D2gjNKX!nY7EHWZunTLV#qp>Fugk)hg zHQkWXp_hQW_2|D$Li228dcsup12jwypw*CEy&5T_Eg52HL~Ftlo+yA!8_n9&{i}WJ zs8g-ccBG7)x-pnTd=IzLtpY317)th9A}Jm^sd7>=$6;%vkc zNwlaz%ZY$uC7U>bl~>PID-emJzPiWG)HDqRmw1q>>ZsMxJynw<1U zBIJGpn`1-lO?)ipH`&L8D^wF;Zv^$;Kcr{lT2PUBw{g{4i6EKHgVRrCzi4(*bMNKc z(>XeqC*mCWx741`f;N>$7k$tb(R{=_Aan6#eA`h4{?X4n`m1a;AFa9|tj=@7e$ogN zp5)Qn+W^NQ5{g2@5C^{8ZXiC^_sNs1)>4%1%E5;$-H0dEET6b>#;9v4Kp*Lx{|)m+ zK?WE329)pPP0&V@UOwu0nV1L#$1Rd>BW391oBLJC%Iau@+r`+y6tcytIyjN1UF_`H z+zvzh6gsFv;0+gte)fQJn=wy!*Yzuq3?&xoowKcFk4w2BMBJcq-bDP}JZqI*u9A$J zEI?Gd|2C7(LKPscPYY9XN)@$TON-Wyc+jeO>2|gH8m4cy+ks@YL`#Q)jS*5E#7U)O z-W0S*E5NDTI`0$G&GjY^p*8t;7aQ+XC&OT~VRj4h^oDBXZ)j%HOy(iUC#1zeqpaK#@8kaSP@#2`irI-J_$cI{^E9S5HqRR9|tF zrve!yfFgBuw_GqPNEBXwfRSKqgh%!AX~Ti(FlU%`G z*zGoA$2Fjho&GSZ78>k2ag=7krIWxI#`sTk+YU=fi;F)3Tk|d3H=nOYcxm2D%SQ!t zZCe(S9~(9>^diGL6?vnVR8*F-`5#8ny9P{vsl+6G=xo3Jg?z3lo6hJ)O4_h46%t{G@>eGV+|r^4?v50AIjXiR`q2EinUz|&rA+Sw7R3Lk?w zy)fIi!}B0F0cs`4G7qZjiR4#eV$^P7r$Vg6#Hn)%q8Rj*H)v~Xi*k?uc-cO+J~Wgd z67(YuN{EXSGN^1?Knxsa-qiU^B4|_Dsn~~k5i?lMu^=#pmOGlT1Vu`N1#HvFW)yfw z<*9S9u{Gcz%0gL*ckiOyW^xe~VPYIvot8%}E?ID-WXTCpPzFR>Jr`$A8!v>fQ*$Ad|0@P9> zS~*{JKX!E;M@#P@7?4lqwS-_S;2o(Uz*~>S9vN*+S|nX%KEAr2vcwM8;|Nk6Nq;0E z4EVwj&lU=QOQ}C3t=iADWs zNV$5G=8fby8eWh>C<&1-1jUTrU-qyzOF}JB7AK-l)Gx`PNCY98@v+pMpt5^vgyEs6 znr);qf|5N)#2-?4|9%V*97rXI1;ae+xFsN}@z>iff9D`(9*^Ep5JjRp0f(gDwW3JK z4!|J=kn5K;q(DhIS-v9U>MjG!JSVl)(9FTJBrD-Z2zY@TIPTe-7N^UFSx%hDtejas z^CW8)tSc%*bgaEN-I|LzpB5daeTij%Wevd*P#9A7Og%mO#U)2()~<=JX-yrMDyf;o z(Y_V89^n;}#XSa({qGC)*~swn?9)2;^$K^h-Eja;2UKhPu2}dI?aN!ZaJLT0c=X3S zWm)LFqD0ox0Q1GM2rShU)dS$(q=LCxP~5?aM^&zJeuO9(9e}H12LEab$MS*rM5-z4 zUttw*W|iVcoxP4*v2NVs~|Pp5(}AB3{Syuet+|GXz%GR#8BR$?Kk)s)V2 z03W5JmT-!|;gvEugCs#R8g1xbQ+)FvLm~Aoq-ZFIxR+=4xs*!7l4w+DP1ku038jGd zPa~umvcN#3xYNuLJ7>0=eksn6wPUBLE@F93$wG25^g@D@&DUDfu03eG)|RPnUekw; zQgETNs2)~zmrQ@%fYMUYR;_iEQo}!o>;7lt6=6$T=k?w?CBS*D)S1dyFT^pjB!j?6 zv0TAezB_k2cE*!JI^zwtkr4@#A>>F32k$xZ?_9lcmvpqbQ$LIhNeo>n__nd+Hnfcj zJngscR&}2d6;&4s3kw^WoI^*e%IUiF6j2(m7bJt(sAL!g%9+LKOV3QL-iru zbgHC8>C;DAt8%8Yhy9EhEqg0Iuih zcIZU|$<=}#s%Rqxj6!adWc55*gn_ZsER-KYWGTRsXa%jBN%9wi=*o}-LV)}{0=nLP z!cOWWQ4GWUvF&s7`< zW_eB!>l#^{oP2#s>@^Xs4^kR1nTF2t(s~s)(iVqPfkU3DsS~PPGRa7;c|f zd#H}##5pey*{HRmUWYICJa)dXt738Plg6Hr)>}6p?`OLc@$8P|wpFX5&fT&2H;P4e z#qATK&f~l#!mFHIs_z|?stNL%8q6UAZGWz|+%{Id8+5q1{mqj#N>diHQln zRFjvL{Xpe$ocG?%4@lpSSVOW5rbbNSUAyiPtM1ZyU3|^b zP2K4B)H}^N!aI~&m2zlzbak#G(W_4@KK4G`kb}|wO-Zou&QePhsoekJC*%#z=NIq# zS?EwSHsvgeFJiqfzd=FT=0)RiN-fP)V&=?-{+g>bO_zs#tk~Joe*$`z|htXdK-)2htF>m;iUzX}14Jz~$;Ei%dt@U1fE}F?+(VO15`?2dCC?@X!E<`RXOvgs+M> z2;=T_Ut7c*{F~1R23xFv`jUp~FNa3SAv+Rb_V8rT1`?DBhzL}?kSvsPozm9y-7=Tm zc-$=QA1f61OX<-$!`16WH=bLiq0{86zdm`nSP#9VuG z*#_LNE8!jB8IaIE3^(~XvNl#0?Rd&QTruZ~=S@&3O{S2*PkjFfhZC9gn|ohcP+WO_KXDXYW6O&Q z3&$bQ*lANT=*PKayM*@`hk}?Lyl6=6`~pJs2T&6sVFWA;R_IlvlJFTC@QSezv!2TS z+iU2gv1xm5Vfgo=0|EeNldWyh>7l+p0FQU-L^)Xv;pwy~>p$so^#+P-t{xtWd1f<9 zpD|)JUkIc8I&Awwao!aCa@o_(oO!K+wi~<6gUVgNx!i;Y(!&Z^7uTFm41VaZeTi;K)xv0<$kBx>v(Prw` z9}XC_D$pR!^ii|n^&xyrRI2GSCul528!e|YR+*_w1p;*6eoeXBvSA}=n0nGgfuo(ja z2lNeEAC$=zgwv*H_#&aPNuVvkCf@eh^^zDm?QC3c2wxX}gRPM-(%EC~FR2Uu4j5l$J}SKD z)U9Xr+C7*N(+`R42Q2nbO=}3?$ig$(A4lqm`rMFRJA&-712`N9pfx~YVWwsc<=v6L zd)Il-B*+xLh0+eZi$++~Y}krzr(A1l5aCvzseSDH`W~+h#ngPWeadc*aR?)EVYtOJZz27d382FC@c3fZ}yV20$gEXDLm`~dJnvh*m- zt6=&|Ud`C#q#`0yW7;(_63Rn1WRcegOGRstx@rgmy;@wnMd+H#N_d12RD{ z@9xh|Xe1zJE+9Lotf{H7>_nj<1?8$6-`+h@@+2X0IXz*KZvvKRJKf@vmKG3~kI>u@ zmpI|T-tLDI*Lmbmm8L^MdSNn<=%qLblDk~9h_5NDxVU&0fkR`&@z*!;qRCdnJde4# zxxTrvc2bQ1_iPYE(FFVvm_Ri(@nRp5@DF05lPGtCgk!?f8=Cn;1!Zvn4GKtYBwRIEIIk@@Y&QqnSPl8kL3= zlNcKi?7J5;FqNnXeuf0u2pW=7US7^GI5HqS59L_&AxZz`L;#8ClWzBXR)|eQi%pru z6%yo4?bK%@PqffJD0|+dMQAJm<$t?%Did{M;D45;J!aT>!N;!NfmKAeML1R`POJ0b z4!<6u2$f1lpqQTtyJ|Gecj;ua8gV}jBW%8|3m9CQZ7ONN*ouHboT5q)FIqz8nTR2G z2}-G9ED8xx&dwB41cxzfK)Q8g$r({(u$PL`zW;wK-3(>uienoSui@@(Hg;E+=!DcP zFqkK{RAxRYs*&xqU*)wex_WvWqp|DEnVUlCN_L;-i9E`BcWqt6v-?_N+3BS|M1166 z6^ILIB$bXS`O)GEj~2J=C;rC2Ag1_dH39U|o9H#8N~Zs~zA=G5tk&Ip z7IC0Iz58q-R!}W*DuU$*2?_KuF)KluVKib2e9#TVZGvp6vP74UgH8=fH+aWcwqv?v zDs2bZ_5|49cTG(^O?k*aYBJnrTy?7ad-x_jiTN^p<}r|~6EOE50A**b%I1)awR8iA z5U)f~Z3u6q{YYMU{|x!?@ghwp1~ClA07qz3sCiG*w_0${A(6he1h&nkDHas1!=kHk zPl#db*5w&9k3qR{!fyOVtj>ofvr~Ipp^hR;ixoacmRBFC2HCyauETIAWaOxJupB;o zxONOR;3(1@65m-5+so%& zvq}ZmysX+IC0{7BlPRger=)mt!MuGtfO=IUy46E9+ln3S1Li)($(+GpAG3Vy#?*eW z00G2%T{-CFkstSuGslBz$pv*6js7UU4!xIm{!z^{iw2b+g(e3k*gHUGm4IZpSRzOa zBn>$>Q60Hf0crPu>DGODNSp0R4dP(UN=l&fUl}rPmSTJ*#P+g>&$c9wCy$Rl^Bc1C z7uVED_E8P7IE$Pan-xp%?OCSR-j|)mSoW@ zaXUo~>yRvsfn17L=k2483_4{>M34gv_So6vUfqQfMKGLrBmdd3E$-}_-mo|$nF6}#E z$0*|VS4*(*45^l~=&h!8geWq-&G!ACFfwitWZ*hThAr8oOJu&?9-@hoCPIxkItbH& zU1)YiS5usysv^LUl`p)Sn*LenbWeaHb{K6!LOK}c zL^s&G9y=?mNlQH&TU&DT8Fb`l;U2rkL$ISzI46RF5gsSbELD(^pBnaV`F(gk7a@-& zTLd>`3R6l&|4MDi7nw`-Hi-J$Dc;V3U3ty(qto3*=hp{Oor2R8JJ(m?<3!wh$w`T@ zDZL}k^XOdNU2-Jkqac0Zv-^>nvfV6MN#ubk!TFS?GtRY<+4<`c0!E%=J7wK>)YaTS z$2Wl2XO_1E_Hw|v^}}4~acKZEv|=YGdK5Rg{ga->7Rau|2%+-HkQ0ZJVg(bV~VfQcf#za72vx&34_35#6s+p66Q z3kwruA&x=j5>$o3z$0JG77&dTm6e+})uLa=h1BRHRCoT+RKlECd8DMWA|j=hwG(4w z^*~i5sxBaI3QGW)HJ`=*pV9&>Ij;dV?qnj8L2scAfq(%vU=eC+#X!DJ8Fh>(lC zu_Hc9&)vl)Rri5F@V(Mw;2S_ZENMLMOnlX!DTz8qaQs>mGmJc~M-_6b>lrQWLgwK5 zBraUImESu&oD5~RrEw46(2P4?h+t#@+-6+cTMb}!F-WeVT|xe4G)`5Vc!#y_ zR|^RVH3^a!LvyN_$%tJ2Cqf(~Ji0-&V=b|#@dvIOu^Ft4&Ei6)%kC@<@< zcp4vxKyR6o#Y2c6VC&7E7)cSiZKH;Mbms_|sR}~lp$Hcm87V2L=ToFFFUEN;s2g%W zy@*a-N!E625ON0`HbUYwpZzya!c|%Gej3=f$8CMc055hC zOGWirWRE)15^3P96uLIF+S-j1-=Bkp`o@Q82whEp-cLtc5J1RYT@Wi6;P@Oy!u^|}C^D6;Ct@!89K>ID2_?tE`Z01RgT4_ePb+kN z__z*j$noS1H;s%IBa-%+07n~#9^+qAQ%Y#OM$>X6BF5~%Xj3>wmx!b4rHCOjW_y=V zAQ~KZ5GPfzWD4nbRBdt~jXau{rii70L9S6|X69Ken-hf7{PZ2CM3Eucv(f+7W)>=c<0!g?|plk9npm~Xdqhn}TUw3yT zjB1lnO@Xk*4>*@URCsj$yhA}p3Zk(g%u^x$m-66QJyr*MTy(+994R}g8*kU<_bUm}S`F)6SwYpTRMhalG&eItCSc^wZ%EPL2Q`yFkM=>DEq`$*xyrxY-6AaMaV_!? zt)f`POU3*rLzYSsoihbm<&nOXOK0jk4s?6xjZrRlLrg^oTq!lmcK($9Pv!|ncEULV z%9oRMoLu8S^hUpn46R!j?mV5|Vx%ZWrt@c&&z|%9Rl>VL-TA4wnOS;O)*at9eNDKt zZ{xWoB_;ms8VMM1xwqT|CQk362ZDa&athha9vKxC<L!?>Fw2F6wLwpa>*Q+cO2*vSC=H^(svl`!wdH$kGUjEY3F+$?o%syoz%Nw=a46yM z-ZZ)siewl0u&TB;HPRE46v)W+g`rm*TznHiTO9lr<@8pHTwPX+ti>_@42}aY4}{9( zTj-ODOCSOTRn=f}T_Y4|>||G$#xKD!65Id%_Zb=-A)Ne{_<4Fg($k5N4mFhN{L8+4 zKwWAACS=UKyedIKL4PO((i^n2v{bam1aqoMjRTp6f;)oPCJ>1$aB%`smNySA>rUcx))_;W2Iij`oB8{@y)e6-smQ2oEGn?tMry6Kxgh_6}q(EUe;s zhKC)qzRh9)QMI)TkX9U4tv6IgCxC5P7#L0i{9>sjNI$<*8NiXceml#%^712Hb1NvW zV0He4U;N|OmDdDId78|xOi|sLMjyei{1yC5Q!8z0!s`g{_lIc@FXYQsx_Q?;^UZrL z$zZmI(4Qo<_r&?=!s+R~h`Op)CL9U|(k%nK zD8IfSp=Bpqjyi-)kfLAmgdFdL62sVb1ST0j76l6c$-U(;VkBG9u<1u#%)xI;5~S=L zk+9oBF!h%~U^hhisPl)1q>z1z`0;S^#n{)NOUiP7+BDV>&QsPiFCx)3(u@QM>l!9T z$_JN(NbZ!W1!q(o%6VW6mG?zAze7Sr>S>S*2+j><#MCUJm#zVdHZr~-JCCVZ?M&SH znzEH5^5`4*IIQ19KwjgnHshQ`L|Fv#+ig?+i#BzJz@qK>dZ6yfAxi;+NVMdkue0p; z9-~&*V7^|w<^N&pJD{q(wylpnVj(JsMuey!AWc9)Iu=wwk&Ylmks?J9kS68B7&M}S zbm=HfdIXVP6cOo)Afc-?>C#2oKld^Bz59>x&KN28Mh@rfZ|}9&nrqIvJUl#-k@BFe zWLpNBsrRq{z5Wpgx0+VlTE%f}t3ESXmXTgKnC|a(KqoTpn-wKm*>wvR_ZPo4ZfH?b0Yd6GQ6L(zAT2j*kl6 z=ibVwu;w0k6tv`AdQUPEcI(>DCYS-Zy`5}DKln(IBbchzJZK=Gw8_(}uB&sb-pHFb zKl{Pz{d?*?GTKVbX7$e5qh56ftl0mfJr8F9CCzp44GZ}9kqyPMe?O^! zn1opxKrPTr(>=Ut$HCIZJfg!PO&$<7r3?dB&{Aw!xNw=Iqd7JJGY5afswPz$E$Wk< zP*$3iYf3V^xo>V404F22i~0>L6PKN zSEFVsnKS9ix=-okE4>dDt-SaBtYi}E*Ie{L+88T2^;|;nZq{7R;^0*0q=cL38|1CD zPy0=>S~MP8%L5j8n}|3OVu@VLI?{oJJ4;4N>YFEUh-xZWz+p)x8emf{zadbxju$NL zV`!1nRqO&ewYJmt7CUa!?~3|?Y_A&a1rW@vt3gYELTD;_dEpe$O|1&<7wABcauA@> z2Qvz#4#8K>L~o$2d8rR->+gn;v&oRm3vfY5Mn(qp!5%4c0szghh>f(1>;L;!IW6p8 z?AQIZ%-`>-LtuoPWpzrYMI~4JAjjw>QyzQMWS1=3Ib&1cb!~If4{SZM1DVZ6RSHV1 zdfA1X_R~I~j}h7Rhe`AFA0e$$iDS<~f`bzp!x8PKgh~W-TjpU;SH_Dz(+H!;qA<~LbSEuRz4O!e_sPa2#^E;u%kSB_P< zj8)L}Cachc$i*Sz-xn_PVf&Am9{oC005wk7VEzf|h8DJA{+#1R-ap(Hk_~)VpV&su zSD9w%>_(E^&Osgcm}2FynzlwIJz}W&B5WE)Kk9%Y;WXs2HNIxer5(4Mwpjm_V$_Ww z;^JD6u|I*^BftvR{4v`}{1bS1^2Y8Kbo)q7IJnzBa~RU9 zeI!)Yd*j%#KW;!u51W0>rz$UB8#fRpEp%B_5PdW3_5tnDcpb);6g zc=*3Igy+`EBRMKQvB#zUewY`AAQG(D^tZ%a*PsJeJ5zhq`)XH8`5oo4ziSd#eI)0f zsb}cFB-F3IxEt{!VC34@cpEdz*~+d%y)U_#RI2I+PotUsh}w|K#IgMAHui+IpKc#U zm3EIsl3FxFjte|AI3y(Gf@z**v~29K=(4vfmRmRMLpM+m>&Wi9Kl*vO8OZ_oWR1&F z+1K~C!&N;TQG|Z(5-hCLKp=MnV-)Pln6SB@bH01_8XC{7e_y(VJj|#S+l5h)B6=v` z>cBe4Kk2WS6GHylZ^zq~6>d*5N}f;9Xp&_Jb+5i0tVltby(3ps1P(PiZ zi6ANrQmxr37fjKB%++%RI@wr4Ew3CK=kuJIgt z{L={HTKB(w9Q2>?Qe54=peXJ!BDiw^31pH+P_h_qF`$dOPGK=s(0d(q)v_YAyA%s;|) z851?fOryOgyw3~Feaw_lc)vc$qBHe%H+{E<#@C3V{NLfDB{vx1E*3NUD&Q>G;idTE!{mGQx@7d8kr?Vs!l{=YxG@XKa`hS!Sh^-M(3Ke{< z5Xv?)zwuFJ&6i&lL#1!qTHo!-y)t;_!dtmY-hUcHX;O?h6R`bMZx(El2E;wK-i!`I zd9N?X(Wmw_9ZU0B5%Un19|Ka&h}G`Uhn@oHR5w`&s@DLPBxLYoS_*`FqS`KLhzJ8< z^MO2j5GbPEjk7p_l>Kf?KyvizuLOgTfY@3H5r`L{%#ThS`f`<--&ouhN^JB!|)-tPQBCQq{h zlr&_kp$FX1D-Npud*u5R!Pp3411Yi^@(zdbFY-v?)F5Fc^U%{Tuo90ka};#S^^zD{ zN$^`-su;#L7Qh6U}uj`sleoFGZZQOU0wHTO+Togla5D5Ew0~H z=#qtrD%SzCq+rKGkQ35jtqs!(iim9S4hEp35c_Y;K`ibkI0Q}V7XBw7GiVK)@S)Vr zC>Wo?aqb=V#M#IVv}VwK$e;V<@!#;Q*qZKFzILp|=j`;54JvnD%4}XVc+s#aP1(pt zC1AsbIyTIz;ADxf;q>+6>|U^-?9F~Og`}O?WpB3f+ZE`~#@q%u7rPPz4kf$CEj775 zQgj)A23^S~y}8y)TBm5&ZeiAII*|Xb(D=DTIRQz)PJjN+o>YZI{)*%6S#C!ndW{{oJ zL51C4KLlkP=I+Jg4q{GzsN;{2GL1hEUVg4hGyP8TE`i5F2;-&$7BGO0D_)$rpkzv| z@;vd=(Atd*dD4hzWdBZ_ly3D8hRHI{q$d4->Id(`Q>0g+~u;34*Ah`-?kTLJx zorY_fVjhSmY1PBlzj?CU2Iy}ju0(9_3n6Uo_!+cU*r7SI-D1u zN?f+frv5g&)y-CN8*rP>Y)lH>dBfu~SAPGkl7XD>AG9iv%dwT3=I}hfA&zqES}eqm zS3rItgmgU2c2`E&?lkje6g~k1EnkX@kM9gc?7HBm`xJ#gi!+(3_BfL{h*%>6-hL)= zyBGby7(7z^fbyDrf!}|ZgT^);f>T})!lde_XJ$S^5;X-7O44x6J4_O9fR=wlV81u^ zk_9Bqzd`t6C3@jz`t-zv8WL`X!%!$<^ZkS_b+xFCn_`S7Ur5j&d(7%wy_(@84N51g z)~0;u!S-!o8&5M9yo{lj$W_t=^m1d+(_XW7ZQqco75ztO-3?;o7kI8FNNZqD&O2YMZgpL`b($0`LwWYqARZ@3JdhTzlc5+Zg{Z#9*4cgw+${1sE z<`i%{XCFCRIrHKDs(j0atRLEAmwvM~)25d~8`fyA_sbDvuU%&?3UnHchhM@>p2M*?4808*R`LVw z8|pcrY*LT%@QAZN9O&(hC-oV;$6(=BL<|&g;WqUaBe~O5QBg_nMkeplN18ii#!8|k z`m(i?x}fmEKTA%;wB{Yr_#?3OOH`OC_KNf*;Syt{T(2jg;7Q$=h-oO7O&YXRI^K?}(uXcJWP__Yp z>+j8|X!iu19t#BBJdcuvg#`_CS3tfv0sKS-EdULS*LI`M(Vw;65V(|s?_=-4XOm%S z)|8g3Dq04EU-bR99Ckfxvm4sx}Z4DLY7KP@tznU=;Aj0`cnJ{}q@!4=xHavV^ENaH_%h(6X+6 z=;vp9xD0=e^usYJjZmJ@Zvtag4Xf7_r?4&i%KKwLs{(*9wDpx`3?+fw`d~+yvxZU&cg-jNcy+6XUH5O-;SDL*FPg8>oNmv2(0X+r zlU}*~px=j6r*y7eym;|hLCypP zW>PCUL6}u!lGEl;&7boWJZ-c$dX_o{z`gapcP{{$3P!Jd_%gf;lMV>Q3>!wEVhQPc zJn^+nY<^u{&ip+)1j9Q}R`Nh~DjGgAI2#ZxY**URu)E>UTYa^=F6bwhiC7^(^092+ zp78zqcfE?FcQxivbuW^JN|TWFdEf|y9fNf2{O&b!>tA;N4A_0o*1a__yL)Q8$S#&A zJxAOOAJZ{`haZT{pu3_&{k$r!$4FVKliyW`AE+?o1=sVnif%XnJ7sb{2X_E81Q*G4 zFDMHqq{Q~^JO1q1Gu>jhykJ4fP(XqFegdg)!u=u|o>q#y8&Do`-k2g*MqkSBxkMEZ zBm;i4{!GBjv1Ld*fgFXxBA2$G&05}_NwU?px#8=!3(r>@n61YY6pid>d6UY+NYpq3 z_O%u21ZthHI}%-BT*wVd&f|wWH%iq-SA@axD zd$QFlXxu`>odyi4!za|w9s3WNVCmRdS`-WoQrkmp|5 zT^5UG!%34Wrjh;+DDWbJr492=eb?>m>;%lt|BaQMo!x_?0}oWf9D3HUPtcH_Zd3;t zsdDUEKONO8)%!oY($>e|(bOzG+ul7DjjW5wxg^W1o-j|4y1sST5ULN%&yZ-fh{2Ps zt?in8QK-X^pf|#3E&+*0Prg@8b3O)4Zx_&eiurf0DKJV~lfRuFL~?ankBV=03d!7> zs_Y-oVK^gkPkN$AUP;5;XtZ$OE|P6AlmQIbl{0yv`l0RTQ|er;$412**gV6_f{gm! z@4f-l$X~!DZU|^kO1Eow_I!^G{a)U`elufm$Gwt@RkRu++u6h}qX!RN5?osy>X$KZ z;SkJm5-rI^5qXDjbHUENi3ogt_X@f7U#>dPKcC$C>qr%C<3jESZqiDu{HzGo_LmEl z2G7rNkVRu49u*Ku2B6XMHF!}gT`!4r&IuhkStH4=V^Ty|_|TPizY|^t|Kzr9+d8OB zM*16b|M~oQl}w|2mDFVi|A^sulZ>p>FEX7jM83AyNaYQh2oV+t6&WjK?5kNJwF%kC zsn$I_yq%4HFJjmd>Q-Hw%>AD`bQ6bp#rVF#Z)5#a=L<$}h)?VZ8t1?2zyaaFpMRv> z#@C^#tkegql=xE1Q0Q>OkRl0J2cZrT<~Bgelry2i#E%8?-{&YwiSMJpESy{q35nA` ztrrWs&FG>OO;J?wCw}$ur$-ofAY?x%i<_?kA!e0vJ5L$~Fvw60sheL_hFPhP+8BQR zfTvf(W34}4G_yf&r@HWM7|30f6p)Ixs!kQbodEMF<60F+?vTb_9YTz z1rilN0@3thU=DovFb2|F!bVg@`?-3EP{MGH>d>WJ_Jny~8znuTFJ4qsM5Y6iVgryF zSxJx>voZS)S%BW`4f4xqDz6)S^#mwmnX7oT6r@%cWEdmF6^df|0?%M2@FyPnsb3|Gg8!2AuRZ)-8m!cXkJHoMELwL*biAI z;x`B{Vw;fE!1PG{=FOWwTNDg*h|+UwFS1pY#UFEmw&N2M2VNa2ug5Ic3Acb2>zpB& zsx$&H(GKDXm@m0RCY=+$3^A4n3=JK)?u$mc3Q<{F=k*5bSpqc;qaaU?+6lGcQ|Q#k zi0YJ!q8e^5~gTi`#eOYaAIOQ;qfh5_Mo>WTkx)U=ndnPpjCRgl<4%;&|kZqWXiH zo7QJh5?etvx%DvlF^XGSj0$=oWYiy#82#IsVY0`))Byf5a*Dlxz!P5`;^n=E9TN=8 z`h?25x{rW{6421JM7oXPr93!J^sYR-sz1M2zPJKT!gr1ne;<7FI0zLEh>B`~sDevW zD^Zz>WZGG|u7E~62){IZLC%wybVfjkoZ+Cz$TUEVBsnEIIAj{vN882G+k2{!q=p+h zg7ExEP6Sc~00qHDI;D%Gk0^LBrzRfuwg7gYBIU^k)3qt#>@IA`mVs>YeXt)n749&y zQ;y>M@Oco^>upnkY#qSZPM^zoM@`agcPBDc#Cmi#-BC^wnKww=I08;LlnFb3>HB3m zvG?P4zVk8aiFzT2$)r2tPl`>}GZBHJCItn~AV6lL%a^AclmyL@kPFn)FBqD2u&o}| zvQAQIX9bD&wV)>%R&8(mFbEL6b$4H#*z|E1I3PkP? z%1koQLP>p?L{J%#!NTX@uhAQY7A^|yOHsI_2N8ddjvCvYXT2d?MkEyxLhx`@U}Oqs5K z`*gGx*3Kkw!vF%R@}Y?ZAauzH#y7q`zH=R%|ElVHvSswJFnSnhP*alnse0+z2y|LY z`EvtS$qT?9mpEUbu1fV$Gjc;~9iHU*pnNg|;$brzY^0Kin`VMh9>%=!21OGB-$8JAK!nIhjoTgen$5W6yO zZ`^5w3MKbad->hHVt5P;q5KEQ49>8_)q^`cPqm=DAcoq6m+m=~r&nXe+txYAk*CLF z8r)6&LE7Rp#Y1HW8Qibpcag&en~wr1GgPvqex1;K>z1~G#e1}b*=hKn#{hLghESYx zzw-b{<`gxABCc|L8Wbop^LJtaBY&B%5Pmg6s;X&fCSw85T0 zWu`pPb4mw);q(W-D^A(P0R=O0U@E;_2txyS^*on=!0GMJxl<~C0>7LBPc2`M!bKVs z7G`1eWT6G}(dukG4N~7+DFH*T*QFN7f}NZDRfWlD67vB%uL=8^S)TECIoWb&)URQ) zZe-7Ijx8zm5BaB#rrctZot6xhq{eFY3`_~4XOwFE=zNvctgy{?JK@QC`3pQP3*lj6 zSd9}x_T#pE+w{=KT{ z96P=`VQiI?f5iuX1&pETehe^oujWv%wHyvMS5?C z&Bcn^j5C(}ta_1y$2li=o|)JX*g(~Vi`nr6{HE3m~>3{T)-Lv2AtM;}IF zsDD`#^Hm>5B`#?wL^on>v;B9g`)@qNbu#!C^?W;;^!K&Rs^odfrCeTt=_2b>nT*lR z|M~iM9!w89UK1Ou`OHWjSeo2p5J~nrK#&t+i3jj;k(%wYF$xQ>2eBaqw|=in9fqhj zL5gw}QgN`*g?M&;a>3JkjK`X2xxCOXJB=Wrw-_euf)>STA$a6?d03F1rKeFmd{ZW- zr)#0s*v?M|;6$WrCaK92{Q>s+aG+4Ne$K=Hct%$&&E1iYHSAhe^ypDa8_x-Mt!p9-r z;)Z!yzQ$Ypl7p26u1SvPbDN&wm&C=;qXK>T6NktS zbr=SUCoo%`awZ=|A4L=%MA~YWus&qQAn)mcuoQgIz>cq&z}vJ~pt0;biM2_5PNHUEvboMw<#mp%S+| z*~n14U>l!**ec;pTYIdl%~b)Lf{>>7xO76TD76;vn_7uKH!O|jn**26e<=k1IbzcZ zG;fyCFRK;*LenhCrmGklZbX%fcM&fN^ipv7+*PpNjJ7_(6X=;kWv`Lxg_apDuF7)B zMJ|UF5qTMdbaq9u2WH`!7m|MAt(!dBP5S9@!9pXSO4i^B=|A`A;8D`@wKu@!JsFg8 z5F;4%(}U1xRB`Q_9&#SZIA<^k!vBWDKZ_8io5S{Ytohn+;v==V@@}7DTK zE_ck0-L=tkA6O^NR+@_3mt7Lt5MT50wB(ghsgfUkb*pHL%l|Fu%)^-VjOvT@-T+_nmHeZZ(Epo&dju z){ZcQ!!2)(PY?2Y1cy0h2np0*$i4O$z36n0-MGAgS>;PDqj&gYX?`r*b=Go}ezQ zrUe@Rf6@Iwu=o>ehlDG=ez2~a$tL`Exw{Xca3LLTw1_2KCgRZI+o!;=d9xO&mf)&G zoK{e23(Q`dksu05{U{3QV~1_UZo>H`4ox_S zg!FRN&^7vUmm0NH+OdubbT@1UPtPc0;OnBGmF9Vwp3^0dykf&rrx*NQPF$n*nf?+m6uX z9Y@<;IwskiKiyx`x8L8QO4<0nZ_lS7DRD;)v7)@L_ zh+oMc)V4W_c&EStk=R56r>M&Im>JelAl&c608JHuzz30X1gg^415psW(R;AK{l22K z6EKTDV*ABHb(-|A@GCG4TOnB|D`8hLOxDxsR_inlf*qly5~v(;&EQBDN@xX&>5wn0 zctfvDog(rNr%^u4X~1C=CnDIZEt&F2=-!k0SCGgIVy`xXL_?S;$K1r`oUSTNMC)Hj z$H=uOB!9qvg5jeYxY~rGnPSzFDPE_ftXwx+NQjR85asnTLo95_@w@tt$&*SSJ8WV_U zHk+YP|Bz8a{`xxL!k%)uqpfN2MR0zGDz8^i{K2j0B&#I2?M&H6|CQLb&qOfkiI9y@ z7m#$N2hl)oJ@I?f%rMYL9i2l-FsN9em7b`wOfNDpzKirg@ZF(q<;^i`Lk2{$C0wFR zU-O|2xZ0851m-UY!OQHfv%A?eLrbWID1Ww$@y@z9ubSPCB(Z#+)yXMTGv2xYCgT6sZ ze?i{Onz}JZ5=H}uIe=1sJ`725hvZ~ z;<;C^>_V7O?ZlSOnxm&cOebBW#^C+}**eiF9!4&)vi1mq6sWmzN$OPMATb-lFBx?- zw0WDtB+kP#;0qE?llFAi@{*Xgsy*DYh>Dkj(KzL1GkL&dX{fNUFItw8=~|#Kbj)fK zu1bfeiT4|?nj-GsC_k@bvD7iVqgQ>%)$IaI?o>bUn4FyJ8&Wgnjju_#7BSw!t#ol) zbnQyoIry&$7z(rM=)SNi2p(xm?`Juunz+9?*{Rx*=@3RUnC#g?cc3S~h+9%|&^^to z*DjBMqCh?acjCV>gSJ8Jq6sq^n0LqU5jn4i2!Y@Y50dN?em2cB;OS?OPA=N686%+p z+6XLMf(|_8H=B#Qi=G7Iram1PV3S&r}IHVu9mosAs3J@k;dnxEkr=^Il|L3J3( z=8G~g_JH>>Npevjmz27SM=BG=Y^H7+ab+lE9v22hD89m;cs~J#AT#mEe1eg~kbM)^ zB=kqqp{08Ykce{WTxHSFGx6jv7`5CeoI#gN9rle-223vPrLV5%Y@S-LMEj|egIZaL zhG~lle214WIo_X0u|1Wf78l4mR1jKF{7~&n+&hcn@b%yQGn7L41BJu)cKl`g>Z+6_Uc*$}2ucwdGwX>|Msm?|mdCxmfE+)V& z2K<7^IkRLWSlZ09^mb(5DOTbhLOEt;DnLssaL-w%}@-LRpGzkix&3EF3(ka!CE@tLQBG)1q)OQ05*|10J_UB>Qv{+0)6N3G)KE8QSy?Tukph>A4449G2JI?e*TPX7YQD{6*$vDjSE^7H{@7^AHiB>$ zIp#)R@=x;Vhw?Vh2K!~cALhtAZ&@OslonF!qgt$URV}5n;Z41p*oRP_tKotU?ysCg zRv6kLUTxV?CsG`4a>Pw^18w5Cko_Es`{#%!lwQ*ELav%AgLS>CqyJSe{#TfDgZNxPl5CpL8f{*^jk_( zGCGX3#mXm^iH())Sq>*FT@9t9JOKBsxC zHCqW%lUR6cp<>YyAbh-b-n8W z!p=Ey-{000k+z8SZp z459YJ9R=FRTqc}lC@?x8+wU-`AVeONrqJ57jD(R1?LV6mG`Gs2{mq|cg#DYtBRN=< z9`u_e9ey*sgSl*a_WKL837*KHsOSv=vqJu2rE>7+6rGd7zWZ0my;P~uvo$WzYqkCI z&@tjjoNu!mj{*bZX3c7eO%5Z>o33{-Z)$u(%>-Gn>RdSLv9v#N4K3#S`m{Hb%m40$ zs_pm6pAhyNhPkL{XavI7PSMR26zIAr>F}ZN$N;ioL$G(u6~#RnZfac*(TZ9|;e
ob1IVJ0BWr02?u8=Rr6qQ1`TLzVHB+Pjc-DWHB86#D zCn|Ixc6~3-W7_grxWa?5h3Qo_4l>27&p!GNuIfW+kR)MWimeq$43+FnRI(% zIDnc4V{aaNdU{sZk*+OaY|pX^8~+7+N1l{v%4TIA93HP%>~^A_BHR5947N50^b=k12{?f2xtR8j??KZT|traLI0Zf+t83oOuc z_3h!Dam&QBQDod)5{JZUg!L(CJw{{zz|0syqgHQlee^(sh+bcPnHu^lR! zaui>FR@41s%rxqUj>O+u`9HRI)vk8)QtR`6`F85_!On#>F;kBp<$X~+t@J+smaJvR z%V!w>t-FR9G?h!nd2!DVb=BTe z3O;79eG+@Hv_kLpyl{4g2U6@GANbTv>BX0Z$W7B2BRvW5I2zdj)eND_Rzy|_Lv0V> zb9(*6<{~vURgV)0r1Q^?4)ZI+F_Rwd!F6?c1s96J& zA%KKAV(JXx*o?Cv&nbv4h>s~D5u()jH-Ax4IT@^XYF*W71ItacGfn?;2`CLme?7j# zQNh`D^QIL~&s%vkWEaIn_kDL9O|}K1>}F>&?`R-1tEwuz(J;hjl^o9rA(5rwV;24b zar+1QA6?0cMcaFjfxX^-`G`hkjd*vgj!TQRBQ1vYm#-czviSlWmCUZH>93h~uII7i zjC*@pA>?ySaOSdI#v2R2@_I@@NyU>-^O$j(uENIydooY_S*aCU)jQj0#8D*iq^E>U z+hwTo!+%|)qjXmKUM3qsn1iE#MtkX z`;zYJ=b(J#G!w1*mMvRcMh{>6B$rbGJpfTeG9STEKKU6}p{#f{E~G{N>NR}Y-Yu%w zwN=ki?&L}@0k!%HO{aBze4O)=$fE-P9=K*DL5N96y=Vaq*W zuUGWQmcRGoCV{8dfo2EdsDgft^e9?Gzo8A-op~9-Ot2B+3sifA71d^s#8Mk-RH^h@ zG$P^1nuxTT0A`J-Af7`=O-w+5_p}zf7r=>#SZgPvwQysm#Y}KM9}xxpZ#kL!e0e?_ zAKH$)k_7Lro7zVS_ORWtMnBqq@2YRlIU|wPHEVyFl?=DZ3 zjH9woqrmGf$1rDfdkD}zgyhy1pKnE`q`tQb+Lp+q+oLw z|2~&nE#?APGOMc-X~xrfZ%A@m4~kz3+8q6q1RMD4#2XJT->7F}k$D5=Pe$W+5%lMo z+~`Cj6EK)Azu5>O)p0=CWKd8e1`0xnUDazx_ncZDerL!P?6$ zpyC>5-w;?CikU~&h2tl|U~n$%gEEkKJ57JS!z4t%mp&c7eLOvOm5H971qmokZ2sA! zN3t$!=+%xrd^M!Fp37bA!@;;FcBSL8lO1PDS-2r});K6$PSyAya#?gD{ZVYC1o5oi z`!ZbpHv_OqMjPCX1w~kuP1t=kXU5O-SVX64@>X`HrVnd32XS(|8=CZF#bqoV*7Z~} zJ@07s?AZT?2)fop&TAG6GfWmh>a00 z@-S!sk=i^VY|(CmPHvMKji?Wxk?tJ}h4C2~G^B^*qoI-(?W`L4U@F%qL>^tdE$G%g7c9W_#??ykBH;R}P(S_~-z zZFzDEM0udH;wN1^=E(h?>*9`V!Izh9D?hiHG3bw1R<%Ai)RA2};2O|6QSj_;YSV%F zL#qyKulh;-;nqi$_59+?mC|S+QaFYxC&!t%q`)-%0G{X*B+;!yUNzs@0XYyhKk;h4 zXHff%$UxvYVp>5{gdCeFDahC+!FL%Sz-s5$$$Z^C_a#`kKu@5&qM|^Wg^5X{$2|bH zvQa6ZOB4^4y?P}TrF8C`pxS;AyM||tOqJr5O}VH_&csJL=}hDrqXmj%a%UFdG-eDt zpu$c;#5QQ*Jp}{;-EaZeGL46EMLECX&4N_Af10s*7g99ME><(cL*n5G3^u2+qQ`^}q!JyJVjr(A{t$4AcDMJgQ>+;HH}2)n+gEN{%; z@4MWXseC+(?w^S~DorQr&G0X@s)JEq{=5L{2|^RNAK^7VYM1!*^BXNqSj*wY2vr0H zk3Onxm|HIC8=w|#!sl$B;k8B+0F~UmLeY$4{kR+5niCTeZb-3g-KrLM28GfFdTG=P ztS>uo3*zf&iXFzRg1YyhB*VpgTtiqWxEG<3KL|f1 z5=W+RoCk?55Xk7#={%!lp@=a^M(tfk!PJ+hI>q?-YAz4FL)&dqpB*HJ@dz>Rn*f`( zdXwXFMwRff$>bzM^pMJ1B~dTpX8M3k6;=A|$}yH5JDwt7Tp<4^cBLk?>p9H;L=_2) zhzJA^7r(J$f(H>J6ykb8fRN&5=oro6Ax9A^MSJkEWu2o8{_M`5R**XkNlFt?xzMrc zC^rCcxU1UOm)%h1f!!wA<$&v<8N@6SJ_)N<1MfFkdo^1ZbTJV^t3(}yj%Xq&kG6|L zJA_wnFgXl&j9*jMaucYIUycMky-H8=e#tIxBlG`WFe zLX(`gFTLHHq<pGt*EE8ot~gC_1}N+~Y@DW025t&}6AXe7)|z{?5z(mmXnYEo(2~ zPyy}b!q7c(2L4{?s`X_shpD*fsi%J%K>DeV;R(c@u0{3wk16wM3fDVIIW@@7YJ65b z+RMv3lqno0TL1^`=N3%|kgNAeVB5=)d;}OJLNN!Vo2OSH2Db%xQD80v%Z+m= zm67*-h4eA64i~#%*EDeKap!a`ezucqXpg=k;52_OFyXK{C|PS_2hr-;;-J*LW$Fwb zvWnJKlmM^I+R?Abhjcm+2>=ua1K1#lit4Zhh2Jk2RdK)vl90Yxv_4P5FVl!wX$CX} z)HKq%CANdaE)E&t5IzOzh#{AN7A_r{xfGyM$*6Q6XWhAd8$WJ-g8;19qLc-kzPuki z2>LLffnC!GANvlwYJP&O-<(NNi}waqG8TrAU*UF7l*=z{y3+A{xn*Pwz<~noOdFH& zfNdN`g0hoxx%CowK@%D>L_&b7+xza__n7aj`pLBk3B`xyd20EbKlyrq1GtfEjZ@>} zFqu+8dx`Xi2`b*KXa4}~HoaUM0?W~8%sxu#-Hg?LMO!*P#Lk(mYQ30XTsglg@!}sJ z7vtv6DVnb@jx6}GFKK9-+Ar+wK6ai2I9URI8do_~A|n34Mep|G%Pe&RFK0TY7dz7= z!h5=9%~s)^;}u>gQ97#gJ^$D@4s&=J8A}Atm9dF4mUDmd*=4f6ZdqI{=7?QY=vZ#w zTK=w*<2ID+IalSNG((IJBQH7mV>}{uxTEd^*}CX>pP~BTM(KrbWyG`*Z8)S4FnTm3 z;TJ5-4I1ZH28yAQ^Q-P%I=h__z6))~`W7hX*uXqIm{trjq`PF15D9I`+}@Ek5cb@W z)aChPz&0C!90V=4W&zxEBjezu0#b00uUbX(Y^HOSRICZ_1JRRB_V<({*e{sylfShf zhd5o47;MmyMN}K-H@lCT0k(A(@15Z}aAFepJCva|C z1VT)$4dTy@?Mi#}=Y}87wJeHG#-Y23I_n#cwvo4R$kmXc1^KL4CQ4@}=}3J2;?Wfy zHV@Mb9J0D&R>nl^q^~cHdzbS8w!8?iExPkicv}KmS<{KJikb+x*IWgJh1F1*dDUru zBx7}4JbXFHICQMHCV-~&yuRPqIVUj^#eo!DP)xzTSSN<>S&LN3=f_Xwdpo~7T_Vn{A(PzoQ;g}4+j0K@4iT{vqnCx)E&{jpxS|4WmqfB|^%x~JgdFS3jG-p4 zm@jfv9(0p*8gU-@m>3TbJ#vF{cy&d5&GrNcWlCN(7(GlwJ@ zKB_5DOt^?@JV!-Oxip0NRTQRz$!A z(_()(tr8^%8R5v5B?Dz&`GN%oH1DNflr)5Dd<)GR@O&q8CgF6PSCoFJJ$x(pcc9#Qar$MId|0;0g9rh7R;wZ-PD#esXco9FA2sEy zJQ$emk#YaE#+*~}$KgXy<+#o0p8`BLF2&HBYQsb&&{2>Bw1~=hr!uM3LO92SZB3-9 zSY;6$buz?(?uOJ)=r@S^1E9{3Q!N1>HT024Y#A%+pR1K0RgBnx)-Fkhn_;{?Fdhck z!WHDoUac4=luz_d;O9OZ(t`sD(YcW7ms}y>TKQ0z_W~YjUmj)&b!b0D>Jxb6=X$PL zz4|M(l?}u}2)D-oDhuNE1{oT`;z;yCzxQs-&+_l7+{Qd*8Q$&%W3so`4+&Vt%KLMc z4s&xqZHu0Dhf8}}ICsa7`x<${V`i&55jSbHJe3+Z1xi^ci(^yavwJc{V?xr@e9>wm?LWbjYRNZ+zQ znU_Syve0{S+@AFtcZt?q#RoysdjU0`z&8Wf4qH(0IMTMm-K0cLwG8~_GloOD0qzr% zT@3u~pK$}x8K`u?m<&kU;EDyp7f>4>{-2otbJR;qLQQz^e)SreUvFWd|2}2UHefYv0 z(G$9C9I;qByd&@YE9-#l_bmQRuJ!q)cdT8tevGXuj-Kz{m^67MY3V_6^d@KO*3Wj~ zDq0nWI}6TPVms(-#`>6UrjBO3+5B-iZT{rsi^Z7dsb{vS6J5M~w-i%sje~5+_Xza( z^&Oft^D&8w8JaSoD2WQ>Jal?VOpN!vxF?r*Z%s!= z-cdn!@uFkYav^=TD9*r$ukH@X4ckwyvsUwPqQrrvzjy{NA!j^F;O71hmq|9Knv^t4H-Ekuw*n1 z$@kNXe+)`xIE9?^M|&{TrWifQ0kmzYMq;IF`H>G*{5fI;<_dy^LsQ~8c2dc}yJses zm;q&DC?+AJlV9*J)p$l1xi`MI1?Cw3CT&Rr<|{z`&~9rh~&gizeTiE z=@ne4Ta{R&ypr~`6hK|oudu%(LIzwyL`hQX6ANfM1>t~bC}F{Y%Bg1nCVh=S7Ijjk zvB$xd1xfw}nf**!vtX-`sc;a7VN4^y(-S20BJzfbQdg5>Vq#W~l^|_1>fHd(RtzE~ zvv0}pHsHKXaNmL$n1iAy!X-uRrEY9&d~^1B+Xw`Qe}Q}c1SJ>}2_>Y~@4=(&xh}yB z+fvZI^r^*ZqKnb;Kp9Q%=KXvoG`F`$M6}+7I@KULQ=HEuQ_mK6J0wj!`4HPMJ9avh zr#QN(XRN`&NzpNi|HMu>8`EfO$hmQ07E$sqsZD=*HQ(ah1O4ZN&H7<4%tN(CyLb|L z+bR@rHa(?sH<}1^?b#}s`aNX24{EMyoOa9hT*{Ut z{Gce@E14VXx)pO&-+282HyJAOV7&p4|P;o_DjIFF`WD`*887Pw&866>)~ z>7&hnKhj@rrAKD{^b)&-B~J*nVlTjEx`KjT#t5zS~=65(=tL{9xRLCfllDjD~e zyskuyPv(CEG$_i9=Ar<#H!n#0l$0u@SlM9784G&yb8i#jKJ1_(Zx3rZb0j*-b z|Ic(3{L%FXjbwv{8t<7_ye;3_uK00(m!fEZx2tOAvAuB@qJ+&HwZaaKQMUG`tK@qL zqU-tU$)h>{S4<-Pxy9D|+;4PUmYDiTO;viT4!+CHv(j3klT+A*Hkzc*>j>XBx~dML z12JF_Ed2II>i$KS8FWqG1C1bPqtRFpbN0EDH-cHz9zTh_PcP`&>FJ8MlPvCWo6kI( zVm2x%QA#3`uS}xcCKTK;@_>9rptHXJ<0f9qo4Ny-j^%HDIV}PrQb_6HE&&a1X%7M*G=}kZ@*T_MEn0 z{4x0xJLzRq5C8mYm#lrLX4j#;_~|e>2l>lO^XS|O{KRm}Ptj>{#Hu;K=iv)~Ozj z^Iw}YkSys|0QUgIe@_hnLwc>W>euT~4)4^_(U?7huXo0E%+P(vj!a*sVusrmMSX&(7WMuD7?#EO@hx*@dJReW4U}__vS! z3CLW|tEYV%|Gp2ZJ<~A5cuzPrkh2RWOl$^~0$M9_k;`|zKG^e*<6GCqD(R|k$d;#h zUECp@8DW};@WAMpwTi|~fg2nPf&fyJWR2oSa<7a<6nvf%6BG=l%`g=KfkeFo*pN#gga02hr>xyiC~ zbCXK=8?sNqaYrEtjMlDB8q(x%nobUG&~IokTXy=7F+pD3>Z>w8Qf49~lA|v_$rkH- zq-Eoamt2(l3Wac6ur7i@rYecugJ-n z@i-D_{_`5d8}ve^MN_N+@J#r#@SwpFBJV5nUrDhF?c}Syc|NkqYT9pE-+iAw)~9RA zbyH{Mu{aqUrL2=-BC@6#Q?)}4(#yhTGAh5~E~RLn4wGH#UtU9L?c>vP*UeUs)*4wl zvOUBnAh|2 z^!dHoQwJ-rh3)ROTk*iSzyi;x4bSL8!Ip*}lu|`bxCqs|t|41Get%>Q<}p-&XGNoR z66~$`fay|-#p6r)y~$eSuaMooN(yRcj3Sgd-wYTp%q=gvAB(8tq#_N7n81<_={aEr2+N704m9!(F&RRRWjFgXDlY%bs77E~GDeN?_x^D18T#R4jxK2y_uvw>Y)#s{@?OkOi>|cB%}XySnNa3mx5m5+yCf4Dv@cij@4@A?o9E27Yv{Tq zZ_b!MTam-A?znwKOZ# zTLd+k`jwjom0S36v@E3Bi9gWGaZ2;puEQ7XW?$1j9r|(mxFtq%{{d+JUT&*iH&x-= zjPoAk=coELTl2ENL)TX}&W8*pFArxA4!oTcN#13k&*=22YgMV0^6^&xuLUmr2NX1~ znBswbI{;pQ$15>%X?|i{_)14^X3`UOd3-gM57v$$Yl?pK|z zde_O<#mu5DdVu$zzVQBrTMM@|#5vlzvh4nBrjnCyJM5afZtC&HSN~lUrzBI+++TVv z0!_g-iqBN9Z4cL6@zNu6-H&RvPh2U{np!FHS_NmfE8ONNyQV-1Xw_vL6z}i#8uqUq zxo%?FHgi^9m+&A`PWfhDINb*H=K-s@8u9$s{+eyJd3RHtp@-JB!(B^De>OY@<4wAq zdVI&aC_iZX=sz(*^G@7tz1{O~X-l7k<6d6}6-_zd53AzvbvU+Lc2J9PJSZd(VO8o# ztb#um&-@8I{2WgPMprOU4!v(eTJVVE{zE)#!B+x_C~1C%h#!A;7PI z_YlpqArYyo?hDE)w9Q^Q@&D2F-SJreZQn*lR+1SBl~Bn@Mo2VdltfXKtjfwrS^1K^ zqU@3t6-h=!_AZpBM1}mQjI4wd&->Hwy082B<9T}B_v`BQt8kv@=X-pP>nRv zDSI`#ULxxIAC2w`BUjt&^3)&eZ{0hxd2Jpw(hqXu*`$f%NAZ@lZz8|FxVTIGcVDW{ z`jpUj&nbqU^A6K1ThHoQ&lEr1sifgcd%<+{i0PJVn|V$DI265yX8L|n7mMq`J3kbZ zgjFtSKm8`T=hy=F2YD(-jsL;6`gcGx;k`933kv3*9Xa%N#6#=pGOc6-`ORhr-N)|J zDxS~$FQC7VjFaU65r~G<3#2in>(Go54<)^kt7k3V7>SZRQJt`qTakY*-nIQITKw7! zxfAKXyNXXoBV>8_=Lg6ykXAvX?OJX|M8&@IgM9dU2jEsF%SnxonrFl6lnW@>cHc5T zmNBe-dA%-L^>fJ|l2$-m`X_oG$RH&Wj~rAP)R{APk$UBm0uLRHt^Bnkt?mzNtdoo! zM#89@y{yTCNq7{DOM+i*IkgG;a@m&?X4zFL{ZHSXy@IytQVrm@l?&k5n|2j~99z)&DLuk{8&2?;n*{2VKjT`Z!+Cy^Xp5 zR8BHI%O6>bDta(Z7vBGI@6nF@SHg1#TPCD!H1lxS4gPi-6Z{Ax}^sY(isFTJXV{9P3j)m zW{jVG0_isXEVVLhq==xmAByV3-_}^}{FqL{HuxLTjj>4MrPzaB__0w-*YCH3!iHoE zz`*$A_#`T{3N$Q0A<0G!+kH=MfFzPlg&$JA;Y1_~D5Aef7m~Tw8TVY%);r5V|LA`I zqc?6Yv)N@}lheD97=HEH)bzzy*AHg(q$+HspE%7(9_Bf^|GXo9^S=XpPPV3ai5l-v zU)mq??vMDy34h&KL$lL#?1T5b{GCn5Yf@DWzPdv;h4=_b z|J_4W*;r{0$zVk`SgFB?P|i0UWw#UYcKZ?xCuS+=_Ml7SPb7VTS)#Ad@6@ zC&_d1r#tDI(lv{i=H?v|)_u$vbE95mwtV^8cl{(}Hgq@A^l39_bGc3T_s^^|syeIx zw(N02u0mdZYso!{^W+K; zr7DGSaQ^}2>4zB|x%(ov7n#mqB6R}4Bv{L0nT$lReUVr@@J}HR!+%aUL+dm6j0`V` zBy8(Pm1dyvYs1z6JLvn!O&urJi(Ncy4bBUR&urzPzsA36UAb9;bI?bufbH9Y5f8Gy%9> zJV4%x!2>`>(o0$YNt=m%@A6-zBRf9$)=^&z!AA!jd!3;b!Ufyz-Md6m4Wn|onxgAJ+6qn|x>~{(PlN11 zR!K&W8!?h%H4W-_5bmJAkvAbBIGiUevK$gdCT?brYsokoTRRpRC8YD(Zro+c^M3d6 zWYLdj_Cq$IJ4K&SzPr87U-cBAdHM*1Yb%n{V-}AhjxzQgb=r0HG)6_;SG9r_NrH@+ z5Q|OP4;W-RY%m-4{(a|Gw~BYMbo2UzuPIZt-_IqU)b{%w@Mm!C=dBex6_`J9A8s@p zf{oH!Icy%AQB1PjbG}H}?5!J&lV4Gm5&J(42h}s!u+Tx?M*Lz4Ji5-0%`@Nm~iN}rCJn4ZGOS!h)5&};J+po9@gePwzvczwl$Im@;SN%8kj38>_1WS55w!EM`}k)_oc7+_od4Nz6Ol ze6fypigog+MnO&9g;WNK{dWdBxX+qn!mUhc^ubkNfL+Z{JhGHX&-nN(-=OKa_g^kv zWGhMyg?l9dj3WL5*hZpGEw-Z72-1w@FxW*xagn0%3cJS0vxC~98@$1!v$^+)`2|XQV!hdvH$$}GfC8hXemQuntay8lSQ@&Lu!LuC*;n+ z|EoaO9Z=9J9R;F(wI)>v(>EZ>8=1FmAxm{Dt}Z`68X_cyTdfzdpjC8Z#TUm<{K4WQ zVlv0~ur4$)LKz@on*`N{r8xYi0^C@{!3%K-`6>-E+@R(V+Dt57C+2-g>Ls>B{`~?2 z1IAU9mpe#%UGh^nJ3C*UB{Fs#DiGhc|Jm__-N@unVSXX{vcFN`h@U*N2yYCD#@cs9 z=q1+s5zREp3PjPl;2s`-4&QYCwZ0-@ESj#1V)?@RU87Ls%qPta~KSBm->~+5AQJ>bga}wKIkw4-tz8&pwF}4f1+D zj2hE{O9uSUQ-as(w4Llj?NZ54SgvF5B3 zkLe7Qg=E(n`5P#rLj#Qxo7XuenuUD7RutQQ#Z~z@=s=&Xx-zpn`xq`zXP*3@b&W{8x5+-mh6o3GnKHd4g>_DarSU3(ySLhQ8%h^uil(~WY_yDZLszB z`RR^PT3;4sb_0!Ujd`YpHp?wFOHT27_n!?~da?iBTf1SVt^{sSVyH=HA^8Y8_C;HN zYsT)o%>RlX{EDn#a)n0v+WH(E1>pzwuWv{3N>gSY?+an^Bhhi~ZcCsk&LUZptouF> z0q&P!T4EI@?n`o!^w$UB;F#sB5&tLjB^4icq7ETW$D(?ip>+~_*>m6kaq1u|;Gr+s z@2q+5yep-F8+I5DLF4un zqS!|uYvay^B{W$Qbrji8eHVjEke7)!4l#+0A`8f%!yHl`AnYwllg*z=v;u+=N&PRcxo{=Bk7&Qp*#LJG~@2d;~qvb!a0t z5ZTTT;hA^rtu_z7aV-$NHpT+|bCr|9c&Ci}st%^A=D-7Y28upB+gNy%GX9rr2ESZV zD-T+U#A1<-AMoLXiOKY7pu{h+5IbK~E10{?h(m*#cO!Am@Q|cB(2LC8s?6>g?$Ifk`iz$KVIi2SK8lI$lmq={(s1=&oF@X2hF{-_MgZN^$BhVZCEHAZQ_a9*01e?GhU+y*vm`++ zpm#UFm?2ddy$1oSA;9206SbZc*!dG_sj2xWbjQd)hbR>us#>4foABWZdyf{+SaT_BP+% z13Egc-q^1fd}WdP`F)2}_{bRj+(p5H(N}x+h;{{3`LkRoq?bzQvK(KnP};c7Dl+VP zBR}iv9hS7mH@`HIoAV zZzk{PUHE5zm?NNhzwGP{BVD)(>v3&!^6&)B&3R;HXNxK-@)_oEU$}7LE`;r>s;V#G z7e#DFqs&%qUF^3ja~))nK3N?J#79(3Z4G>i1qB6uv9YTN|IMPPs95&+v8D*;83kKA zJ1M9RBcQku-M*a{0hv#pKBZ0T2q`aDhK)KBZ$~ET53Y4Bff`LsX3=geZWbUhvlo|O zM81XU7aAF9t+s?Wir>}EZAQKMIEIsYBvb~Yy)XQ}?y7d*;9wAxGgZ;CH*d0^qt2a! z4Uz2S^orJE77dJRh8pY#i?wer)EzR2s{QcTo%QzZ+l;x9{NY6+EaCh9(3l1n>Pm)f zqI>kx#d-Jn?+03I3r_ldmDflZT9B|2|H4z?u2e9`RePsnui^7n`M6}=jP^iIP3BcB zw$gj+$Zw@s67-^_{LiJw^il0!1jq=-3@!AN94ktQ)bO zwr_lV$;sQyOb7{!ec!%4?K%foym5Y|UtH!R6)8-d#Z!qinS(DOiu9`0TPdj z&{O8J4tsBlDXt#GrsKVeMzi;!%tdQpwhQ%%mIl(7X2_Oht)FnNIqB~Nu%iHGc!%EV zH8{|#XZa$U_z}Vf=>gO6tz(wVk;5Q z?p4F9$t=4)+wkltm(CbcPv*W+chYp!4p>@>HAk;MYFtcVXYdO;XHl%i);SvEa-5GIy)idam^2oi-!_vZhrn0 z+J$E6pvrxc`oW)1Q5p$OqlP-4uLtyeU8eLozd1k9$arWwRlA$AxOB2M>5I|Q9y;$k z^sztrA21rK#h;dt57A6sjw806yWK4EGWo61vJ|PxyPO??M{^flbA&Fg_^A1&aEHN@ zd#7W>L)!dvo^abHXeOB?`L{fHymUgU;vc>)Tt+-9;F|D;c2D_PL zQy%rVH*{ZUPNhO4%BGaMyEd%+_c$|4(vuGJxqth0hfkHs3UTjydIV8y_F`!3mL;oB zF8t1&Fyj>sJfnHkXSryMPBuTD^?bAP%xF@62wGZ~Q+R=y@+`LEJVMcTd<|t^XEl_SDe0xEnvQD>J;E0V zhxlyW`t{3@x-qE~9CPj3W&DQ`p(nqq(cwd`Dx7yp6+2T0d7tD(XJ(4|pliz$eFuHd z92NxXUP{4rc?vgpSGn6ps|Ad7$8+&@;V+WKG>=0{=?~PL(q#7R&D;}FfRW|q!p9nF zEtXRz$)D!H-h?M}RmR6)@oYh_L^7b<(<&=fmn~an0qsO&Mms8M6C8>$=(i4UnH}$K z!OB({&nat6kqqME;wm#6134}Eu}Agv&Bn%o$rngf#o7p7%?wWTA4o`Z)PDHBBVBN-n@BY^u2sZudz-x7i`q{ZXIbmLolm#TVZJB#hI4Hi&#&o-nZ$t#@K+-rHLpHGI{hVH*)XpS&kG=602TzPw)> zwffPO5n2tci|IXj1D(5a`GP8cU)l4w#D*UG?@{Hy*?&jdnBQmBpS8slPvYfGzM@aO z>U_3VNDWMt$rNwf#9_&MBjKqkrDEwJq?W(u>ENKp{k)W?)^b(9j0e-bELG*og$`|9 z)N*Kbvr7EW*%ZxU!vZHh{Fvq4mx_vt@U}A+nnaSO-Tm1Z5~n;SKQjoeS!3Ki=c6uu zASD#?iQ=D%va)r+VEKD+Ar+#}iBdrQG}a(LF^vXw-~fk@j}Pa{mAmTl1LH`{pwLcV zA)Fs(cJ?NGaPGqEaAhL6rVPn&VPn$L(qG>fZ$ujv1ut_w`TzqPauYNfNF*g2S)g~c z>lqsxGcLuJDK1p1yi3@%cNzZL+E=f*ww|ce(AH)iSp-m_RbgL5|j=-rSq2J=ijZKAvu9XvhP!5sH{eLp&~` zC}qlRNG6!^W4YTt$0(di9ErZ^dF&HAwBy?h02_oj)#Bv8xw4;GbbQm;WjYAM3rb4R z+ihYqI#h@vZ3zP%qq&-roE#S*UH{!;FTEpi)$htMknvqwsi}STW0f}_*-T>Bi(+jB zC9_J@xzLU`xSuXA)p$^omU-qC2`)9Lz3KRgveiE=IDM*o>fuDkoz{X5b?=5b5A^Zm zafA-NuB)S?Wot``6KrY5UM$ea0Xcqe4wXIpA2C6nvr<7( z(W}SNMpAoDoDkO2*FWXtbRziew*z8V`*0`AC@O{k94Ks)gtn0x#%4~IAeE0NpLcZZ zJ9KE}<}F*;s|^zHO`M#haaKjR!YodoK0RTjoo!g@GtUKc5`Jb*DxwLv0~8Sl_|Qx@ z!fqQ1+Md#l|yKDaYgzo*{C-iW6YIOqTR=V|I zw1I8%?%;|LC$Zr=;VEWeWyHARzUk>1tMcZYT`_@+zkfvj8Oi|+G(1T1TW7U^ z`K|y#1f8evft_R$6clVGu6KcLO#bNT$L>(3yMoGtT$6xS(%(lV5}`&=Ws+-g5*}o%l!e*Dv#($dl= zZEae5dThWVqwt#Kf5Ph(8Xm3*tU%YH2AE}7LHX?auC6|q>As>ihK)VI{Zo%dX(i-Z zulD5_S>km}U_iY`>v>uR^vgeRmK}OZ_3vFm z(@EvINx0dx{5Za_1uDgO4cl~&>|ZD=pHY19qZ^)Gv3$8FA4e|x(W6JvHe@$$mrjhp z>f1ha$!Ff?@(f&N(qlcWlWn++fk9Td<--RdJUAA=ok|`)Y(#@6pp{J95O{8tW^3YZ zu{!iI&d6UubGS}LWi@VK?Ss@oYBsrkU=q(}2w0T5*RNNl`AjXhdza6itQQOwZ_18~ z9Oy5~PfOq>I0|K6Gk>Q$?57ctl46mRl$2Va;O*rkUl7JK8IOs+ zi|>9vMDTwU^8Q57b>Wqh3uB<(8ka+Uem?)UGo1Kj?zs2WXo%FJor)kyn`1R4_(&{3 zFXA1s`M6P9`if?9l>QX|lt)K6-;;J(+DE%Mm3XVRjq8SHB!&C!r>#Brk%nR6@)aBE zz>#IYmAU8S=s#Qzo$q}E88=zPcKu zV%cZD@KNg_2L5}iIYQ_U7fJ?hACf7NxpkU*lX6Dbkay}@0H4wUI#P^Pn#s?kI>jop zrZQ!0|IA%`}R}dAYA2z`SDSLA|4|IR9FK|)#lgag;(Nd9AQmI`s z00#hh3L&1z)N%oZR$$~G*Yd6^Z$&)g4_=9Lg}uO{#2;fle1MZ1fL5EH+!~8ol@8cx zd=bif?1|X-8zlC`)Fm-(Y{{1V4EY#1uSK~li$w6f3bKbg z(_-=SHT2iEwXtF%KvEY6 zTF8|G0?Y9hX5G0X|8pKQhO9%Ej8|DOr(urK&w@{=7|ml>u3WLBUjq;luFnV%K{*fi zujl$u>A4ESF*5VeJM6=|=Q8`le`OLT37OJ8d-h}i2#$2T`27P_2e!i*WgR=TaxST9OwyU7hYgL2 zYJ!ORMVX7$D69<|elK1^Z)RM6VyY9^-AlMrnoCi~;X;ky}3FHWy?{?0ehc{PpJfuCk`6^F^0i)+I;t0dcG{|874EtNi(>1!TzW5UIWygDwI-WfNZjAW3S-L~w0QrI&KTPqHET^7rHo%SEh zHqTpIHTUjiba1@)sdxj}O_kYx>c()X$7a#B|5s^B{nSA>2f)X$M^QG0EtOvbe$Q zO`sfE0e|JO+|Wm+>lCGxq;fz*<4?f|Yp5iThRtxL(GQCuN-&^DjJNNd+y&)E8eq38 zaPP*Cp(uFFO=NV_XwxLg*@U+;Tq?DYK@?T{%^ivEn>j)PaJH-f%St)21kqtF=rM-e zufvE&jO;<6UKlP6`BGqsb$E_&_ZXe6K)DSw7(#AJBh}a_b4A|!r$e)b?d<`yzBb zE#QBj063pzOHY=&2H_IPsYk5g39%Qwot+7?FI-^Y2D=k*#A?bzb#89X;@1!A8yV+t ztsDJB23r$)(pLU$%L}Lr!^7at@Eq7U$YXvaUl*(qTC-!>f53gAN7@HkRi_8_!ZaEJ zvIFrQZ&t3`+XrdNKJ;XheRcHl>e!{CiBheqrlwG}9ybr;)I`5l^B7p{S95&>ArT{$ z;}p;g#^oS<0gE(`>)f8`!1J5vE@a*j!Ymr!2CPgLYt;T38X8s$MhAm3=>9!1E^ZmN zBf+@5^DAKg=YQVUN2;l+VusC__89m6@pUDbt^l-~!!zaWM{b~lyn=1Ex!r`7Wx2li z0viG*&?p1_h?=BSStWcu7H~k`-OC51Irr<==hiPpeft>(PB&hUl{Oz#UZv7d91Of>%c!~A&G&Lgy76x23-0DU%%^S}Nv-7M^h2%u zjH8pw>EAx?jcW?aFr#ov2Ee7@3MT_mZH0yHl|719M>91gJN(5S3y65zj2ed0QUu_| z2qCqEpvN<+Ob-hS>(GJRE4sNwsR&}Y)d5=Ilbcox^J3Lx=>v6c76zveWp!P)=vRT1 z7cI72nEs4Yv0+h2NT}WGH*7t_Co37vq!$LO@DdA3ar4AGI*jLpgoHE~D7yEj1p6GU zs_Y8b*Hu4^X@}YmBa{o8Vxb)u*r5HiU}wRS83ClAvb(vtHUB*NfNlD?q=<;0%Z})l z1~8O`sJ3`kX`J2M0@Bjfo~ZT-LpxN}lbV*+v08j=V4z{O>o`g-XqAFaG{UBx+clYU zLf`0X=du+QC9NGk@9O%h>k(kDyqdveUdrwzU(c*WEV%RLF(D2n5b=se`vYTGQ0?|* zvmml4$0!^%D)a8$Cl*$p%H3K-2EgcB0xGuK*fShHW|m(00SH6Q?V$2Vh#!lJ_pJe!XfL?08TsWssA}$%9Va|(BjPf1B-yKH{BZnPj++N(5 z`4^euPY9mR4ZbZMXPRU1dGX}MiP@u+@p}zh^riB;q7EbP>#Fx}3AI0FDB{L*(1J}r)Ui?u>zkAzUz(^}sF4^pg{7b-97F)IlrlxEBw^=25lg-_>Ha0=X z*8ns{3lxT5$yp>&GvmO($to`%ObU^XwzjtXicTr57qFZsaqG#?Xbe@>q+vGRQC-L? zlJ)r8r>Y&GuOs1Vu}Z8bxs#j`CDh6L(|D)z96x>fBqJ;9IeXgwuURhxVIBN37BplX zj%;2;Olu!xV@;T-TxN!itr9cwZ=wmB8HxQ>$dMKViefW*4F@V_c#NuR4{r%bZ?AF~ zwbStsY;Sj5$vW{(QOn)h&Mq8tX+vGzuI#8S{CV)eQmb1^9z6<)ii&Ct52qnLp?Ah= z>(i%;gBO=EGK$H_7<`f4nHM`|8)~w7FElOZg-;$IuD|B4)+_zY8{rmKo!hml@BIAv z6DW!Xq$N7XkycZ8MT*Do$ z`0(MIuEdTn$n>I9R?b~9eU~+0vo0>9$et!k*%2{j3@j2Dx*PB`VyLpX`73^3Ed`Q+ zW376-Qor%d@XEPb+#Hi1FH*f{%|>-k0^&trFAt!S<}P0#;{j_n$;fa5Ad$p|CzIjA z^<2wQz4?3c?%#h2SH0odfUnw9SxPachhEYpd-iqquwN;0N;3_N6KLtI4ej-(FOD)_ z?tE#hL9uM#%uSqaV;(Y?FpKhh>ann;>2iJQ{EkNI#-lo_okpg$B*Z0xbO6~d2EMzV z4hlYHbM|ciGF1M+mGfr{LuI)9hs!NIVYPZRZpT*!b`JG9w=JBz$schmHKRRI+Poe_ z37c7z%eRWMP535`PycZ>^KfQbI2UZlNg4}$*Fa7nd5l044p$t+3?z&DzCBe<5N2Eo z>EmLs@J_&Md$yzu;Rb61o&pTn zH+hD^+>la6&V&UJ7RKfMl3VdHfOu}eeNG7RA0zKN{v}4<3NpyYvfM?{>Uwl;Egquw zuIIdc_w;4>X*vytikKO#?v-p)XWNT>x6>awob^2&bVMK?K1v>~nC~4AI2Z?Zq(%(+rvK`mNz_X@)lejGTOPH=xNV%qB&<1R;BoXXcs(sv`Inzspn7J)Ee?AV3RQK^ZcxpoH0&n3$|>Y(y~{ zU?R3L*XToLE}7lHA>S>`$5@aKvXNjtFwQT>ZGbMttj2c@7Cc$pJnr`Am;3q+8#0{C z-!eVH?!c$Njv-&jA2%YZ3@x2M4N`59Ekqh8xDy+@#sL~{*Or(@4`jj@GmZQw$-)U` zNv3N{xDZ$+KJiyvyY`7uuII|O3mXFC-dy6H_{!pZc(zHJ{rmVh?Ix!5HY2N}nz>?I zge~Rx3FgSD`2(bK6VQLcDjZI5b4qre&z*g~Hl%5tPtOKz*4!f#%uIec*_>iKWc7BR z-)glL8VGg=U|s(mOI z{0es51I4N1JvG!$B4{)*HO+Yl@f#f)%6h21XlZag*rXJ1j@K!~Zu0wf>jPtQ36vsB zhoTOdjs+Oqz4tI%-%yAvSFQ5>vwE5ude(sJm6Mx$8P23t;_lE+kO?wK(*mF-P{CbA z{ucUzS~4u49);DvB%GvGriHEHE;68D*GC;5?l-}cazW#CO?A@UeXhxCWuzmXzHt!U zn0+-imOk5XKL13ihE*vipVp}b?>F(985ZoyuZGmnI8u4zH}O39Yt)u~G+{ltQd8;< z#&9cW(v%QI*&U;ZpB#YrXP}jlV>tY_f`T+iM!7v(Hq5)>uCea)xyNYvWSkD_>b|ZJ z$J_U~xU|%kZTvKAtxwu+u~X)ijh&rJE5ZsdT}){56co*xD#NIa!lC1U(Q@@=>hfh7 zAUMtHkWArEs$0Lbf(evC^%?zCb))bk)-OJv`L=qZ26>SLg|S%xo zhNh|cBo%il-~?@6-{ql|+H6|1EHyPXGUB{sypF2RTnxs}v2j~8^mAzUjY}z{$|T8J zF#?%snNt%47z{WCq$6YGfSs0fVsZ77nKU14_piJiGD9-?Vp>Y?rTe$zsyR=7=*6we7;EdclJ4U#K<_HrlKQ*@s>hcDqi;KAtoa{2K- zF41gvq-6aV?_CRy4TKD7zoSxBJujmG44`Rgmd<_?r?Ub0PXMY-{}bx!I?jluX6Z1} z;8o)(j#~-z_5ARgutNRyTy@ROkdAKi3khKY$(U`-`~ZC0zy-&EhnTAQA0;+fs;v$F z<>R4xDS93|#zS|D(Tq}SLG3_2VQIGI6(<{yM?1jfQ>W_qrSCuUzK*9MS+BXv_Umli zSnrkc@^WeyWG^|7QS|$VhHk&jbcc=y$cnY2V&fNQFE17Q<7e|<7i{6Tu(YJZz#aAH zeRU6n79z1vAD##W@e!&2uAnu%xw$#m<<%SXRti6(!op5D78e(9GB*EZdHnYmoI!0p zy};Pm!^%f@Gv_=(x6S~l-K@&XID3mCMU+EEgO9c(wlyKSq!5wKAgJPf_3EkzN!)2y z^`#vHGwklH_u>@f<>g66OkPI2Lj*0@s1>+fn;|$A=y|_b{p{H@fYT2{>vkk^g=y_&C-FK7c@6n{Myx*_}nkgf$#PkZBeERmsm`? z=%XqG9`PEM#Qj$`5%Vh3V#pFy4zp<1utcwst#r-Y2h|i!IbT;#ORx z?lTXSTJoQHESvL>QeS$u8>?BEan(}pQ;1OR=}AoEi3V$w?zZ!g{_!MJ`3`T=mmt)7wmQ$=-u`&*n&Qnmc;5soj-#0Nv#|Vm{o!wHyahpvUfQX2%B2 z&p_LABOiN@ zNfz68DT|n@nD5Y z>M^7bCN;iQpR87`*&mx8diD^eLghZ+hs%X34n~00hx29l&`6gCjX*_sk%9f@oM1+Acz< z|2ya!om*nH9WpsDe_?|ZW?`+LtzFri>j+*j@Dp$|5vtiO1P2BdFg9bCanYNSOHaDH zS3~J@%3+7g=Vex$h55j@Tf1+MH|je&mj_o=zN5fWHUB*-3ye%m#ic~cKYm^PJf_S} z&U73+{!t}#F(U{PS8^L-v#+>+e+xo)E+dekA3F60zyzi>(=-jL&erG7b#y0SU*>F? z1FHl$h5Pw4ce1l(ogNhy=Db>QY^7$duvW0KouPq&#f0p~j~@jd0THI|n)__rxpS@H zb_WZGVxSOT$IqK%oLhuQ86vs1!quAEHlX|r^8d7I?YR#&;H&ZRvnLLMU;)4r0^p|} z!VZvQXf-=KJ0~V4Y9YdQ`SN^CXw9_|*m*=~_V3JRe-f7$h^i{D;t04S*cp!!18h(Ia7 zp(IARl(6csFk1UU(I3kg{!Wm8>s}j3$pY9c!3@`ScJe}7*9B?=BeeZm+)^bSkE=_- z8+VqXwX_7auQGd&4OkFlcX;IapZ&8w&`1KaR?Xrs>Rw@+NZ?DH9MGA@gY?5|)qR)` z9y|!Zn=of6-d^ZK4C@LR0;)Wx8A;PW2AyOfw1CaqIYJs#oXEPp2p4atEXWe@86~hA zk&4?O&|$|<(yR{Q`3ob$?UvV{!pgh37J#`65{My+6To8lMu>knSFH+w$Ud$xT2ws*55d!J z-qovfXUm||wQ!6;ns`^5PM`GHt*&cw{Y4)3ucyckhJpW~Go=V#j$T?LV{(JuL zRr|weR+w<@??a(00KreHfTH58xi^Fdkb@Jw1hz2X+_Rlpb8j#8+*t#^ZeB6V^EfjSnvyrrz`Hb#0=Zy~W4dtyFBl}NDz}7emObfkPN9?0rxUT9`V`oi3~SZeLg>= zqjyF!@Y2As0+-T&oTN(!=tXG^S~_XhzIA?ej~a&}ge5G?l__ZnRs^q^f#q{|`we&H zhpf8wznHD49)3OSegMEI&k(Hx+5=Tt3bJ}bTn)Lao7P=Ow7IrGEf8@Wz0 z!ADsgHNt}lMn8-kGb2kMD?Xq(YvFg<1{Cu%7P~vDxjFB)=!>2+XHPh7MWg+iSdJ_P43^;{S?7@-X@K6_Mx8~Vyd$XN=|t9_`xB#5fM;b&n%fd(`Iu(2cuZgJKUq-CqW&D{wFk zLqjgB8l3ZCBP)7kluQg~UxB5h0AE6%hA zbnQXO$pUzTjk~e1GYS#`E(pt1qI;12)maLqm&_+s3OTwwicZuA3kLwrugi%tS6nN^ zIQK^F57@dt!?x^v{`_tLBG8szhUG|eGw;ZyO3XbCm|rK&*2&AS0{l?tM@#<#v~SXl z8>GEg@|h#vdeas&_zFJF#POzev_QpN;Pg?Y`6r4D+6!KA-O9LzSi*K+ZfvA>V|Wdo zNx6dQeK6BNLI&eXii*3=h&ss8Q;wS=3~X6hS)0co?^20^dR+!=?_c@Yvo~+JQH=}) zmGs%P6Ik|~mzNmi8S6j8QFegxv)cK(D~L05?bR(Z3rYpeYhu3s6fhMxTuX27O%t(| zHlZZSoIR&KZjir~YVS|zEkqL$WB1unMxMr@JnPR)NbV5%eWdHysSjw9fQIXc#tK#h z8p`tAsLM>)uuRjxP*-#{b0FP>{#;-3RGngfz`52C0CdhuoJq^mjim5jcI7N9qZ3xr z@oO0HYZ%nbF{r$;kZDAt6GW$~{-DujLy%d{>)%OK|JIO!S@ZVk?Qc9Gp6tvwk05@D zFV#GCfFTHyQ}wHKY}kM0_bN8Cl{uS*9PRoV|1f8L`I343RsyE07`ubFmmR2-su^%E zrXT(G1vCk|z+I9&Iw|rOR;pOE8hRjR#>DVpYfknl|x}(ITpLG2?WrUdI5(iX;x@Nl$8YlO=)3WSX~RDOM#c8{S1P1r?#nS&plt9 za^Sp_7M@?MV)cuOiQ(FKI@lREH{rm5baOI)b)v0C z&=aX9AX`ldZrl@mU4UgExNT7x0`1e5_X&>cx)Yd@n;Z$2IBwI!6OzF7VbKB zY&Asf6#0f(w{P32HiIv90rcD4I|N+Rq{wf?o$3?r8R<|bXTf@Flfro+48^X2EjL`8!)l}{Z(ELuOV(TN{F z-c;<(q%QsQm?@~ADQrAzz!ayS-y6M`k6YE1NwHZyX3h4wu=03^a$ z!oPgm&-%XM65IWY-Uom8*9fx&eUFGGGGfe(dvTQ8(u;~n1%fr9YC&=2)A9$?MQkQ3 zbM%Dr9AvVhm@==W_O%Y2`G=R6zhb>+u0lDNguzW6Q(L(y8iRJae;-TZ()kX+6M2p> zg+klZ*iSWtoH~0JaULtsv2!8z)!_X_D8>l&15~~MsyAS*=7ZyzsQh-*EyC(Pca5K+ zr>X@DVPTp1QK1o4)xPB991&VAD-UxT2)Q5J)I#s_wU}#)7^R zUw)!VYXQz$@~H-=bdCgvt8<`1%{7jgpVfgxm^@+REMfVb#tu{ncWTJf^6v9bMQV^Ih^ zZFu=|^5f6?dQBMASik^AmH=-;txA}BixzWU?uYe#bPTspUZ9DP{aQ8*-wq1^`zG9Q zItmA%ICB4`fAR=W^e_mvYTvzk*T;H*;sWk92gi$P4-`8xNH!}gDW7UT{w%gk zA^Bv<#pIh|PnIQ=+?R+fkDOSh%Iw%q(8d?tLbt_MF}Lg0@;KM6!o$V=KzHMo7|mk_ zfthrYSwVXwo=DRel+zuv@9u6WDc|Ju+gl5kSOx|Hv=T*&aP(2exA9T1XxXhfM*R>i zEa6#QVt=+TT-&B$!1ZNk&dOtN9X0y@dd6_x44-|dp-wt3fNzmOF6{lEiV6x%puA+T zwh1CIGCAXe^Vbs(fN6tp^y1< zY!q5IwerW0i%PK&aV4QSaaaxD2E_{Z0i0iAoFL_V;Y@{LfjAKIkcx^O7)JPeFx!Qq z7l>DKI&|o2v&)zE#cN~FFd$!am)O;>A9|rM0)cl=W>pk1bwKk6F;Jnj?}Vsu z^ghw&ft%8(g)wa>G^HJmy3>IT2axfM>#^M;FV3~+VVs`Bh-l_TeYn#{%&8VDeZx=tuWY#1}mI*cj0$s zo36JSl%5nWa1oi9XQ*wj?|K{4y4UndM!V3ztWhi1Ux=L|7<+u!HOpk<3H|wkJV%DZ ztdDC9j){vM4jpUad{^L?69g|J-2{V=AFG5li}uv|m}<$(57U{iRccx#9>3kpA$0$! zggi}PU?36b%wd%myP5HOG9i)Vl8Z|R0)F`)52L%g|9z(Oe-#D35Rv#JZ!?2BvZZ0@ z42F&j5~n;~gZ+>&F@Kjd(KZKcmrs zbT58aGj_Xh;J$E%mpgz-t|q!=;1tGwLbc$BSfQ)iW*D6VcO#@ss?_2K8Xi;~Sd}DJjVUNAxR7Y%*b5OUf!L zZsGJqI-;XDsq~;^;TNjwcg9^rHkH75CV=@e@)B?whnUAoLL4yWFW<3a$Niu0#E~8Z zPBL_BwZ#h0YdYCL)wDD;Xh_4dJqE3Y00|;L(y}2iCOm6%y_7eaP4p%p=>&Wn-0>U* zLi=U`74fmObL6f?d`ZjGSZd=bM@RE!o?+X@(3NFib|JjYak-jGOV4P5jZK3_0%-q> z#Nu@zCvNT<8XLR+u3j;i!$uwK$4EUZ$*t&tG_&gKr>Y7ak>a2r2GpYvOkjsZ+&r(I z-nH^0w~l9U;if}%_lt#uLLU4*qAmS&hkw#un29uhiX9hQxw`&g(4LAkU!LReAEk@o z|3~R^chA-KrRcUV^{?t!6jr~@(y(3QtRxibu;=c_N{-=+cA?@`W-lBxbhphqMKRtK ztjoQkV7*7~pW8!X)1HhcHfDXExn-2Klo(w3t~}-+-Sn8m0cu8c-M0_T^!g(eUq3Ek z^lrph&2Dn&JyE{HS@$D#r?t4;zKv_g8m?;3Om0u{JTSY9zpI{|*Vbm*hlTV5xH~up zHc3gznJ^|-)9BPk3Usv^nJp-E)dSG9 zCMnqS5`2p-Se=+aI2noM3T~ndgSbV;Uu1;D5~k25OM0W*Yk-*Gl08M*Bzaplcw2N8 zPGCYN^#ML+fxE;Q9r*SCErVgNc(pdCi#R%9yZ$}VK&=3*8F?g@7cz&xu>a)eCL7^T z3mIVY8$NzqbJAy$0XpBDnQ>oTU0vMvc5HG3)AMuK=tYzz1QtNdIG=q?+XCG60eB@N z-0Q8rz7R-P`s#^f6I?t@B)I@=+L^Zx2-f}Z%u0OwTSxskXu5iOsC(?oF5Sa4-v#A0 znAEIyE`(7CX{ZCdDGR&2VaRzT-L)slHfY4t5?%+8o(w`cLD>s9d_b=x0_PV*7+%rn zBg634*8?=Ma0l9&h?xL>idaIV3H(D$kS(Ye#-+u7Y@K>aw_r5k?-`~L6*ox?URn@K z769v5#>BJ^<^*8ceXixsuCA9OB3Kz${8b6WR}-Dn7t!uOaYa}yh*AT!$r(2XaT}xA z)INA{AE18+M@M{XcGN3IY?#pi8~RZFoW(ue!*f4C9ZwKToWna?*TcxR;iTZXdGp4I zxIBpNIXZeDNH?fNUcxa4c?3VY+ZJr>I*T{_UPuTNmTst>v7q0f0&OwN|{STAOmYVY8 zS=Vm;RZ3>HdI}Fo$i-dp}t#z~eu6sMX{)Qb4D%o^x~q??THH7E{h zS#J!!8_ch1@0Jv~-V-x^*5f>M#9dHC>f7>s)hm0QL@#~+_hEz%0%3QI zaD1=C=+b$Qg53(7<$2#lb)c0*=d>OC*E?dGh@{~4DJnhJQ_2n+@1cq+!vpaynB%)lT%mSx@HV{*rA zjH;i3k>?Dk5vYaO@T}i-y718c9S6AG-L9^3*kVJ3bhv*e=@6k9(>7S}@L?cC&V)U~ z_0$jg!B*%r?gTP6SP4eASgBRR{sE+-wyX2*p>9Jm;=Q&Y+%4} z2Y|7lv^2P?N)2gB5kMqv!KEytpzu~HUj=__FVxb`_})ZA6D>@sX&yPki+c_Nz94X~ zRug@7xGYzcnR#j7%SHd$f|GxrS{k_r5*kfoaOVPbBRM$( zy;io$?VC5(Ae`;;2Hk|OZxC_em8~LeP?`P|gCan;0>kK;glc!V(HlN}sy1ptBDXj| z+B+B0@F6yjsR~E)a)<=R=v;2-Csq^>u&FwTyWT;}*v)RyFaX?LbC?e%=*tjd5%(^5 z{aQeH6u^o(AnOHK*$f?#?9Y)`*{s-D^q}YuTp;XR~Qkkyz-`~Aqm%7Wr_7o$f%Va;H*Y$7knP_&hFXMxYbA>2RyC( zlNIxpM(4GvwSLA|b0h2jCJB(H%MOz;|BefracvP93#Fu@QuO@>XtN?mq&-0$Pmd-y z7&BizZl9r{cGg|kuhoZ+ig=ocX`{p~PT@V^EHdi+(py9%$PeKgoSL~@|Ms=&oPvT8 zK&s>I*g!p}U@xua2fd-`d6QyWcA&1|u*2*UkNu|Bi6<3C5^62ERF9CyoU_V6MtYJM zNAuiv!V*UUZrs~vVfW*J^_?Wz=&B`bH#0W}&~Qw;1zz71xTFZoh5q*ss9`pYMC2+Z z5Ex+_~O| z05OM}ytZqouTLYQlvA@c&d}5)mR-u#(SeL)X!hf>IkS^ zG2$V1Rr}7sPHNHY!H8L}@4}XWpYT~5>R%9N%z6@}dfSwN-Fi{TtVID_Z_LzdOA#4r zl&^0>%#?ivbk%J?RHCxYL(e#{1>=TjLe+2#yTi*eWbsN6@*ef%8KBSCfk4RaMkrg5% zAv;Q0*?wl8va>5AqfoLEvSlS(Mr9QlDYHVvcm3+^|Np+@_@1NV^%n7T|L*&~uIs$c z^StWng+t$b{Pf|9_2o}K=W_-;A67uO8Tgd60H1=w7aw~3Z9lZC#cv=p%KQQXX)X^M z4{Nke+|9~6`tsrbmMJd*83T9RGB5iVd)AL&Vsa7%oLP1fV&{ zMMDM*H5=vKfm^j1vQBN2Y>*#94B}1Hy0JO0$G^uDu*Joro>4=vm+@|@;y%q;tq^5F z3iW&6b2XE4b0!`d>B}b`!$+|Xo;nppC@hQ>{=)X-F`k6jP$Wcfh9ZpBUsV%J$1wDv zZ*Si$SM>|bL-l!~INk50bnl(t^wv98%L=JYUB_c6BwkS=nXY>b)UtUXhK4oqZip5H zkSz|lcrf~f9B4agkSvK>)#Kq9wAzTH>Mq!cC|?!m8yv~mczmHOBu_FhASC9#+e->$ z=Z!VWGU@OAxC=oGN*kp5BimI)e-T3^%tx_%aEp{mC&!#;!tVbLV+8=ao=8 zOR)yZyk2702h9bhX} z4&*>*X?D3|UiuI%z$W?*I2@Ap9v;qRQ=ny=d1TBOW7ek&DL6P%)_}iT8NiZPKg|0# zX{saYB+#!)%*tBnu*c!%gyAh3mO%Ou0THsrrK;7j@~^o-zpP8*KQh4%3LL`TOaK~= z7mlwQcv~!upnpi~X^BrV83sUJ6`j z=!EOF?wWqy;C8^06ioLu0#!PC!hk%1QHE6SKLSvCuOrBoK7rJHduJj0$%&Px(!jaD zu6`^R`}vEz$@R6*S7nyoBUQ(NY6NyW^`!l%ZzdM%cIqORQ5g4C4|CPHFNL#fiH0Z3 zkIGSH67ayB_LK zm1}ETVov57L+x_yhSitr&)Mi1T*Iew$%u3KONlE)^7!Kmkb&Sj*c$O|1t1%*1umVD zP-j#}(LBIqy*!1tz)?{VuB~-&x~!Al2R;c}I>0hbK8S(q-168xtgJPK&}oW_)92u^ zB~Ud+B}-7+MvsIz8!OQKdpjUk)&B@=N&VQRktZx}H6KZ7;dJqx^8*Iy<#Mw%_~x*M zk+!9E=4cY&F-XIR@s&_7bfS-lRlqly^xpcVoc_DoScfS>`TigGuLr~^aN2%N(teCJ zN-ZQj)<7n*Nd4e_p4UAkSo1G@mB|@+ydY~?`n%Bf9vm)MI6)^PJVcOETr;Yfk=wG9 z=dFT_>ivioI+uvT3lE>?5LfW$@lPW=cItChveDG>=K>hF&IDM8>rA6{0pxHW!F|3t zoc0WP-eBce!uYqF^*i(TK|ZYx5&GhMz1zeI{Iz!zCp_s*Y~^7e{(U8`+6qb0o4CU? zMbu8jdqsep5O@KJ>FIcA52N}ZGiXO~2X9}Vn|~RsX^ij{d<88wqjMEJcWJIsmiw}YaYTS-tK&al2gl$!24+AG&Db}^+T>wA*OBZu=}y~4iO zJ46@0JZA{2jJ`HvKwnl56R+urRh9&C#RA^%Ws~-Da9S`=!`vghq{f54y(LYZfWnV3wz{RH^(A+Qa)e?sLxl1_!naWF}*jU58)?d_{}VE}YZ z$5ps;N8FmgM!UFSu?E2ADo5~3-M`4!uqGO_)|Sa#9qU?x;T*Py^QB zRL(9S;GqHqNY(D0Ts&mbC|N{q%J+!d%cWyL*B$v~;o>oN$*0A!@-nD5#z6+&-QE4n z*Q#{P4xB%sDmeBGNIVJ)Prf<5Wg-o4x#mftSbJzFvHXlh7bmHSheG^qI)b>N*(wX@9m$yCH0|(|`bbt1y}#zgeEO<{ zEdJiT_;?bAAUwgmAk}k?6ZU6siM$a!F8m|_>vyR%?zDv4_%*GIyKdnNFm zWXt{J0#c$14>l!E754+3czB3Q;q8(;N*)11OeVJ+2z4I+T%D+uN)@wSd7BQk*~u!T z0Cwf&q5QKyrkWsc(szQYIIFT8gE@C*Cx6%uw(EmF(;|2azH^D1Yh6d;o878sp_B$I z!4`NpIb+M0#aV4C-$9{3)qq&74zZg?gY*_^dCF#Y6<>|*6D2K{Wblh4Ub+=m5df~IL60k#QtCS$IY2Tct^DCI1Y_AH_7K6?I!fhCkfLI zvGu-WW`Jpoi{ z3P4S(O`$*CN!UgxxdmXn2xt>t#~pJiyK{#U0?SZAxl0v01f**>RO+f>^3QCBQ&tN) zs}~vChPeGFG1}q#pWTrNBYV!azzCjbC~^ji+@S-5!v8nG|3c--h`%6gEg_WxqlfVL ztuCD}9Xlc~|L%$FU5;%J-pYHCJvf;=uC%(piGAG#4Xkn@K-llkbhX(!{*r>nKqcY} zTAvLP5yzW05>g0#;z0s$fR9Q`-5V12Om$kKiHf=3+e8%Q$M=!*B_ zkHPr`qE0g)87OoV2xH#d#B87CORM)XGw{9vPS}&LNy*6(XsHMBMYM!BTR*b?dhq0_ zFBggC8=Kp=Fh$J;Rd|feWJe$XjeP~>(8^E-Tm+6Va%z8nt7#StGdcl%$>iScm9zf% z{gEvG_REdZ!yZc#T@?-chl{Qen05=Akz(#Scggb*RJi&$FyIbjoe5Hy=%ho0iRrvT zoH53Z%F@aM(xlJzFxM1`^+a-Ld^V56Qa82RI`VC}gZ1LGn-Dkh(~{s{26-C;SjUwi z;IjaHCrS{*s6sLi5ZDbMmnWyBpq`={d2q`y4Gs>XJ{;gY5(>x^Ja!>2$n5dSpWa0F z6dM%2e^i-}Q7C)%cWB)dnN=-Y!h@65u(f-1O_Tm)Wsv*!d~Jrez^Bym>|zs^JVaiY zc)qK7uje(S0*L&?A(f-5^_C}ldGrog*ctAy@C0)EobhL=@T{CX1MN9cRI35jI(vN*w4uutrl?$QnCW|)p1DUQ=-Or&Fu&3oZFj{J-m za{qg~D~dMi>7YA3u^%2Q9V$E|J%q3t*uA4pe1h`Spr*JCF(3MuB^!Hi7h8%tXzZAG z9X0n}eH<6Y>P<^`^VHm?4zE)K@wn%ui%DVc>z*99WOtHgmjIf-+~aj_6}q*#q;sFZ z6~xE?>7?lFZ<#2GfQgjPWEEfM)P+7T5Ipel56X6|<+klPtlXxA%?v;YHX_F`MQuew zUpyJKQ-W}Lc{%1EhzB}U2dXfKzVWi2!rWthJSxDKi$T|L<1zr!rV51U1Ek*xfdnIl zLr#B*6|#~!+Q63y@6ec=^HFaB|K;sRjhWG-&2{IK^*xRD$k3t+GzQ087@k>z(l2l>gkvUf{(q^u2UptvvK&mp@H$t`VaoI zs^FLh7qnvI=m>quc~ba z87IA=!4nb3toPSzh71`^%zO6s^<_Z za?!ktlNh%PQ70U)&yL39730y2|9@U{rGd2x<__V- z*A%ESZd*$18P53gD6ZaV?;-ZBPBxz_+Ji4`#JBg*h=BhdRHAV?4D{?gw-P!okcZ`X zJs=%seNKLj;SQeJQ2ZAA!_gvM{Qkkq!hMGO{GWbwTB!xj`WEEXWKP+)O=ky_3k5wh zQJ^H@O_lhY+Q`Rs#%4%y`6n4J3FeofgBZC&@%VzC(3RSStj(@^2ozhBK0N4j3m_~Y zXl4RRc`|58!~i122OSF3n5o5Pt?SoZ0O(+i9q#9n#hLf%>W_aKQ2rVth+$a>3S7tq&J@w|@B5TIMuqmwJmj9DL(~rb!l&aut`M>k-BYIUWj;hXq ztgZJW)mUspwDXJ<7=#3mRY+JNUh)brzT_Zq=qciFcU+?4Rv%6t)z*B7eI*HZHM-4? ztGCH?Ll z0m=Zj=;bN5S%*9cD<@YynoXr{DeA<`_gLjj6QjqdPRMD~CF40eS>)jB`_LzlEY`~3 z_IPe_0vu*z!Lqz}seJld^1uRnmgUFfH=ld(jVwd8ELdw_>ICg%eG)D8gw4j#2V1eT zt|`=E-r~d`^yr?d5e(*EJ;TT6!m20Tmi#;6=Zi>7_p@k$yeX%qAWdf*?H!_^yL9q@ z_9-Ahj}QQBCMJp(qQ0+8UJR9a(B{zP(6!J20=q!HkJ{D8mM3~G> zsPsE~=*m78ue^G;nWZ12#!dX4x!`bO^;s(s2WG!1NQ@H2;36OmakxJw{6IrK1xB8U zztBM(UO~{^!G`ye0~`@1D9F|BkZTbkKZFowo+V3(8;cxHX?=RxY`@gOZ2dKd@9$YT ztl#D%N4L=zPNp$gL2}=ZWAZ<>JAJ(U3SkbCU2Z zTX!sq!TMi60h`o=;$J#%oPx!SjvKIE-M_d}JbK0Ej<|}`pqlZzCuMPlc0udh#T8ZU zXnVyMUnwkm-WV#}Juhu>;?^EAd(-k%U=F&rWifvX!NOqG)>k*)Jh;N@)oI4L=gv~0 zpQUkm<){|&viw)*H>JE>ureG+`jMAb*{%-R3gJVaiZk`Uo$?CN=oRh*&%mx`aL*~e zdj0)#p_ezm{n{P#Z{P;Vx8~=2R|!~7*4Vgy6W}Y5Wwkz;`Z3l9ro?bK(rprzQU? zEgH#)zNw<1xa}d~ng4%3Cw$k3ueAv@v{9DZc|&K5i$&~5D-trgN^nd!G}#R<5Pvl+ zn_KCR?7<8K6R-W`XO<#6@~4OxH2Ih9-v-*^CDSPjhmbOEynf z)z^%MT`v9tG#4H~)La86Kq#WE>GcFg?iCz)JN+5)aFp;Ev zq8eJlE3|oFlP?Z+Psfsblz!KYyNX<`W#3aMIC;NtE5ALSS?KQ}KUYtk5O*#z=p12w z%zf;_Q$qVGKiKBiEkzxf-(Dz4GUjFZO}N{#9I`Q;3|033zNYN^L%n>F!gI`$RJjzz zF9I;vVulRygh>`u6Tj&bB#kqEl#1GuVoK<>xCxrVqcm0^P24SiAiwDF!0TJi1z?s=K4_Bzx@q^4 zL}YvO^##8h10{O}Fm-WGvMX&=MZx3v*QOUCUjCv6{>DqjIGi!h7eV~BEmea^L@+bI z_%2Zy4?B4>m#G2;n%DmK@>6>!G*0_H+_FXuDt&U{!)?i4${dfq7;~E+jS~8l5?cKH zvGQ_+Nz(L-V#j*_Us$PtWU5!A+Xl_Z=tn~Sq!`Eea%~*T*yyJe8FDoWyci!Z_9&Ry zsnJh~5Ox?KN18<)J;G&sEoMsurkj`J8}2-NeJMF^vu;2mk@e;lagRkK-L;oK7Zhkn z2>zuQ@V$5BvR%Wwl8JF z7Mc07{4#xE9y>R4?sE^uAeepQ9Z4DTxcZitui)H+ln~2eFJV5u;@D&Cw%x(xE>Gat z3Ck1jhMq}?-V)4=_@9&%@~xsd>{qf~f}^`=+apI(FKZMx*KXvP_;>@7r5z4tDdZ1ej#uo6iWX7JRkMkv zik#7m>|hUP=9Q2gXK1x4V>9c}b87=fxO;c>ZwBlAsLxT@~fm>FqsdZ2! za`!I7In5&;r4Zy*=cKz9(p3BWDasavGw&!C=8RW`Tf)uhrvHhp5)SdMR@~^Ad-pj8mYr-8iEa@Im$2jrBOD zETdr3p_XOd7u$?swP{0F&=p1gTh^}LxmGS{g%Cn3Db6SoYb9zw+72nWV2yKZb4*q9 zn^&RX9H*=GFGcpGnBR@UC?Rv(3Y%mz?GNKVIXAR>zSAb{%G9-^lwiTO0a$J(l=-C1)N+sy15jQ6@y z@B+7FH#HCpukQXy*mT^9)F6>$rzfc_JBV3zoE0ByL=bem;5&IlMnX z@$%%1FYPW>qrdi`WmcaY(e)-+%qfdJRgB5ruQ9El_;ll2U$`YrJwg+=hdK_m>sn82$sY{JqKyiC(iD&<>TK4f%SJgad;aBrN}?uRNx^#E(N-de67_ z^f5{jDeuyU^bsdB@0Z86_k_k4^vvB9X@LV|{1+&rPu!vi^FjL8e)>167BJJ_qoavc zdE%9cW+vJO#dDvs;%$i4Q4vrV8g2 zkc5z^J23RkU6`q!pxjGE&d1d=P^cF$+HDlW!*?#M$tdPBtA=BITnSoZ9j%K#E zx4W5Z{=pL2pr|UdD1l#4%mTBv3)*jRt-1qezWS*NSJLYUuvx|D;sMa)J$34XovWWJ zkl6=7N^T~?48K?pk-``R_!I{^p8eu3ibhQI<&hZZMxTG)lfbw9dqozpodEu< zHKy30AdilIX5ZG)i7Ep*F2xVzq5Z|~Z*Vp&?@k7|mM5FbPt{9AG#?hZjVEOL*R8%( z{G{9bv|gTRUj5tXCb3;i)rHtKM|zVxH-ZvJ^TPqYj!nE4+NcT;^K;?C=Prd+!iCcC z-!D&I6k!W-cwu_sD#|cH%W^&AXgc*4C+*bCk@-BN8natee6A1^VI5qPd+&hBp=~Pc z=!<<(eJ$haLl{9an`?PD7*-_;G4vr;#L|2@^q7)GK_6MGV11t*`4Vzg^-fm1&$H*O zm$xNO)|wX)e^p#;_;Kqf=0wcY#XmqwvE2ERqMHF_QwDK({KOk2rP~7W6=ou4H8(yo zeK>@Ws+HKGvKVL^2!C+uy=US|Q8wbz4yGEYv98z31RD@L4T@ZpwERGf`1E2m4b(KE zjr+e`yDBV~_p6}$)dD?cbesojGzGskRlHvP0d*?h16UoUYoM;TZ!IVrK+SlZ^69d0 zB{z7?Lx;Zj>cIx`Mr?h(lV?of0;4+m_tEAT+T(_n3bfxx6&^wJ2pruzQR~_1gMAiI zSrmI8LYf-JlYPv$D$4nH4!ENA~dEyG`C~gkAhFaDzZo&^aT*|&z}UJw8JC3YpS|_d9Wio*v?o;i=O;ZP z+zUfNjc0397OFp3NEzr2Xa3%~-vjtp{&5N5{uMMR^k$Eci4H0J`EB}xiG_@aA@icz zAxxc!Cyj^NT^RO6s#S9_(g)!@uWg_3_N|Lf;&D(Epn7*v zQ5ux43M?-a-&cgWoIu17oD6z&7oV;V+BzyXZWH8JB+(r05$I=3>pFlGV5|aOz4*0#yjvN)=VRCX|p8d>Am_rwih{UR5e|hLDF>LS*SoWTCLzNQFIpbZiVi7P|=Kv^4c)y3h6VKf}dR+Vqa!jdn3s1`$6YG8)- z3A*+-{NrwcY)%@^_P~sv2s71ue|9{oY5+)bO%L&&Lpex6i&#+o@bnPxRln(zI(}_((_q@oXX*ZWt9idf_pmD)D z#-bo^`zQc74I?vxmt>drja#2a757O+|OV{Gg^{B%N+cn;^EMwYu7z%h8w(Sg2%fN*t zh`KFrI-@fT{fU2u2VrFo=)#V!xuvV1?*#e#cIH;+T6uUKrVb@%p9i9kS(omdlb55- zJj>t2cX?`>3ld+2_@dfmwi}Go(CqQdXQK<0&Z9NFG9n(a_z=)t?Bp8`pv#m+M4U4P`HKU6OZYuZbPGO@&V4TLIef8mfR(f zL_$?vZgR$_VKp&3E*k}6SnKx~-aT2odq3ujV8Ibc*#)e{9G}&YFRj_&CC({3do}&7 z9R5pw7bSN-)d2!Pl5bm(XB-X9&tPp=V#lW?b?NUi|KcM#QUnE&GOM1BJmO7c;pjnD`^KIMC+5SVqSk+mo9s{RNm@ty)O+dLT^aDjn*aU>8vq4O58fBB1P*vY*LPI<JorEVGmD-D6iQ=n=7dq;&f>qm2aNj(T4#jDB1-Ff=5nQn)dt4SL0B z7$y9;v(^G;%3o&lq~`B>x7wUl$84KNhQ;+06K4)R#N)%_OA!{SHxSeMBMmBOZTF0n zr3EwpTUhjipf3cx;9a@7N~&aiqa)~1u6=nYWAaj$Wv$}|-ONI~%e2_4NLith_|oZ| zS6W*o=cZ(*Wk&)44@Pv#xlUdo(@({m+W$`Pj(=}BG|@vYErroL6msi&-QRuq z!?F6qlS!)!7j6MnGHrp$&x(oOk3L@7fC)@!eCIQqf)6YTj4t;*kgtmKgZ6`gm6er4 zK+rTD@Zr%|b#u4(Mo(Ty zbx_=%3HMzpNHZ`p@@V%2x-05#freBwkyQ2t^fNY+8Bktl1+0V)IzM$kfG@FwQ(^ML zw7NtVRm`A8H;fDc`Od?#GCB*SgcCj_L zt#Tuoa&-E!8$hGJ!RH z7@dFg(Ct4@nMH~yp>jIZxSqxKldv*J>Hl8W2$WGX=iRx75bWJq-;Ww6=W8bjK11EJXvL1_f_zFHI>JLaX&1PWCfUUCDRLGv#t z2Bu&s$z9n$CPj9-WU`OK+3C1fdYgu{!{CUBA+LDk{mYbcDy~C9T(_bAC)BkfDXVT? z$6yRGxzFRm<{dROFMB?xS!-xI@wbK}c~MvhR{@zQU;+p{>p*}6Px_^il`Uu^Tdn`#@|iGn71{)4*&57u9=Z4A7|f_b32atD zKTN=}`|0~2l%)jb6M3N004XLDaNS%prGV=tu9IQjq3gZ)wqwW05wi{7kFYp-Coles zdy9dLLiNW;UeU{Jm9B`k6fajTQ`l!2{JI$Cm#nq`l$@gb20fO~seb;R8`!Bbj=%eMQ^c$c1A6Abl3f@N4?F_IWY_ZQ)vG0To*rLB z+v;z8B;@v;A>aqDHyjr4l~oERCMHxe2g0#ia7stby7rvVoD|gH=xJUKhIx7(=e2ow z(^MMQ6!O21CY;j+Bz44DnPqH>W_V}_h)k0YG}vH(M>F(WEZI-x9H-@yZ_lFL`ARsB z=phk+ic)1<;$J|hb{qTRRv#MgP9FgPxfgf1t?e9ddH^)09hnw*xwuJp_9P4bayS0g z1SHVmrqm+)wSAMfvWTiJpBnnZl+w^~DkQoyi-Z`6`CFkWIwQO|tJz?)#g6 zO;7g5-84DC8R1o%+3WZUcJo7^0Z{U_xEtRJ?7LPydFu!0FHfCz1LaB88L>NjJ&vAL z{a2*#S#<7y7DH5kX3*e)3W`8A^>nOp4>4M|OFC{Pz2TZ34nnwq zDNq1Kd+tnbh4R%}Zq=?I(2&ZoBwcFL)ylBjZq)gga{$Fc=x3morhux#8IlB@6#er@ zAS< z?+0XZn_A9#3I%zvrXxBJxyCPIp7s)Eoub^^6p}1V4^McS z1`3q)B=o70Nqoh}_Zf)^Ku8Iupg2`kgfK?KE+q(hBk)HbhwcH|Qg!CKGUxOR+=ZM^^=KLuhD13>jN8f(Ke=wr&$kdv zx!Wk3KvfOED;oa)z65i+)ax!!Pg8HSZzabW9dDT+vyH9_5mt6HJBJ$?W)E$l#Y~?d z+h-#XVWYTuj!1iBvQ8fb(;__{}R659znITQl1 z0mhl2h{#iK{iYKRsc*1OP1HL*h$6E@(i^w0Vz$>GK|YKQxI(>GV4RmPHpK_@^o$Gr zbr_g-iN)y>_V@7eZ4j!ENvsp0An1cS zizR89(JqIrrfTczzsQ z`3Je5&X(t9KRw`x9q>CeuzpP0dUNOT533`7H}3G<*8{?z zgye=>zGqlSp04{iUY@$MBZ|akf@Cci_{0_my1$AcY2RB=I&i;o)xL&J&CQQ7Y`%Ex z(i#yqZ7hIWC5_dWg}d-7q;kX*D{u53!)1v@-NDdGE*1rP{G&Ztn8?;NNoC~$kkQL%6bL|Y;R&}>MctX8@Di#g}^ z1qJ#YA@fvs7z)Oz;6)A{Zw*63`i+f^gtRoWx=ETRBb1fz4gvm)$CINT3NYejz{O8e zg5FTP{KGd?_=}os!Q>kd<Ed!7J##|RY zg8m#xs^DPY;75V;BXNp$B$y5X(-6c@(ry#1kRO96i-I`R)RB(fa1tzJ;(;JN1IHHq zOTdN$2CspI#joAfBXC8+#5`wc{DZX@Wa7zjdi%}66hrGp37%)5&yz{KY=G}ICCs$~ zLBO1z#Sw8Nhc6E&1;#_})O<`$^wgJz z&(acqH#O-$(nE``L3COBEmbF)r(yJHaT9R^$FD&$;R+C%M|-=+OkH$blsa{OI@i(O zv&WQshcS?lLtTYwYd4wx_O?I=Vd=?UwaDh6PppPUN&Pc0J~FFz%~ zWg%FGiHZk?;+EELP{L4+k8fXw%!*P1>Gn8kfaWvhM+Q<8br4ApZ%QW*I=6w)}F~edAjd$2!P66;9t=K>9Mx8Uy9wBAXAj&+>+} z_=tc&XF<8$^*W;WHS#7es0J%J*rP?CZ2I0aCQi-_vAoG3c#69AySPC;na7}*@($Z| z+;?-p>&sT_NNxA1=vudfRdI9fVWhT|K3EEiE|voj$yD9lY`hh8P(^pYk&@RwVaUCU z7ABLibI2iXZKx&(wZH|)Ssyu;bK%M0^DF1Ue-t%=s#$rt3^S)&`DEbI_kbzuP_ogZ zGs%EgmH^JFLqkT7=LcNCwKkUoAVxgoBzDaq1n}F)C z=!;6TK?4#3auAigL0_!I&T;vJi@?ky?A90LD$rM5?4`S3KtPDxx*c}6?@-Skp|9V` z8#iWoK1`YnOav37P=sifriB$@{ZF}>>V{?n-)VV2Tv5|e$W!_FX~OZ%h8GWVbiTj0 zfNaP5AC-erL%4(;?#7%^vW}zs!X=cK*FQpiMc^4>{)bL==6Dm~c1r%FE2y4O z?HJ_o3YUrp4f@aQKGlir`SBU{4^BHBl*I5q7_<<&4BC@mljKdX$>u$AqW3fOhT?tf z*gbAL6Mrw^UA#zC^Cjn^I`draY2`t;uJ!;dh#!(Ojrkwh0;eTzpG&pR1y7-a@y;K* z4gFuj`#HD9zw2oUOF?iG%6xS5^JB=iX?Q&(+iILJgZW;38xmmn=L^K~a`2czeUe%> zO^l7PM~)DI+{KA z3~JH>@!(?vvNc6CBZ%VwzzV{26l^P5UuvLRh}KQUl{WsOT&>@vLA8A_;`3pPCo>b% zWx!TY9nO^REHy?M0s`9k06zrOb&uLA93mb%&tVPF7+cUC|CxDmGa!6H@xOV2U|@v7 z^f*d^k7m>dw>oM>Zqh4Bvww@1M}SF1;WUfKs1c?S2~MOtLvP!9JfwN}$nCIuqvSni z7pu~1jnpXbRcT=Vgx_ZiNe(vOW|dd2%=~l+={j)QIRrSMbnPO`s%W9>%H$7-pQZn3 z#*Dfk-MPAcna*VYAVXQ}$Z@`Vnyu`vRQNGO4K|uy0mE98W#_9$qzV^9S7foOPyVG+ zke0v71Sce#}qr}6T_`+H!j3nc&>+F#WF%m!-jHYh|sZe;HQa{Um2$Ks~1?p6>NMz_I2 z9y_mm^{1@yw>ae#4|3aKIV^6EXrMzVbHH_O;+)O&2YL^;S5pVK@rB&POl{i*bao3u znfcuIKwEg#SbAhG?1Xj{FV79|QLbNWr9xTrQ1M5B^LtG}LhUgaOVfF3wLTn#<+&iC zL5By^AUtQjmZNKR8tR&Gfh=D_2sdcWYUTHtshUx8Yz~OesQeG)_K}d|eY!1>)eN2! zr(Xc#QQHaMO56!L`d5aCQ2`Nng)OJ5&ffz`Ee4K{2r&EyYCWAGsbGa!< ze^5mnY}myqLu5NVhE{$wXt_!Hw$a)_W%K^w5P8GqyNS&|rE~b3<|Q&aYXoMuN{Pg% ziL|!^9`vt4e%5tf0oV_lf#CZpgoPGP`Z(i+0=95GkCSBfGTbPdKwc!Ta$>Ej?R-!)ryyt8k-v% z;x2CmQIk(t1hungZx5FeVL%m0lc~QjWM&GZu3q&0fKhsJfb6h>ubCzoq{GCj2uK=G z9|Ckf1vpMzSoTeoJYOc2p^KVkyqVql`Ys%v%ZG&nkwG(UhOEoe-#x5I-2yAyhEtm8JU%Fe%~N}NH%XM5#|374!vfWN%Cx-WotgwM8KwwB4B@C zl!3r`tM9N8N9T}Ktw_O~?HE=G!t0GY$6zW^1j-gaeVPkgzlcyc4!wib)vFK>vuVk< zX!WlT1UZ!yT-EjAtHxiJQk*2^9 zvr%fuOug)cjc#FD2AEa9i{MLSRYyL`;q|6NY`93tEec-w#XR^e`*l}AO>_bvA3h{E zL;$BBI{(I>4LiPxJ0ODl(dl zmCJ=2OAFD_QBzls97+T+dpyh-qKCPGZ4`1HERat$$(xx))%97sv*>j(1;; zdh>_6ImblXI*)4!KkOWCb7EMzT+W^XOah~2C0-wf2~sok3JJQJ@3Q?)J+a)R+nI|S1! zo(GSB{6AQ7QI6|(|BruU0!WSrbN!}*wl2joBn|$K4hS<*m*A|Wr7m7ICG>c3NX+4BYrY6;Y zS$e??Z;zB&>Y%^%5{EgMQ{aA{BiuVq)++GU)Qcg>k8BtFQeDL5MNw=H-bSn9H6la>!LVWZImL)^)-z+PY`~$W^d3*X}%7c6k9-eH;reN@T61?-7MKbMXB}_~E z@$r+#!6h?5rp4VRPCiH6CVw^h2^$yMT<8b@pOH7e$9I44TyZDLDv-M)aP%meY9qnm zgf{+37snUFCPfN&K69@G49J480e=wY-p#L-{kd>kvKR2(|I9!v zRKqiuPA&fSG*NB$Zb(4>qVanpsvJvJlF!C+Ig2kBrJ?^!qqlL5LjEUN^HF23WDlc< zR_AW5I|mh-Kfy)u#sVdt0tHphpF53qtp?p!maSSY!jD=XKBsg$P7OCF4I%dyq|USO z=sRJn;5utdL6B?pwWj3y(B$7&c7QrEB>f;83Xudj7?U+R9$$00!uPmII#u zX~fi89mM|SPW{~QLv&0`zzhm)c|ukV`;g@A{psd(BaSbhiIuC8Vi8MKY^Phq+_VbF zaw=F-nWd)B`?73*cC|ToSGIOvcvV)sTB=OSaJRN7kdZ4sT*P5C#Xq3#+45PdAKqyD zgA;GF;)8lB(<})dU?m41gIcy?7zU%%U88yut^;C=ASy^DX5{ z&@K~Hk~la!+CgBUjrSW|(;u=*^uWJwr`qAn)Q=xbqqvgN|m# zCDl`{f80*$XVpvxLnP%I3V4oEoILQHQp zC|?Apbp>>w9pv8=5sCONQV^=3TKkiMaD%o%Ch6BAYRjVo5ZTSW`%njj<;mOFcQ z##)AsyOBFLFZurCCV|#3#ws>d*g>>ivv?*(_=aHJ_K|KXXRbqUHwd=f7|=~3pZ7S+ zpOT@pgy9Q-h`C4T=*?padh+js;RTA3Jwu*7I~qJWJbV~#c6H!D*+{eN1nL?X3IW4a`9zK!A%*$%M+&rzpPkVzp>7aDSlpa{Oe2`z&d(agouNF&G#W3&x9= zp?8fUV-5a4&;_#ugFVOxcR$!kNlJEGE`uVh4XRJ~z3p`)p7Y3s7HJzlA*sY8SHKhU zCAbR#25uqU4?xN~thC+AMD60c%EuZ@-Dq(FogTCdml3*!exRpskyKqcs9L}D}&4jnpE!5+Yz}v6A@L2Bq zyCSD!gic|jVj~%Uv132Gj-9ECC$jEy4zBjP|e5nza6;o<6< zkeCR9y$DKETn8DxrWa#0BrRk?zrMFX>|O&#;j35S{g?3g=a4DMz@FoPG%OhxL?&M@ zIIu}U5Xn?Xy0~Zfj?4Klq2i)|!k;@Q(L4DCS4zCF+dI-Gd~ zbX#-|5K03BklVP_iVLCzdJV%ATRgy5DSqc~1P7l1z_i;^E!6=Cmk2c!W34bJ4lIBa zA);V_u%HRsWe{e1ptFTx+0-&l*}%wWbilT-XUT4gERiy(qfpx^;EJI}))3UfTWq#F zXJy?c%;puro(-MSI_0;(h1SL3l%Q#B%m|)-=(w1VN$1YgUgy2)=C%^F$snJEKyeNZ zrbD0n&^QLJgCEfX8wz3(+6y$OC?0mPc<`RD9%aTwz@~tT;hYe|8Ky&`b@{MOVF0Pe z+(Lq)>ur5|`6}}6b_xT1Z-N-}Tp)kTi-s%BEqW&iAEM7}lkVmcWa)gB&OrOap8@0M zY$rxZNr{%A^$750ZeHrzGlckrLkzP)}r&8E5JUhp#P3$>S~J&JSX0_vLd-Gzdz&%J0;dB%@Hhmqbega2$8wA2Od zQ>i7<>#5|Y_n-do97b{@R7{kxawvqcv*!CBG0Wn0LLwqWT@!maG9m&Wr;Iap6U`+` z@H7WJ7$r)~+p$YKhd>80UFHA~K0W_Hn4g3S=qg7oYCVpE_l@Da9qQo=aR9#LpxS*_ z186NNJ97hLV=Vs}sP$O9daINgEfM$m7fn;}U8yK?Ai9|SksrJ;hO%pG9EKfz0~70Eb3=JGS%KuYPBzw7C*wS`6v zKTgMVa)(;Zx@u)r{Rv^ZcL_YUISaWZ4Eo{;Z8X(uNmz37e?)nCbLYEA@%qWpXX3jP zl9Ixq5N4i6kb{Or!F#8`V*(xE0g*QcHev28+zM6Tn41SR(n+ty1o#pdo^uLq3xSml zH~953aYf;~o)rL0jc$w^AH(2FE&@)3PRoHU|7vW^6b*Ba^NNL0s1Wc8H7~~A$$G!T zFiEckDysD!seXJMqJ|iF(yBCwGkp2Rm7ABY62>UY?eY0`Za7`y5%(>ETh}m+fh6PQ z%3k+|xIP@xy-r%c!9~Z(s}MVDCse6swE8t9Ypm*QRv=FrTz2lI;6Xco&064O?8&V= zzz2a_#`YDkXi}8#@^70`gw&OOW0Bl7rBU{MrB&lsdpiz6C2{OJO;jR^w8mS+?@ckb z4eEa@@S%=Zv`R7HR)mjJIR;KziHqbo+~yz%lSQb@FPKhFW^E@E_>s z5}6-6kWQZMedri;0;Fq+YDucrk(PEO*nrz{wvsYVO3AbFDra})415i}IE7VUCKuq_ zpA#Z`wqS%1MTtdKYbZiQhJ)x{aS=tB!7qoiB4H;BCd4ZKTFg7?v+@8v?l)ZlJAhHl zwQ9_g)0My*gKCHr8ujS?EzhKGxCZuAr|fw*PeZ>Kf~5c?LvR|ItZv;sL)Ts2@zcCZ zBtSLJqC?e@uY%?s$>M3AMG2||{{KVNcgIut|L>n;k7Q(&viHcQ$ac)i%HDE}P%_GP zlk80?E2}b6LWvNSy``+IGD{_U^LyTXKA-RJ{Plj6H@ffFcs{S|dS2JSHJt}32*IU5 zA}u9;xtN(NW}UyHKU*p-*5&!C1rGy*6m=VFn05!f*hJ3H4Oi#qNULMe5ytg%TND`z z`wHrs0%^{nOy9vA5BXDB^Fd&_~hkAd*9V(r>byVlS#tSAkMlVj6gApuh8G5aH6S8zr z%PKdSDFt9R{k}yoL9HU4`_-zln@taY0UaDSweeS9^G5+UxIj;VH+3^KcA(VJU>6V| zN3U;4p^9;UTS&zWayo+lIJGC*H?W@4rsE4oj5v*Md-rsacBgqn>o z#F9@g#^K5>d7D)W^Wb8Q;x|J}Zy(R@J$!+l_A?IR-r}e;P)bhobsadq+Cg>551$Rxwx$(4qNkUaJvJ?1 z5c zmFVZ+ffEFgbQ^;7*_&8M>>CKWffyTm0<8y#+cujmB^g;LxQp@gH$j6WWm_kVvM)fl zM5h*2Pg7o4@qPN$;F6bj{}vF%w0}uA3a4m z=gw9P21_AQphi;=@zqa#mTjhMgTddiukf zXNPG92oMZ~aC9&}#bBVwR0oO~C7l6^1Igbpv|a)N;Cbo-T#~4hHHsL5SDU#b@J5zlU7;sDd@b&BI$;nAfD8w(GGf-; z+}zaH2mY`v%f1Xy?EyMkyY~F#sY^#6P|uJ2p|%P}TVdHozoIMx;k+2I*`xR&S*CrJo4p7@qpn~g@Uw2dhDgb*fGGHl?pJ@`ani!LamyizRif_yOKyz?*nwATN zb{xFOBhNG(*J&jxe&C$9ZOD3|a8|h|n{wuLOR{Q|>WlLfH_7R8I)9*;F?gSU3YvuJ z!S&x?nZVVy1%VsF?1fh)&|L?=8vzwVRfFJ2>;Nk)bN)i$rZ7tD1Jvw2ti@Tdr%z7| z^Y6{jol57{fdTsBa5>wfpjB-!8++h(DUJ8?;pP-z1}!iM{t{9h0oQlQ^g#1R0Ioo7 z?LY0{IXRv0Wo5w_uN=FAf;BSe&!eph(Z1k?%?5A<77oriW{BjeQbIt6_b=uLe0ud^-7CvPXUYMQD1F6P&sG)0R5#4np>*J}kE>bRg}c zpWUhACyBd%6Il&!N)pY-aa#E7nuV>Qf5*N;F%v)Fwr`0oKNNlZ#0jytm ze|7%qKOLjx^r=PSWs2&ZT|Jq0vS(L_8Qe_1zrH&A7ypG!G<=aBSKVgW)EGxVjMVID zYOggE%v;SR*(NC8roCB5R%2|mzjr}BG|_oB$0m#*$d_RxkaE$2w)i*Kf1A*2c=J}^ zpQ2F00M0B;IKIGupI0t@Q1axlVxtl|^nd~`{loCE40_$%S2w&~k#JuMwE=}#zSu+q z5wL#+H|}Tz5+9(gprxlr6Rqg!>DfWyj*gu6^t5D1Iwxml#-ehf;^OuKX^5lIFVbZ} zV~Sw^{oUG%0*njwn4E&(i7> zsoXAoNZIk`$s#un?*LE9(085O=P>po_gWMR z6*^*FL>=y+=!koIn))?VoDQw=DuBF62ZscKJ_}8@fO|nBB;=jb+HqznG6?${M(uYr zrJ!;{ty(jCoW)M|17L)T-KdzQ`rU0XXto;!fBXfwHKShqs<{)={V)tvk*+dqqfxL} zQTIe-&kCY>VF&T@)23Wsnrc*H6tyWE4Ps?w1?o&GlA0~?;mO}JAy?>$l@7PLpuI(x zxtmNmw>GMP2g{Yx(QKSi2o!uDq1-y$lm*}t#eDD3rKH1sG62(okeg~*CClbFjbPDV zb#dr14r9Iz%mV@ zwi;sQ!yI+%&$#U8a$7dItNQWpQ2r6R#^#UImRm>W;0lkTK%nM#HL1=3rXFOiE)q<% zDTPo#QL_fG8_*++jII*4@OZ^w)n4wBzUT$j1`0f(0Vxu9ftD;Ve4>-tZJvp0yihAg2;Gp*5ET=nLE}E)c#+OXitbE$ z(w!(IDoTx-X+laMe1V)CGXjlk6R;bOU#NV+XEhvZ-)R_eRlD&*ChNz_Tbkd+zDdeG z`}98(@X8%0SlYY*!qhx?urL_YetUKSLm7x|e9i!%jlt#6{3(KW3_j+)-!5j@t`JZx z|EwCiC=?p0ux{REKF1OzK8Lk_aIbJ!b=9MMDHFE|mT0(i2joA+eTw8&fhw8qvyQhn zeAM*uV%($E%o%VoJ+ZJSduH7-Uzu_O^;N!xBfbf%;Si4O4b|x}wniIKVUb(BYqeTU z4l2rDX__uG<~$Ahk3kK(8Z4^P203xF!VtzL7O?IzARgU`7d!b9?9wkmrd#E&lTnBv z#8B^p37{i~3ji;asjLQJA~OTocYNts zTD)920Cvwi<3Yjmn&q?QRCpWB^-~ENU{`LPrV0rPcBtwF8iqFkV1#1y!s-+pP;IDi zfs`#sKTS63ILmI*2X&Y~A^=!00^XRLVY?MD8K|}zL=UgOz&s0DjRP{!3WpJZ81^ec zFxQ1%<&a=2t)+>ZHG_jR0)|>$B!2y1ME3u&Mn*b?Jj3eV{;|VPa5l~$ft{js3K`d=>UZDAaK7Y!30t10fX$BW+sf;e! z68)-kDzc-rodYELG@&mLRZLm{^6mWk6RE16w(D&hROP(}K1lk6ssu@7Ba z-p_3dGnvIV>1l>Hgok}qI*3#Ct^}jkbrFv?9r9G^z~h+zFYN(?yApyFBxiHN|JUa0 zHch)K+xg}7+-I$;sbk-*Ff$6tEA4RvV4(6Y5qlFu@i$^A3XGf)X4eE8sY$ThieYQU zma7vedxcV8sIIk);S^luMIVc1X3|JQMI>~i^MCzIJvM9J1#7G|5IAP4?=$D z04&9nBR6Ly^8@zwfoB}1moePu2ChlvPae{Cmh_4}mB(y!Mk#+|7)Uwu0R?&hEi;$b zgMsmv$WciBU*rR&iD;$3wck)aO~X`Ml^;L@9uT0F&&2(H$5utAtepCcPF({na zAzwUCMQ{+Lo8*lLo2S7Q)qcea4*7@j{*`ku(|D%at-K);+N-#QQ&4w@9PT(vxsT|F z8_n@))9r38CjkI})&-1xTWftvGYE|R4zi!3rG+0$4RU72z7wphiO}#~U7hWKN}!+J zd2N#(gX{o}{A0jtu|t3dB%p7G7m889w3b$b8Mkh-%Y5mv{04jJq{D|SD= z$JC21rRSs!;(iiLu7$x+N*g-KVe03}{}U5LK$aNVbpoh?2S^6q2r7F7qz2cIl`aYLY*$*kNO6mDCUOhRXf%g{0#yT!w=RTO7Ou{M4 zjorHgtDB9utjNQ_wFKHk17BesZZz-d>)QtP_e%g1YwGGOrG^1G zM12fh?!`y9AA+B|2k?K7)V;M*!HSj$ZK5F5gqcS&CpVW3Y_bypM6|G)JpvAB=I^(U z=rXEApgcrLud|sSA^!I0U>QLpBWh}6z9M$T@b8B3wP(D`bwDv5hu|~j$3QRHz>NvW z*_{G2lRsO)uAtuwn3NKYj_yHV)xeDS<9DhzeK{AR;ODvC>r4>o2G82e;pxefI=7;j1xf> z2go+{xy!XBvVnH;19bf7|Fy$vY4xmkI6~MSH#y@p2hv@IMF!6g zQnqr5>x<}y25c2C8r^mT9bOGMEF$XOsHg#8lZd#u>+Z(~s+{$Ljt;h^dm%VH`su@Ho^303y-AG4e?)V~1P&!$WZgwBf6H`!-WS&%l5dm2Vc8 zmfAzo#-0ygGWCbMON>2e7vRx&zzF^1F#ml=NF+i~-Yc$41Olee==lUgplpjkZFLgv zr%IPZsMoK8+JTIWtRKD}O(g=8*U|4i$O$^Sn^1)(7|K4ZKcO$d%fuv}>kjOaMBX?< zj?NWBWu}wgsg+l0Ev0mE_|)Br&|!oqNGMv@@NGemoxP~tZ~TDvuLqBwAl-DLb8mPz z0xJKw>0tGKyyJ!a*>rV25KTzI4Si?%Md+*awU$&bmFMocc-#iBH2Z145HM6NmdBUW zMDN%ieJ_|7H)sm1Xqvv6r$(GtO+9^`CdaV8Yp1D9%5LrT_k#a(rP6HkwTRX_39&`; zYu%FPy=J3(=#fks^8$GK+Xq`yXcH4h;aMiY&W=HEJvjOYz|&{IGx|_vwTx2s2I;J; zBsLrX$GJ3Lg4PpB6*vG=$BrE)7pAKv?w?6+z!eSHd{ZxeP^2nrLESp#keAJd-RRZB zn5CL!f?Vw?K>3V4E5K=+S?N1bp;9vhuGZ-}$HS=&ke77lD%pMnd%DeQQ1GDy!{`hZ z2_Y)KUSFPqzZpa2_o-=V99{E`U#cLi5UtLcpTgqMLjwcAAKq@$&%?t5)$aq#G9Y$e z29gNEwJ^8%MP7vy(gzH+CWPG@aRm7llGtFXFYeV9C)VbxB+ra`B9LG zaR?z1Y>m-1lrttCYM|n#CZJzCSLUr#YO$ZslrCYJWP#b3cMTr)DaZPK{_K016X7gq zwEG{xJ2YNDF@5?cpImFM)wngyupBExf!aUuL1o}0687HHE~g2O6_Z?wA#T-VdLW~; zNa}a~$F-nB3TV+Erjg(oqyKMj?(4pK+pIkwqnO+F<=k8j4-B)*4w2s}Q^q^;RFq#xQ zFa__Iu!4t;3%f$)^>+}UdR-rCStiM^lA+lS5Hppbpb16EpUH-2_As%ww}vhksStpi z{WeFPrF9A$&^HD&a)k?;?&WeXGP+$60wU}|Xy%mUd+SyUF!uvBo(@!3uDOlZc!Kcu z?&u7II+`Xb4SQ-<9<@7ySDmTw?$#1AWLAkMKSmNBS@P;it(POpX9IB|6_|)dYf4KS ze>A#{lUD5+B}DHqBq_q{73=4V%c?yG>OK-nE74I_-hA*puv#eRoKdbyW!HU!{b>Z$ zfM0h`i5;2ev4ehWFF*6>u+ZGB(_Q*!&uis@Th_z(2;`Q~p?SnW+pOE_myP(EY2zAHk6YbiYV7aD_dq~I-P=<-Vto!=_%L1{1(C(*o3~< zcywZs=RoA|H}mNS?gQHBfD!sBi$d>sy=$)YKcow!OwpBC>5-_TtuUr1TUd0Xu;G~ls5TfxyIOC&I38e!m@5Rl;Ud*I6 z4fEPHFE&-Y6R@X=Y6|bZ)drZ{AjO}_&$Pr4RfdKMe{H)~0WJ3oz}zx{L9n~&)fckb zVxryeB0NuQ0GoRG%K~j z2-?7WuenaAgmcUZ+lz%sQo8E6*%7!HJOQz(YJL0mEhiYI9v&Vt7gZ*ri6HtfQ25?Dhkg}cD&_?zetuM-^BQN|8;ySu z-A*s^r>XG)RxcAd^I3f?#BPkM>4`%@+K6Jq#f;yx3K#3re9!#+{d@Pt54vL=busV$ zy=j;zN8hx{#f5)?SgOQtfH)=o% z0=wLdDK`}raX)_Rj@o+S=_bB~Pj7ZG`yjUsoVhhWajJuYc%rCdf{{;ylG`fw*YCD(~ud2 zu>!yk;mX!u^-YjjfNEhBujXy$R;EALDW69U>sw2rqur-a=Ht<$8$%=g{rW*GElkPW zd;VvcnVDljSX|YH&Skgv`SxaAkBRQC@T=I#^3#RO>T>3YY5rFnUemS7uLj|~_qkeMBtA00`}N11XJ@GeW~aoOj|e)7 zB2emoh)Y{}p+k8J2grENQ=j2pg260o$yXd-#r1#(5*O?5O)=l=*25OReIc-;M6M;X zFBuBG8{L0IkyHGBTvRj@KW$^!JI;(Xdh!h=}c7E~V1)6D#!t3NGc$JNfQ9v7v#?O0x zCqi@Va&i(t1^5jJCdjCZ0umFDpJ^z10ggel8c}l7Z3yS$QoQI9qs5j=`51Xgo_sK- zCcAegIhR+?;FJ;nLX?`x8iz4ROpXEhoYue*g%C*RQQmtMruwV;^lZR+=iCOav)#rgSwN)-J;@a#~}` zL_s186i7=bmav;ScikT$u#k~*$&PI|H1srxn4BY-l}Z=3B2X7!ULJ;NO@k_@%LymU zZ9%IccD0%8Qm*2}Y(;DV`?Y~OKW{vn5I2`4&9oQM{U8Z|nUSqa#c!?$RZ(>OZL3h7 zB4F@h)z0k`3;YE)Kkdnr#rDj>C^d`HPVfLPv1S2p0Qq-CGZ`XD<{YO|!X>w{uC#fx zlUwg(RcXtsh-k^Tvte-(VeNjAqW}{Uy-9S+Q;9{$5tOgEr^WW=*6@q8X;6F? z#^H9aDPqXVNP>n~+Uw5BUGDIz3LX6&8WI=UD$iubDcL8K1*Umpl9Q1EYDZK`kEbW! zmP4^+#EL3>>?SvF-5HDqvFj;JfQ-8UYH~X&AN~v*VoVs9#YjvUOQwNOdy)`BZ%C@mmKJa^q!WaMf zr2h-qNU=-hhKmM`KXDm+ngGfJ8NJnzlabru`n^;U0S*z1=Ncz5#y1BMsg$!UQJKE`eR`wFQf_Z*#8alXn9#bq3+Q2=Fu1q? zBP`AJ{%beEUoEXIq#=ONiF%SqbZ>Ej*ZG^psYnabe5(v{>9sU3hBVp?PX8GHwm2yI z9H81`E*j_q5i%SXw$t!Oyh+xXuV@_PM5|Q=D~UIP!*)H7_Ulti5ymT8?~+s!tq`)g zPg2FhM^~(zv>&HjsBJ3s=-#{V1l@-o-Ham%yxUAB$B z#AAF0Tl>?f_>GKm&%fZ?IfLcb z`_)ha1&Wo+tbyEf!XXDQSdgDBl}1hPw3AgIMOisAqn!k7yF=GEgc{34^NQqnYnq&= zcy;2Y?;*jml7#nbl_U&V;kL2uYnNC z2B=;WIWS($^6j2q+5Ly;aw4VDa|rkUR{1;1Ktc*9u+UFEIS*hc7pB*{$|}|pB)-evdP8uIkFgU{4Qcrc%-D>ERAfW#uq+qYq z@UM4h^W`!)}%cmr)9{YPIsu3w#JPBxCQt{J)Wc*%( zOjx$nCd2gbmm%AQpVy{Gc$dm&@?h`_cEWo)B@wHa0|}%tzv7A5hfXhApYr1)Su{Qs zy(xHD&o$zE!tCbpcJJg$bT||Jcxh($h+Z10Nog7I$;)v z3qVqWGF20mFtuZsls6e!qNFO9Oc~Uj#!0V(RVYvfzX^Yo0rCoAmWk#L$avoZ2mT`@ zATaN(g!(J30kJ9$$#Ae`JpdmhqmU@yckNPS6>X1%R6nWeFWn36FchZ_S}G~s!bWH? zAf>iJxHyky`v*-D6E59e7O5(%3t~Bcd#FD5{-(`7HRjv5Z!muQz}&(Ac$cpBi)6us zNEB!cNs5Es7Jr(c6vOof>-ikVC-C)8OH&(5Slt`Ajaf>2pJOFN=Y~@=Uo*E~{1R*} zuqZo$g6tBc{{vEW9Bz7t+43k2h)-X6&m^7M29E8&kf|~4A*HG6kl4f15DN~a1prfp z%}H=c+&@1LvU7B9;o?5@NY%Yl*pwOX2VokAO)44ie7)b;Kue?|t3-e@^q*3IM_V^OiMSq6bd*0|lzJR? z-6`F@8hBnX0)kU4ms|U!m|ZBk2&=e0F?3~UbIl)iF9G>c-|!oeBn8?A6<(E9%roAj z`w=_W{g@VwS#MZRop|6#pzPx#W${{~{EWMhtu4*9yK~)%u6rsBrKgkxf$v7+)2^{; zg#s0iWJ>>;HeeW)Wsc%_mKtQyq`$-jCpRg#FTg(0?s29Vv0s6C+O`AQowwa3#TsO9 z&SWogSF0==I>kI#b<=Lh&fCjO9S%>H@A+y59FZ0gL>< zSgbsoCGB9}eErt)5o4`-KE zr>Kb2I}7&z%Q8s$vHc>RFwOCB8O>ki*YPB#>QpDMElI! zuy}R*CUY?nzPOJo;-GwJx&H;m%@We02cMaWLWz19v@l}M@Zg0x2Th9f%j^tcJEPE? z#=m|8Z_54EMK6RH*nh6|zT56D?95Avw<6YkoE1`k)7x9JZhMk3Bd~ruh362*>>yiJ zDE?-2VrYGVVzaRx@mzukKS;tIl{Cwk6uAJJts)<%avNtHF4X&Vm)?eqolhpqu z{yWPJuOWTqg4l1`>HYG8wCFZNr@ALj9>B@zZ{2#5r}(chzze`DkQAgi%vq;R-8$q) ziGqWOxTuF)I`V`K(|?vY@V^6rdZrna&~-t?rBmjIbSo!i-)vmLJZYb`2QKAFIujEk zW4hcQ7(PceM-WN(!>}zXD#`(5f$2e}xLLeBetLl2PE|@QkC|ratX#^@4SIsA!BC&g zCg`%!Pf8Aqz#T7Bji5k>UTA55=un)(pkrpQfq{NvSbp{@fZ8eSh~Z7PlRwWy(aT_y zTWq8*KCR25-cNVkT^XF1U_mK4RZel#m$B0EVp>~?;LBxS#Uu6$YY)7fYFBYh(=Zh= z8aCr>JpR^Uw+5C;9%RUkk#&|RpV*Ufr=@rNAt)X!W>VpWjRArmtw#QLHst|aY z{Ad(`he85iPd8}xSLfQc-HXzcs1aV^*i*}n+#E;0V5amdhWXwG)D&pMnVqx(`~Ks+ zT*TYAUT?11C{X><9txS10Puqd0J*apOCX+q4TF0V>a5sSpw8vt^JFPD@Hf2YZ#ZEO0DgMmNml_K2@F*~&DE3^Z2Cco1O=<$ z6@;CuonsAySi6j%X?GcUna@BM^U>QZQFC>fNbUC&hv^=f*mhhZTmVSsJIt}K7{9T< zef|3vn)s|kS=QiTYr>?2f}!`OTEju%pCuivHHZ)2mR|&2ECXzYE5;05jk?W6Ux$Il z#NqC2NA9ZLrrlz;mT5nAVz;dF&QoH%Lpye7N0nk8LwL8!@jAQ z;W*Fuz5<{2i?u7Gcx93h2DXquG=#jk^( z?VSJHD#Ffh<&*kJK)vY`M^o(ZD^Z;a(g36ny^OBNXsy8EUY6n~dof6vziFps2_O$2SB7HWV& z)qgH0MTm**;f5`?s;#_{p|kqwqUbm1)_6jsAd$RT90+L9Tir15T(ah?j61Tu%LnI; zm@r-R3S&;Ilm>&=JF;K30{?f?4;-xM=#uhwNx&SN$iHm9l#{6!W}|WK#wYBa=>>jq zi_6PC4P(A1Xk)ni&)u=|zJScOtA{=tiJLBVpJ&7=LW$1IM+>6&0H^!w*;+H+$GvET zou5i%&#rven-9?wUg3*+4^Lg~r|e)`O-)T6Xcxw!XuHQ}T0GyqWB)|kmGN8KHPe6Q z%!+hOQ4yc(P}#NBnkx%N{JJAYE@@Ums?hhTJy%QKA47S#+4G3tFt+sq$%V z9m4@edwlo4tFeYY{$&jY7hrxtyUyEVsfgY~q$nI98hIEZ2T9%8l_lWs%&MHIKm+>Z z;-g9;goub;P_VR_T2D`JU?sYp;EO_7{x>*B*gqv6%09!G*pM7|j??{LaFUS>EavG+ zu#?!{-HlCDIo|u_i?I(8n8+GxGeoH+?hHA_jeUN$mjB-?6_*O?g%|J4iph=_%fD zSLT2&iD}jjP7|K<&aHiK;pqF=)6+w7tyyAAdQeuSU)7eO5`cmneo38{03P z_#yc3te#u5LeJ{zphsQ-2OGm6ZvRHt2ul*sNf7u_R?Ulm02sQOzo1i^sp>-%KLY?lkZ_4kJJ8NiCOGZzclhbA~KQ_ zm|I}#fw?_n2Fi_!TT3SY4jCPuo!8-K-cWUxh$z4JAMiX>X{aWn(6=I@&_?Hy7I?(AHiL<+lfEU)k1&=knt1naM5IFfb1_Zr}e}=Y&Vz?a(*F3 z^z)0q{)=vc_|bwZDeP~&FSDIEb?Qg*={}%pIppQX*Jsod?-N8ADvs%D(-h{+xmW;VX)^2>bvAiVyneKqV__H1TG15S8b06 zgBlCdWlLP$cLHF$x}z)mZjI`_2JB_N0#)5T)WZ3bW0;N2;|ENL43RR$&nHK3VP~1Z zxXu5@r_9!>%hgPJuXhLDIB7){)T@D;EykOAF38CTDd;z7(|d4mE>zy8(?7b_)hqcT zmw@GjQ>>ELLt0V9(u<;VeL zI06!b++5oX?<4S5)zTHIeYp!N7&SAq5hX=rrj-iJJF1(-J?d9TK%H zmFtuKKcsWiZ0N*?h(Z7M`03NDz^@e)CKED4WB@ozn0ErN0@x0!_o~aw4q$fuBU&)C z4`cHH1y z>ghszLbR61G{1l8HPd{Mhc7795)F;s1ls)#7gB{eDz&NFMT8Ie_|j4c_TMu5wZGz=QL=_@El}%Y<_1$iA49Q6 zZD9MMZY&*yIhr`Nd6`CEnWmZkiq*|?k{8c1sCz#f@BhrW;(4*>Nou8+fVA{y;f~;r z2B~3vA*M?`Jig653`RFqMjvD#3)F=YDj8ilvc66sQy`FAQ|!+64*B~|)VIca-j{@a zZyWkiF`&J|=d-1*(X}SACGGF0{x%-`;d4G{TkJTSVmz!idvNdtVA#B(PYERRsB7S? z12jmYmG@*p@dz_KB3|7f(v8~>00B>m1FNYR6*}5-_BL{sQzAQu#ASx+vnXL%BQ{%y zDQ9toV!i2uTT>QR*^zJH8d|YLhoZ1DcsTrL1hy2EYcO+u2j(B*prXS22s>8OfrwrW zSO-v@?lfnO;dtylJd$9rm`hNQ;%IN`2xLPrM1RUs$wl?Hs&B=)b>DNbx@!m-dK;I- zw-TrJ@w+rkh5l(hw&>A{A-+~{#r(O?sVCO}^6n%xAeWuW(j~<^5sHjA;nHF4n4DF( z;_>&SjVSAF+t$A1cHxTbQP(HV*nm@wKZOqh>~9K4Ufho{g3i~K^Ub|c!*WTlM$z=6 ztmq-CR9||jxhO)Jbn|1n2o5h}ahzCQ5HqDg;4d*rFBt)r_?8k^m>eMWL*^joOTRO# z_`!!%#!N4Rr?$}Hw%>*IlVt6jlz;GR#cXeg^smqD6EF-KEsTp8!`|GSwO7JFkc_-lI0kp1&8BP5D=a;zcN4FL@3R4Cw2sP|!b z+mfSuda7h(^rgP8<9=M2^BKp>8jp{6p2#WotCh1mWU#YS&*SU^u{V5F(1}yHP_BYn z97d;TSlWcq)E=Nx!r_CG7#bgQvQ6-SAf5M~KL+7CRD68Z%gOS+y}gTrND+1KBZatP z{u_c|e=PafGm_U&n!Eh4AdOx-mzi=RR}FJ>hJZH3)ny`oWshbolPP~CmturCRu_N2 z()$>jL&v!-7M8i+%AMUNQ0-?P826TuXH#lb7YruH;JePJB@f3%Id;^{(`884vAYl~ zD9>zFEOO&Hy$-7}tY^#+*Al-5_DXtYWiLz~150yh$4(Z}%kic7@j$cs-jf;D7^%Z6 zdC&c^nG|f0a~`dA_UCQl$rwT_m{Jv(d>7I5{qU)%hzw78$vqmOADxw(bc^05(9 z#!4Buy9J>9r*@yT@uB~A+*(&T%Y1oeY{K#%07ratO(1*~0czcWCML~??tJCsUr&J; z<$c4sHTrMh!}S3?G~z(7H%N`{xVi3H= zeL>?7U^nld!}b`ROv5(+2MHrT|UD2fO_VqG|z`A|= zcI=BEi;HAH55eWBSTW8IWf(dQA?N$Yy`R~OA{}l}e8?{;WmC4ir$R3!PSs@b$r%ht zP=o4XMcWpSv=kfY;;7b@5#b(3pz#_PxNdUObgOb zDZCZ-r_Ubq`4(rIqBNr%q*LK=rH{jmo+><+_>JWE?X&D=*{ULe#CZ!b(XHG?m&|Vb zh?A}HU4Hc5;T7{vi!yHhu4DI5&!`H4-H66bIC1CayBk$Hm|w<^X3EOSFJ6#X554{G zkKOOGqQOR4kUTQyhH*Q6L{OT8Ots7_A@9(j}PgRcsWH6O~i(U+I zQWC4gj(V;eqiqrELF_GvXX?>BUrCc(v`jq@9$Hv<6iv=ol_;<59eDaLoqC+J z&12&2muW*MStwla?^LtH2HrPOp9?+k1>32y9C^F<#_WPLFDqWY$wco;tsKD3qQG)3 zHqm}a@o3+hh?tl|P*4Ze#H>hqF13}?XX z6mpEUtx+_(`O{Qf_@7HB7U{-bLUjD>VF-Lle0HNYW@m0_T~x*CQUF2>l&3sGUBPtq+zZPh5OrfRZ6$qWgCcbQ8tRs_O^W^$QlmQUK zZ2|ABX}-QOIVCHBwIWU2vr7lY+`xaV+fT{(xa0n~dKfXdiW9@P(|~uH0fZxP zwv?=I{!77y_wXkt&;KXsB3&H;@fNPlKN{UWn9QbHjNhyfT#2Jf#0f{v$`RWAV2&UB zGiY)724?-~=)N;mXN{KFdLBW8O%e<}6arw@O3u>{GcQ!ES6W-hRHBWPbKg<#&XNmX zMR4?4Yt& zAl7j7QL_A70_JMV6SNu9mZWw~h)z=#-OKB-i&E<7YsCEZw&Pw;uPl11x~)F{Q^x(Z#Xt&d zf;o2^uQ>3X~2dztq3AZj~et0j{)W+)a?Z4=c z`CDkQ7To)!@AU99o?_;M;G-QqhU`bJoC#P%CIZrx1SL559_xIIuI7`}f*T5%>G@1C6Lt4R(8sm$Q_%Q=R8aH!Tk?BVgsRs6#Y8Wr=i06xM1aL#Lvs|u zZyx^Y)vLC22w;U}5975JFc*R*U-0T^;P6)C9sfpF)|om=Sfz}s31n;v3guPN%5*M_ zX5&39#nksh)M)RZ)~9^s)&(eCLlfRC8aWAZ>)Yh_fY|%#O}Z6`(PDQ?D;&?|NC6G; zmdb;ElDAbo0I(+^#mxL3<3NPnqbeX+Sy`!U?Kn6^R}#m%`-(09!UWmdHBl%#SveM7 zSJ;%l8EF)qot|RCJ$Y4qtnYs*K{!Kr^H+c(1yQn%uOc-R)A$h@Z-8086Hz zW&ZP9P`aLgABDqrK%+5fLpdS~fYak-%f0@6NToJT*Erq%c`7{8a_6EBB1y7)OuRgc zr${b&{OiAVRqHxL^^nReyr#u`?>*DvJ*e>w|H%=xDAIZ|9@N=Xc-0*6p3eg4br-yn zRK!iNa`EzmA|f#D?+4Nf##h^!8-sSd(0M2T*HPaNbSCuQ)aBS~Aq4ehs&wpv2T1@r zvb)cpUr&L_iffa4j$jJrIH0Ax=cT+%5t`FEnb}WhmPy3D5dB{?kmo)O=Yph*lZQtg zz1q}^f8GAi$!V5)<>V`l3s_6r0RvXZ?}Ph-N5v}`o7q&J_dJ*(GkGGp^MLy08WT%5 zQr3Pp8f-_3pfFVav(=n>S;80gNNTbrO)Ut#BhsSzwgPDBnhB&NoY6loVdnP8=CKj| z{(ZLL#dmlWt&kpg4Tpn)hJUR@r^_p5qcS#bn4)=mJznJS(fGgp zb8T&3eeL1L&!EPN0uz*zQnui|^%jmdAU40luyP9{t25&0Xb+7uu;+we;%GGMJ$p~0 zOTf$tefXtIB*&VM(*{LK=NM>i1Q>HqK9-#Xm)_xbUO_`fzZ_nCdY{`t)vJoq@+ zZ!&=$*^SX%{nuM(T%h89@U)*O2z$LJuHQ(Bq+^S)DZg~luGF;T4iOS~Dk}uFa0H>2 zAdowdGTF{-n!uBVe+s$dk;Nw3lQqDF=jSzf-S(UZ|6~|(uWXGZ5@3#K$Dv>0Z!z!Y zP+Q*eMGz#HU}YiZmmSVRGm91#@nMeL>G`GcAFl$Uv;u7tGe^RCuktK;{&}Tef~taB zN-m{{dqnjRgUcO8Wx+w#WOsEwm~NxJ!%R@PMX2}%NdDA`{5k0H=B>MhXY^wX?FGDJ z7GE4Ar1(Q=Zt3MuVwfSLIs}cYp(LZEk}wzF=@iPMtNX1j{9+q!I`GG5rJn%UDeZ3D!?A~y{8+=Fc^ytj-=l+(1+<=k)i1n~4O0r}wBfN%gYicuvQN6b zUf#=S_u7$#nmyE2q##ZHmkH}j&Y0Y6_@N*!;A=eG72@RL%AeVDz~Sd>(*6l9iusRo z^qU-z!wS!trA6uf$}_1Bw_NsH)huVYU*#|4L5ti`#bjrxg7`>%sTd$gP^FquE*|{x zcfxn-6i3QQ)T$f=vsA3kg~ZImSM#Ydn9{}5&b(*f-u6GO_y+Fc}dV$D(e`tH*YIG0C?nCm@j=<}>NG{x7+AvF<=x{$)|rBe8|ZL#25TOTRe*iu75e-B%l*ou zUJWuFo(K-9Pv19G54TqDbmy|9{HTb}&}o}sAcOfbLLKPyq=C@J+ln&(4N!SZpDvDA z^4210Fz!YIygNk^tpngT;58uamz_q~uiyIK-Rbho>P>R*93z)f_lQ|ZiqtFC7?aI4 zcIclxS22+{2$?tNa~`|QTXmO7dOD>`DA}km` zSVVms9IP5ycnXGRwv8cr<6j%Wr~`6S8F$P;UHuZ`s?fd(M7Pk$%ApR^!0~~n+naWA zFP)4zv2{sGII5C@<@xxEq&%bB$)qqgE5sIo2pm%{*=}I8laB8Hhh!351DC0pF40DM zmhfmTnLntSos%=*%$}W#+HLIZFxZ2txvLC54@mEzl^SE|%g3^Q#IIhb<(C{@kW#5Y zJC)g8`MeF9oc>vhcHu)gm>LCSt>`B6U{^IS_jjMJ{aO~hMVe5LRE$bDxxX_ce)l5yB5f1qJ8ClNdqp0mIVgq=sqm>G$dEaZe zZP!5E4&;s2jxqt5=(IBrze*$uyb$rRIA(|?)y-RLjzsMQJ>}(%kLvftyf3i97(jA@ z!rxuGyx>=h+=#m5FnZg3`8#%W{;kk5rq-1BxroYY7P|{tXRmQ;(`_bXCuSbr$7vcQ z#J#zZ*TPhY_D+k(gsb4JTwD15J60m(4*(Y#4-y8B##Zo_?T`MDo8Ju8~wFBv82yzeoVTJw{nwU4g26;;y9A zGfQBYgCOC#uO^ygT|?#K1%61EU+!{@N_y@jGkyn+10 z?0t&+o(T4*=>n7yUhqQYYGjpal6cx6*C{zG>)B1t!Cf@Q4(xZ$9V}&DCA-BB5vDru zb8kK1*a^X0o|Ep6#yEG-*BN=4|936#JY zka1R0rBlymc_w%)seg*jms(?Wk)lHYxiqp1$I!e+;eg$8^fh6p!v{guSl%1fF~jqE z&A;RKP%FX|a^qqab~$M0wdKgqm{UJSi#+wB9l+!#`k}jMQ*;K^+Ib)mE0U(5mTE6I zE!M|EJR*s6>XlAmO;6&k7RTPs&JW$ChqBmm3bag#Fl5=QJt_P3xI}t z5d=NLM{UtZ4#Z_uBY_w=>|6hPRPy|*baoj@9>jv3*BSQBBOhVk^aufUQYUPFW)f>(LbdyIN&+r&EaB|{( zid@RzbSuj}*I)KR=e7pz0cF?24zoM^+)^(Dmbbu?e=RvXyA0k$ZNP>gIv-~4kV};| zZL9lD8TaJLFdVM&^EWk=9-IhBY+_=%v~D5R#$UU|a#Ttr^ttFX4M9gO2ltx?tmEDr z!EBjL{{2Qfv}4R|`BZg;*K@Lyo8+2A9?sX>a@g=z0sVDz~j|c!{7} zL=XfNq(d5{R6s%m=`QIGMUWCC9~31eB?Kwy?vN4{X^>7u1f*L+>2Ex^&w2N||M!2c z>+FNdT5GO3#~eNGdy)k~J^2>wuLr{4C(RA^N(0nQP5FxMVZjwn_(99f%?*RFT-)ma zT?70Lxx)=E!ooq{lARy|)2ngLA9j6IowBOY#$wJ{V5I%|6|}XJ3SEH=AP9!rk3}}k zy!Qm6`^rCFL4Ea7e6atER0A?2Z&9P%h*0X~x|91Kco9en!_y%PVE8av?+p{x=!)<@ zhRPlLlTrPKjU70ax>!{)l9~U=fT;g0fIL<}s{JX7oLdfAr`~(B-M&SRd4$kZcXb;U zTbWAvG|z9jp5EUv>h6(bEGn*>nf)}t zf36;_ogvWdE4s<=?(PotncK>A5vfw|ZC=Eyln)bp6Zwoz%K?AOV|VwO$>l8SfgUN?*kwf|iDyrNf#YqyJI5yK%y#BPnS21Q6Oyz={;!QV%yp zgFoN~$kQob2=ASR%*X_wkxPc~4p`C#?is)g{F@%DK=$B}&`?Cm&h9GEvIT-SH3fkR zI!FTHfaa1Q^lPV>#0F$-=2T%0PI~WXd3!YMeI=>nAzO37+yqbkxWrN3+TPv(c&AXe zT_zF+&61+D50k}zEiElYzQ`blMEPI%_`ap3r7}Yb3JQ`iv4qC=rC$k@BnAT@KZmH_ zhveRIi(o81T3v35xYzElxF*q6=`RK_*!1a783BYVZjfB!Kg|TRsJE`7qSAJnHwDHN zjR0=9r1{sv7(sV6>njM04-8y6h;I9Z-ceKx`Cu9YhyZ90_}HCQ*e?@kwJd28ym2FW zk*)4=U6B!jV<(>YdE!ms^djX>y<>@69sOQAD^MN-5=JVFtpGYe&d2N*)-YU(a+;b2 zpTooZRN7UCUBv9&k`-8OYwfgMYx|n4%c0;e0)l2J_TW*uLk;@{l`#3Z*Iqth1X{#w^g6&1EEKk#y2SfWer49 zfNLTA<4vEsiSIK2>_JHOA&BdpKXgXYUdj0Fc_+zpo9yp|_sScj5d8V~O--i&yEOF0 zNIfF@)aMwt9{PJGp<@B)dOiTaPT<&)PJy0)&&EZqB6dsp=eQ)Oe4*plk|JKK--IEP znl548pQ}aCb#vpzhY|mlw~!_OM&d0wgh}`g%>`KBYs|hc2bwsdy`bT4FaS1%;smuJ zQEc{rt*P2&Igi9tS5+A=^k+W?auWG!TN4x178Ni0O{Tbh6T0b9emrp3*>geA%3`V8{4)$J!wWPQJ+1Mff|#&8CJ!NY~UV158N z3ST`9c)=zlbXnMKGfV?v#l-;VuLKMj5yKQ=niq<41(;h)>i{Ox1pQ|u@@9JAJ4t|O zn}@DK#^meR7zv!985OM52QVet$zQ|N74(78va!ics5d#H07hiIcea1S_T6rPYMeiD%re4OIEu#?(YG7)RqnTMB#YXQYL=K?apN3KZq zR6z7$q(%rF>;l6*hTqS3143>|+~G5CBL=_>;=Q+unYYc%7$CJuwOfqK*9DS1pRE&YI?UMwO_wez+_lS(^@ z|E8K0ZO;hacjeKSN${}}649%_*Qc^TKfOELwU)$<&Hn(~iL!7Sw?;5tG2DZ=bnZ(f zmy;kuvPwcvw;M#h@&uI(!dPn5JtREC3n_U3b7(u>TmT0G#BF`pTyFSl6i;;fH-v*M zuVB2W_QmDviq7^wPeR z+@2?VL3Qj^HeRjdm2Y(H%d?P~p1&F_Ex1L2RLY%>O4<{555HJSUw5Yh4Wm^E07H5gKEAYtz ze5hnLFW9CAGruvBg2*apsD?I-(=f4b-nsn!yEi0ZC!kgsbve{uKDpxZS`Kxx@51J} z>)v=<4;Pux8$>Uwqy&e84FKz$f`KDFi(4>QfSH_}lz+FqfDGjBjA+pDoJA9@ccv#M zXa!-qD|{XNb=^loMi*&76iXDvUCb{X15!k1!A*a>(RtlGR1_eyQEWzl+QCs{c?fVh zzh_=QGz%?MNj(LhifTDC1IP_O0fyFAs(J_zB_t(TUP-$`E&!~TbN09M0Jw$lLU%Wb zyd?at?4G+F&<&uY;7?Lvo5h)MEj+8e1zikZ3M}Dk4=>3&GkN13nYvssIeooa$`w_ zFOG*e7yk&ML)+t{RCmr(LsxVQHVW|pq9wd70D*V|#6#d?q^8oNoV?I;1@-C6wYE^O zN5N^>bt~{9%pMCbOyNdPhnzWgu8|tqe*&Nx4Ie(dk#Llacm^50?;wU(*kZ1v^xnIB z>Ty-=95DfI?Da9?gr}(6C9#VvX!MO|J zj{w{8R}mnwk4!;+%NpFDDZpD$xf8*@0PiuF3SJa2!ZtxI0Wk}%2hw*m?+=Pz zoBA_<1q9mYm?kt6!odTC6Lf{40s^@jHg=1|ZLF{eX2H&eZ4QsMr10Ve)+^V{SxWDC zuBrs4bou*n?wGzIW9Tvn(~HCH6ax{=hV=Ofqm{1L*qJIxHL>$^m5&AA32pLbxVWEv zV&0AfgupwWa`^Sj+vjyE?5w&txJ!}{JB5ehU}N93--q&4C?rBaBA{j*>e2c6Gd{J~ zZ(0B>eU38yLZZ0|5PUhwh5hZ8F+ zs4K#XBJ!i)kq+i0R1DG*p%B7-ccxm~uqhV6|BAB^bplIv@T3xaBMDLqXsb@4e^mz^ zh$v_!aOpr>$Q6BeQ0&miE(SAM^3|Lu{si#O`oDm5CRRm71*js(lqKoYl+oJfFk5&j zw|HFY79A#jqZIrc-{=^Ihyo^$YJoN3)m7uCO9Gk&dI1oe_eEMIQ3PCg8Ea&qe~ZT!v`s-61i+QvdF!A$AhmG&{(V;HGRw9T+=09%5wx4$%gzGe{ED4Lr$^|p^`ascKl2>ic~{j+P8*bzrq-(Fe`1~xrFK@rDGZ*G6FWiL3>H&gqdAmY67cZO5XAu6 zkH7z?DyMnXaKj_$0iuynTIsE_n-C9oPlRbMIlgat6hIFQ*;|(Fb;$E3gGccj&H-=t zOMMwcK5pAf0RTS@F4HG7Xora+9#3GROD!rdZ`@l&>bbx}grxEvDon4R6lsMJ(mTe$?F_gEzM-L^Pv`MsfGiH>ur%~om&~5&xnGVVa@`NS9pEpq zHyOlL1kliMxUGrwSFW5wou>y6*x?Hj%UizP`?Z=1`NL38$6AK3U%y^Oz$c` z@Esqhkf#EH4Ro=E@k<#SAA(Is(fNjl{XN-4pu7Ozs}XdIEPoduHm2vKz@(#Ne}#=M zh`SNYXOzqW{3`=G8;{aBfZ4&#cxeex^3X{x4i`FmW(R=!K|iG{gFMo)k_N@fDI#5} z7Ja?9U3L^`W+S?Z$&b1)m#L&d+n7CIx9}?I_(~!FwVLSl;SFyt!yxgxKn)2gXm)3^ zTX%jQ6f=BaCLsX~B(qZhB?nPDpr^!MJx7?GfSv4uV>H7^BOs+0^1A9hS7l@V@ui&n z@q_q4+zF2uGC8XVJ-vYtbD03RYf)(_uL=(h8{1hxF?kQ)RXH7Z{3Jcy zqX}C@I@Ndv8UKKQ576nrag6?U??9siuSV=8m%bjYBdzCsc1Vg&esC><{fPe1(?jSu z)4{TJ(|vpC7Pz-XHeascsJ1#n`vgjkn$Br<$~!9yVFu`OmN2+!JkTsgBPdwizX4$* zE(-kzjuMG9V;5+*Zs@yEy~uO&Js|ku!u`jA6VvuZ2^;{IjeYAT%0CTNEWlt%@AZqg z2VfLgfY6x@2#zRek)55LG7WfNkAeaMo|Kk4X3wC=;^fzDp>q|nV2NzA18hdr>0fKQ z{4laQYzJDWZ;ik6j5>1%zKN11&>)liafz`>39j1EI@m*liR$iULoviMp&Kt^(Gh&D zv&Y(A;ka1(5WxO(DC?aGIo@3g4!5rVaIhqgjx)}2!}TPD>)ApBsKw2IL2w=+C)Zi} z@KGn9^tfq?hfY<<{oGX=j9pJ)XYoe#@D}(J(AxO{dIzrBeHVLK`1-#^&&D6t7YK#% zT^xzRQ`(|Af&egx`RAKQAX=piaG7NOdzrFe26hgb3A1MbM*7y{$2VY{&Ii!saU!B# zAc~m{fJ=hn8iS{k*}nnN@B~asX#yr;xH%b68iS=!UvNb`3BgZCc}{`8RFg)#6{uFw zE=80e2aw2GRl9xx)YD(CeewR%%K)tB557yZTO!1u=K#16RVFZMnV!f55fVTpN`e~%aQ|emR=B|wA3uJC1njjvGP-ASTY9@& zJ^q|`p&aa}yo@?`Y1MKfXE!pxHozsC()6tI>g;SVb9eUl^A{l7@9*>aV=ichx}56ttwe-}9=`cr8PlFm&LSmAur?7Chlx^{d}>I(qWNYX2V&Tc`@ zpPu*S>6b*|Zg+pd^kJLB=blfSJ$zKOgEN)E*vKp$i z7f5+y%EGG7A15S;Ji+t->&zLrN`eXaDCRN>SbgDwPhK87PA|zr*df%=K^4$`QFA`@ zJ}CW0sHiJv$dlpp!aX6qeEBkpQV3=yJ(2DD^^1_5zGY>_3|NJ>{YXhC^aiu*R}%xI z^>0YZldwG9UR!$)Z;(82pF~<(!b}@{gJQR>`@`+q`FHp0e^88^HJ$XTP24jP9pXL?;kBb~#>y=;dW_b0S;tiFDJr=hEk z6^u^yu$rP6lKC@5?KtuaCrU|8Ed~txmxX(9h$wAA_qwtwo$493Z=Et`V=%F#v1AHH z4nT}e0*(#<-w}l=gtQ(m;7ecdx(K?0)#9m%#qG1PXOEFH*@J_E&O-AQj+7L9eL2Wv zKo*RUg5m|_cIa7HWWrrf&>+0L7f=Lqa4QG__;Vc5TJhn51Ns0{pQ*zhph&L(8Xl1Q zK4W0nka_j#lLREjF90JO-@DxfHfUUsf_M22iL+NiE}YPY<_p3)1%^GagH47A1sa3d z1<4tJpp*ccq`sN<3xywrnGRH9fCT3aGB?2m>aqb8ta7$0BOaw7F~GS5b}T|@xB6}m zAAHWh4v5|em=D};!j*)s!aM1*Q7C>bptZ@uhbKdK6QtDu)Dh-#a{WM!v0nRyLaPBq z`R(Ez&|cD~_%HIV2AS~^XhKak&E5h>DFI5@q-2VMU{uvrlmzvpIJcmzr>j? zFt&4Ko;tPj)11vMJ=>Nw!|&sj`)Ze7dl)-JiWXe48aaz6kG1vH*UggSv3Nh z7hldEU%`$d&mBiU9T8@GO?%v4T=2mH!|Ru zenay!Nx}xCR3OA-2T)pn$U~q6bT{0$^FC~R1?nX5rNqH7Oe`)2p*<8J+JP3!KtT=$ zKVuHwIXVmAWiRo|jzj>Z6*iiD2A_8hB6*ZLnN17t2=fE*8v{@}FDS*XZEZ;+z@`D0 zpQIB)*}D*SsPqT~__G6`ODdZ9m7KllGJph6bfD3d-RyOd%2DGc40`vMo zj;rq3`}bmygun*`Y-RRL1{qWm;GPk`hF*X}(5p{S!{Ge(5(av4i~x@i-uo2Vbpzma z-@hXte8AngYLy7^hY(uhptROdknhP*xQs&4xz#zWG7jWvUw}SBEfn3Ijui(Ev$+#9 z_=32!A~C(ADWm2Z>F!>=|2f(bG2C6!u%*Tsw2DK@+g`M|#C>yP#O}pd5hi;cIvC*; zb*N658=F3)hx->!r-$NS!u$_JoLGR0O$c|jL*hF1`vy%XTvP+lvF1Zo2;~|E-<5Y~ z6ij>rl&a<5aT4|*>y*^TzhkN{u138*sC3I@h6=79j|80|GkSqb)5YS(bAW*G1 z2cvv}pLKy?2C#NbAzzHa7#bpm&tQg)fdL!1O?=_H0zuSC4D|3w09+J0*Z{@L31Boq zshCox`H!~1gENH`QW%3lSAf4P3eqbLBn)6di4(5F^+4yWU?}AT24Zw^P}3^;I{bij z2bA?VFj9!2icA=T#x+QRd$(eBYB{!wz!erCxZO=j+K zVOZLz&THKl$~X~X?(Izd%2_{}=W^8HAko~zj`Nf!Bf2h0D{i5d6`&^pf1UT_`>#pY z&nTKwIh_5uK3%Z7zWmL`|3NQqs=-pALjhEl!G@6(wtYjB^sPjsq`rXSo(!`37apDj zl>X0?lAhAly_QQ9ZcI@w#wBXBZT|k*YQZ0!PWZLPg#hjV%Kq9qL?z;ZLQVF-&3aj= z0KHV{9SE!&k{KCB+@-4jb(k!`L4NDGcMZ(Zy)u57oD7eTXa5oW{3u7e^vYnNApw+Y z&?;4jFF3@(!IBUULW0Jm>=8;z2nKo*xUBd_$r%R<^o0OZGzsSrLVU3K?;(AGBAQYN zyY(|$&uzKI3m}fC0BnN0ZQqw1QVrkSSA|gpmnRPJuP979fM$^|UoC_f8Xe6Dq`pdn za!!EZ#T6A5MVA0&Byc%1MF`Ri&O^~h^u_51luu&r#MvrR0{OZvg&{Ai#6(sw-A z<@~_L2K7ClB}d$eIMsTjgb_8UmoF#wLA1*ZP;MyJD(Lu&l#O!+$iXA%fB?EU2{R2e zh==#p-Jf6q$7i_2{47|R{d3rC|Osw`#1ud`9h_YlpQAbDXuO z<{UrGggv0e={(IKR4f1+ohALevE$_HO8BHDvma)ryGo1ach|qXs%zM zEo;mLaPPt7@$0ysh@$vUL7OpN#8aoG8ijy|Mmr$Dc$TLmVJ2B45P-lh`(v|7a+en4 z{>NMfzRHUXh)9P4`P#$N69qKk(S`gD`gKr*;U4&Bh<#8$BtAY~;`pC| zCukVh4WOpRDj3*<;x!Z(7k68|_4M{{=?6pQ3oSzpgU}T~oC-Gx`2>bcx!%k3k1)yH z#PTMr>DTJW8#*aBj^$-&owDVWp?$h2QPl#*n`VVhy2_-y6r0*R!I1d}Okj>1ASDD{ zc>C5{XQs1=#t3e|d+oDvy|MljI30Wu3?Fz~)X=_mI=X>wX|Y0F@4BekWvEx8w=O&` z4naFOC!wDVdV#`8CT)Pj3Ldoxm5v8X;xppMWHNHlgn|NrLPF)PUh!RUG=Qt>3~+oM z-@(L$1WFWk8+vF1LsH&CZNnIfY;fDo1Da{elI!EgMxg6a__sOcKwzFg%TI8z&&Wie z1_>$AL3y}f0TT-guwf}VfWZs!|0Lk;T|nVb{bgnI8#}78zJD#Ao}w-3J1>Z!Q3!qy23yi&!e0hI{AD9`Amh_xIiXH*$a@QAu@6#d>Z1IUX$OOp zEvv1YoL>nnIFM5Wu~`8J0RH+35^jl1<%5_kNW`II0@gFb5$Hzxw3vgH2SB$Xe=s=6buL0^Xy`bPI zomah^tE+JzlA&;kKhPXjav#NRq_|;+a@(Y&GNYi(0D;Vfg@uL66*OhQD4RP@5VT9x zJ}^?0`o3U4RgelCkP%K=cWxmrb#s@zn{eWiCB4n)j{y;)AbN=kFJyZ^O7Gt7G0I$) zxJ7mC&>pi>jnz{Ox-(9yu_T2aLG^UDYH5i#fYG5Fg6@ac-tu+mq&Y39wlYOWmutBL z7X`g1{aM(J9T}WvoZ!5HtH=j-ycs4ByJ2RrN5yPod%Fo5FRntL4(tOOZ?mgHoe4Ox z{J}8|3Zc^lS{dlX_I`8Q4+V=b3op~*KturY4Zze-0`X4DRLdZ6!%*COd>%{&+F9FE zfAe6oZy2hQki%jT41Dn1?-S(uNFf`F_Qeo}>rtI}-!kUyV%{S|743TQcL_(BThC+b zIfdWGRA+B&&f9OYjEf+lipl3Le%vNZ=Yxe0+{pY)B>!@OY$cZ42i9N&`zz zaSW<5$KBYG@?S-wASQ-^G}LoQpqiw#(=J@$A&qjj5#2x0=WKNuDu3?rYG+9bOI{OFwPD*7(4Xhj>Hl?d}H)e|gkA6yk9xk!%K| zan{^p>`nOqU_gM#r0JZ%e_v|;A9X8-l6axzl)$?ywu(G~Fo^<*g2Pg81pEb}0|ff0 zC9sLLJJ_qkkiUcM-r>zh98*wihxZVD4pH_xIfHvs6dRq4vG9Jw8rr=dOGeu zy#&EXFp6R*v56fX9u7_>g)bf%R=(yK^$Nt4&7kp$9*&Fr*~ojKn!{^OthS*|z!q5N z`|w*j)xB(^d1B&3Hm*8dbi?do^{8N=O%cn&UlHAvbhsu{0uGFXs7hw-Ik;-K6Ep1g z^Sr~)4GGvnRgO^1H3W|cE}*c?+w0#ya|FVRptLAERA_h+%vhek`O3_3_ahI}5vzr! z93=VB>S#D4E4$FQBIA?bEpiBcriTIvid0_85(L`3a=nb@43g*rNLN@#X{1dz& zY83Go0Q3KZ0USDI@8RlRMIgTlxIXBw0sG;1*rR3$Zp}!idtg%tP{w&cRE7>7l#X-m zMyMUkV1?1%MjcTIRn@o9Uz1>XDTTRe60;i^%SDMzx{b4myJ`uI+Vf^iVlmw(y3PF+ zv80{5vAIr{*`jE|gyC3sJ09r$D&Z;qA%;*?dmWs4`fbt2D<~71sQ1ESU(*Yc!*rE2 z`5AN8w?Tj8%Wa!H`DN(e3JN}wv3VnX4gz+n6#6hD@Gp)VNVKVI#H?~{rEYzc%V9C& zOoN(*Vu?@2q&y}9J!6T$`Qc)Ev}B3aZKyrgPE1ZsA;xtK@pH`164Q`xQT>uEC62$#pFBi_eQ1-m9C%@-$Qiyg5E`KI zCA_z9Qc_Y81uWN092_3BJ%k8a{hB8R#CFanPc^r7-fJ7uj@E38cPGI)WAkMHb;?T& zhL1$#$q#j_mqwP7RNWVid$Z^L=UQ1tbuUb%I&Kk`Hug`aLb>c=EM9rSGOh63<0J zPforkj>mn3C47*R7SBaA^NUbt zFnEub+GB-wouFe6knlj$rbWiftY*`sugpA|gf7>9-6BC9U?}rwZYo&A1q*>}I^>4} zQTBMCXMK;p!lvEg$KvJ{?eT`j6NQ^gh!2nvqI3vXv>{xV&jfXi5<8-S0Lot^chSQ~ z^rf17g%@Zpbe;z2jS^13L#sga<)pk153!jIajYn^J3QPj0K9*%=eK=bX6e7QI=z@$ zg|Sq3jE~*@aKfTjBV{~}j%y9Y2frtVy)a?|S}uI~dMCM%XZ=lQY0FhwOKZPBlaR=m zB2?By@pK@G-23^mbPGnl)I9>Vz5epF{QM-44nh?@gG}to8^{}i(qu*XwDj1`Go)?^ z3Zf+CckA5B=a?Cw_KAHq8D1w*a`xFZiS)*f?Bebd$NpT<02pjOn^9t3!=Fe~Q&rM; zzxMZ^8NSDTWGby0#p?8Ua_#VaZr9MADy8eJH5e!e2H#1&1zX+&wU)0zt<7=#xy3t5 zMlL*dauXs5*Xi%BqRIM_$#O%Ac9doEBRJ5}XtlJwjAm3PfoZNW*#6PlSXXn=7T`cV zq7haaDc?_cLQ3Kt@2{SZ^TSieXTo%80u=&djFe!ixy zz%=s&dDKaR&C>?CcN4b$6jMl=MWhko{Nz_if?x z?~CYhSy$)+v$g^+UbiBNxnG`zQ>mG6@Z}5J_d)~R-0g}It423#{j8ers@DtHXmHNj zVw;~iMJO#UPSZXz^GoV4oR?w_4xeL7J-!ucc`#be>?JVa&ioMK?V8&=nZ8Q!;GjCC zpnTXuvb-$AKu4d+=H9}n9x}pt&#HirPl;TcCU}{HQkPwzb4zwV#=(}&#`)Mi-y_mDYH@zmR3yyoKxKCZ%jSf9JqxE4A!$I zH80C}c+K$LbR2$AJvPK3n6Q3k3q?GQM*}%Ixr6OVUS+f86o$TcqR(}QMeuC3vi07= zX{FkP|pJjse{pYPX?zTJ1X%`HJiWjO!8!K60#5`hsog|DGo4-}?%jv$> zK@9k?)2hc9J6#h8ClA?U)F)pC)~$EpVf;liSrUeGw@e?7^U3me=8JNTdNtd{<%_bx z|IbDB>qY3 zuEnpxkH*)nKQ4^3G#lEu#B0{vPuHH6u0$Ai+>~1`Lot=URW3H)`{N>KborD*&C4ZY zs!b`fcj3+ed5^Id=XNw1?di`V81%}3{|!!TBPn?l(~o(h7Tc8#?nLY1`|*suyOD_< zVaR;Gw<%@IUMR8MskP@)(w82}6MlLM0goKMRyHy{WIQSqfAH+Kacc=NzOT7Y@V(PYBd z45c8|%boXaaa+bIRIgsrygIxqETo^I$LXg><#&_H&tapst@Rfxec!F`JjtJLdXfzCc}BIT@u@Z%3jzoSSdqL8?*?0=|K&*+gqp7>cd~wl_xl zuB$C>4+bcrmeTFWFm^^z5bVamoWCrR$(MFI;Te2X!pMBv5FE+kQs6kt7eiAx65T=R z(0%2&ZSfz^n~h~-Yd+z!)K1`PKjIomFe6C)O-}YaW`y!22J?xmv7;5qbeqN3Sp913 zf=9#uX^+COR#53_MBJnk^y7!66VSvyI4j-W@lJJE^|5t=xW)jkhK<@|-MYMtmNQ5MP#Zb8CP}Tl8#gTJ2JC;kdz&y%&DFmA) zWN?%cmW_#EV52Az!g`0$pZ{wP(1G5e7MIfN_k?rv32&-5kz{-P_LC9`_Dy7NKxe!O zorCi*K&a{HSUOgG9!Dfe3Bv9^7=bG|%T=okoL$aRSQrfD8^G`S$8*LavqtQ!?^ufC z;J%_Z$C+NmvincU>@u9TH(Q!?BYCKmbrD*}We-$L&8V14$Lo&8^xE;;(0q8t@%);t zhTYZ>uFWuAJ9UDlOFMOBd6niwXF2Zvlw7NETTiC+XP><`fh>6kffNUdWZo%X$^!ca z{LJ{{b$E{fU4he}w&guYSwqS{Y0Mr&V-m?Tc!VF8E4=}O#$I3Ab zuM$?U>TdqX6m;*bYg-!{q0Ag;=S>%(Pp4;+ygD4{7O%(%MlOA=Y0+#zJng^UXn)zBqDYBZTa!Ul4aM{Z2bHy)Lwyo+gHh=%-K#5!v zv$*HA6dGK1M}YTu0Y^Vkt~JQOx&aMWR7{Me3kAksn#Z6M(A+R-Nn?#24l!R6(kOG? z5Y&oT%X^d8c6dU^sqbOA(I_6Jnn?f3jpHQ^&!FUffCfMP zYi~IO3qvSVkt+b3f4)UJ|^dCG#@(G#hH5oUV%t=Qn(={A@_$*WU)yM1XH7Vp` zgUza6jH^DLIv1eP!hYLg$A^a}q)g~9Q1mnb1|1JtiiAM)#QN_Fz3%@xD%!vKi4I2# z;dp*wDzT({Mu(s4ZqAJ5H?7CI*N09&`AhjT9{PdakWi)5w{IjtO7cG4rN{DKkHoQn z$Z8*YkJ*QvVzxYmer#F|Q{rQBXsa(1I)!n%Y`KQ+m)Y(A?$`0sh!l2uddn^{W;U-d zyfne|W~Q?Ewn_=xGlSe4#X> zzS9)Wb9!Gp!Wb2@FyuQ?)vGEu%eq0^FL`^2UGOQ=tqRc87_k`a`rkSV8{-;pE&Rq* zsyjyq@@6i^v>bhAQoRvEU~yX~_0J^_3t?~XRr30IK|@`A7_5CYdr#pEHY~B54AtTP z^MqN2+)%2viXLM@os^_2ay9n}YLP;cW^q#9aIUFw{gzsrg0WlM)0{B^zZqLQ%7oy? zNfQO=b<~B^M9elx%bTBSgD9rukRhWLFH&U*&vdRQivTq9vqiQ-QR9l{0Ws+|3ZvSnxMnSO3n6*cFl23Qy#GLbYIJkvYsI82B`Ui3r96$UDD1~6e2Ofzi|3;I$Yh2?~W*Vu-mO7Mw?18Xci3NGhzRD}*BL7z1aBRm?*l9kP zTqh2*ntcKzwt(x~Uu%^8vHTo&?6<3Ulx}lxs-d%%AHs{etwG&gC{=2xsin@$Sm0ot z7#JM956%*5&G`Xh?g04JhMxtU~`*Xi?B5^v)!p#N63%xMu_^L2$``R>35aX~z5KqJRLHpIKE=V7GNmPcz@)$pg1 zw0ik)^2*gcw;KtFZ0v=%VFIfUVy6)z0uPYA;(pDJn~#>T!F%e{?9eMt&l$Vcchzao z-?R+eo4SM2@wt6^#mI)Ty*fs)4>(Ukhgi#;9s6e-YsRVuE=sc~U_`rd zXl7|?4TB_Z0Q{n^p^$nr!Tue+-E@O{kpjAHmrJ^7Ut78SbPP*M# zK~@LO5)#bw$L}|p1wiOZAuMl(J1nSk8U`(t#~#_=yDdgn^|(UaD-zb-oGB|*QRYPj z(RM=!szm8#`?7Y+X(h)w`hpYQ+E0Zi0_e)b8<% z3s~UR%^qbT;)5YgR9(DK2JqbMkrJGaRCA-sd5tgf+XzYo(tVjqF%3Npes6GY|2!Jc znZrIQLH5UWURT!EzUP9Ck$IttegPWFe>tua6F+5!ZqkE8{o2&BeDg-`9T1 z<16PHew4rul2+v2MiO`oVS}pKue2jd>d4T2b=zn<8q7S}O7;?3Zx;0WZb#-z*pLPv zGV*NEnRTtJTsW?QPhku>I&hnbwTy(0jC8ZHS-Trf&6F;4=`jYX78VwvGq^TibG~bh zOR$jjlKd?opSqwabU6e=6QI(D%5mCRTI4yz<}`DTY3JVLZ`H6sT^?^?)$&(W z3ibOY3YXn0P~$ehOEq{P`u2_`g+m&T@HgfwuJ# zC!uVnaD0K{yaThUUuzalaX+Aq&lpG-96Wv<>kYmpe}bc+5Gb0+!&W=kGr8~ zPSoqcdr}t=#!ir=z_rRRBsn=DkN5e9^im-)B+0Gv03B?E*>2>Mc778nj>tIkknzcs zc)V=y|DFK9@*gQ?`^fk>Z`ZE-Hv5O|(Fpjy zV{v6J0VfIx;2H~z{WW7>&1bRphMf0zw{W3NLE%8NVd22S!}`IC>8r|n*=HFg|~-I zf9`mwD3a*H7+o)P6z2l~wu^gSd8*1A1%8K3mKV2p7%m`ful|G;-u)7P^zO>P_3n*> zEB88&WO9je*En}g>?!d8bP~+87`Nl>Po5H|pJCyGt}QM2l@G16v^4asZ#jDQaq{zB z&wh6=#(C$p#?V{GF0Yz>j-RJ})&tKm)G5=X1-B12FF)oil*4yHJZz<0-cmT2znyZ( zTm5O_KHc74G(Eg`!3saiOD)0K);f#?{|n`5Zi`nLcnx6_SIsW@%1bT!)X8VEkon5@ zg_(Q0$S=Mu0i z5L_4!32|U$2>SVv2ss#fT0a-`@Olojkkpjan&k=qs6uBMjzNh1G7m*q`ixy*XT3Lj zdyC{agq&H4@s?d})?F@2IO`UhJg30_Rx~n?vS&j8hbA}Cv;E)u=Y4>8yLytV_vkX? z0K*_ZyNdapJ>RRxK88tv$qdp$Y&n~ALr4qmNr@0{m};C0-(q3m=b$g^4($$6;o&4P zraKNEZObv#F{YkFx1^$SA4_L*G_SN&6jt0H*r2v}!P-H*#i)p>VVfLvcq?&>=N1!*ndA=7E&tetH>SB~qOe^)IF`bwW zvWyxgjEuxB^}HLmdp~3Eu?<>DlTxCA4R@vE#x&!5k*%mO_d=>BDXH0!Rpf8Ot7k|hg9nj3v zTKA{rmi9GMj*rTCZ*PZI7>bQ0a;^NtEg=5$evIZSRb!aGd{dpVF|>j2CDJ?8 zeqqrdQQfj7jIEC&vzevuUfWf?SbR177}GAl;`)+lhSK{DOoYLJ$K4Np6ZJITx(m4F z_hG_+7ozJL;fk4dS=rcI0=(xk?`c68gl z=Y|1c&ZTNhX0#ZB8a)Axcug>m|9zzGXAg81czaifi(y#U;#ho_y8q>EyY5%bX-VSXiQrY2EXRJ7Xh<7De+eh@fy0Lv<%34hU54zr(8ZI zlb;{IGtusqv4Jmo%hs=NMOsYu>bcg}I-+iH5JlA1M~9F!#dtq^?|>$xytn^#H51~g zkomx)sQB$jy2eQ3O*^bVUrYiOHBy&oDc_O4@qwDmijq4IzaHcy?v1GF98G9_rMtk$ zS*Vuyps*ycByy-wOwvcLe=&?F3U4v}>7iuX;>*Ik$p@~E9u7NtJRO@kI=|C?zVvT8 zSo0Ho;Xt&f=g`XNAXsCVT(j{yANjd@|HUmj2Hv*VCv)v~!wKk?uXpQ>CvQFEgvbLb z1NneP6Y|7oeAT8hC$(UyWLJ_r88l%17zfky>9&}~m+gyz?i0=_IbSp~ zIUecO2p1$Li)ALd-Nz#uNliI#0QU zy67KkE)xCU7Vo{H<$?GDk~hYZ!rse6gKjp0AvyyZAdI|L``asO`eBOhwpq=&*hT80 zxXO27=Js6jT4cVoF!K-bWbS6a&{M82dMfL!Wkd~+nlO(j?<&9nycZg2$>*h}F$2-|mb z$5TT8by*voWJTT79o&`_iG&GBMwDCdz?t<2`SJcS+Zs3)cl!qM;B28+&W@<7d^?qH zo|qbqMYHS~-yfURk;Pgk9Or54H2AV41k7DQP8$zpca}Sd?}R{!;OU5~{nxcLUMI*%|$78#(Lz@+a&1je4Asd6o;<&JfkDmmx2-NdvtaeFl@`yI=bW@$HHS{GkkZAoobW-j&l z4|N(h-%3=ulUzkE`x?8nMJj8QvZUBcQP@jFz8qeKF|5$Ju7QGler{^JYF)Mw7@`sl3pOS#SLGL@}UUryn%WVL%s z*~Z+Wes~LqRrqZT?kQrHnj5++@|7>t@6O5)DI8|lhPJ{$B1|^o^$tG-l8G^@3-{NX zY0mVXfg>Gy+_54&dYl)~xZ$ot^xc%DP$mPWTz@2tt+-E6a?5?qjejYnyZHuo9dwtw<&8)blqo-S6PraN- z9(~W*c{l^>f;7jih)?HRe~~`04Y);=Mh}~Hz}v6$cMjt`0sHOa{NtR+zs}Ha^+>Ue zvsg%yfb8_JA}vI`Vmzr}r6T;=XGPWu=l6;ob$twuw%Xke3StI|%%wJ;GLmIBr{|@x zlbmDM1o?^_Vgi01yjaB?JR(U`In&B!nAdEikud?3y7}!_$}}`=9S8UQsSsGw=bguA z|A^4!Gjq6>7)t(&=3o674I!E|ML5 zG<<$QzV&0mgr@VokU+o4oX64usBVjzs1PC*B*eq15pG&m96L&+3eDW}VMkafa3w|Y zdJXI~3%nlh&+mR)qlc^q172an3TiVzUFff6@u5G2f6?!t$ho2LQ)@KAg8KhAF<(Z3 z#BQ$W-5VpSc`1=qYOQ@74@ooHGgdB&NcCr`k|Z zw?12OwbM;^+^bmNQ~*(o@g)cI>ZtJ7v`Qgb8Kww9f_Tb$b=??MDGd2sVvxZ*ckbL6 zmFX*A3dIG1^ZE)W>PZW9QZlt_Gks^S)J$Q{G_-#Kr3KGQh6K%X1>_5*cT6bXO{(7wI9&g&iu3v;w|vyyuVl8a zj-EfKEn1vDBxVys(GWcdbn<*QTT;) zN+RG*zW)fwdc!m%UQ^yLZa;FDS5OGXdg85DP;ekDb49n}!Tk0mzsg0%6){U@(^J)- zO=X{i9XBU{EayzwN1{tgF?B(>OTSJ#Gu>;>NzAmHR+qU+dhvL%fBr*bF25iAqZN$o zFEV$-CZ*$>AZW#Aktpc=bWCOR9-BqMu&Oy!()@*7noh`Sa?JNVXWN?0?@IHaEuH6! z(hkd>{J_XcaW}8yBRg)ansjvKp0(8zF)@^G`4+jmHWHljO`=HOXQBV z{;iFr{bk>mo%#z5g(Xi*{G0L(>IB zX(@1^XSFzb`q;ju`jgGkX3`2UJYT{`uOn1&$h(l|=#S?w*965*b5;t;2%&m~EmIZ> ziGP0Q_!lwWiGmXj*-lw-rcGfVwa>DkITmS0&?#!oibX=QLhuubZVtSNhVYW_*cp?y zDlHbr&T1RC!WowxNjbJCCaS_wSp8wNOQy z&qFK`YV|<#o=RjNO%xx_zMI=lP4#|{`(}$@p;`-`M8IoJhT|2TH)R(^fAFXL$7O~; zpSRAqEw~utoO$EwZQRgn=B_cr32DN(sEaTe0y5b8UV1{+!mp3E;laV7X8j=&Yp@$? zS#IiB*O{HtJa5lhsFWz{8^e;xt`t&-n-%W$RWZgl^4$FPTcfL4;E1xG3Ro(Bylw(m zgzvsg#Zy%}>~05w|18w@>dA1RI}2~+WjN{gR|EtESn5d6Vgg>2GNJ1{k8vFg@Xov ze!a=1EpnKH+@|WBPWqs4!Of4%Rs53$Qav(CibD z2EYf^eFq^oCjS!t{oQA;Ruk^0&}yw?{f4Ev`8*7X4gqn26C|{)zrTMH!O&i!uCJe; zlf%kkPpN3zF zz9dv+*D7Y_gtwXGagNA)7WNvRZ{^)yV`b;9tcnL}!jf9;~#hgDDnVK$5?|u^?bqjA_mhl0X)Mg#G z&ue%syZ9chtlO`lpzSJb+Yo}V=|_NhdjPfoz%~#_v6icJo-vijBZ=Yq_ z1~_zRqE1shLgoY77>8-&!A1K#lgf4e^x4!4knh01Y@D+!8Je&n>6l$=oOK%LRbibW zFjTcIcmWqdCm;)wjRM7r2aHa>hbH;edhG7y#JtDkp);Qur6h&^2$Ia6;g@%Bd1;jbgQiLjwc->*Gt4i|I3 zJ4CKq?^G|87JpKOt-wSZdM~5Gxb)fmYTFi;Tq>X>uA!wx)z&-KayCue{jrMDBV(1Q z*fc=&(jd1xl=;D@Xmy>eQd`UI|Cm)_Ky^0oao)vRFFiyR|S_ zrbbOo&D)%#Z$*SW(_Hn|q8c>ZR@l%7N&_2G-Y(=goP>u*?@g0qe_Zn$h>DJ0ox+mJ z{9|2*5qD{1qtW0`8mqHUq++}tJQ%$d zqIMyYR!1{uv}$Xn!0yWIPEmY@i`K)TSH6Yc1X66pAD*{-Fxrit`%UGK=_ab7gJeF-#HY((8CrjVPR*`T3Pwd+JMNQxJg6EP8e@I;6T|qIT!8?Y;UY+ z=<5&7+{VZ-$2g-}$&m7YjPMaw92;i@*FwfqQr@1cAaM%Hljl`FLZSCBD>A3$dnTo! z9iT3cBA|vZk%!Xd{1cHDe7?Hqf^$0K95Xmy%kD`EfQG> zpcP2HGaIAEGOgU&;%~lfQ!aQd5Pv}JCgd`8BC_Oed zrb(4ro5{V=NCD8AzY31}4WUrVm$p7oph5^6Fij{jHjI~Bw^)Hn@80`;QzG+kYlVkg zK<~|^r^WTJIP;wCgiUe=1jih*JB2s_Z~I(;$l|oqHuST-fiVdh6w+IQEsW9uo%Z!~ zX~2x^a@7T>5n@|Jfc#0RWS>Na>^lxIbgPnI{9gbkqSm!G?*YH~_hCBZ`ow8jU6ngzU{L~hYLQ!DT-rq=o6 zdSLsPjwhMMx6=nBZ3VgoGJG6kE!nNqce*saE09gyuB?&NO}p7n^`18pj_(%jm}j|! z9rJm;sQ-9jV`0%Yjt@p}?}U0A)#1lZAV_cW^Lf7sDOG=sxyW*z-JHX$dNR4dspSsq zoAZ1FkOFN;+ABBVbF#9sI&5CwdedPudha%}GiM+GtSME?4IFffYTDZA&|6g2fe68{ z)b`OixW6Y^mFDja0PzmE4Ghl0teE7e-zxi0!p2DG{7*dI<}!OMsPSCQmSaE{bqS5yCgnRy2Y4NM%qqVn8Rl+<1r<1N39i02hCpG;N!7AKP61mMx zz8=&uhNv5P2hR%jWO^)I@!qO4)yN&npwo4EV`3(+Gt3(j9GdhrEskO72TVIt1*&Q- zBO{|zYLX+$$fjBqKz{xRWDvDXrl1k$fA;jH93bnyu`=#cu0RiS=#Sr>cE9Ap@N{i} zbbj-xCx3X&2DZEgiyu3DVz>TSaf= zdCvc8W;j=K8dvZ6z-wsKi}~gY-n+}?Z@nQgEvG+10_@q75cV{!oTGfPB*po(hrJ+A-O_*n}t9BI*@+ngcaC8b%9T4dE5(7jtF8;~ljFCt&~s zLgfq)221D&RFUg)ga`yURJ-+Ehq{v7DTJ2J9y==}DwqC}0#5dB{T-RO-$W0fft*tp z5bW5$^Og#v&qh%?I#7#4nRc6FMYLFB?p+U`EV(2P^fWV0ThMHf9i6n+B0dd4;No3HvSUl_RvpD1JXGYPqu|AU_~=XI1Sd9SRfq8A!-4z(7G z-?T$wOtYIJA8WHytFjy9v@TvO=25s&=DplC^_R~qvMsSHQeKlU2OdY5OV@mRfZg0_ zbBbO%zLYY3+nw#@Xiw2rXoqwfehR2mBi!o1m|jw^6v1;%KJ1dpojap|lB@QvfXn<;sYE%F*Q9j{ z=%5zw#rNPm6@dt5&P56%<8sLDz(sfk-$LpCiy}=NEtO~13Tb??mx%Cv0WRCi@^&OC zq;JMP!~9mBgU3_@Psf<2ZSbq`bevyUI%$ba!)H)pW7+HQf$NsG=3$7|k&@ZouRm%7 zIvxd+s_Iv)N2>LKyS5qy+t~mi*5?|URW^RYy$W~w%$Zr} zo|(QE4_)NWBD#s+H`-U;yJ8X_nvkO(^YnijCy44&aZVrI+oA)nLq!O~gaIY>(f^Ou zmanG>te~h)n`N5cd#Wd1GGzblgHsgJfPEw39VjZZ6F{91Q(YF6Jo&^_fMA|4MAtv) zGSMpV*3PLr7#$V?6THlUy{W(2+f#jVUPfNtf3hVu6Sxd4fzEGvYey`uBRcZ+5xbge z6lr{i58d~Mwfz7?Q%27P6LxAHgdNI_@52)Izu+8v z5S-veAHP_=#N{qF{HCb~fRe!Al37`)S2F0}FTOQj@CI1TG&D5IAr2P+-YCUbVGST* ze%3!YrRSM)*dz3&jd%hhT-;YnOkXX~DERydP-(zz&<%-|+7$~vK!Ed3njTUju`7ru@-;}aCYphey&>tA4%VB$sLrhox zudnyzWbG$eNwG^Dse579AyijgrmEll8Zys*3US@loxaot1b}r}z3$8hVrfjzXQ(B%M!}WLdp|OHahaNqy?KH9rT_1kcJtZkA}} z@?M#qet#~|v~}1(=DI6>m&oc(@EqxIpNdU0M0k2BuBbIQ~rhVJQAV&HtYSkBVOI zm7i&RR6xL!={ftvsq;Yl2y$}N?J#7ep#QP-zu0(i_E1=St=tw0g#Okr@e6O5D4= z5|@h-v%wX~02u;e%Z7%ApxV(}u*0*nv(Ny~l8r;Ebb!)N#oODvb7g+vFSYvV=Nw$m zW-j}-6o&FK=(xNb-u`C9nW<;w%5?sM`-$&FR6V!fxOfUY7$715G|Z*O{*|c43Dxt* zd(CP{t;4Z?jrzyec1cYRYhohCi{-O}NpEPm#ksZ-Q_Y_)r~ zE*mM77&wwxtnoGl`$lWu!_eWoWtw#_6#v+N_&10A>uUvrSfxJ=9rEM&Mk0lBdsdo) zjk{Y99al1~UWu#OovUd9W|NgEaLPeBHJ7ftHVgEOw}=p$UP;rJbu_MzKg_veHyqQ* zRdESfGee4NO;S`X(ilEFLz=-9YBCj72*JY{)aN*0buM}w{PON5oQdzJ^Z%l3-&G4w zhHjlPIRgpLgnhsBkpeyyzYehw)?!(<-q?ZZ)WR$Vppiqq># zBCH%eSxw>9Yk|RQXW@=E1VT6J_OvuMs<6ISjU2o4Ic8}M+i!uq{N2)|F3D;IS=_Z) zyzPUusU_GJh1FLtoE=&a*oQH^3vK$AgN<>^A!*~eyR*5=p}AhnVq#+MEsk-)KvXIY z_1uQw94)T!l~lnhwp{mStK}X*6>R{{Jbr6&ATQc+`nBKW%NrEb>r0DZ<;D8FW>Uf@ zhX_8d?4b<^y*>$;NQaZ=x{^TuO?AZYI<@in9%Mz4ZTu8>P#wPatkr!mW9~S^l)3h& z^#w4}5@dgv9%PX`HbUQal<@J5dgDy2$ji03wZt@qH#rvi76gJ!N>P+U3Pn8Yo$Ju{ zITF;Ydu1x)+-})4Tkz~xGulW;@$W6_NJh}PQ#YPduPNyY_3^6`0qm3-1z<7n@bH?A zX1kW?k?lzXl7|+_#U}DLhMy`<@lEk!GhXldkJ+bWU?3{FoPf=w#KPD*1$;Idi8qM%;F-K2gR4)eu^(F@$dD&8}|5=xpt}H(%y-kG(AY8 zHC9cYWM!)CVY-^EZaIkL-l+(vZYf+XO3BU?OK})O#O5ooZhclA9bM5imD?w&sV(9T zPug=MD!66onvqkas`lF-Bkqt2yGG@&fQZxp;pHS>{DuNo>DLDzu6Rvw7~n@pJ0pZH zn`$_~Ni*!0cGx9t-bLqw9qj!u4AW)^hBqcvLZ}$ zzdz?|%D5+gEdP^3oGr@g&Ds$=*^|8}>(5}U_iMD6)mK85FN za%}(yi^ve)T?(A~cv86utjxA|`3}rTsZ=h3pj2Lb1Ft+;%dmS-N?Lk-wm2y%scbw* zemSz$%XDx~&u3$z4-~4nO|&)S2b)HA7e>yAkwyGj$qvpgKi7X=Lp?o4bfIt@OX|5A zeuS3{!F&;Y6nXzihoN1S`GU0~sq((M&bjr4&91dDCq;ssuCixCsIZs#qw;%AqphFA zu}gs)U+bvGMX=jSZH{aBrVaAREUc%lDR-0s@l@(@z$xCgsn*zsNjMKA|IPBa<)FPw zqdT(MO(YVZdkz6v9O2&Z!0=k}cJs(KqSykCMU4Aor2DK|e0gJi1-R`FT^d>wiT+#- zklrY5t;j9?_N?+p9k)_h<%(S@cNMYSyV}mzw7oQU8N`g~102TBXTGdfsn0z`8@(qi zOif3d&77PHrw=jBOcNAF26sc`UTolA73UNet~w_tR&M__lAlXE2z@2!Eb|?xi5ZAC4b1MO(wv?1qJ`kQ91)3=6b#8{RfyHa2GU8} zE^5*ZDGn_jZC1+4cRD1IjZX+ptLOC(Noo49@ambtCLDha=!ZYQE)6=QJk@LPE{RV|9Fb0hJD zp|zbvRxy0mpa{Bgr>c8zwVaH z#Fr@+!JQZ9Azz>tz{AI1-S&!xT-oZ!JzYUtS!rRbbzjdnMFj$6N7B;t(rc%Ve`;$- z`l9x%)x!6+(=0x9y0hE-6Le9*3K7(Aw9fU| zDi8*D6U{_rb?p%8gOilW>KU*am&E?=pq3f^nRx;+?6jrr==~#(yODOEj~KY!vn}0i zA9N=el}+70rd{peD89vxLU-_ZpJQ`~F@tA6TuwW$SB?6rTf0m#_R=d!paG460^mPMSVBs9`Yl zEwxJ|O;DfD<5^suX9{Q+zM%pSHH$yevRzXg*t)tc8@e3WIYUDlQq(g-L)a%mIE9|ab-K{ZP`VETV1XyX^XPWY9?Htgo*h`3E&^tq}fPG z=@!_^FZXu0WsO8-jR;4Lwk2n#gydMZ_h`y#$@8w|u6Em`t;%XL-v}IOT^6dJDzD>? z+~$79HaG0R<|@t;WXT>;o5 z_Uuq~9R|`yZ(x^tNvuJR!mGO$&T2u;71c^?kwan0HY9pW8#4oX+J%7{k^B1Tceb5X z7iMqJu}oWC3J(fczMW835L6f%9MI648~?*di+Lu8sj4fvLU?WES&3%8pDB^4wqnDe z>1I@SY}0(!&=|x&3a6)HoQq-g&NtBHi@DD)bD|c33g>gUQeW+N9Ld`+-x`^yg2T$8 z9-4{jp0K$XoS?^+R+PzUqo18#T#{U5G!Pg&fQX&B%N4paNhaF%**xFJZNAW9Zg{A; zAc$yvgnwNzq2YE-f!@)n7i) z-rW@jO0LkQBqh5-%tqe^{1P?~`gb7(ciiTQ-)(cWIA2I2QE4SC9lFJm(Yl{}#H*Yy z4Q34t4hrv(9mJR)4wYjz*#1W4`0XhxI!#8h^|b_4sNJ9x7LaI$QHw#(oW~i~^7ol5 zTzCNMeVYajMS6xhmr4JF8H)v54v&V?jO;FA(~RPt=BJTLR|mgBS9nvnqYdeKwN@SA zM08GueVllf$SA=`L!+o^ODD3RkP<@F3Kp_4N?TZ(BpV2_b&gH_GMiljOpap_Mge$0 zLPr9@g9wTsXmh;y4q~oItDG_xat5z^ZEC)3Ege#@d7Xd$XY)GkUzUkVqxZHP+ye!H z6jfx0JaS-5xZPF4K<@g7G0O!@`TF8%2Wf+;T(YK={PjtU0&}hMUsp!f&MB4*Tk>WK zM0QHQv>8BT}x3~4Y0`oo-*A|>JqYt8YO6-WQaEYz?ywmy<*7y-!#mT}K zv6DrtD+Bcpnuq(e<8`dgnye8(1KZHrfBZwc+{pq>AdL50A-T_VT4m%)B6hC6NQw2f7w4q~%vS)5KSM zYI4-sBOz}W0DU)=+Y{Wa_sQuan5b!JGWs-qm-cLvS}+gD%ibe#GGpcZO3g7=JLGgA z8783`_CoC%>4AmCTu$p(duanR4~l8|GTx#QHC6V|_U?{2Fp{7-Vsog)W~LXuYo5cf zG_BoUY3;`P;LJ=eeGx73p07W!fPdco?aFeg<_Jh6f3{J85DT=iH7RjN3s`9a+kRf{ zMmV6)ja%;u!cVUtW?w+=?Lv($3dT)W`buIvl~ElKQT|JfMahu;7Rf-TC>L-5eA-=D zXLDA&rlP0v&VfkzP*o4p^)$zXq-nOt7r}I#omL>s4?DF^%dXGIfu2t^+s9L9eU{#z zAA7lTP>s%?k9$$!j4RU-ks!9+zC(}Sg!v;lbVK;hp>B+!+>W2K-VOZe@J zYZ27uniFz6J42Nz*-_Q*WP3-RlG+cRj7Wu`Sb=8;U#4KF<{ze*+18{Rc$>f%u|dg2 zF-@lObNByNDi6yX)yQQpp1 zA(-N@Qe&5_mz_-TttK`vD8s82Iu)J~JA_&54|_E}{K6>hoEA%{YJP&4P?m^LrATDY z;!r~H>n=NX_!^$~sAq^d@vnR2`=rzG+9VU3&@S|leS%xbBP2KBfOt?&D?&D-O^rpP z2;Plsvjc{Cc#{*;^j7a{VEDsF+v*vcM{d7z(g;d(VwNutVyp)uKA@MA~)AHvavmPSaZL_7hx1rg$zUL!?&U4tuh(>b z^B!JP75#NW9;|2np=!HG8aK$vGaT;)kV0PXrRPnzMHwMzOq>ES(ph;Vu_7VATu6U^ zQa`=>hoH&Ly~;*Z94dS7&{ILT6dq(&=HzdY!B@LMC`=)Wcsm7-(&p4LFbCPwY+EUM zY-ar*W+ID>U4%D9(9KgcS?#VTYc9|U9$8e58;W<*dWO@)vJ3dQO9rDE=O}}+Y4pRL zZFD1qvXA)V@*lRnZ{&3t*;s1lLcbB7FWXVfpJS5ed3+%M8CAQ+v$DY&k0XZASyS?j z;d&TsU2 z5dKsQQhkxs#OTuj-<~idgwg^Sy8e36!<{$xr2jbs#&=SMaA$H%d}(da4VlVDzwM2s zr#yO8VX%Q|^T93mTP}HZC(>@TC-JRMZ-C+E^f-Z0V5?2SQ}!^255{lTaR!LM^L`bCV6CK{~njwg65c z*)spUBXXi18vDOk7yCs9j|W9pYkrSnJx4>`!a-U~D%(89@Og#8Q>x9;mn}I34O~)F z^eieV&1Pde!pQ=z@(l5LqF#zMUn%oOKODBunl|)OL1C(PI7!{tW^v2Gf~|K!t@$Y+uB6 zT9jYwZOJczVNp3r9vRH^;-m?*>Q@zsHEn+iRsvs&;)%4>ayhpb`}$FFb>gW6S#bT# z4Br>_Q<1H!K$t}9@GXdTv$D1>Vqe1j?7^t*xmvvRqEe3TD{ERVkGAnQoj;bOEVtc2 z0wTr&5p4DJp?9ZH?T>lO{hx2YRsi1~LidRhBjLyqDz_1z>*d{o-5`Q^8m>O6U;gGl z%ndG7Y4Pyd(Iy7-zs@^anORW?kG`Z`dytk2E`OUN#`nY6?Yr%ITP$ZiM@foGE5qWRb(8IrupRF6q453<6HhDP#=da`v6FScD;jXPH3!>J@*!iK42{?LD8QZk;;U29-;PCe z^r`j_c=q#=A|B6(CFD-CVI;0~Q!s0Zg?M?IEPso{cX;~a3hgX+=z8uwl+J?Oe*Uqe z$kBP?wxs`=3GG&oZu+5mpnYF?ZYIi@>$954XVYK!G=}`G^i5PKGWMRdVhQa?IN6YHKu(c=(O7u5@rVqevV! z%D6+RW#p=;OCR!S)TV}BR!X|w$Lre!e=+D)P^e|@&dcrE_y+-rR12{VY(f?~?W#$3 zHW}4`7WdT`24I=1$F5`i)*zbr6u^X3(!VX!7DA|;hpxwtE zYB`-#BTKp!{rS@+lya?ENL*styX2_q(bqBJnbW6vinfJ^MT4wq=#Pln4X%x)+DzGa zeQ-Y~9n@TlH>$;#zcyY`dhn%lc<5YEE0=u0j6Ci#$Bb>l=9lN);~($ikrBAVaa|Mx9gT?C71+W4*T!Al#{Rx5 z$ux?~J4JZ9KxXdfP|=E-%frs)PCP=zSc}N%3}Se4EZJu4s6`f9o{Z+X zt-yv%bQ@2Eu_#a=wA*vpJsrq<{<_1PaQ%;6L)^=qsMXK>+C`RQQC8u&JeouvjS0KGF#pW<1G zvf}j`P)Vm<8v7OC7G3xp!^9?{2@8f8SE@sxfR%117S{4Urk3*aVA3S3Gp*8ZzW7_5 z%;d!{VtqRLU*}z2VT`W7+e~RIN8cM`O`EgRBE`!e2Juc-G&1nTtJmL|v@VCZ5dIB)-u!WGvOb*&98WNf`~hpjYfi1RTppi- z)pgjli38**$S_mq@B0$ouWHmQ`E7riV#^wg5`AkiPt3Hz=FqX58j0yv3zeB8+NixG zYRjfj7}l$1*JJEk@aCG$VPn7RE4HwzcaF+psllPS}~UYoQyl4dqq zK$WJqw7nmr@F>pG;r4nj!X_&fB%1Gj>5EtEle~*dv)PZ8E_HGXGE)slS9&Nd>v~J( zy62}n#OLkEHvZt#*2FmH`*wz6>Ni-mCJBe9~M!j2!>|gStCKpQ{ z8GcD|w{_r%+daGA!O0zg#6xGSYCEJhGZt1?5SMLjc~i69%SZg<_F)vWV~mvsdS^;^ z^HvU)Fs)lF_~eO~S$XHXy!rA}pv0YNqn?4IOghG(t45g zST9x=bWMFqc=za%%%$s}fW_`7mH@*aBkUdpLTmV}_l&8M6&?L=C7ey7YuYV8?>}tl zR?@x)O*a1i?%R8Aj-eSigz=Y2Ur}@K8L<)f-VYo-0Rdh;;)8EaigQYy2GVVOJ~qQ0 zQ&2>bxMo_&(z+<$BF?k%T`g#xAt>guh<1CZdg_-c9v@em<#f+r@++sS#_i?FgR_&i z5NuC&FKG+b=P0rKIt^hW+>VLi6^ravCFbM#_@lO0md6dk zSQ(Qfb7jLQSajEo>YX`QY(W>CBvh`naCq$ZyaO;Kw4RJ39`zNQ{0nto5`W2@qU1~W z5>&+-2L8@>!~1NuUjy#NDkR@higbw2)dw=Pmj`P*Am7!d27V>NQzPa+lQmA}$3zgi zDC8`~n^ZKd5j=*~Vnx;)jmPfgiF6-hF3IXE8Q|KxhIiM&NaW#&iBuC=1ug6z2R#$O zH-loG96EVK4YPK8Dff5K9111_ADU`i#kl(%4BD*XtaT&G96kn)@p*%=p^vZrN#kM0 z6hsv*d?wt1$cywIDwj38-$f)_-GdhHOxjgW7zvqw+6NvTi%h+Q*&TuFC1F%qB7SO2XBs~0|4&gJg(X4>TBRL&~i zU?{xO$A`Dd#DO8xnaa*lAJiQJ`fh%rk*6p7EGb`Gk){Lko;RWPI@K{e9LJGUnmEn& zJPF1K095Oh@0Bn2_H5@fmVa}K{QTD@#WWqZ0ogzQ0;GVudQo|05vjTqK1eJ|oDzKs zm5p#YD`v5Rt!Hts95h}=9xVB`IR18unU7^-qjVI>#tULYw_6yL7soIPzN%mijMBne zl@@XF+dWa^^>ab566+OxC!&K}2cu&|xP{zKU`Ot1RZaY3FV?nq!)$2%0-7K#jHj9krlp?AjffUWOD0 zd&F#!W?Ifl*%P@F82{XRhdlP43?LHDl#{W1Yz}9AxUMw3Lup5M1WU$Wx*Im`-Vwac z5L0Qpc>7J+D+9^1G>X;Rh7Prcmji2TFP51!$LYKFeHzbM4X!{Pm%nY)Ds0o9s6$oZ zccW{QwPw50Z8u!hbNBK9kHCnmb*&*hE9aC%A=M$$OK)1e^@<##*<+dgI-HaC0~s@1 zS0CxIhvxq%ec0h@h`bgt{Gi~%@1CF3iV@IcW0qcLnc|k&B_@oQYzFPe=H9J&&a(08 z+4u-O+vF0sH@ecUNEKM}UDWMM*cD2IltjYtFHPaB_|hGTN1gb+%2(NUjojA16Ct8+ zO-*n=vg|nr7IRgYI;l^fzAGMjAxXEBSy6Ey_xR=x-Vfd zj)u!qrz5b_M4%-J*j?*z}sUw ze}$b1IluD~N`h`csBidZr(=XW8tb#;{xaavA)S?Aj34N=# zX*#I=O^xV&oPMe7f<>$rF^JBloP!aI7M6{A(^2c=xeId#K`Fo8M!!)gh)lFo9>B>t(arURWX%r zx-lEc7P4jcs~`VpnH^`KmyxnWerR^WrR$Cr9d_ohgre;)@y%ICP^Z{&QH|AxWj)W) zje4~;Li6uwnVTk2myxn(hKYfalzl3U2O@)$_l#kL41}t7SCG50!Vs__A+ ztwT*_(Oo_(ePpA&qY>p#Qk`TMYgw9Bp3)hi)PwcxM?wVe((HFmOU zIKnO4F2Rrs`fcx-zn^!0W%`-CKYf0Z)Dd3R#3tB(oE-nr(pu##bt{_(#aqRc6rJ7y2Ke7-o}i%G^O{i#!g88 zomaUuXbckXhP?l1>Ey)^O}bC~_Hsp(+4`Y^q?X2Kab!$v;r?4&8~dbbBjWn1kjG-; zr@l=#2CIz(H}%#}Ef@R6ro91-YFZggymW-2?2~|Rf%sgyzRDKHZYqgyjK_Gd^$E>o z6|{GE7Y}S9Gx7#e&}HKOCo8G{ay@M@v>)wm_5jqi`CHu>$@4ojUS5W|@tgER>m}8z z*_E4Jxx+Ii3_H`(EA;^XuJ;r?L(_RJ7C&(2#eqN)$uIcW>S}if-FAIOa!r(|>*hGN zyZrTdm;nAM89x67UVo02bQ$CnY6z&^`Xcl1F8D?rH;y}%;;`pYSaiYVb#me-?DRCQ zpc>>=cy;l#ki@levo+(EKgatud*v*_2E6xVbx|WLCGBpl1h`f*l9sti z`Sm4$s#43T+1=Dbc2?a1wHr-Z!tP49K>KWn%hDZtv@uvS7bo^du&c+2GQY4eAej20 zg@}G+9r`lst8x{iuPiL>Nbp@`cGom;xUB`p4FSBznq45%P*+}aFk&-f=wOXF3_Zgm zmoS*w5$GrjgKCuM$kyMDgUp#XsCLKSD6M4 z6eH9@H7Ersb5{v-(CbJ0w}8f;kc0d!O-7++{*T^=F4R(wQ(aaj@aY6u)A@-N#AD!L zi&|4p&F<>2w($+{T z`bFqo3e6-3gD}GUG1@jre17>0GS(KO5QW1;fNlb{hce;eR_}veR5{IJF(EE=(HHwvw~dviD+)+gM`>0V$Sm@ zaESxA^laxaFSZSE=<&hI;zDpUqhD^3%_1Xz4B+AYiit(%8*5FPP;5euX>=rA0psc--i~97OQ%g`+Rz{x$Uxw;nVF=j>_1H;+}* zLyj1%ZpI+XGm^@E=~f8Qz#2XmcCfT@jt)p>-Rn4TuRx|# zGc!3Fk#O!-6!4(u+@;|Tjd%4`Lulz4O_~a=4?4y>?e>|)$3m~O%izG!z1m|a=+@Pv z&oOQ#Cg$FULu11(yW1NT+d97Zl4K6|sc+*93<^HQ)zbnZIwB$4JKVt~+%!jI!Na+^ z)gE5WKg!_4-*rj1_!1~258LvYRK&^I`Lr0h;q{+)syt^*O^6sxT|IXoy^+T;oq6H_ za{6DJ_eKkB9zl_sZrcF0d2=7sDfFWXx!67MA1?~|fS$HYAFgep%+Zge+U?qMsAH() z;1>T@0&=eK;6STRh=azR<30=jDBEW8w>Ff>)t=AG6OE2Q&^R&b$It>pa`T~YhPbw7 z+Fxj)U1+X?-uhIXq06m#Fp_$kn1*eJeu_9K*qZ?EnELG5&w%@M0Jxzk%oy>k9Bnk% zbwCFXz3|*XOYq!Yqet8!9H{AN#I8iP?qLt1UY~AH7(-P`3nDZXQ&?QQyICn%IeM&O zaCJHk$FA`gZz|;wa2{@o9l!YkH2&0wUf4 zza^+_ASc0+Cr~@ZM}S>x_#T^vS}hK)=FijJAyl}SkM|$_6iCc1Eh#?$U!CIOAihWix_L>c$WMEh1v zJgqlkE=jc@@|1H|KUeZw=;{%Jo-(6a;W0!j;-v8o|G0d$T1H0q zo|dNHj`wKA+PqvZ=vCv3B&o7+`_*ObT}yqmDQNN_vU?L0c7Eh|s4)ISIqS3bjxmM@K^d&GkV3tmq{c@XH3>FC(P z8
0QBxj+;V{qhJdX*w=ge0{}BsY)tnqx+mu-y^UBj8`nfG9WSxFKJmmt6>$|p6 zT0ZI1%p#WEsI7}Za#nT>jzC-*Ms2T0vYT0Y`gAyuun#JG)$tRUe-8t}dhh;!>a zo><2R@%^ez<@e>q2hGRkLGYWU#g|{j;)*jbu7FyM>nkuLbQ#4uG_Z}~VETIbHguPa zWNulV0j_`T9H6~VG?UQ37#^h6D%%nf+u2bsD=r-3HFMwCxNw>oGWu@dz^-ie)QCer zuo0T2f+3^m1yDhH-~wzmcbY`FFOXV3bK`#XE=Zp3d-P+f8B&qlmES+ub9+L6 zLnNiwSF(+HGi)^KRzZ^uu0Wck@VYIQpVNJ3J2^W5S6%9PWBJ8t$y_)E7cdo^?p>L< z(D?0fR`64Lxt)n2C|>4d#@0u5iY?9AD^1%g9YLc=5t@?RdwkQ4+!UpJc7vYhY?=P6 zVik0#PFEQ_gzkwgX4x%bV^6P!*dKdwbm}2#t*&x{gUYOA5>a@d4tS)2PCyrloCyZYk)Kib4%A0nCpYS0EBU?zUDCAB$>BG-O~56b(Yr z<`pA5wn`#4+XQZUa2d8|wQBlDx54PW@QfC6oSYw`3dy@geE05MX*j|9M!^=u7_U(N zpS18;mwt;4RB?EXGcw@OHUqC8wG1s<)ytux+uv(90Ie1ZqXfF$I6J%5DuNL~ZUv7F zNpAPS7aYL@3>+RH$Zt8&l{Dhk@}XU~5_I8~0$Kz~h;*hisJSyKZP)NwpOsaY0bIDB zI|p4T*_0;ZIa4OYyl6n2By}H1zoZ>i$jRk_ALkH4Q$4ei>FN!Sb2n=%r#ksSYs$xy za?d$@dyEho=o$&!9*5ta3+=t(#Odde!Meo zdHA8(N_jY+XC^n8XT>~-gF)`fQ7W+LnBGv3uZhAArRbnm0ZjAzpE@uHbl^F=#_zB< z(FCqvdz0I|Zu%o<1V86b~ptxA{)q2N7g&pRw|f%aeD#RD-Qq0k@K4 zWXlC|1^N+=Kkla&cgy0B)6}gUU$HwFHTQ82y4~%$fqJ@5sTD8*sEfEh>jE8w)a#p7 zRaF(YuU6~V#RyvWzExiD`wTwk)kPC@;za@I40~?E;$q9W;qOoI5eJ-2Os$r~B=HC_ zEHV7KwqOXrBz|6Mt@3oLRJGKtC875tYkq$| zcfMTjNg3ZPR0SmPT_nWs8@Y*3fW=Sxlq8Q9X10e0s?lgC&53dI-;zyT&{<-V{r^wwFvD|j|?FD z%K9MvTG2wJnef5mo@=3(2^?ktywHug8un*J4x&r2hY3XHRa><6eRjI%Zy{us&d#g* zPIMC_>KZL9EEIM4!isDLiif>{Oi3eN+?xnl3@acAa^4l$e?rnlV$<1-P0(Bzj~fY* zJ>nXzgs%6iA&YWcR@={|$E1zuI+@>$nSW%ElP!#%?MrRjRC{C1$eQ+C!xB%=Dp;ZQ>$`{iZ)9|6zV~GIy(K+8$pFe z^#LC1CT3=W7R|R2m)<*m=^B}vHCiRmkc!R;*x6dwf|*86(91c^K>FbabP1vghi>|H z@0;m~O}?U{+O*wrCjC!qVbtdNK6Hn+H~|l$dBb^kKKw=ZJ56r;IcTVP1uFZgrG-V=`&Jf#?*(MoV~KuacarQ*E?jJ-dcC;NfGVGTqRL0i}$C7mM7yi<{l~5r)!zKky=-B zQ(?Fimz}3IobjOBMnQW23C-O<4um8jWaeRUVxE=|MLI9)zBRm-)T3K^?{!9I=G@Ro znd6jHF7+WF(tQpkOG}#JZI1*41Md_aw1dBTds!ZmJK66Yp_f15!i^`>5U6&+=)}RV zW4>-*8n}mgWjDvltLi?pG;;=TCPz1;@8GD{(*@jh87fIqbl+iwxB?QvbK%dqo0)TaovtM36RKo5!wNCDrP_vhY`UiBpB{DpVJk9S&)_lLr zq2&3if=M}iIzJt_W&b?By`$=QZIO`cljc9C$s9kKGmAtGm+lJ69r{gCTIfwW2UW(% z^uQ|8PE=Nq-giP(PBSBaSvNXh-}z7IJgL>i=*vb=uD`yO)V&1_pR+^ZVPUC^0ap`M z<|O4jJj(aqm#Es3mzO_RiBkVoZ2{57>|k6>OjaOv_crtjSgA)=&y}M@0VoZ`K?bsq z{xQD%l@fB#9s~*w58Oq)FN{LjIx_6J3bav@SucfDVBq#`w9b~1ks%s;4#ejG}6)ropR|s7$}0$-O`QZmA2^?kd~H~Zur*$=KsF$KBF^^mwWfwd+pWheHShl z6q&vr=M%eW)R9~^{tq(v33x@dXUpg3aWav7Ir5WbFyg;7GudBJ0f;p5?Oq8}Q&WyB z&?leqd6MP9huA(BxMoW;up6zAxx-)_Ooprc1V%%j3@@ya3S_6HNoJSMOTJhjm`k8l zE54$WOM-rrr{)m^eTE|Xb&>plg}oFwe(w4tgrV&KZgRQOQYfm#q=PNWs)3)0iD}-N z4dEi&#gagLtDZ-VOs>5-!*VSuLDqat+C3!Zs&eKvz_b7Vms`q+3Y&_3CsO2;6y~jf zcRB7YyZB!^l)ln-Cbb$bl(vj!POu+;dnJY?DtTyojI>O6MJFj9IeIaaLTU2(uhpG{ zZhzXdb*_htfuh=LCJ^1V23wF1h=E&jA-^4v7P(-4*>NQXra0d6R;Tu0a{xTh-!7|0VTKMHnMw~M06@Y<%TWgrd`gNqxwid#utP&@rikIynLn5n zbh{n$Q@LDQNBna`Qozql$9G?9eF8MrqsQs~e`^4>j0$fZ7kQRJihB||&r>x%1UL(e z20ho3W_Uvyh?Rqo>tju%QA?dv6{)miPU3y6zDd7mZ0EiQ3zP4fc%nvZ1|a~XahWP?Iog&j1sqAlbYcg#QA_;X`&a8 z8B!O&w3+R5sh9?$bqrH3sxsfaSN+zjW6c2YmH6f~L%X0I z{MC{A!{74aH6#oQu18^&fj9cF2T7N|xnFK}@4H9c|X?3)d0b#Gn&m!#%iKR>$Q|17&q}^|5ULo7$PV@(r}ypy0*4u(~*glFeGJV zv+__x@bcyOz9O+WK2FsxO;*-ld+x}o??5Fs(W9-d&Xi8DGGN;CQU2`Nvm0i!ePvEB zynW8R7;AmaSG`95hq05KW+ejEl|2g>GYf`IwY+)S2j1)UmLgEd;_GQ6j*aOI7M!ACJ zPcdkW-eDU^%gk&Gz5Zl^MK?I1++~AjP?hK#gH+4e=|tAHmUiP8H+pE$FYtu4Gi@v7 zc!=&u1VlJFIsGl;R2~g{o^2+2{k0gXP)lH0$6@Adfwm1TT^;nA=qgBeU5Mzn7a&JS zU+sAhpU~Sb*Yk#hWiYMR+1nQsgi9IUqXFLAVEdX(O*(@mdW9wRR(WiDw|3F!QRJ~Y zjy5IaRbQfarq$A-!EBg!>q9A?%#QPNJ0V%;pT43NSRpqKX#S8(gxKVnN|}LY1V)k+ zf{Kb3j41{fV|f28k+AB@N=P(gG(!M8H~P&h6iobh9cQD^!)=V{86^`OFMe*&ARty5Ou_6Qrb;!kh|;5C01DnstLdc{+62aq;djk zF5bT!0jhT$05YthSaQd-ew2dC&=)|EsG7Ou1jgwwf~I#OXjXo{5(a$>h`h%iR5`<~ znE?C)Q`y_JS^0AQu6=#hyFs>$JWv3BesRPEj7D^Wjg~4|Am>rJloLWKr}*Dv0|8derZ#a z$o4v@H?KNkIWsIOIP)3++=aCfQ}}mrM@kOc{i=%w@_XW2Nnr} zVyIZGnjf25i;(*?dqxl0b%eEbY9#r;S^FQvNogzFtD!|fUNRWh^1mGOl&#BTEvnc5Kc4i~^f0yyQnRDusbAs7W|I5>}vi+`G*OGE&k z!%Q<^c5>@hogh5$>@H0|SUO=~jt%FtjN?E#IghV)X_q+~0d)@(3ybOBb**ARfN2zp z$4D%VjB=J}Nk1{)normqwM)m0^R88VcNCF4}0S@Af(ajvC}0pb)0C)CU=xTF5dQ%2o9o=R=AjcsVqC4aFFJc#pO zXKI=}UEL1>_8$YaBIJ{7Bkyi>q2SXbO4Z*o$tJca{)lZt}-V)M4*9DQJImElr~epCIyGCc+>{?5$#h;PAfB+M^9fdgzO@PsB5WyV|3=)!k7tk zCV)ELYBt$&tthr0k2@{PcLSyr0K83bR*3M$=fm|tnc^8_F{2ZJ+*yrZ^fQq?#)C` zQ69DZZvwe7DE-M}-dd7uRNA67_46a2D6_VAWs?-G>sPUDlpA*DePI3_pVa!ZF*Pu6 zfKBb}f-d={#Jpap>~3~r_fQeB)|a)z85L?X4Rc8WluDL&4Cu+rlU2@e@V?cHkj35; zOE{clU_6+OCi~HpCnYCIU!zKHrtD}dS*U1t>X&VGzekznI&lEm|1Z z%ijT63K{G9Y6jl%kAUWy+FYrtt83U4dqXB%mAs-q``N)G#$XChYUI6lgxv)f0Kbaa z*Iw9q(JmEjZID9SR3ImXd`S(Eq0pW%Y^SWv{aJycOSAnIYLm#SkF7+@`J$HL=_Jgl zMGQSLn)RZhK2&EVlGh>{bAijC%qDc^sN3}(tRfEl+^^GF>Y^KsF z!y>10p8xUm?^@ZRS$|t%zTdvM&@QaS?J#17n`UX1e|%&&ToCJ-?-qF{gr;ayJK_~y zNF)t$y%{QYob5IeSkKY0UP5c1RsFDtg42IQ_% zeR7V2hWsyZ39^hyio2^%12DXEVS<>e1K`ki^$)u3k>???@0~MO$T$t6^#rOvD`yAg z4RY~MTKGp2wHjeRxc}ngOIB$3aT2FO8jKp3^G1!v@=VWU`l$BCg+I+5znb$sS9&+l zZTi9{ynY*VGAAN?+pPnybgMQv*A3w(est_4&_}dKcptj$-eV5oJbbW+WFb974f6}v zF-P`90A=NMo(&6hBLah)f3iS8$FpxGNDPvzXGCtOEH}z97@>%&`J5LK`vqG3`J{j-)eCjM{klM(atm#cfoH7SghB}82|d+UkZ1ElZ05hla`#njQ8-yYstOW97* zKaI+~xu_D=ZVr6Vj#?^O-`Tb$Ss$|CGMb~rj0M@l+X{~U99{b1-XQrW3g-P2IIU!o zcm2N;Uf4Z>%u53Z;!%%%pr3{8^3Gfxq@i4X@?4a&Qg&IAXIBE2Rr5L%w<*t9lNt zIE>bdzcJ5ij4n5EDtH`Ni zc3ATs)K5P7_s*fZW1{*3;$NpWPEF<#;A#!R{(F6HJ)RD@V49t;w_e=>;d4vWO2r$E zzLFX#&e6G|FO5>3$-y*%Az#IG>uf`X`fTs2Z$AtT z+a{(XAaf(sTuj?-4QjzH#XzHlewt2%1p9=h2k-BTW3c^@-ZBs%aytYp8Q2?0H6yPPptT z1{Q4o6hY3lT!|05vN>__-8ttXXIp2NGP~_pZCJ|V=g@nd3GcZl+)lkjMOi3F=85Z> zf+L~c@KYxg*$kNphbGN17YOlT0Y?Ki`smBr-BCz4{k&W@|K0^o#-={&z*p&v{(0*P z{ORm|#ytNck{$-!lfxOsVh!QUiB0;gMigwn`pKL7AiEOjQadc@u`a}Ttn zcK*AUZEbByml1K=eZA@N5A*c7we>pRAjiP*tM3Mb%d`Lbm*aT6eItdFhOn>Re+|A- zyof?T<{m;xk2lR7=X&=zk@AX8cD8OJ^&b8MpJxz75-ObC*eWrp#YY1QfhF%S)s&iNt;} zK8y9f`X_0qWVtz2*r#c(msH*#jY;CUo!w3dDFpbkZwYSnQ5`Dl8+ThJu|V`OC0YV?xl{|%H%-NV$F8<_*#I7dAz!{>Jwn$El~?&3 zklS)3{J$-@$93~H%AyN1{u&~!pwDx<(7sD0za{3b4Us)wXoONb^2vvU9~bLA-lND{ zzWp{SOVdz5)+_y3o8f4P1$X1zG$t)dKr1maAMc_p#t z0O*<&(AXL)a&P>V>P`y(q-wagZrx}uRhMSrEgJTyjri$t2}UNv-n)dIMH8Vx>7;5! zH8QnIcX6H^iYLc|FN=HG(4r z(Cvr=O?+8&)Bc|ElRl0|3VyOrd-vn9?(pj`R`inKSUYk1~ z6np~Vf-(N;v=03CdnslFJF9Pz)Mg7y<5WJAo$P%bPiV?gJ;Q&wG@dtdN@FfCtzA(s z9C2!uuQMK-E5#ijGhHxLxy2gDRc-wb?O{T>?Z*DsUx+N2{1i2>pax^q{DLc0y+!xT zmFo#YJ{)jW%WTy(NUSxEViROgEZ@{rWBj~RYUq`~Fk>F3bC7nNd`q^qpfV;kIjJ;V z!fPxP=zpHfhLK{+lJLJE@R$3Ly#>S%Scul=ydcxrLrh5fV=u%+3>`in=oA(W0P|ZU zsLdOdgc|ku_6(Ar?VC%>=o!fE?qwh>Esr?s#^6k?&0%F+7D0%3uyl|0W?UO1Mm*Fa z*%5^G`|@gG_S4MaSXlFt*x>`>q(^%PqL{27~fBTI`yG8)%82k9YFYx`Y8c_l^EvMy# z9tps-Bk^9U9;>8CNDrarD5)sdb~W-hGQAF_N_C;HH!TQYq_U?-Tt z`CR1P0wMB^%?o~yb;lm9YvXB-8y>w(fOuS)i8jJ~SPdQt(512qYu#0QdPkZ;Lb}jw zH<#sh&RVwriOo&?t);5rj-?J%M&Xwwc!P)-pq~ymmBJIs(-rk;i`vwtpHcsC_dTJ> zut`kjr|ZJQ%%)>Thv}$m_U4;beV|c9kxJ0^CtPV$6g#e?`wp0pL1GN8&TLq2i`+FT z`b+aI9e>`MKj9wsZJvl0mJ%sx2brlK(0ecQ@kfao;#M^eHyPn_3mNlLZy-l}@0SWy zikGqzAaqxfCC#h(_@#XO^9Iip>CrGz6NP2IRU8)71yYTjj*A8ool#{G2A0I4nE&aP zR1IKgpGJXL1@IgSs-~fXWzGZ_;QF38luvnCUXpmW3dt+<4eop&6yu9xwH8m)c^mpl9K-i!&{tUdwQcJf7YGVJ1MX-Bgg z^XVXBH|ORlg6Z0n>;=I^3`h&E?&P~UaK|0eYz%l@&iHM=M{C$O*!uV+h&iLQ{gX%viLi_n++r>6%t%MrvmgPdzu!oh_tbXTSo-lUJ zw6-OvGCJ+faql*dJa$#wr>{qT96(N~O#3gTIqP}eByP8NlF2;!<<9ps=OL-KI!!ir zs#Z&11SlO~Lr{b+ci)ghafcH^dkXjc`0t0>`Q)k&1MiHwR){nB@Qnu zn~Vg@21YWq<{*^f3dMGL#!Pe}7la6CuQ;f=-F+hp&n4Hd^Aya?%fS);yZ&h_yT`@O z7X-n?MT6=4?&M@uYG^=@a4Ra4?8%qj_Hd0fjGfuacl>H|eQo0ui}}D2SlkJI%+rG0 zR{hR&jLr9)WK1wU6wPJC+XBW?*7GbzRN6wlTc19<_r8-^iGQ1!Ke0#SparlE!w)0k zN?7s|E?LG?K2z+V&h1~bxLdSxwm#Ll#L@m4sM|P~-gF(XeqFfJX1*(!%++5{VMpitpwwCJ5@uXHXk^`ca*q#Z zl&B22ui;d5n84%lS2Pk(8&-2wo2Ciu-J5`^HSfkrA*e`s3QEKitsi*Ca*hjQ6kqOqzu7Zu^rmpFaw>BKH!EK|@t z$&EFBeBPtBMQ)#zQt8&vTUoy;IrB(By4I3uB-rJuK`;AR?O*Z@6H>!u6?Dqk*Q1WP z4VxK-(}sWpW={9pI^U(OubAw|)Kk+w>sGaB*LK?wTF;WU(WWzsjXxjFl3vJRm#sWmAj*Zk|Plm7`IzZ5Ra@!0# zbs;Jcd$A^i2?KQXBxmGr&o6~B8!TML;e{BhuT!OtU^3MoqOrc+7jvYmR+8o_^MbWn z*o%aRuWo_;k5#r_p(VJ%GcG<4%DL+BMHS?hIwCl<`n_(vn6>tPG9)G^tb$w z*IxODwKkU}s&(Z-l*^y%>toNy*Lz=Q8?_b6KopKVmNxuM(dJz6tNTc}1MOnH9j-P# z(0biZNQ@-93kCgYHH{PI9?_Cf7plaZ0ytaB@n1RdEVcd@2s?1#%0P-Aq<2rvxc$*h zhI*;A`Hyj2`|%Jg^c{W&D;4bbD_Mvt6P24_VqQ9@mU>S-^*Euv1`uZkOOH@c;xngw*_D5L2@Wu#4``Wv*$L+K}p`it%+mpA`R%jlIG{S8*P@5uY?RYQh=?P2GOfN5(OT zxZJy7YtBoB5+f%PjrG}lCU1_qd@;eN7`IT;$8^i(Ishg6y?v9@0=V_&So1N)Y5?sR z>dt)t(2Q07X7Odvi2zkQ8Ergp96*a)uf+xcP{sm_BTUFOv;aV5I`DP#Ivhr(ZtW$c zXxG=&t05m%q()w~hHiH#7^aWk)^{(gA#u4hy?%Sch4rUw@Bu2lH7j}@=IW55mF$h> zPDbtIcXH(_3as>WmSzwA&yYHBrjHV)8txp2wh#F%M<1?FUkBe(`ADgd&yHTqvX)ZI z?(x5*ui4 z>(gKzmGz@1y$;_#n|u?OwzBQ=aq2Zq$#A=Qh_NRfzRR@Skj#+1WZ{8YW&>2%mW#Y! ze_gf0Vts`304frbb-_OP73sNzmGY=0QI~Bw7mfTbYZjpQJ<6(?-ZXWVRp9H`LMq51 zbPtCR5fcYRM+3DNi&}6Z5P<>vWjdSyvr0x2jLs-&_2N1_zQQrCdl5kp7_Fo>R)>7r zvUNnufcisVZ8$(U<~VKneQfdp6w`T?cK3O`NEU~=}9a-6_bSa*<_iZLfIulGK4mcbmfC?-m);`=NOsiNt1yrjHtuTw0Yo8 zbS{T%aPNX*kzT;C`Fd23=NeR1Wrjx99(PE!u+9D;Fg(XRE8Dr|Q^R_m!C)b!?ECYj zs=S2K(k*<6hN#i!mmX?_{zRn$jVvLBY%7LjZtEYN^dY53Yy2y>OOss?4IHlJpt>Sr zuU2E~V4sOS1~PHt@0vB**~~DW8!y-Lmb-Sb=jZXo?Jwtv1bZS#kT)5&ZCAi4`+3P^ zWxVwsP}4n=6<$(`f7%c|&Tpi)NGl22&7eQ;kZUDCLw1^Kwl=)M<5A>p z<_XF99ztL8`#4TxN3^KFp9POg9lwpO+Kuc z-lt(s%+6?lu!iT8b>QkCW)T^&i3Q|@u=ixwy-J(uc<%2JOCi}JKbbj2l+imf1>hPY zKKzLzX<;0qaUInP3JP4%CxYdRfDzQBg#zfRv6|bbX9t&{Y1*(YO&KGw`r%EL4*e+i zSWFC;iPpOGt2+v`zO^4BeaW%wA0Xk`P}%0~dHMpXUSM6_&i$amMnw>}P~F7ifxTlF z;4~#{(cHZ*1vjz+d}QYgrA(AbXS2R%#4I=aD?3W+>ftk`3$m=hs|7)LiL;1KUWax1t+aLf ztl^I*#sAqnr?qDfI1~OL2i6Ec7=(Q z?g4GdU*%5WWbtZYndCPXS+DOf^X%1qJV@@HwQh}ZbZDuZ$BFH106nDRU_xx@ohV*roI^;paI?(Dp^IU z$LFeZ_h*>4Qy8F8Ho<*Pv%-l93Ae8*FRVF>V673LU|T^-dWUTw=m^~L$eJ%`^nNJt zjkCjMskx=d(Yj^w%=O*e6Qn6$?zzBXnt3hWer=OdMS^|4dE<{#9i#RV*8d|YCwBaa z^z7_!t1RpJv$PtWLPMnXyb`W^k7T3GMb?~qo#)rqT`O&6w#?s`ubcZp3O+$bk3MOL z0CBykDo)#YUI2o@k&>rkhXO8A%m3Il znUJvjxB7bYlYfv)qH`vDP|1)CTIlf75H=FPCT&1FL8p;qsXHTFxQrOQ7vJV!rOKT9piC#0e6hk|4{!6!QWm4vQ4 zli|+Jj~>0hA`_kf+#^-)p4Vz~xooE%0JD~C47%+Q(Ebma-OmKk-c+I5N!i!-V*8Sf zoS@kc=;%n9X_?22*K*Nv{72o^cm>1waV2aO|GTRj&#Cmrdg+<%KI$?=$i8r)tSnIr zp6+GA-sy3`o!^0}uDTV{1WX+^1&>YqMlBv>-nr0WJa8NpwGEu*p*oG6x;y>60GEDC zMu6wUKYw5jR1r!PFBR`-)1GJovd8!F-U5=4<~MGkc+bxqWNlvY55p~%__zBAGal^w zN$FFKa$ZtA?*eZ|$RzKUkp5c-yZt&1j#%#&<`Sq$B(?rd)8p3X|UMoxwd`b{$B+iL|Jr{OjZ#O92uMvNZ8 zd`KHMWHG-jBOE;V z?{BfMR)7xlOyZth`DK(lKjWW0&5E;o3#lffqO-)(|L(k$3XZ0T(IwH-V#H_-66Aim zgo%OWx&Dq-iI~--WqOc`iUtJPC1(T4P!eJ1wb0L0_Y0!9-Dpw*) z;^<=ZJ(^5bS9@v3_+7=?Y;=9CX-H~dyHRwVWP`Z8zH2Z;o@?6Hd#b>W^eDg1rOtB4 zh+x+b_b-fQg-qTZ6K1{WuB`X^a(Nc3)Qt}EIUAXy35Q1H=3)MRIE4MTD(#HosK!5c6-O{P5qSVj@~BmypAgED3zOANw$Sf4->sDicg%iR*TM@qO2j%P>P zyn08{Jae22(zRh4B2qJ>&A3_-tYseTU#?yOMJfI*|B!C$qo#9gd*^!Mc&-AZ-3%?2 z3tSWV`hwz;n1Ev};!5!uL5cI*x^ntkO5KrDDQjDKbKNB2I}N;Dxw-)WZtgjWD4e;U z^g2X2?%8zSS#gpXR&~;K-3^!AtwLQ1oa@KMA<5vz;E_DN?ju(ZcXgl!TFeqQLH7kk zH&dKuj~|&y&a(KVE1s50V$@K2erb%~4QqOY<|EJx6!{kY+JK*tjd?$JX*5c+#QUL5 zdeOFs)%RF)mK5l3z5&Xpu7!VOG`SQ{kIE_TI=5my=_!H6ale_PE-)v~|JjN^2N@2{ zl&&Hv<}0pfR=rgSS8@9gY_Cb!eaIMo(b(&Wn0N?oYMVo8B(?doIt>Y8#T+melhVUeWPSP7v`{R$hmOMBBA(DhQx`@Qu@uF)gE(empW z8X*=uRP>M5Hl2t=wj^9TQP&vAv#?at{H-Nj9bTAaRrgkA=E=IRC(~L^&iVM8$3Mw) zeZ6-5nLuBw0%X=ki#gwGRTOI?e{(1*EP1&mk8gfG3@(s8?RSQ@r(RGV66@(MN)lht zan|5=VuH~YgznnD*5UI_n8_vHrnRwuFw#OEuicLv^HnfDht`$M}!Ck)xY^P++vF>GCLj1lP(tHSFYbj=lL7LwTQ;pSIhe zb__p4ygni|UrYYC+I!&3$g2k*&E*5U1%ad1=F3rr+kEdImiq<~$|dp8OJJ&M@}TFF)Q>YD8$Xb`E96o%om+n$qpjCmuw)(Ot~ z>HTfG3g;U!V^(;U?hFTuy7r_yccL4;?Sjo1Ln#8O{$hH8X0bZtjIZdQ5Iu&Of-v_< za%h!Rs8+o>3uRQ=@}idKs@oF4N=nPL zA3=*2VYcqDGk&XM{H+Y;5#C)9FN0^rka=VT} zz06%VIn4Wo$HLzQSFbC(&xyoIC^+UOFW6=mm;Dg9G04A_8krp zWu!%MV%u~~XI#^gcoNQDP~}8u>A;6g`t)}ZjuIh8}$lTmw4~=%#8M#cN#%z zP37+X7gZohmVYdUp1xC|;C16qtmVkAkWKx))&(9Ilmb$teZevm5LDw%9W$A)@#P5c zRQ}~yE?`iv8j(MH=f>Ht2P#e^{&M{%UOP z8}Jj#{v7^7VT#%cSw$9gEp{>NA(QhiFMi~*NNo?h9jJCCR0udDezYp)jIUmpEZGH~ z*`AE9r$e)e0uw3mKa*r4$i#JD>8S}U)Nw8WhcMUrFJTQ&M!mabP;a=z?vDA2ZXXLA zW=^%9M37b9efy7ixM{T&sec$b#`+8Qs^x_s_v)b-^>LG;5|N}suxbP;#eAcGpTTz| z0BYYE85ehA$~L^S)5>@FwngmvBb@S%y!`OyK(0~>(N!YP-#?0*n3ybK45cBh&A2U1 zG(D48De@{`*PwCKSpq`Bg6HYRC?WafW9KER8pb+}qX9EKYeIl#26?ET5=AZN*Du^N~yc0jF z|L;a9%q6Z3mN#vra_y$;+D&bTTOw;M2XK_#sS4c_?-I?r zve2DvOWDUd&~y_B1BBps7aEt;EJd6O{0C!kkDW#}y@#zNxDU$>z-nmc9_NI{Es+#H zfug$b{^h#%eXi>0^hNh&-`0^!jOvNM+Ii11$1nsnDrU@UF{yLx`PvnC26W>dXoi-?j-VuoQ2bD{?Vk`%19()fIl{XCq6?O-(CYa{mG$^8DJMs(Q3E z^nJHXm{Az7T3ndM#7BT21kL|$yL+1u-TUpxT6q zovSJv1xg!1N+k+8T|o+40!|K?1bsU6pN)6pnFmKic#}h!mh=(AAE@up_Cz)QMy<$K3W|*TKwxL zwABg4g~e^%w=ek}qLUy6Af3#cnbS9d_B_fo10HzR3GW;qS}deIIyT zzF|j%JTut1LM6jIQ3)1aaUgx*vQ`|Sp z&M=qB=gg}nJa`fLSG@a;+v=~sMfr2gd7Mt~e4Q`C2RS!d_IPHN-p;APU)Z7S%U(ts zEkV0K!KW!Ge00U;aR!n&I#qF8vee8m{+VOd0UKs(IKN?5e@%jJ2|xeGqj&j51r~PQ zUxa1uu!~t=p{>cg;5z49G!>ign{N?Uf19?fCMUfbdNPn5oeKGC>64(`_DW$C@ZPaq z9(ek(t@~S?JonGG+Udl&gL4a7{0om>th8)-X}3txlsyqV<*Ve(R!v|1J7}+AIyPXy z13WKyQH3$n5_*mt@~l8TYR^481dXouin)W$!dt%6Yb~*x*Bo~9)}7>SanVXJEGr88 z>WE5>2^pDF3nbX>EU{+-z)eXd<{K?m#k0~IQzh5Z7hXo@MzmOj^YNWwM`jtQT;e;! z5Z46yn7^WGxwoZ6J6#`Lg%*9r4Ot24s|nE|S0ri5ADTxS#9I#yDezU3Z^Ej6oev<^ z;A6Ae4IGhAqz*6oc+6J5M=&)(W}1HrVITvbqgPRK-99b z%7|sJWOsFS@tBR_tW1y3sj4WaqNNoNveD&d(^th5=1UTo)b|=o#GXI>xlbAL>wG0W ziOA2Xx)z_r#(plr(@2wu5x+veOI?HWEKN%=w?0%uyOKNP63{wxeS`8j-=Dt4yfp+! z;q@u;yoCvq1Uxl2{1ifaGHzeBG@W02UanGBZfun}+PluaHTh#qQ2AnB_oRxtZ8&ay zm@!+Y{1V~#84kN^1Uj*8-GLz?473tB!`hC~WrvZEe1)%98Pn5#0zivRS6#$X)nHLt zMrIBbdQ@DJV7p^Cl0r^-+}aZxL`*7_E#EJpW0q4CTl+1Nol=i>DT{`^NAbQ)!e2L4 zms{}e&NkxqlXuwTM-2CsGM=wf06FgV(j)AG-ul)a#(`ll{%m4h4Ewq?y0a9&ZraCi zR60*F6qc^e23>tkQN{kLu3cZLzqhWyZx_B(=D z)7|n3BXPUnI=CdFEPjs2h9Jgc+oD^If+b zA$v|w>!%gtvaFVlpF6Z_aRAhaa;iZ;s%X`xC4Q2#iHJZp9X|I{9L&C&0Jl3TBeDW; zM@CRgqE(nOMWPhCar2Z=CL-Wxt zxkNebpmkms91Y_8a@~i!;!o{scJY2^#*sxX-qXm#$`6<8gE^#HHcJu|XZ9p2`acpi zonepKkCf;beV)!v!6_!bzin&(LfbvJ>~r8Bfwu%NqfQ^x;X0dn26}jUNww z`-dK!#qguQvaYWmUxtrD5Px^x-)8f3>*0=Nt{p;Ue_tCY7W#HhFIR2S&Tt%@{vA)XYnu_e ze_m7Vei^g~QQ$rf&xb}8J#t^1t-zLNNOOVEkf!{q%bNFE5#m;uH@7gjbY4L%75;?e z5!nU6JfUD-`CZ46M(nmD-xOJl&4a(vV+slU6=I*A$__#cbk#H}y7afD%jV!~vQzZY z?8AyGKBgmQ$C&+N*nArQ7Bqi|%S@~Ts6Q_YU%G2{Gd(MgDyBl)(~|x;Vtr2dwUmQPeWT03;RUd7X1t3}t7G(0 zTYaqpt`%F%Hx0&MrpeKh=)6ty$Svo~J%Ij)l2xuAe1yR{FkT#dh`xVBZoRA%x@NTjiW_oieG zkpUBL*;3*c08VduPDp&px5|5IvI9RoX_@eLMr(-XAI4`K`m}SVLA!_npam<#Kwo38 zSngMp7w^m`&fDmZl|L=xGK>R@IVp?t^(~Am;Sons#4tu)F_D*= zLom$oP#@$C->`AND{eHd0`zcZgtMxnP}|Ju+JgWdpAySbCVp}*A+Z2!%BD*vOcd>@KPSxAtujl*?tqw^07V;t)qiu?TV zLuUsRDqtwkY~{hNTQ6#A)NLbkz|+U(_}7=G(;r?-si~2~1_yOq*AjzS)Z$?4cuUNn zSO*2VfX0F=FMh6aA3h*Ma}Ui(PgjKg39l7GgzDseP8AU|v3G9iW8e+e4qxo=NRS(o zD4DXbWkX`kT1vQr$17GcI*Yt$f=Rcc0$XdRFmX9E%WN~w9^`6jJ5yoqx4gse9)|c% z+zkn3*Xvt<$F;*|wCS!7GK1u+)(x92rE2K!I@98)uq;ssM~Mry%Vx`Kb*>@qJCheo zE8lpD(Z%L(dN_YhB35fEA{pmTkx8rr5Jepu48`X1<;w)Ab#J~ucKrS9NLRjD16$eP zg~L=7dUb9NZ1?8*6ogr;;iRtphNK##@f&1ycr6ESoArFOEU64;)kp#^GVT%?NbIw_ zqI1MifJHFTk=;+avIE))oBu2ZHHC7G4F|}z10PdFPgYXWU2HP^!=taV6^A7pH|HvC z;3Rq1dH^dVo;kZT_s#}^n|F<#ASQqCY8sewdZjybX@Q|3P|41O29t>Hwe?CIfGi(%}2s35cf8EtFZ-r#g`BhMfb2|w# z%=L|M?S|$goT7AH%}1_`7m0?$P9aSyNm5}{Y`YDSh&3hX5~(n}YhIh}%Vo<*crvYG zOnaDDRN7vmE82W3v^3d;m+9UfVMpcR%py;RVJIMlMuI;5$&p%4mHZ?Er$7-7|Hl6< z0r4EN|u&67~(~_iw0_XZ^|U3rjL8%=7X7{-=`j)7D8+W*Vnam11bTCPLyG0N^W z*C-`pMa)_!tTOW~r;C(urP;2jp}NNu!omBqz1zEq$2VtD#!d7e#1XO@E^59{*{v|ELVzL`nP8+nUg{_&F^_i9smZ<^$-YwOxfV#<<>UkOl&3^NoCAyHlA$}NNS`UcC#rEXo`HNpwS54e)Z&0b%t zv!tw#7S=eAo?YEWKXa7lEP?n{M~mgU)%*}ZiWgu;PM(VoTuLN1hJR* z=WC!;=_TwFKrJel#>OdV*D7f=Gu`r;JObc83?rK9TZnl>*_R&7y~>|5GWsQtshuwU zpGpgfb^iH(U5$2PqTT!n$KlMHDTKeyg)3P&FZ<&2vsemI(FVDI`V)M?YO?_Sc2Rf5eVUF98SR%<} zr>|HWjj(}ysBx9=#iQcEeBjO&|B3VJD&1n+m`PNQ;Qev^q=0{9{xK>MU5hQdUMAMn z*$pPvZe77sO-9OXQX2U1s5KcS^|qWo4p6mpWubH5Tc-gNV~fjq^{;-+4s=y50Y;7D zWJk6t7z0SEpz(lg!z3u^^m=0p{w5xh$;wYEdCEeSBqXXyrNW4biMfHaglgsjB5-g& zBLv3uZ?eROw4Zia@8%SFR><8bHg~J~#=}UytT~O*Z~O6E#FM;@MYk!OQ-+trV@MFg zsAofoo31Uzjdcz0?j$mRp;&s3S<^gpd8cSiL0`ggEW737LW0OfD7+nMqDZn>#_i`r ztSPTZg~_10S=lBojG3&T-^N0mh1*Cu?7uQx}KOY>7{D(^3(v|n@m>s0mKU}T<5`HEso9zThg+CVn zwmAsBs~l($*)RjK~BP<3uh}50CuI4x@IgUoK*EhWTo=}OhYR%srYJ@HgH{G*d6x4UR~J+cL+m znyD&NW-Ax7`4Enc7H7#>e@2TY6G6$>qszrX!538ccr)(XKIn^;GmnvC!%H>4N-@T_ zrzOSRwNWl$(ooeGH2<u><*Sde(S1wVpmQjOW2N5^**Q9WkIKb^ zGGKa9+!0DJ%O9z#C&g_JI}QAag&X)M672T!mT0zGUQ%a=SzoCdM#dz&qN=3ybIPg_ z(z8B9Vf3kBr+tLxJ+O&$tX;Hz)P8+Dxd2E@x8kQ=LR4qtwzhgj&))yy zyi>!H&*`+xuh2#&m`8xT8C#Y-5^Z6yOl~2O-DhsV18GjFFg88geG`tzaBTYVs~b4J zPYPaG6|R}^%Z%)EID>NFpY#4vmd(~&I@hQ1ePcFld&sW!)2-KrA(jUNJJ@yDvNg_L zs3{nqw8($7=9sx*oyo(ZlbzebnwFZPl7G>mf??3ehoHn{W&11W34kWg+L)~n^?q~e z34oOf06u4Tsf)UP@hdq#TJJZ$lAa4CMiVJV1BtL*Ge ze3eiXIh4J!LPqu;NkV4!mOT!#xBvY;`t`o=-=*u)aeUA7-1Bpf=YBQ-QY3ZbyZnx4J;9LB{{%lZFXfqPzUt+veg49qmfo|C5|RGdm&n50 z_pKKVukZGu31feqvkp;6WOul#ywYAHP}TiRoP4}YRAjf37N?n--aZLKMBPkA`YxbG zn1KHISy$>~KF?Y@A=^ozgV< z$dmL!N?OX@jZJGa?Oa*f@~#*K9gDV(w;K0#R4jy?Tlo>(Czak3v&*M`g&IaB!&J0y zTz4X1;;ppc?^hS^-M`;H?)oOo_EU))LZ@<`8tPFY)I6oHh=YefD9@2YN)p7chTb7U z+j001z2ngH#f@iXJ$o>r{ho$K@2Cw*G?=sF&nV&smB$~(w1HT2n5;iaXG%$ z+Y>iKVEkj)-XLS=p7XB1y#Wz{y5SE><>7Ne*8!B&)VSq>c?B`NlH<0a5Fs5}KM|<|HZL2KvR4sG#o5v~ZYDKom-`~a7dFiM9**)GBolAy`kV|GPw}|ms* z-P6I(q|~S0FDuj3PtdrhayL!wP2#uJ0^4b(#R3ttfwH0^^%@43&(OX;$De2t4f8Bb z08+DYaF}(vUHY(ndsi1Zrq#jX&{H z05NO(40CHbaaSmPTChR%MJd|ZpTqixD3|UowP|u~;}c00e{KK#<{keIA2xSt_)ZHVw} z$>4yMoL8d{6c4Yy@KXBH_GK5vYQJ?i7RQQ)y*m0+N308Z^u8YCfVq|v(dA295;|xz zCcI=z z#V?A;_T<>sMr?~FYM00Iod5iRL{bt+6J^*`I8KK1BE!9oGt@ zp~bG)?l}nR@C14zDp@yUYO#CKP>aPBqq2pd za!XEUX~a7FO{RV9cVP=TbI(rt6V zn2o8PZ>~kxitB;_C3Y}e7#%R=j6l!i@2n=tM&XA}{iGvVT)G;7KK@W%*RO6k4Ddi-4lWwpfHKNtgfYA3mZTdncdt~F&12NFlHu5-1@ zp{-Xi8edDiLCb&G1*_1Ag(45YN-+C{)rUypiQhKnR$9?{E?r=o9K7!-=^J!61nyr= zN&X!BQs5{VCqsO;p9nYSmd~v?{QNK&wFLJNDY2`jzo~c2hhv|KFdkLA)Mc&Xy{dLH zz}tdZhvqVuDQ0iF)4{HU4YAO5!dPWNgYWmh(YLb{y$7R>D|nn1M=wRYOeZJhK(j*RxXc4+|Iel;yg~e(8sE7O z0#{0M?IM$@fs?cd&`jp=)$Bva?QwQ|ghw!W?iljKuRZ)>*8t9jJ;@>Jns3&q zb<$kg4yV6-w}{O>{&<-~M5NS>{y(gQ-i~$Bk;^)(`0+oy=v_Tu^d0hTD5OP?$e>p0 zVYY!WTmfJMF&l#>6D9_JK2yF8?|O2BPzGaa-ik*M$K`2 zQzF4pWp(uwnA@ww9BGS%kz$E(`G$@~*~U0|{#1ANgyI_LCr@?Q!2?;V|->xaAVqcl;Y4xkxmQ~blPBP=Z#>Y znHOOMB8PK7%z|x?llC`=_OE^vCWe%uXGh@n4xX(dd_4O*j zoLX+n>u?|`9u5NFYzJ#o;Dl4)C50?{qW>+6!ur&*j}d*oDzJ2>qFLdDP%&{`4e)v> z+(HX(Hsaj-jQn7D(dMGkd*@j_3%4-?j$kel*yoURgE-8dwlL8l!PeMXMb?oriiZk_*gD@32C@?S% zy85(g5JsdV9jXKkkwOl|zsDUHiHX9j8<^^F9lYnah}GGKR#=A=8V(@mqWb)TMtJ%5 zdt2_^yT`ND_lojj8yqp7-=lkd(-zVeyOVar^tSKdzKM%k_TBn&N=g>?2n+{GNjBcy zjfCNNxhzX?S(5s4k(mx7x9iTm2!1~#4xM3GdCu32&`7A!9F;Ek`g8ryHP+IKf$cC7 zYTA z4Jqy@s+s$TUl^wfiVR2-;w-)I^sw;OL`P@me5Nf6Wr=9CV#)7k)T=XQww#%1@58T8 zzIHfeG#%qf&p0Lp>fuZxV)j zn=j@XBgV!>b44@D?W#IckbQ2Cmkn%-lcs?5K4gzpX1i4!VEm6gQ&VqBMn-3Ag1ko1 z1_UZCb?@0VmV01AHX49&IGbH7f|-T9#;us%s|2=|5mR_70v6&p9zb6D)!ZvLT884b z@nyJQ5|h*?+8UCLGgx1zo|+m&x*MQA|7G`ag7`_CftqD-&Vpz$5c{>&YyT6NVkRvcazkB4C4DDtlbjZLB19sXJYN^W=)9zl zrnGvk+{vpg)_LUZJi49WGi5kQX*m0am!S6q9j6FWaT#HD7tR(EhiAeB?NR^(#c`Ey zEA#U5q9j63!@W3!NgLjud>g zjwW&ss`%$(F3dW7xX06G?xn9J&$SZ`is?=-v@8eWXzoR05i}6_n2!hwyMCooi|aT8 z$K~MGV2fTL;;V9Pv4B;cAQWt=hI!VT%&ZH2hm#KRAs$}HwVi27;13-1Ylg*V z9$lS!&e}Rnfg6YJ?F@Ou_;-RmciVmWU;ZEJI(r*nen|ODzRv z+`G#z`r~(dh-{!;@HbZjgw_eezhq$LGNO>=&4V-HYLJo0bKy!-icYU#L^NSiF$da4 zqX;)2wKc~|LZb8Q^@dV_b-gPk3NY{(aot?r*j2rIH=sm21E)ry98_b!PYHr^3G{Z6 zXbQb*V)fe7om)j_FP3}x60Xn$9Jrw@Xk295ZvJ-cN8ab1n_>1rwgd85Z(37=b5l?` z4BASdl@8crzUN%O&1c&dWJbB=xQhTl zyNQ#&XBfH&Y4<~<+N$N6uAug^av8|+{+#PxbQn7D7+TYG4emUbxna$({hVINx$iC@ z3e}xCKlYXOu#BfQ#_#Vq-;~}-xk)7Lmq~vp@<*KlZH`g3G}Tq2qsMtP>oogyVcG-u z*>(yL5U^mf$s_AB@3^HJ3HkL`=7SfV?M!o3iI}jt7gN@#xkpnY? zP1YBN>zbNW;bbB7N}?@kP+B#eYE4itar}ZNf!=@kkjK6RKsnuN1KlE9q2ib$hB)y;RNsAWVy&lYhM)kLt8AcTYMwT?mGJFXXkln zJNdwa6!p{jG6XF;1YFWK;Uk8oZp8x0%_mX)P+6#_^^emkQmdOa-~v!Psd<~rZIs7# zf94DU2c`VjgK_d!(%C;wLGA3)3_3L>3SuE=l+THrL-?EZc9F&ay2GnyVwlaH?;);J z^I^N+Z0|o%?e@!&^cyjnB#h(z^CmFpLx8yux!_T>fxxD0M}Jz&D($b_X@fCFkL=i1 zQ>(I^K9&N<#C>jFfJiH{BV8-COYxLf#-~rs5NRhuBIM_tN5*q~h2ISbZ%9|~8(gqI zH$IYuvApH4w3l%Hk@R0P0m)Q(hAc%C8*Vh7oS*{xr5w9C`&dZoam)A;g6dRrM4ZLD zET5-I@1SaP(ml^tN@e40^Qgs< zRqq{WQb9V;lZNgD#9VWE!XBrQxJ^kC+H##CUpkPPA*04TBJFC`THpv~f=@YLYjg5v zct*!nnkcBazELYQ_K0#ce9i!FizJkg==Sb%viw;7AV`-{HcY#7-QAdQo-bX41F}WG zB%s4|@%Mi@g^HIWyB8Aldlk=@u7n`V+je=7tPA^H5FeN*Z=Qj}wEij&9B}JHccgM) zs`Y4ouVPCmX6r_swPcz{kI z^x*?7%zV@onDeu9abw|*pB*TKlykxjjII#5@=ZOrSo5->OATei2qk^i{LMn_lk-^& zMD{IBZb)q7?h^0xKzTHdfAS#Mnc0QY!tKgR`TOTdSUCjz%=ZH(f@IFp8-i9vII6c% zh05x}_4pP0c*%Kd83U(|)_Nq#MVFcj9VLiig{H7o(QbQ^Fajz3IF?Ti&Tb=Z?M8u_zPc7-YX+*gfc9jOor=U@{iPr!31!IEz(B>ZWT5!z=W zk7S`vAYSlS!cWe>b?ltTDMf=bv%GJS4!#iD4hg^dy9P~ko>>y$9z&o9$>8pXtRlnu z;9F<7e@;SXEcm@<3eCK;V!6l|!OA@KhnmQOz2^mV$*P?(e!{jfoT0o5fm~urrQXMG zcL@&(!TxG1O&3Mj{x)>P^Z4UXYQoozB1iN;`Fnu5cbpwzw-(N+LOc5z9LsNRm zj$W6Klt9sn!1MWB;Xce@kn;LaV-~wuPbTyptl?7kunFT$N-RKEJWtE=`IAqzca^K_KnAS5p ze^J=YKg(sT4rkZvm!$&5wAfjmgfXwN0>P>BOsdhMnJx-pn>o8T zF}}u6;!J<2#1F}O!D-j9@QLMD-1aMtxp|6IUKuuvr?t!1W%`{p*4bJfKJmQZ{J0v) ziGAezLOa@PVdpT$GwU5yuZj6UjKu4F5E_C%zj8l?!*!(P=)r+=um5YItSE_ck@Mcs zh7u(xc-o*$zF#n>HjDmRCQN|OOcQZq!*L^0&LijHw|3F84s@3y#Z*adK84{0PiNlM zC-_guMK@+g#$T;^Gm?@~m%wna_2ZwMb0l8n(?M2R%=9 zZY2atZvUN@xVChtv~K!6d$7=kSQT-rhYwXeqSHrO3^jXUQU5;p)<)Ly_hxs8zgX;b zk6G1@S=Hn0T{TK(14d-bGc^2q+s~J+*?;2ssMpe(7)|QBm6}PmWj1|9`%^j3llkkj z#|WAOoI2!lX@55K7W>~D;^Tw<-E-|6!qZ0RVDA5q9DYa3--|lSZrYZCkxzWziu0DC zK^h^Ix4+|;y$NHawDJLFTZ?8>>CtlK&mJsV-e)Dikkz!S!S$F|lC86GJgr%V@!jR` z6pQ5Hn1?Z>_IWK!c;i5My+5tv{-UWKFX9+>oiLql zk*qO{6Kgu(q)NQ}&9dX2h!s;92oW@ia7~(Ri;SWNcKFu&=imCfJYx{x^xFd6kVx#D zEy?A@H$s2=h2Em z_DUm7nU8m$fcJnLyw+erW|!(7?69Zk?&gwss}w0}bz%EAQeH_lG}>T`+m52UbZ=xk zPR^2Tm>2Ox8)kg6a0n?3mmE1%VfA~pXpCZOOn#}JakW1B)H|`+V7^h)%bLilRU{n& zLG7g)L;Haq_3R~hh_V)hyy$&6{cu}OUR=dBNRJz}E#zttEQl3+Jc*|!K_*jbvF-Pf zS{0LxYK_*klks6BsIlvv=9LiKebCG5mbuJo{QU`Qk1lLMSHp#Yo!+qwMwNMtFVsxdb*{_ewM+j=#C+Nl3T9LYukrJH_)h z?1iP~o;Fp0Uy{rvecD`}=&Xnt@sUO5czf;GDv|L!zT5QUe9)4~P{-b=>fCwk5cdmc ztR;9CZ%wxMYT%9`ih^$#!gbz!h!HeF=RK~-0>nCCe~{o`hfQY6p4!x>nWstXl|Fp& z#?rEO?da0-at9x_PM(1MEzFn8QUuF<2|>N18Jr8?u`Gf8t=F`-`ttQCLRjcM%g}np zUzRf;hk1KFEoj&JU5-;Oyqn-0^=Yw2S!47T6tKUw7{H?s{6{&S*cWPnk58Uu=(gTs zJvu-M?ozFQ6+DO{>DC3uQPKf*bo|7vS@C``3NrhikeO z|9JT81SBe9r%j(Sg9$QSq*u;}?t+)4DCGS2dH|bLKQjW&PFWbRKWe;i@WW??r5UK+dUuhptt;r@mQ zD(zL_?AVpxrE?OIwj16P!`V+B$GOc~;_QFuuAFIC^7JTTO?An8aYlT14qVt(&YD^O zwJc|kDxjWVz>RY;Fz)IO^e6v1?@f21d=P@i6PLNTlqMo<{6sfKPe!_JPC+l0JLdHm z?LIan=%teu+|V{|CvFY%N1i4bL%`okq!OQ;eb%?1fMC^WyR{n$Oz%};)3Fdzh*O33 zVoFpJfF{qFIiv+gu1+QHU?0c6SG(;zt658fMZppoK};!m+0D)098>)Qd4W9YTd!?< zZ%%C&Dzp3o?I&oyTm8sjqVT^XPG=6bdeqHE=?fvZ0_pPOWWdN0z(G_8^J^!A2S<~CK!|! z2Z^?AqvD2ezI>xExp1cu+zYWN?Y}nD$z@DqI>REmv#j#=^wr*-%}qTo#&1Rxa|fl*H9|A`zsxL_-Azl`)KeKw+#y=0aoIH z!_=Fagz`7RA6N2z@j&e!TfVjH=!Ksy#Q=?~EiITb$TUk!MXW%r}T+p8nGz0gR z<2@piB+{nlRf23v_8Omcg*M3vt5%C$CQocOKd=c?7!oVAT3*wjiMKXt6EdOw+1N#u zBEW{X^b-4a8(nbe^&`p{u8%;wR_m`M`bo882C)FM7KoxRwx12VPyPNQ){zfz#yhoP zOEtJGq%}s|BhRI8Vu^QS6SCf?aC{;nrAU8wa}Hdt$i&m{pznhDk^%PaGV zTS9UY8vBItw9+LvJcs`Q8kw#wADNn@eVWuY5YC+tO2tidLs?+qnek77Je8;Oq3o;% zhY|NDHeYeA?jB(1#B;=p_MRC3xs0+8*Pc+myp)9TZvs_+R;E^Dcc2=|=`kyhu4XS` z(-!dVhCpp%vFLrfhz2C(0i)G?@qk*}p`GGSgCSa|p~{&lAY`L!10N)lw1GAUo6*>Y zN9G6oMM%mg5)gPM`gJ4g403mo+KkirPS`_(i+_R z#@+BXvrHUD?A3J{3dMjAKl9++N3(YEELS9dgS`(f&2gmn(Kx^@c%t;9&F$d-GH^r0 z1MgG?N^Qo_mULN`8Y`+svee$@Iiv^IeEuxI-a8+!l{>dOj};1gX;4Er=}mKOdv%!h zZ^wm2(cc&U7%!hF2MW@W1^ z!n==&x#g8pWU9r(2`;94U(NSUe}^$^&LQDEdvv2ZR(?0tUPRdWQpv`X$rG}zeu7p< zX6+;N9$2G4+RiS41j}IKZQseY5J&E`?iyr%fW8S6)9R@KFY znH2-=6{ak2Fgr(d1^N-&CqDEZAEh4mR1Cz(o{7Km`?V}79W>X$Un}3TX35@PW>AW< zUGunUxySH?H1fO%W4sjhpt3qn*|hmm#jBa2gvwZUj4VQXZ^g^Tjp7Sc&!s!X3|^6k z_UI^!ZenvTKC zSyxgDWRK#URln5yacOajCP$YqT+=BIE2{e8zi#|}qP-=Z8Be~C!$N29`;=8?Gey)7 z(d-JW95yT4JR=sI?I%-uh^Ko zO=92f;M^R4AHXwx((YP>Ju>N|AYvnMd)sc3M7H&?v^MDu7lqcBFJZY?mY<++D>CgP z;iRR|=a2|~I=d4*Ty`WR}{6!$^!%0$&9$-E!n*1nZ4gF1a2>w`Vgs^r&9C@BV%q*m`!y6V1fOm4wRB+_(XWjS z$Hp)Cl^!A&7PGDXe&VR(v@)K)ud0WBddJqs#>!uRkbTN4>HzmGPtE`g?v=eu)uASF zJUbfB5|@iGbflBOuCU4q@sgpx92WM4tB3q5OMf!uTlFByiy}HSENonfTJvm0jK4f0 zUG8CZA|A~Xf)FF0gBW!mwN8-hf55BW$fy_jyM6u1AtNt6@xhf4+0h5aD-_T?xctJ# zOS~_bo{6>Kmm4X2`3vKwmz*0JHxERW96Ys0tVl;!bPF34PC?`6Uc6P+*D2Y#-C4xD zP;u0<<6>r0cdRK!w%2s6YA8aiVqVeT{>N}f39_bIFr!;wdn}0OsMbZ;gH#Z)|Mvs8 zkL)i(?^}#js&_DW;$$<^RE&2|BEU)0AaBmu<&|1>TTEV+TN zb=PaKfpX!M30&e*C`*}4hF?Q-M4uKaHZePaxfs%;32wTy)(xgkE%NWZ<19R-1Q8_%@oj= zf7x4ZII@_YDSGnw^+915>TRY&-cEAZ>A8^b*gfi4_UkL%m)FM#Gc6TSt3suIfwEuy zYW_Ul{sq;-g2&9l-|1i(1rr+O!ry0^mUG$)XJ%K0z?yrEsgdE&c?TDy>}+Sy9d@U{ zMY*vjG5VAac5?edGsTuqz)43KNkIbZ>dvU3->UlPgi?k{Vc6$rvvoeueRJz%t@v*0 zhnJw9xs%6&{pCf?N~Pvf0Y^xN@Q5)xpTt$g`e}sC00qk;G|PlN9@7b~mO2fEu%Wi(74pDgB;H`IW`5~R3Fw#`YGqe!K}uXesCq2)%56aHOvWx0Ok4@sbi|Wa4ouABmb87( zaN%UrYn7I~qfS!EV($d<&jr^-nRTZP&IMg(CyNAS&XH6!>Wh_Z=Fj8lJDh`gN>c<6O zb1Rn)=e$`+?xJbWG;#ea)iDqTYQpttw<87LL-U_^V?dC;wIs0&yd8mmDa`sDLq10> zJ1aAXs+xIeVc+Xix=L59xe*a>vw)E{))*USW_&y+cFN!_saAF}-`+uA zQ7_UckMC)C>xjtQbo^v=`Bc9;ECh>5)~k*wQ8=`bkSz30AmfUEoi^^%r>7?brQlbU zIc)Ausc{e43AbIyW*?krK+&QyTQ6Mx$+z_fN^BosPN7xmAS0XzZ~1r#JYDE5?#*l zQ&`ltA#uEnTx_0jVwbXLnF4idXVuNjY)zexgFnJzjG^u>?PBccc9&rWN$Hf%>e#ev z`AqcgQ~w{yusZeYi7|Jl$)BWudMeRdn)-voGQu5}{xt1^o7{DaT)g&U+<*UW(5e5G zW31x5GEHsu7GuWv&tiopek9YpdezRG0a;Wk$Ym~B(FCQbGdFXt7#oR=H=e{cZ0TOu zeq<3M#A}PZ#^~p#OII9fk~H_xmJwXBDtIiW#?Ope0gW;0N-5-d|E4ErcgYwjKsVh{ zg?Fzk?|?@6Xb1VPd{MJCMd=ELUZqIoqEC4IIHoM3gsx{L{Za6apx`^8yS``LN2AUy zN4p%ng~i5ujr;{g7}k^bbCBok%o5pJ;0y-B^Z_zDnh<=}p#d0?r8*X+Lt$WkqUgyI zU<)@Vf;aRhK+Cf<@-GfEbH&f;8c?_e#4oQP9-$ORwX&RYXY|?{7J5hY+Of^NsJLK0 zYOsy3y5bkus%0g0G@*gkv$5-Q)`z#Xz}c5Zvl_LKG*{EA^^C1T==+Cbr@ zAsSgZosDYC7MZSyI&g1GKx`7lE>}CP#8}ThhjW5UBoPTh-l+&+Dh1^=|CC z39$}veR3J6Rm;^#fm%_jTUN#98j^_J8&pZ z`-7SQr>67a(NenSJhFP zD&V&w@k`F`tV4{I?_70TCGjA@RsN$ zD1;$NOkwF+8Bg>3i|X61{0+=N5{eS|Xm){HX4@qxmG3BYcOXuaACr_a^MDHIIeGQ~vvn2@iD3 zJ@*&B9kLvx%$!}qbAI6ea2|qH@5Q=H-)xjkFWAJ5>)Q%^W@l26lSl&dcZeEUxigLk z>>G&qH$(quO3MQ@-Q~z7=4L*zu;^;3!L{D>2A&=i*|YLOUi;&9*IJ*6;dI7-*MLF^CWWVh2b77QFqw_)*R63$}t+Y-{<#1x}ey5zd#KM%{nA zH_~&2!rkUCI+|iWJZ8rBqd_Tc?T3cFu~d?W15^GLE?XZEQcK(ghB{#v{eNl{pgzBg zT5$L_;aBLb)E^m2w@6w&UcbSuXUTZ^SrX(x_6HO2>s_IP^EC%T7UOU0Jj2N(p%OiU#@pLXXM4vp{)5&KIf5ux^a z`eV#NPKKjv4CFRRUg_OgW28g7k9GGLD_I>R-K-`d2+1iuahF_w)fMk)v8@Vm<8N!Z zYAGWBAl8f4pQf`(VTX9yC%n1j)Xb02e7Kbp`6ty5h7}uq5L7w|`j^!Rjef5SX_!Aj z|EZ_qyLkHl;wTJjIM4hMRmE-RD@)tWyc&7tWWugzO4d~Qw;b+tT(b?p=m(Q;eXZvD zn&JOqnmX1r?`iu9$I-2Y%6iMijF=c6{5!OnB^%V&ce?Ksi`pU$A2`B@%LNbm6^T04 z*OH>9JnZYWf@P+HiOf;UoqO+PDn?_ktigGAOQURQ{0_BFv~W=SO6TJvCfOdnL;9XU zJRC=1i;MCkleW$2R3E6lP-T!4F!LRX9BWBitCYh#aL;?%+6;o?*dW6H%nO3i4#ncXa8ic&l3%QRp81&SmD$S$^D^txgQ#^ZwiP^{9&v<80gzk&NB`ldD&0xe z+8T0MW!udNLK8M9~$4;99$zR<2Z|=f8Z%Z2FAcE5TgcpA_AMLrd8!0Qt z{68#t_)xxJni|bn$@YJKcvwm2u!AdYSqMtpEa}w#;c3;_ZccPf-4hE#vR9U=)XI=6 zuwZ@ve)8w?H8<{#G&9+8BL>z+;|oi%&QcH-xAN6;xGzONFEjK60)WHY5M6ho2-(TU zbH&u;qVTb{*q^8wisw<$I616$i}hos6=gLwQ!F=uk$U?Z@-2r8Q6r`#@D`0g8jtIq zE$JK2H7I}~XZx6fH4zDDESE6+v)dW$i&xfe+g~E+iv`}3jLQOh{~sl ziM0r7`VUu+fxVP%9Y+Ok)-(uR4kjV1Z(FlYJ>mPzMuSj(OqOAB^O@E>)0~sbf&yW= zat=NQ^bl2co=yD;QBLwAP=bbM=7s^GIn%#FfX^ z3uAWjUlQxZ$M2R?@+f@}Ui9>eOGNeDC-qp!w&Tu;qoHyBd>WMO&8F`Z`EA$=u_J#l?-m zOxHc-aF8co+*@%N%3ebs@#gMA7KUT_evMp zPrJD-+T}xTE3Mdz6F5%W_P=fBLy&5!pi?g!V`T5E^x*nMZM|}K9&o-$uF@N{IcpyY z&?T;xtk?^~ipybt@sq%U+`jE%_%wU@dR17rN=K9a@nbR#zG)+JY?&CkdtC85i zENx+iBq`rh%d_2qzkmORC@x3qA848?w_X}1_OEK}ANHI%M>#AtDRd#gJ=wqNO@QUH zg5^T>@wE^qS(7W()Rr6k>%W+;OjUx^_ybFu*FK|C(+wuBB6;D*+HfQd zXp+_niQ}A!;|ij;zPr<$fS?2!r*k9YnLp?sb<|YVGd;N&lAuj%FD-PA)bx{hzLlT> z1-KwQdj6EJIR{=l?->>zatg{jA|{&wG24AtdqN$FJ4Ljv?8_oVzsdL;AC1N=3sl_4 zQiVpGw!Qq^Ay_(pytkenP1I8*KpgrD4!R)CXRz_dC@JXA;U9@%t^W3?Hun02D4~-l zxbKD(riEqwD+LrkLr;JeyQU#bqlgeF(jEK4<5F*2`|Py+^*)D#&vxC=4Bk`Ew?khk zEr&M1BZ0&W4^(0O&&ZE^0|YZ`)Mozr9zmnd;HUd$tRR_vdxRC?Iu(pz&0(QnRmksD z##ex=@=Dk1!EF& z8<|?t`AiRee!GCXv`-l1Klcs^H)n(*J>&>J|6T0#Ysha05Yte7A?hZx>D>^rh`nQ@ zG~S%u_S`jJ8~XLuH!`2$^O2f=G$Fd=A7gkm@iM*p`s;(YU5|k)2EfT%FA2QZRlRRf zFsESD%WYemr?Guhc)N6z5N={U3v`N~y-z!Kf06t?-f9`kKN8U6bm2;2xdhJfM-MHJ z$-paeV%rO+9Iqfb_cCq`h6#VpIsb-^3a4j^jnB!__$C?J*>MT7(0C)f{4ZjY)yR|A zDVSrtQ)oDe#c@BTIyQX(vg+;flASWj<2^Gs3k*o^-Gl6geJ(H9TFpViTLT9nje#m` zy9I%!FbPRLFrYX$Rd@E?=sZoJHzI-CL@n{2&PJnUJA3m;S2I)Z#0cMTBaz-D>%v$$ ziaLWlQN-o2RfgJN* z?J%U|H#-xFHJ8*k$rm%U3FFMY03~ZQp%D3J`^u})=AX87qZFB=DyQ8elPIl9T{n+Fm_i1_S0DLX6AW^}-C_G_yO=|7ID??_ooVHT#;4*qnrmbV%RStViaRO`98D4mxV{-w&1?3(q)g=5+*!VPd zlVddHN2GU-fxqMJHQYGh_?vlQNks4aCp1_IWn%-3Rw-%-^5sT4Q6V|#DMazIPz7a| zK}z4r^l0R;)+YMPrNqie;z|$ZN*YEqWHCG5^ju}mi;>*>#jA|;RIZr^RUy5@UW!+y z&Z|KJ6|ik6S1Tc>@up}vekErBq9D5YTO49@W1IxQA9O6bes%_m=qxTfWI4t@ZyK)!tP6SJ5G>> zj~J|?*d=f>epcD+9T@0Oy+%i}=f;kLn5bJqkVX9Z+T;9(?;13TViX?s-mys-E=&+6 z!Amr$%5KlSLkrMaxxP-tNg9kdw-N(ME;57aQcxi{c{-($!RL4jPEN!Hbi9$bTgsj9Iw3bS2r| z%T-s2;MtHumEpNv%bMNVN>r%Y*De=~^BU#JPh#o0O@+6SNAshZ4O|9bq~d>`@U0x~ ztf;>DYilU@CdX};!-wsj4^LEKH&7%(z~SIws_k8>1of%MryAr%%lcYHHXH+GK)W!k zOE)*x!y1WC;@1)+{^;tD+NPszmf=-5O2eO@Tw-DyPJrs$-RFy*zXn1kdcQtbur1>(BZzTkBCCThHTx$cJ3HEyr!47oE_>ZwWw z=EbIBSh=6_ua6}YUYUw*<`pu)rHl^qX6z9HK#}D1#3rKeD5hU{Y=rbvdqt7Ri;`(& zKZfLxKt$n^cB&3`r9CDC=c|^|9Y<0=Mf&Hf2#309(m-=Z%s74 zoZ@OT#pW=XcBbn?zgH|brakZ!Wd`5;462~5<)Fe)a@b~BzvhH0}gRAM$;9A&Y7g>{k9k~q#vdbdkLb7TJv`r1W95?CUz)& z&U&YJTcrkn{iHF}!{)fkrndPI6%2FwRgdV>LoRgmMe%Mw-44wOP?^sYS?rxT@fz$s zCLx1`Q5wP^1Rn>nhUen$OX2nH9JTpRQzKXAI1AEApzcp9dJKa9?$orP%!Lcx zUq+c>Wv+$9SQNy0P1_E7UEQ^kkF{M7nxx>>NE9`6|9R4GmU4tY+P*YZ!cb=TZJAv! z#Tj}5mfs%je^)Ns{Z%XSF9W7K=e#T5a>vwI!Gk;dI>9gxeQ&%ntc@l=Ww5QiWfK@i zF2Om*qWE3RiG@aAFnN$Q3)wu4=5yt+t*XMrekJ7Tp$9kwz0;G$a(O|_`Rri+tN|E0 zlTPn+KrO#gNHw<((}^5;bSCGmd8PEiy1%Zj1|(T8?<#>%VU=})h^-A;m&ozdyvGd1 zo7F9Q46_)Ytq;`zN`J@xa<|>vA-fV)D}R$?*sQSmfxkbeAPEfs5o`5=kdh-QkZ(*u z#7IS7Byo9^_l3~0^z2z1sZ*niRr$qMV140DG3o9zNdvMgyK5R(W}iCFo#kJ6#=ri1 zbR-UA+?(4=Yrbx1ojF>+254EwMq7R$%mLu?v8`z0LrkcKyNr%jUgZ-{A{t&ZH0&T4 z86(x5Jsx7|u(*)3t6IV7Dya(j-=MJnW7&d8)Mq=etp*9P-0^K!A(P{B_}k2tX~5F2 zbjkx`3JOACmKGlr(43d+RIiwb=a|ktJe-v8XAi*^uq_AoFLX#AUKSzkS@RUzCK$gB zfna&ZWqI*s9m?x?Q{yeT^KeITIZ z-RL{Q<|0#go1B=Fl;w13=1k?nHzll?4tK3rl@6qyh_{cFxl-~N(*n`5YRtVW$SkS? zgDYqe2u#ZXQRNt7^A(9N=~PWy(S5U#2nIzK{75%_!vDYQ8A6gCljHuN-<~}3e8LA5 zFIaZ1MOf?>;UNR4&>lN;&6-NW?JPrqH=8F;P^Jq!W{Nl%v_1mqQ!s2nWyw;d z3=1~zLkSS=;ZWH#F~v%n&2=$?6a6BoyYaR8J~qhBzMI&5of#y|dJ%%cayukdZ?VeK zhHt%k008T~j3Zi1vQvglBg5klEi3#bgL&TE_YL&e&M>7|qYK;CdJM@lcnrNV@s0^nb-f#$XxaeXpBIfUlXqf2Kau?m==(54I@U1_ z6>_JYNq(MX#CdLGgXR`VhC{-Kiuhv9nqV!413Umpw{0gzqtRFZG*jNnX|XvN(mUXo zOwZo>czt8*TeAwbTt}FfU>qsOvraNUPPe(ZwlfQbkz|jj3~N2A%_k#-jh-$xkBVOd zvzIDET>NBmiF9AeUi;)J7y&f0^$H5Z`=R{p4LrwMK<%y#MCrF=2smAJEP=`uY$Lhh zpNIYU3-UGB$svd%A(}PvkwX-CLH$wZFnRE?8=>#GC)k1I78H65{^b%+1aCdIstGDU zeLW{H?H>NXbqr-v+ze%{ht4%8qe~T8Ttj19LmxyS0bbQsqt~#A@~GSAEaFN~A>W*% zH5uj=_{mcsgNefTOxLNX!ULikh9K0~k2GV*o$-R+wSClgSini(-rW0G?_=^S`pao| zG_p6E-qKP1(F0E1?kv7Kdb6Zqp+0w^F>4>YLT}0UfA;YswQuEfnhK72N&gXvPM#7F zvNTGWuvg=%g>G`g?0;BbnXzJp>eq$$qc>Bf%Hx4jW&uIJHtFN9XTkFI_7;R1`G zJl%VRXQ@s##wiI{!5-iaO$V9TLn-5ydsnZlTt&_8ZR|DF8Y|2LT)c6)D!(Uf{lxb{ zvi!M2ow?o<#9t@o!J0zH9$NI)-?SmY^XynP;^6mH^jpltajvV{lh;h^b6@V3!!P1 zut`Y7sxW%%AjF&*?k?n>z~4D{DqX2k2Svr9cciNfLvKT` z^RI)NFFyZya`7etbIv|{wRgSyU43;PbDy^u7P~PqVk7r3P-byAuG@V11{d>n%~jiG zOo*s>l-^=cXWtt|lF(%Sw*qBsM2DxqeRB0=U*fAXTPWNO8Se0_?^FeCZ=fnn*POe> zue-`%b|imbm2kZ|%~_Md7U3|AW$WGPb$c-z+U|jkFm5!dXXLmC-U5Jqhg3ZiYB%$H zu%$H2K0j!Mx4Aff)3D}(dm>jx6m!)ZD7Pf>!IxVU`~Gr(6gQwLf0|IA!p z8^tE$AY<_sUSY*ZwEV9|lg{i&&DjYkvq2C1RpkLX*#nsfom!wNFhHZ8KfZOIS7d*u zMi5Sv3uj$jE`n^(_jrJVE5cTXzDsj>mpr#WnLJLjSg&DP^zm4k*(d3w=Qq)R$B$Gf zS;Heh8o>p>In?($=iRf=)N-PZ_v%w3JyucKtDi+`_7MB}J^d=h=H)dm>k0&V-;WpS zKAv3cyk=O=<9>C8+5eX#^BN;JmWX4D4ZGNIma5tK0L5JHDdgP^Ah7{LLA>%sh0%Ic z$?xIM{^T~IQ}fwBcp3TE?=oyF1Q&9OHhM9b@u^H@r~WSN%`n1Ft!4hxp^5(qhm7QK zpPP#%(x>E&BNq4pYm1wMM_iHRdT~{(uEEv4+DShd)a7$o7aS{@AK`Jo9}&3kTA$@e zfQ>?h%U2(e%l1Ct*N4CKsbh}d?=F;w+`6j5=Q3RBQ4J$gO?Lb#d%O6h?PwvB_dtbM zdTh}JgA7ply}4;zx;hBFm)j!_x&2O){n=H~GlKV0Mb6wjT2^tADe98UYFP`hJCCQZ z%r`B3yg*A~HAF!PoK+SzmiEzO3c~aVFD=dZsQ+63#JSx~*d_9o@nzdv9(k>VhWHTi zE2dBV*>j)Meevm79cSWk(H74&kM-9yWZ6_=2ph&$U-}?$(Cpb3^Z53a+Z6m)yUVnP zzQ>o4FX;9?;l^4r9T!0BtcE?+cY#qVvTioAqhPyN`=UMX%>-W)q?hYJk^7W3gX~Is zOCS`uS53BC+8(#bQ~W`|gCG=Go0s{gm{1>@;Br|A%f@dz^&QeYMt8d4UifGp zemgSVN$*OW%+HyxesXnv_Ts9mp_}>13(g0aA_>U#75I8`6~5eKii|tOzVhWYTAqU$ zq>7PYbT9Ju~iRB@; zHW+&!{tIN@rMu*4ycLWsd?wo28p0%S5v(9q#QGq+v?m>KD(K&QPe>4~_MmXU=eWM> z@Bj9m7TIuho;=kP%&-mZ^lPmS47O2RPUeCPer)u^cg42cEtbe)$TPTA)w4YCeMd*0m!yNnMv!q_2U%i>c3eBv`i~ z^Vm~mj%Ofre^_5d+df{xg#+e$D^5NtLG^pXq^8egs>fb}R@0@4zqM=J{w?-bUNoG) zwJZow@)>(z=&oAV-y$W~#<69dR_R30E=YZB;Wn-5h2IC(&=R<_?BRq$A?|b3I&2c& z;CU773VyE1@q6&0(IV=jWPJCD%mD_)llN25$PTG3RqBbim2eGR5FH z0BU@eDdq0usREP?f%$J_91#tmWJH-6-*0`wg{Ww=kH1av3Tndk@?M*b?kE)CbIUU- ze$b^U{TOI#PD>6T4)(4d0&sOIB1l zD>mC*FhkimSr1 zH4{{=i#rN2VjT9p4+@$c9}fJ&5~}p-Yo|X1ST3HY%IkLX;QdVzQ+S|)y&7M3RL<tijmmv-JtX+TWVsW~9k+WE{4?QH4kVOc@ zaZ%W$e+JfnZ{Z=c7$dZ*cl(Bq$8s@;c2v8CLT3fY4421!Uf3F~%I_&thWWyI0f$5tV< zBR+>OGu%b+Xlb2ZIe0FiVnSuH*X`UFUqfW^I$B;LW?Q^2#qaCkT*jCL02Q5K;AVF! z%08Epv6=0=&xy-~VaDL0ofiR9!cYHk&VThSKs9nP&BZ;j(EbhD#*mJGev-M^+eu6z zo@p_q;>^Dr_U`amK|Uuq3>OZPFD{|U@{=j|yg_^VAD4;k4$yJ8L0~9CHOP)P$BBhP z5ALP^rYk7u*o{<6!aDJ0CAc0$9SrkAT4v^ht7(^)K(qRsb>mSGToz?MYu*g5<&1zp z8pz$vmJK@3;wgJ<$j%ZB9mEpYsgD6#k=YXA{QIS<~@*>pnQc|uBGSGnvom~9``Z45X1BWFjBgXH>9XP}c^JPpkH4_`}G0J`T_|j4mL}$de z;{H1Inwn9j?$hggn=q0>+)o~q1ugrFteX?1qru_3?XLE@firM}esX82LtlPbfmu}) z7~(mb=3}6A*MtfIWg!hP_2O`NgCs9e;$=;ex$5#b?k(lMZ=dd7@xelrN`u(0iV zJseiiUtpciEN!dg`o(1}3k`maz@*k@|UtF^~O2Q|GKv_G?JQhE#;NcF7`a!p>>XYnv@qu97$0LsMsPHPlVGHQB% z)Zi#!+~BtvF21sh@t~BR7%}6paZ;JG27ym?h*D{Q`|tzc*jZEXmHsX zhJd!2g_yg1{<2Kupl@41l*ra1Afb` zVlsxN7nN@C)M9kt_ZyjWnd^zqpq=-b#gCV=9yk6hS6k;)WA3o!;exN5?u6=XrSsN8 zjR4>R<&}eNh^x6WwD0wX()He`h%FfD@d4EGRGj8A7i?LM9zA#C?Jt#H3mhqeQ=kNA z1F54l;x7-w5GEjXvIdJj>2}|PoaJ} zP5T-@dJqsC?O`wqWN4Yodq(ouZCSyMbMBE`8F=Ac9Q>l|Z#@>5;-T-A{kb`wX1O)k zwm@C3TxQW9WjEX1(|&w_q&y_5XGJ=U84%sur}8NcXKJ)^s1cgX4Zz@;e}ZoItf)faXuI9xGq#iw_m z$!1|WV05s+`U7Eet%|V?r01ffE%fvvL(kS;gemowMt!-txlILC^Jo&Eo=HkBb%#Ui zO~_D%+cM0_O)n@AR_W~Sj)2iB0r%bV@q1gFkisV9mksdmZm+k28aV3bCW@Mbn}8h| z?YG->7M}o0f4rkRBnbmPHz@sz=gJ0cKyh|zu-pZ#He(3%uwy0N-aTHoeE*1m&a27X z45mAdW%n97503Z)IMihX0-9B4x=O`NL6wMYYY1mZ03%{WK;gQ)o^gL;nsve0--OQcDz>R0_4cP~9LJtIqET`I_@T;b8nAdb@V zNYrX?mPU*5_SGi%-yTla-5kFooKsODiKpx?nAE^*Oc5CAQB)`iL2k%@xy8wM4s>FZ zVM=#dkAsPGh4nnlN635m{siS>dB07(b(`#Za~2G+@h9Vwn~SWQqFB8kNh{Ds_GjDT zatkV_Ih8tGj9y&(6D8N78Fzk|ADO^wAmtJe5WsNpQxKb5^ZCv8V7UlwyUm4GhzyMr z@{~>VTt$BCQZ)XR)&av^8IYrt{1im(3epnkpg}!(5tIA2U|&r8+UoKMJNE2If`5Q1 zd9TJKB!BYw2tQ&gH?)KpD4w16zjRVLgv`Qb0 z9d!n6@DI;|IR>Un!KaZH5Q<;CC>`6yTNRf`Ty{5aez?zK9s{G{%cYz_8e1U24J1*T z)57KA(EUE>SgetIzu6@p-Ajcp*tR1L4&L0Po&3oeWPJUn)GYX=XzKX8F2JdG(4WYw zz3hbB>3d9I+)J8WTTSx<5`0FJ;h8b|iLN$5tuL2^ z2?#|}^3!b8Iz2{q_|Zdxn1xF1d69}GqSe|;>JdG2Znaq1Ga%4{sjPWDQ)uK4`bUj< zWf8NTzKE^TBOkF?eBP_oJIMSvJjn;hLQFnxp~H@HC;H61h8?Ts$^_W`+W(}@UmVz2 z8k3Hg5du|N*hx;tHDxzDQklXAA*CzsxXfB=_t?C~*BXAxX?5VsyU@W4vw zi$1VkOG3oZ)|l0-O9-fJ&8_Q8E;A>q3d@T4EEc66p>lUA&gAk+dOGA4*g0hCej=zb zRzjd+Rhhu4sZ}N`xcRmmD|Y#4VvY#^=58%m8LWc4E&VQQ=f&q*a7UQQp9dNK-n%Fe zdlgZLCM9GL7R=S;L`%pH)Wcms%EZd9eLM|gG>~_FfuIj=EQ??5HNnq(1pguoiobzhxGf3ZIVxB&$7iR0Ox{K*|TRSLD9Pjpt+YrrF|Ai zO@03eqTLfl%LDUogea>Plt{>~vU_I6-al^AGcb$9X-e^#IF;%_dC)gK6Ct8Fu?c!E zNiZ8>FjgK3G$K`jdPkFpmI0^@M~_2nQH3ZVP-df}qr)J#@rjOATo5KAn7!*gaP#ap zl>thQZlq(iTGRPe7s4)HlLM(1jJ2p`T;mh9ZpM_{7qP+k!WcOWd)A}lDIRJp_~Hbg z!Ue9~U?#SlV%^2h2^o6$r6Z_wIiaeTL1*f9Wq&*U#W@*0Br6(gT(@?I#MP&+RV&VK zmshZ}rO;OlSyVa*0)qDMjod!lmbl1zMtK>i+m)+S{~2^ZlrowFw%44xHmIm+N{ky# z3$Q(FP(@#ca;i!lCKG5Ba>@tp94zFse$aXw3RWVm{KlUh=PMIofT=BhcdaSEd?XGA z_gl7n z=}oS=P~q!)dxqLf8D5p!Og>UhN(~h@wj(Tn*NGHulPSJSz=A(1^$i4esM862DtY|< z`}dx<)6dWPe?H_SY!xV>8vAUA!-x2EXE9h_Q0j8I2l$@x7xfHkZf*xSO_QwvG3tjy zam&-Wh5GJhL3-mjPPieMTJ=0zt87cXX=&PxkW7*A`IH((Mwt0s<{uG9EI@`<@vtaH zK-^8+btWA55`XnAokH8<&PS`}?2s5LsT;i!#8y%4cB{c#x)=PwKbqgO?yaRr^xybU zusQf7u{f_=u`E@>peUju$JGH<+OZb9MNCOO4I!N>enn+uP}-+pwY6PyybcJ_jsg%D*&Sfi(4SdT?93V?Z+3_(J+-;SR4225gsDwA3Ky@ zGv*VG7=>)cWa-l9Bod@P%?Nya%!2=fG?SSZq`Li3I>SHfM~!P4Ux>(B@q(rrnEe5I zAD5y&FRZMlW>U3~&txNU>AcYWpWTK3f1?r1VQy=|*SH6W`-~^ai0tV2cs^$29^QNK z=HN)lSB3k^jGVaX71mz-q%lUaW++!_`j`1$fW^fDdAoYBqJZPb*W zTL~{jAZa0nNzZ?P_B*O~@puZVorA5GWjp{towuS}b5jDck=sD&+sSD(g;L z!c70t{ZMkYZD3p}NkdRdv*Ci6p0m(bA6$On+8kAOj;Dznrf&L%m12?I=$BrLp$Jn+ zq3lmth6*gb?d?z0&emK2^g+PC<%pKdQy2d+RwhC*M6q(;J&5&9ke=&Ht-)g4HroE1I^5NDXm`ktg`)|t1kFmriT>kok+ zCBJ42JO`yFS=GX=*T{C95!q18vh9cQmBzB8P&Yt^wk^OW0W&1fsvzH-_2R8-;{8^* zBBF_&fPmS2S5_N;TUNyJMqAKDkOUY^#BXgjH4RxgrWPegu$5bmMQdLsi*3l8o1kbk zTJoS8dHl_Lj`z09_s=g9Kbqh~EwpMc@@y_%B?NhdX!Zs)Cq6Z$j1nYz_1@Ffh4B6G zu!R+prQxG7{tV~54Ph-{ zE)g(fs7z`epb0aOQ?fPg03iaHPB+VBZgN#658i3=Sh&2Lf$42X&3qFi5jPU?Nb<&C zfShYDm1@Z>y)}gqX-pO@*R1VB7|@rCX;15s;E7-8apfYE@Z#{pSQ!sna&yh_iU_qr}~!za2+@Ah##$vMGj{1e8IJ;3o6Il76EJG=bP? zM=+k@R-6eXz#;+gQnAvhR@|d+V*UE=f&5w<0GlP@JuVN9?v-`9cK7v7Os0jmuGg;D z=ocmf6eqboTU`8(*(ANTRt^ox2nEr&d<_hbnpiBbibvG{@7E))04g)Hr!~aEygtv-fb~c0 z(&E%Ky7PD3H8eCNH$L4Hb)Rf^gmBGd0xSD1Y18c-h)2rUssdzVB}9Gp?hq?p65i5c zRl>Q{j7NX#7(+Lc5JljpZsJ+vEX`49jaO4iW-pqCrIxx z!!0LHS8go8=())Yr5VJodhBx6(dg?}b;$A2*usM73%V@P)RQN~N4&>&HX7tx4Qk0q zBvUO3O+b}c%pzbyVQQCa0u1-60PJeHTSu$ZHvrZZ&TN>*leRj-10%qN6h4~LZ(00Y zUkoh@H0d&)H+FM#Yn7+$B*0oaCAr`<#QAJx44ur}TEz0BGIZpQ@Th-)Er^4ZCO`E) z8L*>fn01i&(z3w@S()rW*F@>tnjFozeWhsATu2!!Xo6MeNLFX-)9&5rOd~u}k*#vq zJ}!!JdiLmeP!b5^Dm1_XO%BAx<7m&S@$8)JU&tbe2Qw$$RM6VUK!5aU%D-Veg!VJyV^T*_f~A8ZU#^pYFT?y|eKUlJ{NF zi-2C$q}XV|oKFp^l<8O>f>R;4U!IXEO^U;rNYx4$M_L5!0$YHr!P;6ABqfPY6kTD* zXJlr&*^|Vf^p#m@SL_EldVp_stRvs|_VkQzk5U3_*GdaBx({$TS3}V_jz)8IOCZNZ zZAu)%?oiW`W{cZe!GYUeI!ywNewSf#i|5jXq1FRid0|k>%FuM3P4J#3b zww%?;DT}>$`vxp?Az*m2c8-pDlLHtRaP;u*GOcP8vDXTa6}{1PrBk;NK%#@Oo|pv7$n!;SlU5LSRIeBXRJJ{ z0RqLnCr%rW6t*OElNUB0>KKRV%fP%*A8;2Vw+qV3#1Sa8O%B}s$-RjCkjb8Ov3Fn- zVmq)boi{x|EbJ@ycNyNMb>b|4znDI1oLkGW!d19eGrs=8>1FQ&6(_|B(o}1d;LXjX zvc(pw{!XjctU`>239_<2yYH+>#3)K4<#LBgRaAqEX40-@5ha$emMkFEA}xkysT=Vs zkjNlGWit{bNXKFD89&hg+15g|Vk+{6+mPgGqbxZe1b@Q~!){<^mI%$CQr~vZR6Vl=G~5qSbeApqnZo>XTOkvP#P)1 zD-btZsc6}rK+So+r-vhq_Gnu7&`_Qox;X~y0J%Xb_O@oCr6~`!{7=o~6>CyGgufY? zYL#ASe*5sq=xt{xUHf5f;UU$ZF?k;p8D%42F3<}51kA>CgS%pi_yrT>X>vg#R*c)n z=|?~Yo(RZwQoz|=Fv``t6*JFDndFA*(>A<*n ze?aktm354$A$MPZP{r6pB!Zg_?3BUad9|N9&Q~L=J>R-2sT*}BfQs3NsO_m z%Sg2hM50(J4|^LZLjljuu)sqV4PLq!g$ThDD=9k`+jV7*L;2ARh^wd@shLX!fQS>U ztfDY34Rwe8pc>m%Rqpbk{kYsFL5oC+cQK#eK}$}j^5L?ezs$P84>qm^JTEKr%y_qz zIEBVvpNT|+4+9u6rTugfU3|DEuTF1sA@$;RlH#Mw$rCIsPJDKOQ!j~|wAic#&5;;m z)7Dcmfo|mC7VNz}-hOhIQkF^_zaiEvCuhhQeqJHCTf7^JRLm#N992S~BCeR1yX64M zurtAQLz|rOlrT_pknX4U5GWsKA*oYpI1^ghXD$sR+B~6X=g)i&NS-7@*;y`z8jOTG z6G7@1TSd8OdH?N7`5kUCtxQACRo(S%20_b0HE_eS4TpVW2e!97iilB z;(SCyTRKe%+9d7qUKH(;N*`_C+lNX*eY6ydx>8bgxDG{e?{G)=eCHBSM7a?kkJ}xf zRFER0iRNA~qeZC!qp$eQ^?$vM5D{-(^5-;T)i{KF!?iJuU_Pqxz{T9Xs8wQbfatfN z#WQsE+CQX5A-$rnd35MrJsM75RLl0NUlu=_cq+C^u;Q93nbetzgLP{VlaQEzxx~%T zVnjm2e#*0%okr7#Z`b5O)eNhRZJex@hNh3;X2&7I9{%s%(b{oit(EuP#Ar^f0y$x$ zvUKu{1X`42pbD1lvJu!?hgAV77*cF@#e+}smZA3G0lCWf3NA?(RT0E!{~5=iArk`! zKc&ystY~*!4eI&F4EYLAeEn#%j+9kwVz`=SrTiw~nD}JwdU0VXy-hI*UN4G>WI%&e zZ^XeuGgxEcTV8VTGm8Z$`fjRg1ZeD|FsZ#cT5Bh?-9wnWSh!hgBLoXRDVxK+89|(i zg=8gv@>rccXuf}YPWVH?04aa}k5%6h+=BYwwVQv#Dr3z9LN)cw+vK14yDVGnlrou? zRJf`|I*!8D4Vq6``2J1@uU{*=ot&yu5_3^rlJd^#*$o(b;~NCtp=9!xI{R;+_t%dK znztIx$KGqx3X~F)T~1LiHd`BQTM zV!In)wlTd-f`81)BD2BZl;2uC1au0tiNWXqmWtw>aZZ2HCc29x) zI2fBxIh{Ry$}7<8FE=;W^|QFHGA(nz+G3U&;^t_kF4z&oe~dzv7=v~r9j2~oMh7=5 zUov@=vhw8(F@ZpcR|`cy3p1?9`0@6kub+T^eGzA}aE~xisA{97H7||N==R>5QOcT* zA&lWT9b^6HJBhn~UacouG!jK!98~opP0*jc8EwAnn~^ypw1L5tv}|wj4ATA0f%vCQ zatWE6M!`z|~abJ70fZ9)S@nlG|Z8qqnR7OO*=g&$Vv7h{+< zK>_i~SR^2rM~8*ytgxVzN~i%dH$I_TyIJN{0pOvSm7mcL)m3HoNPq{dhdug)ni7B{ zBGe>P#yd>mHYLf0L%v3*0J`nE;;5a`%N_oG2Y zFMse&SvlEia{jvH`iDZ}&45rQKHufQOKvU&W2dwtU0O+*1F+!~ zFLK&Lf-`SvgqWAa^61~K{Q?!sk3`hTG0 z`9&0`lYIMGJ5|@FTtZJ5&f0ewMCsIlKSZxUhHhX8)0@;%lv&)1cZua;r?eDAFd-0Xle(FTE#v1p?@r=z}Ig1D{;Yp>{ zBtRb@ILnzBEL$*gmOJ zbQAQGVsQiKUsVj*>E}Thhwq$hJVA5eC_5DcFVu>L8d()d89 z+peT^;%iU2W#~4I6gl=6v4OJoCLj~WuxUMi*t9|E0KZczh%nufQ?_h;W*)gQaD)&p z7bD|E$$9MHJe?quKcz`Yf{%R>mtByrX=WL)zl;7H>3YIerm5XSc-Jf-V5NyY=|N~m zHm`c!)^S~3A%2O*9%zz+;iwqd!30S+GMdiec(sJ34%YD(|JQ1QkZIXJHp7dtM<_9Q zHFh0{-GDRTzbsWe;Ugc{&TB9UTAP2)-=C1%ae`(=cz>na!CBGfrJt)v8_9pNDP*$Z zu)AaFhE1+{qHcU;4F*l-UCz`>PC~mzh4?++j;k2`e}`b~uXofsv_4&S#ri2MDgl-q zb^|tqyTlzWUZfI9c}yKAE!HZn+h2=HZkt7-5kRVmcAM9aj*n99Bm~dOn3obEsbX${ zO^}tWm@5qlbcJ`zD0=O8k!|Kl^7($ZqVx-iVRHqk6_U`C zB<7qgtoE+RzMIkPR4WA22Qbe|9#GLMDZ~Cx2_E#zCn{1)$+hJ$i{Pz80~hwjol6Aj$e18u+0e}=<=34gXLuw=a#6(CWuNxMkdYt z6Xsf}IH2tiVM~lOK=J(lu1UF(Jk|sgaT&Pv&y z&z%aB!Gbs662}~Pq=73iP<0M$H4>l_(i24npT549@ zl56WKg@F{AQQg!K ziks_lE@49gNBw~Nw66!;EJk(&Dko9kO?ZYUOSqW759h=WZ8{WG@QiNtmZR~7*eu%C z444y0N?;I`Z@>?FpOC9*iu#3rNVvDq8dMb+G34fnws+H+P{91XGH%RS>jdrYDB&O} z|9cG(-?QE!NQ+Uh?$P5`X3!G$<@4Dx3yE#g`;frJY4}c?RIY9kldyTINRL9qDPn7l zbA$8&7`G-939%RKv_}wVur$X@oOPRMZK?KI?)>;M1{!hcfcQXHu4QYcFxjKmC~NWq z#$6HR8qWj6amc+(qaQk)p<&eSZX+XTe)R2X4-{KPn{1Cp_$r8Qgq=QsT5jMPcx~sg zY+lNpUM=Yr*{%-J`%kQ3pgWpXJBh%+=DY{fIamtYQ&TB1K&EC2`E0?r(gASM%X{{$ z@#@PK6^_`%9VgAAu{x{h*D4wncd3R^qX)p~}AbQQe?Z&JeMcdOTV1fcQ$Z;`y-HzKq&g%coi!tow@3OE@ zO?dEoj^rI`r7WYDESwsely#zj7f(wIlj%pZDR|~~rq$`e+)4BiGIP`j*Xwb)ncR$R zffJ>!Ec=EG;87{ElbT6fJ5ETp<@L*pbsQeey7rNQ zU~!M2e>2t)-Zma>k;Db4fd^22s)#|<3?CZg)?Vrw7(}0zQV7>IF)?xf-z69sEDFej z6*_4v=*W9rznkdIcoNKXGNKeySrr!-hqmmY2JMFWCmzh1nVov_ z{p>XIpTaA}KgS+hQwv-W4V49|g)Q=%YO?x$mf1&xB)He0urqp*+JjXE&^5#4kyKUI zIHMrbnPC2!aNInetR`apr|Vie8Vv0YHA$SkQVkpic~HDlD;o{m-r4HIx6bw#3sml{ zOm(@vKWauFbQ)e><@p~{)k!wRk@%hUS5~=gP&Rq%eM^CLMzajiWbG6C zgLPF7M0B%7jc^(%#@$c6(!O&?Bw7TYAxSvmh7~pcd(T!?#OKe6JZkqa$iXL|nbHD{ zrYN*)sMKKBGgm&Egc8%B*mI8-q&aX#75W8$2ubfwc4cXGAU)&i$#ON5zbHu981Q~~ z4)AAUR;?C!GZzv`Z9MqEm(>Sa zpf~hvbv)KVDJd};HlpiDgw>awRWt!VG$T<981Ue}L9r z0;}_@XF$L@>Ij|m{Z;xQ0facn*FT5M5Tcz`d<(C-$KCkPyX2JsJ5rFYDfc2ru44c6 z0QMcODJ!x(#V0h-`r&2)AjFW1NRHjN8e%12NsW1jN?KrV6{DCQ3Z6p_77|vhnyC>V zh04>S3k8FZb=_flOXbP`zAOau{E>!ylK=8&tI5ksyxG?0Kxf1^&o~9o4sZIO(9uCN)SwVGM5DS%_17T;jy3rPc1=0#1=kBDkC@4>)rbWC1 zzSJ_>twdb~Bxab&%Rj`pD@Kp0(NI<hfqpL-1<>fG zFlf?Vt%TQnILM=6N7#|q!6xIMJc5Q1khf%BNL6fn304AUw9y{;qxyt9=bY3lD?I!_kdj=g$-t2I zhn;ds6-AFCyJX_MT^#+1fKHn6TWEVUesssC4yO*} z+C{GAXvyiW06k1N3}EUGnRgJ=G_Y&8*5*v$-%{uS81DM`(GdNcGp!FONeS+VYi|Qi zB9l2Wb0-J3J(r4;Q@*SL{FYx!=}XZ-8{{d#-GBR9QQ!ixGn;@sdgsKsy>^#0|EcsH znl7+WJK)w=HGof6UGAl=$1lb19Vxv`KeFG8Vx`}p{z)L);rYIoaR2y^IpN`g z3V5TP@s`vs_gW)0?6yrQ+v6U>`vBvEaT4>mZokX?g0{VRMrbFv7}%3VEfu6V2NHNn zqzR6+#XeIE_PkjDXE|&Egx~zaf{&R<@)L&tISaq~bQki|LO~-7zqwNMfX!xC@?J!x z6rMJy0O;r(1hkV1m^~BwfuNq4@~5aVeY@P*?~Qf=n)QWRiI=YsI|sA;Fzu1w?W{4i zmS55eNwlI|SDCY4Noe^A6!0Hx}SFlfU_Yf$TZ6Bv%NYll%Z1`3LM;)xS^0 z>5hEKB)*g+l%D04_pi-J-^6AUUP)m4qK_srgxrRXt1Vz1*0D1w_ZS+1E0l;*9cuj6 zg_{xtM7$S2?W|74uF z;QLw{YARBQuLg0;@;K;8bl5efd7=YIm%5s>SU@DylR&d5r(#|a+guGbG|uiD?hk&CHE$p zw4>^nV8YV8N!~Z21nrP|U+A%eMre!-oT0OGG^LN9d3LB`Jj#R&t>`j`SrqhuY9(6o zaPAj477HvI1tUId@MPbw6o;H_t*|{OGG*_y&&qq)sOs4{lRu;Q6ZqclzJ1>-rNl=l zqsFeUsucK1`Z#LBL#&fiqsFu-ePbUBd5-r;Ln}k1+CZe}WcJb{J>Ms11E$nsp~wp+ z9h3ESN9oOuFJ9AFtCmiyW@y7W@{f*ikKm31M1X?t*|rK6M+%nTxgNNZ#u<733}7O4(51Bp17m^)`z6yK{@JitRfR&7N`|Nq=v0 z@@ec|;7&lWL^Mx$ZS2sZs_Pn&h)-5&^?o)!6Kq?4^rE7d7&tqWC(j;diS`V^4I11$ zxjZ;LqM-fgc{2$%jjWdZu6wLD)!c0u-;A!x-fI)<@2d!ZR+d3)cG-Y8+F#gb zu`{)+MCWS+dtvXpVbVWcISr5jMnTDOfcLlsCDmNGUMyXTq@ zdI4N93Hw}wMLc}DSCihUvh)rOCE&E=Diqyz2JyQlD1CorZm?WEyU`Ne4=A}G($0O( zN)^el+WWSqO>b*2f(pD;*`g}#TdSC19iLSYaCmGQfB}4V0JQ) zFv}dmfc-2C__;T)QLKt<35lXu`Bv2^ahAlK?Rb3NxcBYP}Tj+P-w(pj}k!M`)}h+-akgrGP;nTswvbs7$9lXk+= zrV}md2hF@c-=E{~dwW=!Se(4;cpM@hdH}8hNb(|Z4|*I`a17KGj^Rjx$C5sIe6bMP z?T}VrZboW_e!nL)|C$V}G&%2<&1+x;fwleg>ZkRh9*==0NX3O97f|d|krO#ru@q@V zzMFa^KZ#j_yHMC!av(JVi4tAUQ9Y4^o7UF0i0qCu-W#ft%I4!P)f1Y?Ra2>_$f}hY zc#sRjBj@x=cT8SC&~Gj6VO0aYFz9PT=Oscy_uWZP}I_%`b$?=Kg2pUM957ElsB$NU~_|LRNE?fP^7`UtZytI^53O zHsb41^*+D2RZ0?y>ZXLuqS~d$E^sWXz|3-Rd*O25V$uU*=nPLoK{O<09d?GXByeDq)Bg`TkSFhX<)g z5GsKp$E8&D?U|3BkI~Z&+7=cTq`xA?;B*t4=f~@FC#1(;S2ZR)ICaLB1~Z`c14=b) zksZOdk!!Wx#*~=u!NL(!z3JM)2YV|eG{=$8&BIAUsSj9R^N#iJiMcb}7Ul;1-0n(U zoPOujScDD7Z`b&)B8`WY**boG$iEO{Ik1kIh;5UN-7Gd2ayt={ns6Lrs0Zob24!~G z%m1jyUc=J5^TF)&c50R1vhTY8b~KWK|1MeQuaE>=$-@HTD^H}a>N3SN8aMRJJo}aMrOW~37Yp&_2-wb zw-z-i|DK-9SM_uC<>_8A;e4RNrlh8&4JW*3gNV|HmS#)$8G^OTU#;yS_tw$p#6+;* zg;4kP!?nQ>s&ryaVnM)$W6z6l;wDVMMXx{hQ{U8a- zB`Qmt0U2}Fyiow>{9cu`_N;SObB+V<{z=vQ@_)gQ{a;mwl$-L~M5Qm-#KezdgRT{$ zo*o$U=b1SZxd|r}8~`xDTrpZzOh37re#av{Ken@cO568Ye>R4K3%qG@zwhUte}3+_ zK0nWBnF_}SrT{f8Sgd?hzb*TOW`w9MxqLmoWcHE!xxU%IZt3M4mtKG<`FnUqdiqT` z_)f!1X4Y6*TFNo2@_g99z;-cZcGmIU5vrgG-1!ejkVV-M{bt8!v-=fvP^TfCvvnB_ z%`qty9$&ORsXvuzIQ8Ces!nOD%AJo-*)@ipZjt(aS!koATk4ycfikDun3!XXTq0Uo znu)rw*A7PCw_(#5#wJ|ogc5(66FytZJ9D^?{gJ0YE_W>OPT%}f|cOI0f#ubQb z#_NZeIyZ0q|9{ye%=m3;rw$k6E*7Kfg~1eFqyJ>R2LC6h%7{yhKAPiEbdn3#@NcK} z#!Ou5(nP{`xFq?_?~J^(RAx*+Z*c8e3NU4LK6|ievKw6Gn5*7H*Xjs;#{26wFrOA< zbMS(6G`5@ScZ9<&JH`lG8-M)H6s}6^RbK6e@4;Rdqq=h(jzfsKolrJ19 z%2}q;)cQB=6zMV_$ip){=9I5}Ye^swPRRMcdW}59VCFCVVD;$ZV(Q9$6wiz9do~Ql z`!VKg)u#Bfae7%#qKW6z5`n=A_OjSSx<&c}lKsN@4xQ-_<8j`>fJjxMoAR_j^?36u ztZ}J*HjF&u<|sDalst{m{Z7r@{|xjCnjiZo_rGgq4qXz3g@MKuKV9IEBYlb>YK!NL zR~29zOnCB-8nsr7sWqOtAbtFb2NTi!mYo@(F~jiaa3Zxn!{Y#pnV|lt zuk=Lp*L}Y}aW)IulwDcd$Ag2)U(nFRplHZN%%X!wuF9^1N`Qlkyjg^&t(v^)6W5Ry zO&VRH`z&sz#w>>qeJzgq;Had;}IZxJvC{~;*n9e=jZD>qhcE!7rWVD%q!%~7pK zV-gt_1C=(#qkHc^cu*<%(Ce2&hurMUu5#p8y&B4JC7sn$bLeW(q{d)m?(7p-zC9GW zcyPg8C@Do6Hkxu932L|T(g|Caosd8oAsCEAN*SQpn4qVE*e{9+CKTh&%}cg_E*CgX z{i6Z)^xNX4J3XcX24(%G0&Z)b6%_@M0<;fa>67S2JwNgYNuOpqXObx8 zapBe{1$wrNSNcrd9)o86(cgbR72lEx;I9J+DHs=7J*?gMa%g;FBHA|*4vFRh-ww2& zorfzUea&H4tO6;LVs8-`SPMvt+dH^%J*R<^tHBKH-8p&!rS?6l^sM5#KxMsg;|7Hj;Z6%PWtn$Ey7cO zC9QNRO+;Y@n2zt{%Ga6vTw%!LKR+ZX!MnsT(U$CG$DYyrj0u>DNt#CFO&$}@dl-e`4G3Uu`w|~o-F2?K72S+ z8X;~vpDEOXB5=J2v%c~x zsojU374?726Oi)M~+fSwYbomb`QcsLe3&oQ)jt(d8@!yZ;j6t8Rq989DVJ(*FUYEvAk?( z7(;4J%mpH(J{TrPvKJiq(ye^b&khNC8XOI`gFcImG8Lxl>VJFfU+-d3kp@p5xN+VS z%{DM~>&MJak)FJ*H$wkSPu)AHJG0Ua$5o{$rSnN}RGr`vbs-s8iYJ*rUHY}-p+*8e z)Kho%v@dL64ppn9)YMaRBQ;fTW=_q#7dXe&P5tmw{u#^nXT@AbOz+V$_5zc%Iqb%B z7ISaZt^9^Nf9VKf=S=aiQ0r4Q_nS|Y~1#I zPPJ7qKDWPnsh-Iw>yB`Ol=(A{Do+?Kefa_GSDA=rZ1`+e^&*w5d&uy{G* z{C4orkSR=*R|BaTebAQc$ukmt_x^oUg$)Q~T#t?vNxpdd(*I-YJ>ao!-}mvmp+Tvv zN<%5KLb3{J7@@?Stg<6Jo2<8#wxnz!a+eVj3YnFZO@y*a8JT78|MAxIe7~R1@Bh7D zucxQM?R{U@d7bBR9_MkMm%6$-Zb1HUyaAJG-epZqO&vtRJ8c{{dE^Amk!P=vSg6iG z3KSP1W~FZ*)oR;V6(tq?@S#9*LlXGOWR#a*=&BH@b?DT5)YD^*Gn*U4O7Wyy{FDow z!q0=6jrZBIkqcYoTKf^WokFqQuwh5m9Xs35A8aa5|Ij|sRmlc?jc1;sUM`++r{m*$ zqCP?&D)M!}B}FGg0V_DJ#@7kZQ$};%w>C28!0NoUrWNx$ckMccTJUF#B}v3Ul$eQ? z%a`|n`Km$XGWpS?M@)?`Ei68Dz3@W8a;BOfdSb65dOu@oLJ%)cw z*?M~#G@$0m)Ci~5 z6JeEFixuFH+D1tdc@TS$nehHl#La)ZA$!q^C^2K@M;C#HkB1-KasM|Dzj84ub<@XZ zdR|Z;`RLhuqQL3pVZQG>+4JPiz3y|i?kuBEo55fl&m>&n>`Nz@a@)!^Kk`A*S+)25 z28`Pd#)HrqeKA*3Qi81rF*Y$7Lvbu9`=$5Xbo5b!2juXgD9IuI040g7^xkfj4v8iA$9Q~*+fk9I-vKhDH zpB?Rvk(Yjd1vk@sMJ+w{Mk7coeY`m@Pr5Q%<}4!An3_l@Xjxz&vB*rSwzZAK)5|)H zU*km`Og0h>*J7zs};n6}K= zMM-$`Z!}+K@YDMD;KqypyY_Z5&ndh+>vMv;jDHiiA{c1>#uw~I{5ZSkTNbQC=c6xl z%$cc=Enlv6dXBNx$?5Ga`m`t!(_7oUM%DeU2Gt1a%WswSJ_jX;vxSXksJ^Z0vi)lB z*C;szb>0Q^$l(eR@sNtFG%Nd(WK5tV*G!S3=J$WONLiO<208!eDT>x^RcJH(@KmQ_ z(WEK#>+EdDlJus|z3!BiuN*fB74K$Kp>yGF7i5);=X`xWL#5>ILjO#4yW?#d=XH%9 zJ2vUBm)v?CBibASRA?2*BrLR*Q29@(c8H6sbOIQN&ngG@40<_ zo&w?}$~M+6Yba+n{p(d;1ckp?Oecip+UR)a!W_#b1x=&x(Oci&tHM_nO7B3My-l^h z92Cjhe0%rVm(7Xgd!IF>dRYG0Brf#h$!fm&dH&{rq5SVTexFy-HS1NIRc4kMiw!?f z@F=TwH@jx}jcWLug`JCTxzf%CT9GByE^I_wErI3CsiZ(2qU4=Q`fsY++KkhrO$`et z%imfR#3^lO^Ey87yTOp-2c5QaI^psxhqrKb7r)M&A1gI2PjQnPfG$<^{D<`osd`_R zeU$Els-Y1bRNZx7uAPjq{65gAbpL1yRctWp9M{^!3oc88N?mu>@vf`3lbl>x%8`#t zcj*}z_DiiGeE87R`tK3__y0gY!zJ2m`uU4#o~`5WJSWdkM=8g{Wygc7IGjU-zrLtY z?N--R3S6>+(fU$`@3f5Iz>LE5tbA|JIQ3Me>yP9JnNMRnC0d6{QvR%o?p7)`s=D9R zvjV^9`qNgV&?a9}oxCzWEiocLw1cLS5tsDmHLh}8N%S}_MM@j4 zyK`ra3@E5+u=*`AeQo_VM0mx{?FOq*ky1>{x8za=H7qu;LBqNbB`Si-%Xq2iTbkVz?!^T#(1{;sIv#k z!i{`=&-MN|)IDDKCXVL5m-dd4dQK&=O^j-+$jkF?^5Nnt1xycIB>Jel8M`aP_bVa< z0M)&1d06JC?=^PDrujt)E$i~-%j^dn;v<=t2(vx760>>6|M_#_li?!r0f(j&n$;4P;saKsF`(dVhU0m{&ito{Q z1wERXOnjFN?OGJgXUB-hB1_Q{=Q`8|jQaqvx2tX%m9u1=Tg#U0^vDM}?TE>vsDtL@ zd7}$n`NRn)6HbcRwdUjYD3u-hpwa);p(ZWkUWKHOJA0)+=W3G^%Ze&zc3aZIuK9F?!>0Lb5DJu2;wKbdLzJE6k{d_h>liX)pRk|W;vtW_4 zM2hsD53Q+CW_e*YZQ&QK*Df~la&loot9*oz)GcnqfBe!x^sfjJDL3vAApdgMxWuoD zvuS9fibu$CojsMRSIZ{l4`lo-Z=}7os!(07#qwkR)mFXxM<2(B%*DGb?9uZ`*6@F^ z$h9Q!kx6$JfuuurcKC`)-#SE0RK(5ESbyuz9Vf@!GAWn-FpS`MIy&kUnr4q-3yA=U zwkPO{wlv91NPX?7b{!YOK+FN;R3Z}YGYG@*K7CDp4j~t^7`yM5Imd!uKC2o8h%qYcOhJ}bF3+GD$#f`UR~sbxbF4Kpmh_N7!z2kdKLIB3IY)KJ5M-k0c$$yW z_U-|#f|r-qbUVrQ0}I5W)NcuT`WK*c=?e;_}^xzux|5aVI%GJvn(= zPEL-NYTr?`#JRso9i4B1k<>E}-+rsX0D=0ar#NU&pKATmUA=lWyM*n-$oor%#a-4N zT4!DzEpyQE+7`y8K0;*f_5Zv&u5W$s|Kd+QDK4iR5|B8pE1^QTr$mjqD_V?+_8R|G zcIeoJr_++pn(*Sn)vo`3aK%=wo_fF1|MaC>y~ z>i@z(&}^_vxje%V z!nC1+nJQv$qvv?@g@!@`j3|ST>x-{4Gt!TEPd~{XuwtSVc`T3EMn2VlzusP&EYU7B z+h@0!CAg`n7i7+z?rncSd!S_Y^vIb{ajzV|PWX>b-L9)0Fx%rRb)dg){!G>07cZSg z%o9sZsB$MW9*{@W$KVB_Ef68&@$yTS)l=jKn$zwZ1<%!xp#{S}Wl+U;@3_2@W#h)~ zYw=|5{{iIgsZed65|6C3X&h+D$)9$sBUhP zrZcy1-%iVZ`TV&Wv^I;0#)e%AA1wFItr%du{`lQoGtt~k>k_*C_8X709`dnpD;x2% ziB=5s^n7_woLT# zowBrsPw^F^8J~)HgoZ-cGsj!TcrT25U2cfKdn|rlNO?>*ENX><_Uyw<;`?3`GqC|d znT+>gWEygq^`(8M0(_tf=oj03+rx)_K(NtJl2HVcOGWnRmlhZl6ptj|a(;G-q*~67 zC{aNTWjgn1a_!!oJ@sm+K%b}EVF?9M)a74>_7e4Y0hxy3~Ooyg> zcCFnkB3EKiQeyks*4{o{^O<%mE5GLP`yevnkv%0qTVnYoGZA?c>xK=nNO_T|^6lB9 z*j*KM+QH$){Ra=S@QLxk%WN*qYk|x_6;)y9e#$E;yAB@=c|8yO>9gf8p)QL{V9XBm z{|)~XSIIp2>Bi)`b>(Xc64%aF-IS?%(^jF8@u29zRu_wj(5e)pJ-wfQSKT*bka+Ru zz>?zkm3)H2ive1#1f9m(WPkW5nrEv__EV|Up!@f~r}t^e+1Wiu<`X|Y@HG-T4pdA2 z1%3Z{#(fr6uM)A>~x6<#$#l_QTByD(g(IDe7esod! zf941O{`_Itzw}NK5q08z$ZVkRIk)Ym71_I;14ONE)F<3_Dp#TQeXUeo?z)O`|36ve zVZVILx+0OpcK4p0tgNiz+e!zJ=Vh7Ka*hqPxA*fy~7eL4;R~XnIzr$xg1E;fM9DRZH6%zx+du$E#q?&e7875rZzY38K9Q1#` ziq;Wyew!qcYq(iiH%X8+6iVvu{U;+F3rCgtEk>^2&u{9N8$J`X?{OZZ&As_L6(E9x z>5cuOcC3qe^xonM+11*{srXf|_UHWJ_2t{$JrFkci_MqqB zBFyf;njrpi`IL_9M<4q~T__j*OCSZs*Km8u=u97Du;^SFwC}AWkIA*<`w%wh8EQ)bPx7^&M=(QMz#Za;OxxCjF}z_bJk^smQ!4IKgdEX| z5ee>o_kZp^`EkkpA6AT2e_vI8;9|ct`B#%%*Wc>gnJEn+<6E9}26M3%M&-ELHPI?L zlsmVmsLb=Qc7;c+`e}Ne*U>0iBj{oa`F%wz&!p+=#duFAws}qH;rFfmlB`rD_~gLB zh=a~azE`eP-d*-+&6O2vMX)AoIG8DU|1e9;Y&QLQcRK&_o<1sfZA05~Kk5W|3_fqR z=y<#}Q5HGxM0s^!NCD?bb8egH^3pSB*0Wgl=T$KO{T|PICC0T7oCH05_zbFFburrazDkOC*K~F!m%{#A9wV`fh;rzyAYtz?h$ZM+zFXLIxe?-LO+%F~Xgcn4Nye0n6XGw^+t zimchT#_@M(4Tr#_2s6r}ha1oEU+izqnqHpdM4`;8yFJs`+md~WWLr2Mm|o?H~l=qN+{W(j6fS~eNDPGZ-xKkgvpk? z+ahuMZ;GpMeC9|*-AOD|u3KBb=&(GD+j^Xn0K&2`w(2cSt5m(Rz^bE2|IDl#d}=~XQB}1)-68R6NLIM^@CaMVLIIb?EA?qz=z<=R9c7@ zn44Lfm{3GMXyR*{>4W&8jTpc-WG5&e@!8;)-7BY|*VOYi8O%rS3$XF#7K|(eY^eLI zz>rQsko{FhyNw2nBrcT@b8vvVuU%5AqGkHVbpTCC6THT_Eh$>Yqs)@X%Jo`7am=!9 z)dlt207bvhUj006_>o2^{m*DEarfD?u z)~(M-?lWZ7BZJN3%Vbg<#)pwxvfc+LbMeIB3xUDs1$xPi%}dga&(`Nf)`8YN&}g zAqne6)5Lus@wR-AEcY=>6p)liWQKTbn$cY5m7kEnBWCkOW3O(e+AG`E`p1gvAPs6F zu7EJRXq2u^njWc8e%A>fQAduqX`aVOh(uhV7=8D;h~(D0{A^w8P`O!{?Ur4O=@-Gr z{!feJ-Xy_4mmTDKg#M2N`LAmuwLEH#o9}XjuyFbX@Qj?hzSLAbusq{U+*=m4%15CEXZI!% zHp@)RayW$)`2>Tk!>eRR1dscP^X_Vx8u7c`U8&mR<*=VdcS;G#@8fxk{%TLVoF=zU zGy7v?R#e0S_@8q2l_sjssIE(#QgUE(-Y(^Gf+VR`Rqr}DI0PY82jvd}7_}LNZ{NNl z@6`Ze(|Bd8_n@8BJWNV0vKRA-3UT%sTU~nJZSVcHnZQB^6oGDb2zs%EZLs(esVGt!niX4de`;Phpq;%gNz zR?sDQ7cyR}_;bVeTz9v37oi+cy*=pePzcpkDcr*B>Hfy~Gj;Di*WDuul^Yk{_lwT+ zzb~S8Ir3ITvRu`WSX^`;CLIAbE^cnVeYHjHZ^;BT`2PyQvL)=Z#x*AGf14;DIndkG zbqgscx7)YPmb71Oycf~J!LCS+znRWTIL)5GO8T9h|bsX^{sW6 z;hXn$?vMBw@>3wCeauhP_=!gT-R7IKr=DG=RWM!;%2l*%smuT!54Z_r9zZm+~j}O<%Arb^YJqn;`sm^LU?J25ZCm zgMI&yj~oZ2~_y-_@KGbcalpLb!ezJ0MzKrR1CT2Pbvixpu}s}jCgiaXfq4LZ(G zeB8}zLCfrOyr7ej-_+t6?ey)LXy-zFpThBD?SXINDph}QSW1Yw=>M|)`-#X;?z!}z z0s#4k2hvAZ5ew(n-eb=Up^9(WFEpT-D13^ZexDgxN%Kh(nhP5Z@Sq*rQmOh~XDl`F zV9Q?T04}@ ze>9Siit?awJZKx-+4?)TzI*dW<9$+rLoc*(g)~^aP2@+t5bI|6eBTJU5cmN}a5NUR zaqh+ywU;+}0d!eq$UjxGU;x*J_J$ z>E72mbvY~<4~U#o_OY3h2Y7p}dS7uUH}pkBeQ+&#C6*eLQ^UQj6%5~%f1kNy9{|OE zsihRz{}Q9TMWdGnU19eFTLU)>1r7D zFW#h_Dg7KkyP4wk^j?nc)%s5R-iDa??nV`fLnn6bM`HdAENI=0@VYIEv?FO)$FQg} znHQ&2KG_C_s0M9y$@nxG?FPB=gT_r#i@={k*}l)bW(R?S&hW1PtJbY$_*`R%y|at; zhca*Eok$WW6wNf>j<0^NG_)@Ck6>8TlRrs~fh%T@xOd(Vb&AmFv&>*#Vt4&UL|sZJ zP2#T7M0MbI-SDV{Km8?j_hpX{wQ&D5!$Q5PFVuXof?Z;$Mj^2Vm!B+xa0(?`4}}#` zw_!uD=)=2K%(Fluz4%hw3{a0Kn{7>?yNnbwbS_(5PqmUC-Q9g4aSjsmc~vp8LQ3@O z)@cDSFflQmPuD)7+GC&^b&v*iDUXbdUT<$N8B?I>067|q?371RvZ?#hL<8<+cKRyDf64k`R{h+$zdc44PPGi~ahl^$}4 zak9%F9XoF^R2a_`-KlFjJ9)8pOtr43I?D7-Lf#{_L{(-G`zBqiKUJ=aD^+^1@Be4% zZ5!g1m;nopYZA!~$Qx%@{p+TNbuBC`z>A)_Sqd~44_1B4!&Smsh2C=-=gxUH&*Nei zsG{{ncA|?CF3TK3KiSaQ`7|(^$Dr@GpZao}ZEsyg_TwXK9FX#KvCCVa!`2InT3v{3(rQ z0sRzf#0FMY8q{#+wZJ*b)6Um|v z-sM)Jr>C#Oxcf3^Td?mWEdZ|99K>c>b+yoMA`cooJ&4$IG1gEFmqVb`pK&xCgC0{! z!qD7*w@wNvkw^q2w`_hv%SAaKv_hy`DsUH+*>T8rsA-{LVF}>E(poq+ibtM=*y@a} z?VxGtn>TMpf0uIbOH1c@UOaJN>j4Kj=z|*ZF!(NwUzcKIV+j(rqL(Te!_^WY-U*Gu zP@kjVeamf{=NqAZU}0t+86iT)#onI5_iEv}g}%x{;sUDkOph*fHjw<}l0-H>*`gSz zC1?LB}~cV?Bm$vwXBXJx2Zi7fb>YCM|XKK$1pcW`2D2>he~% zPQpJIvjkZ=I1IYR{^borLPNW6N-X(lH#uwscKLOt`0m|u0N|*EJzl?pLXjQA^ne}= zXx%5Zf-(u}>2t8|_!L?rz>TQ>!fg_MX&xxp%M2GSE32v!{OzVx^7yB^n%X0YcF)rn zs-yRgJp_9ZsvM548zL3ouJ>{Q3H@o1ZouWc)dFjR{CLvsW*NPa7Ylfa zCMpc^7zviqRpecA|Hq$$&cA}lq$4gaj#`cBtW~Vtq~_+Qjers`da9c$OfK4E@Bk^< zV!YmYtJ@&YO`TsWwZ1Hvf2>YLsFxsB7Z{)y*VNSHV2T2LKIlKqRL8V<1V}QQ9tD@Z z@aqB(AS`KN?&JMBU0+Ek4@p(txeSOIpFrG|^v(n={Sja3!-e$o5}-=bMTJ0c#H5c2 znl#ehVNnsnM!x74Ou!q@{dx$B*S+851mWO4H$}spa6MQ7$FE~5GwwNHJ-11_J+EsF z2ncAzJwyo@N&h~jn4vm%Y&V9pXkke5P4e!o zvEEOmm8;8NUTi<)zg!>Khys^rLS2&6}fS&Wtn8cDrP6_-rxCXk+N=Is&u% zj2=`cT>cTZ4aw0ETcdK4zE;^G(+X*iz|0ZH#IINWV$2Sie)+nML?yd|LPEQ*d}V@9Wl7gfG+u z5^$;Cuh!QSX=Q)T5$fm8Jp)8A$I>2j8-DcS#fzZeU>c}YGR}eRAuHSmUHTI`It(T9 zoqsa3u*8FMZmJ0%#D=GV2Q`OIP5I=>1`K`HfRBTY3`xE=$?UsN3=aI6$;!^wR#H;> z^4c{GiS7?ONe$GMNrntY|C5{8O-Twu!0LtW@Dn-+%ksN$8AuJBko5g-oc-+Y2cRv{ z&9;lhaL)~|Do-jY)nWu@JZ>t>9*Bs>+lgMN+G^91O?ovAW8=8;M!xEqSyF6-3I5+q zOMdQy(DP)3=*PW{2VDmrqAgvsGD=E|^krvLbv6)?Nvg#h@*2e=&;RN=i-}DnQh;uZ z`aKta_yz1-i@v5aU1NKIM=C1r7slYrbI%rZXEs~2qphLbuOcB2+nGQt%vPRbW+5NweW#zne5U18yYhpy(CugW8fgvlad(m7_pK<=Djfj0>meWk6w-&DUxr3*6pBRjt5yk10cGER$n~1Tdop&O zfMSlUm1;@18>c5g^v^Eqod;S_GgfD2eBcwJ<`|S{q?A`nT2?^d#6+uWOtjayj-J<8 z18aooOVAo2x{Q*S{+uUu4YpCCATogE&k}Qe2EkELdR;m2{`I&h=@~{F2hDigudmn0 zN5my}6!oXm#PsmM7WqSj5q{#y@FH*DCz>McbnG6#ct1~)X6pE(K*BlTp|!G>K2 zRAUaM;DWT!z7}-vHKouh?q`y41=6m8#<6(VaROW}d71!n)xV7)qJF{`YNtBN!WpIU zn?@gSd_o2(UOv7$^fRVS5|fkkL`*j$EYuyh5sl8z3@zjdNlTv_DqJW)xsB^}tN!;~ z6rg%BhdTuq^hPiRaLBl801FBIhP2}?7P`9ZdZ;K!T@=z<_cr?W!OTTHC+%D35K7HEc#2~p*NssogBxtTHk3W4-sS3qYaox!PNrv!aNs&=2 z4xg!e5#w}{1F53L?-A;_1+1Z>`B>eSDBATy!Md%+q%~N$TAZG`NUvwnF7)JoYTRmq z|7J5qrsTDHeie3+B!|0mXKej_B!PFFrbjJEJv7n^z6pZ;`rBAc4AbS;d{%=Y9%MzD zZbiskU-s;*Xa4lBWK8#(j|Y%+s4lClY`C*|KY89r4GuYjE2lAHub9{wa`eORCX{Mh zbj$KCRBvy^Xd<|Ty^T|-(0xKnX(IU(@KqYx+S=jW04jVrZX8i4tbW0tz5Ug9v?Idm#EQK z&l7O9WnP1T@K4BVt!Qj{;%E~g8@8Rj@bkup+6}&^qa+1Y*WordIUr;pPs( zERFfuOJt?|ok>HomKOG=Jdg0Uv$G2?B@zKc$sVMf>cXJdI6#op;o;%(@faBo&C*Bgwuj148sQ6tnd&*ZxL|tI2AA6nE(RSW4M+WZkQ0c?Fo5A0u&v|s6G6Q zj>NZ3jdUBlEXP^iDwa*}d-((xX=h~Kfx4s@|{e(c7SQIBsgQhtSj)W-At}{(OGU@$K&t z5>_?&^B7CSsTcbm7aGayNDDaFeZnM+SfUrx_gz_X;*dxC{yP=ITR$IiS>x^P?JK6G zrBzE@_!V~0nUBOj=~M5lfigzh$MEUbuV3%8MZ)$*bRmH4H4)|w8$O!+q%<8|CNyMu zv6BDw=CTt|Ey;~$NfoYcIz;(URqwnfDY2f?le@~!I=)Z!Mvs+|HDhKJy(rPMx_^$t z&N(JkimGobzFu^b+t{X_Nk#n{QQoJ@3 zVaSkY_32Hk{A7}L9XPNVT!|L{y{RkMG9#2Ye6wJu!XNJ5DAMFZ4xBl8QUYxM?DPB0)B9|)+{)~>k10A)2iHUQf@8~6IX=#!l2n!3larfqp8;8xz zHZXYaH0kcJ?iM!HV!=Hl838wLHzb0&$!+Qz0f+ukJ8yml!*$Gt5+#O_m2{Fj#g#(NI`YT!S< zn@L+oC)T*+)-bHIu&_|qk>Hb&*@lu_w!=^Q?K1AmDZ&yG*Zuw1wzRg^CaCXPv2{bO z#1J^SCd3}|d|2P`#KiT-k9XD8)vbpK<5ZCCE_SoX*J^;u!y+QQU1qTsr#Ic#P9yYX zG!m(FY;0`gf?`{TaaxPhwNlR&gHlwBlUq&qYWS-#B5%uU*Hh2CIy!uyVR#HW;zL!{ zd$2{MNyk5ZT7G8^coz1#uBWe$aPh?IA3w=D|CaB`~y1L&XIZinJlo986c`14+RtgyuTun(yp*qsHc4I(P z*!~NQcel&jf^0H;8USjzt8xpzjYz65d;$XFgI6j-cseyLnD0!|RpgSlyra;VXAi78 zIca_D zckLVpT7^~2?0Szm`olD5FsDl|Uc8tS>7~AX<;syUzY&A{Jzsf6#XIB|@_o?$otC_g8&^T`-GYU6;y=C#yNN+P z2soDE@~91KkF24me*+~NaSb(+q|$mpK3cgnLz|B3@>B4ZL4 z+d3dK$i6hf4R9Mk0I9tB^obeT85q2Vr9Wh~a}*KgbA zkHBmUjz$u!;~O#9AeW;6&c2|apz@fu8ieJ(fLPyw6n&l3cO(iykVg-0_At0v!#RKx z(vlz**k{`!iRoeNAWQuMiNL^?OBf`Y?mg#j-Ik~Gt#QQ%hU}%3J$v?$p8))_^4Pi` zbObI|TLR?HvW=OQ)el_6oh=fKXoyj+o=e1GH$f9?Q>Fzoe7Ibx(rzYEi@N2w=kYB> zukp3(xjEzFaG+V^+GnJke_aLsE4Q{A?y21c1u?M#3lel-&(57o(3N-pl6M$xMaRiq z-e_-USAX+8a zSHCWUBP>D6Ku0!dy~PnVw6U4{t&K&kE%5Rn{WSN7-#Dp~-m{Y41Q2TVU4)o+-;v13 z$Xy~LOo-Fd{gVmmkL?!by-q}muSJ6Vt3`m5GeuZL07tE;2qF%ZEuDQ6{$)y#Gb%~4DxX4J{v2{aNe z%YOZu*!W>KiBI#{CeZiGWo2cH-8D7Y@UgF>bj16RAHEbuBvOj|ca1D8ZVKw<8lq?_ zGKL-z@{AYG{<-~2;_#Js+t*QQP|~Sg`|c`fnq>SzLPyt!Z>D1^vojtsU+ zxY3fVtiZyU5#?xGj$+RmY05MZvMDjgiyFBPXF%;|H-jBR&L6ilTx7!6#PzIpr+fm6x(D-N=7gWwaV28IRMb z4`m7c%v4LC7q~JOGB|GCfLnaovdcq{?~W6TZQRGf!mo+TU9H!9os0+!yo^L}hot1D zP$7em#IIkzd@jbg^jc2qVDMvyUtd>I@_FZ{ZTlP~E%V@t;K=l8a(AHj7F z-+}dX`-$V}K@|jII@yU>0Q9sx@m^w(UnXQ94Jd`9FpMW zO{5&;d3x}b?xkgXJ=>aetg(aJPo3m^nd=N>4e26?&404rM?6G{pct;UA!-VLzZoJ zK7}5`?rL>UoLEB+Qcjx^Q#y6(l&#NmHOf$EJTqUjNvNza}Lo z7cYVgOY-2sTc10>eJ zum{BlVV1>hct8C55BzOhbptpvs#}4!T|3;yp&9S3%*?wEDuSwFO+EI9)EW)DB~oe6 z%_`Yz*QGaJ#1n=zXC7-?!HmsNKwV@X2$yU0OzK47d2A#AMXf&t*Ki3HcWyiARD^R}4tDXvA{h+D{VXS?mfB&u&#o}ns~IG-TeH+kCm`P z0#&?T3qz!W1az1Vx2;g-IGSD}h>dUl#Jq2q_JM_cmSBL>fvAFi+B_uGUV=6icQlcTTdAqQ1-C)GVm&-O2 zL;r5LMO8**Q44nw!&KxGR(ht@9Ss~|4%-s?6G;O)uXBL1>l8&sYuWn}r&fRC#EX|@ zy)N^6IJGK$(|rA4yz!29+T34|3{xzyC&9EcgPfeQ$sOr`%_*^@x_TWz6l+SM#{?tT z{SuVQ3H20RvB{a4#~4##XK!Dty$;AdK_`PdNh8r0CM!} zo?sq!H!+bHL8_y#k73J}ExWn7(O<{h1pTsMhmDJiIL2A{lFApavv>Uc)uEyc64Ya# zo}T6i0J7|yo0$ODP+V#vNC*nLO$=`H$-7qy)$l1h)jfNj1{5oCAg||XJ$>XOpg6*# zTp#KuEGhn*_pfMfZuZSW>Cyz`0d_(GnJp;c8_2r#gsshiLzS=VvmrKsv^s(z7V1eF zywb${R>)Z8pz}5t0%%2}pp@n3XS}DszAz;ikTA(L!Yv;L{_ObnZHbDCinP}>3kHfz z!b_iDy7T8ve}C5e7#nMAG7WTdcaH=4dHneCB9OQw)$aUHoYEW)2?5ori&S z>Cmc8&BGUVK4JTFbQwAK$Sx`^T!XK2VykhQKk~TCI8q7Hgn^kEw|=3wKW5Mp(kPue z$|)+|j%MDx`6lGWvzX_Zpq&8q~v?eXnvcD6t`iLp8x69h7f|`v#0E=5m;~mN3vatFPS>#j0v@K zs9(#g(M{C21%hMKmMzKBY4=e5F+%DaCTSnn6DDF>_6Vg;`fd{6id#4N;LPx69SB22 zCtHlti9!PrLRh#673mrvbDBY4Yu+Vh%x!sx^5M6E0e{GRzCo72e{Wv2ch2MIGL}zu zb@cJqQEWiTT5<52d71QGnENW9a5}Y;l{XF~<%@lKaJl@o&wE*`izgR3nz}o$FZlc% z@Dcsp$4Ku_W%X&>vZS#qckt?s;|1%M{IMkt6}@jO%6H5iJYLYh#?VHh<7u!@=;Vr` z_DoA}pTN!c!tthQgLKq(idjo$(4wCQ;yvq@FS3D^YmF(my1%ciJM3cg$y#X&W@b;` zr0?6e@5arW#VFg6IGRiqWZXx6f`fy<^u4lbWCSsLG+e~=kkoc!*)f|OAn=< zwv@cVTTV|dV5V#_YKC;Bd(UOBCshrWsy2bjv`w?T%R&a1|g#RY#kFmZ+x?>M6=M_Cdm^DFj!tnU`wZOo@iZI21 z?K^kupx_}`2edxGkmv%IT{7xML&FjH{PUKOp!k3tpk7v{*!9+N)qVj7jr^!OAO`qs zJ9r@l+)V*}#ZB}!5aK!SmjbZYzO*^}3uY~81tBMYvSOd% znLRuB^%|pix|%nFBNygP1xJ1(=)%CNI|t}y#a2p6Z~O4E&ROxhgQL&DGM_sWKGi&W zuBRtAg)bRQ@v)l8dS#}0aD5J)`GKPzR!si{9Iv+s$y^W056fwU?IZKVzpr{K{FMOA z6Q+2k7xkx&f*mlBFi{I809QYdV5?WO@zur2GlU;DqX2xCr0Ts^%XfD!z84Crp?oX+ z^p^`qZpN_hH@nlbWdS^55zZOOMTP5vVneO8=C$iZd5NFN4g+7r`Z2|)%S}OH#b8_h zZJ_J2wG63hv2QLI6~{2q-&jig@ePK`f=k<~`30A>j0~QA=V>YT(F8-DjO*7|B9Yn6 z-ZXmz9-Zuf2JoW4CY$d$MeWk|^ps9DC=`@50AH{kq%^y+POg&$_{$s_uU{bS;>7mv z-(RbXEwuaoZnd=ctafh}f&?4l>(oI5eY=9#*l(o^#72g-m}!2d*CYRBcw}TJdFpbn z@$K|7Ms_Gx^RXLfYofV(e0;p=rOg&_Xui(`elFDXfjR?U^bU1|Ao^);&bllVeRlHk z(c9bG$C9+*Sl*b2&e7M7qi7y@DEn1Z~gXI@!1suJsf(ci$fe_XpqFpLjrEdyY zk>9F!bI&e`vr<+|e4-1sqyF|T?Q3kBPxO)wiOmVq%bvg7a&O1$o7S;AgO|Qm=$4W2 zl+|x+WjT~}&_V(wepSI05$otiN3&iF{$u49=L`*ZD2EEB^obW(^!9#_)HrzHfDyP^ z-TrGgcozO6_p{t0a(-1jl~*BPdkS^aHp=cjdrYQ@(O!~=IeP4vk*O)IZtBlc26*yY z*egynqC5!!4005}d;%xIbf1n>eY+Iy97c8V!~jlA`#GKw?A&u?P+3*M$9GSH3^uZ~ z*kUHPDHZJ)z3PpY2x1uC3Xy z_PplxyyuBHeI&L3ve~%pbnH<&|FNThO&>fCDJd&c-R9xe+u|OOTts`Ztqgy#XlRlS{{>jyoWLFOwf`J|Y)yMWPqtFM5gd++OoI6-=Lz@Sq4e4QLNU5KB;gMfc3PFt(uye38;*>I4cM7Tn0-+ z5@sSJp^J`8XC(Z&$)w@k&v(!f5Dwjq&3uDLTxLt?)SR+xe3CczrB!y%rK4~ zT?*dU@cj9!%E5eO;Dxu5&vE!^XkxOqIT< zS7B<&GH?q(@3CVw0^kM}+Jt6@T3?gXHOgcRda_pD+xTYI!rTB5V|giRS@4M~$=K{P zLpa}8rcFh^ZEM?(Hw-?2zrBmcv>KgC#aWod5DqeiZk4p7pcY2*0B^pgqhwnVB^A1) zMNVV4o12>2nP$K5e z8e)CvCC*Xba}cw{WhhD>Lgn$i4ISfA-Uh_%WV-oDeYau6DmzqP!aJ{ByJn8=`wlOC z97v5Mjn&9yf)ZuihA9x9kff%AztxR61_^*F1}Q12;4aU(=`8cgmX@s;a>7^nlpf@< zsLdA^5OIDnF)?38c%~2baGq$XuV-1Zgjlj_)v6+xIZ8r|@chew;LrS;MalUa(pg1- zRQl}G4H#Omfvht4+d%cW#C6x}Hegn_Krp?52Y<~a%&B!*&0G$3U2^uqK&r|jRZ;eO z(;Dj@x*ukJxy<%Vt7|+r)m+lopXBoTv^7#P)-#IU&O(Ro)v=$1fmFDGf|-I{g29F^ z@viLby-9}~mr`cfe;Q(RiO^u)VO6u8^AbuCCe*DxueT*kZ$pXx!|_^Rk)z9&SP0f! zN==pGm97x*vGl$)blKu`&$&fC0O_4scOq;f4UXqT&Z(b#LQbCPSomTg2?v#@oy>6W z5%<=U=^?}f@6b44*Y|lZtvcYwjUw1t4LRJTTAiiC+T1*0^xV-{FA8k&u|{?fz^x(A z2;4x>;J348CMH*)hI|C(CC&r|kbBY5g4(a$$M_&sN&1tEN`-GJGZT|AI6RD@DPOBm z|LN0PtgX9m(qCb5Fg^`hw{-EYbbWRu=8*_d!u(cJ$u>{3*8UFJzn1i1BL}rwC zmO>NZKTdk&?A+X2-b2#PzgWCye=F8H(x|)$A#_$qx8?*g)2KA%xDkL^?@zH65$F~@ zQ`{Jb6DtIU_%7I2)yI9keSL3XlKKRgZ&Y0L3p{Va;Eds#K?;|kC?0Odfjgh}c8CI5;tE3#b;_EB=x7+}#r9M?}3sQl5 zi41-ltv(?EmA8U)aAS%M%1n04l2P`{Nz);IKz>l?&XW;$G7Fiw8cmrsxN8>2PR{C! z8{-0W_BAM$EHzLJCAW)=9wZ;<)XPNXlfcBNE$fUv1W~b7%4N;M1hMe6L^b$RvX&5F zv3jG8=lj~)4S-;8FoY$0=PKB1?k^X*qY6tCzZZ7aN?HgK>tC+#NvHmUS_A(GE?=_6 zW8>gqGe@hA?#fHCp`(=#NZ!Bt>y4Jjj@w$MX2cyb9Og++W)lD7$z>3p~G zES}q5313}eGa{}iG(csqHjZX%($!ccwuZu2zwEQivgo!NXNm83tCxwiEo%+!rt4zv zXx5q`Vk-g!mrhhK3*KVos`u9!b5a==s&ablU0oYV4#zSu=G?LW;s2K6h@U_)4&L=0 zQYm2+^Ky!1V@SD~vK23L$g^kh@wiv5Zv5xVDrgQL@kHSb_mr^qEZ4mX}qCc&py6!?N6vpdTmWCud8Fi&F{%| zoe%1*Fl!Gqbq$t@Z7dl{?^+&)!c1tMJWQi z5f~EkMDCTro|DoGsQuph3_U#GL?1Dk2=-w2?%k_C1Gvk1WMyT^<44#{{V~nC9Mn>D z<;E?ff4-o9JZCo(Fi+ID@4jzrhEV2x_ZkLGhuXg6)(?#w^Yc*I za6=pG56u9Xz4;B!pm`CkF6Q+0eW`QKyCjwjMOzVn_xJu#g{9%Kv^U#6^!L*dCvvI| zn@xX6zsW4H?HPsAC0_Eaj+*5!aK`Ao+4Aettg_yNEzb&hgU&#@VL}>+fKCo(DEAr7O}V?A`gH->WyZ(N2rdL)^|iV zBBC3|S(4oS`}hLU`2{(AhmIm*MQPRor{wsr@0Z-F*eCZ<+g<}9^7H3U#-&-sCTN4* zv$M}33NhMCg5Yvk7&(i=>skoEQsmOkUDO$f2kSR(OfYjt*#q<4h4Bff`~TwPl+jj^ zk=ebtw3KE$V}v@KP#|2KoiF0#6lsRF$AnI3UQSLp)G?21UyvLCBzlh_@hg5OJgsOA zQ*24Ee{33Q8>AQs60ME$ddh0*0K#7P}|3 zb##s$KfWGS()Y!Zs(-}{M?KpF?Q04$btC07#sTX5W2J!a)i{?J8OCRAfdSe zkKld-C)A5~fU1&vy~2Q6i`0g}T8)g;WJ!C!3N&-(H~H^x@IW&kzsKpyNFTVpimIkA zCTTLCyG`=TKf1Z&qr9eNLGg=;|NbrGQ6%V=5F+;F~5%ju&lbK zZq~-PK;`x?vD0te+V9Hu zY(BhE(_lGJ!|hx;Wm)-Jo8&de0}Ir$%j&*tIxxM~eJQ-%Je8he_vktv-+v1@V%M&C z)DzoK1HFf{g;_f#Q#cSH<&}jsM~_~=vr1-5A2H$O+`Zsv+4UjEw5)9B_UQ$$@E5xV zdGuX(?K$~AB&J+|cZN<^CcRIIn?sIeov0A}JyhNJ==)_CfB& z=U}-G@mon{7#SLF16W7m>L|H^G;bh5Wh?>8jhd8BoGt<dw4UCI8E$1w1A zn6Z`BITaNZ5~w}L%X@^CbsNAuQC(d|l8sx0^yP04k6NA5tuY;-2ejHy<0l%OU zZ~|iXv9z=s+;hZ1BReL3{zH)ETmr~km#QuVSK_TTH8og6q#O&Pjx_rPi}$9`JxQmi z@Manx+w~&F%G&zKIK&F0kjdgUn-s&C?>jq${E><3#Xz%h#~k*b3XJ_#D`uv00|4kX@IJ-Lbgs<;95` z=%J9BoQ%dT)U)-BB~zrX{R8U7LNqXVZW_qi0z*0$gdwYR6jMH zS3;f^-c?&#vykwPndl!kH4eZ01(k~uWUH{f~MuP?9D zvr3AQN}(+qe1Hv10+PNCRKPPd=dgqK7m%x&RG=UM2hf8q`0E;Tk3 zd#l5HInka=q6JVDh2CC5>eJtn9xF5CnS}K9J1`7rLPGjqBJDxlNAPqSsG`t@hJ3?s zQv7)H=3h)qVn(lZakOyH+xR`Z8gwQ{tbP+jPeEsmn`ZOrA;kO+4I+TMhB7-u9FT5Q z2pp^j4kT^^Lw6BO<+p7cHg4TVv1iYofNl_wUjc$YntDsDI7G$7e5k5Qde=1TRa7Jd zyp>?cEpGyIR|h&CDC(6_ek2Q|OZH`wJ_j#Up_ob!-icnoc6x7t)HxOwDhMh?@OZXv zb?((t!z$M8EEI5q<6`-?0IRn<>tr^epH;0z(z!Wfo|(jPk z3>5nLB-cSqEjta%7LhD^QYCO}+8(Oz^6F|49IoF?i;Ig1I0zoUnW!F0{G_13aV`uB zU1Vsiv*-%apCi8FBBlKU1LREt19sDwR~vi7iTwkFFfaM7-`xId;%V-iQUQMc z%gs9=b&8Ofg48w~-Q+L14QSv>-~qOb)Q%WQO(H3$$~XylL?2zQ*u3R4{9J@~l`z1{ z4F(M2KJQS}Uk+6-l>e=^Bklw6gDdWb9wC&9_R9LnF_&QZ{oKgu&m_B1HsAh7#TOaySw+-M^k+uK78=>^E+{l?d(}voV+K&HJsq{&&smAkcloeCMM1m zBWn9+hC4~IsFRfA;fG=mMp6&HrGUEJ>hD!TBO~nfCeHJ=Yxb~ncm}NJT@A~>rXH;( z@^73!HF0usJ-)Q$9AS=-eBc%p1rqr^$t}697u5ec6j(?cq0xH85j(-t!kl!pY2B>_ z+KxV2L%n*%1%uvRiYq#L{}c^aRky&&l9G2)EGrZ5L+{kpjj)4S?KqZ42`Oj)J*(wbg*T07|9(ZenB+Q&an_rJ>q>XWN#7Q8NtJwteXO3!d)Ml z`|(4B`5hduCPjr%9HJ8~@*8jA%Cc=8sVy2GZsBsWC-qEFSz0YAPkS_%eAu&X>sC@- zO*oknV*MPA2tTAK#l17rfEL3w{^IKdirBM}-(di2>zT9j?&MoHZ{9{O4ZN6!ZUSn* z=;mWk$6w+9^^9p}vYcb;Np^$lrz_mDUfbBdOh_OhsG z1o)m@qn=}ymX@#16PDZ2xPjB`S)A0a1?$i4?R3yE{T&$@DMSA|B#-Luu~&GycMum2 zgwmER1awqX45sgZc;t-kX9^?^AE6zgt|9FvzP7bdHGLeNfKfy^6d~fBedu|N?4RFI zFz4xsHTu51Tr495sv4wr5eNs2YWe5BwG-{qklNwaBY;XHPJ4WtLlFQC$`*4U)>|}y zBK^;61HsO=UwA9p+~|bqRKpzw2T^Q4Mmd{bP(WruWc5l`peU&+&z?OCCR*HVJFwBZ z)Av<}8Wa7iif)O}1D|R%Z^JT&3a=}$D=yjgwAJ$fmtbzB9T z)B|(#dJ4srZA8 zm5vRS1k1HslP4VpZ#}ad1r;BW+JP#Dtl@pYG-J-!dk`e|7p4vKiIu~`YF4Julfl}< z9m1+QYce6LCvxu|sTh3y_U)6@)YRLoe0&E$C3|iex1amXfaXQE1CQkZpEabg5{}!h zqw#Eu3F|h5QZTcR%uY&+}l!I7}RU7bXXe9k{$7^gdcE zNYO4S4-!g*JH#=hu)tzPpwao>O>{d#jugNv?oU&=SqP^qqAbnGP_f361X2`IPF#w( z=7hr!8U)R|LkADKs5{JUkaU1#@TZ{_gII_zCfi_~v#p&|8A2VBa)n&c= z_;Eezw-RIvTlB1i%Eg{{{343i$pK{ zb#$Hv($;|secy^+NXp}j7^d;QAMVVb`l?e?5dZJufj!Pd&VZxy z;_H|}XigHX7~9o}B`2)e_%rGb0fB*caVnT}vd?wl5PRn4R)Vv@6F%7Y^U>%*HswF( z(L!(RMrvj`2y`J92bj-n*d+H=OH;E8iOJ0@BRag8M^GHxp8MUCZQAGljU>-vi0JKP zF0kHeM?-Zkv9jg($$o9a)da=3u_g1Jd$RK=Twvx%4d}S;MdaM&mqLmsjY^1*>j(o8n@4zT#OhvSbz82>B-Hvj~@P+EUVK@ zachCPV;co!U^o*1Kw@DCasFxSzu*x0qmMG1%^qCMlIXtDX3$-k9$uccKDffRPw>uB z*Y%GrU0vNcZcpx8FBvd7{_=S|Q>(>*bBE)`VoZcho+KOJqOJl)<}vPARI*BjObfKi z-Vg%-4v*H!FC5br5U3tK%Yz1Ka?}O!`YnPy$!`E+`x{*~kbSyCBvxKv2oZUm?){9H zCOse7*@Wz7PXn2F3QbQJC}|wf7gSUZ0ZyaLXFmd?ybm~A(TPd*ejaO-12#&ab<|(0 zrQH<)KCuY}!=5A|;OxMdKLKErM&$QlmZwZrBMLs?&HD`AIAykrg6v>Gc}ptTL3o!{ zRb9q?kgysu^35R{nwsc{LD7J)?s>ak6Dl)^OUcw8r7bD-!*NYn9FDf24IX{Hy?0R} zlCK@Mqm%?efT(%b)Ir&2mMJJ>|amad`)pu^3^+>$h)vT zv2fqFwjLmr=s2~zdV8Nhd{t+?6%(=479>a*ynx`Injgv|#tQeSf_+l^HH*l#KJ+{* zD=T%1j;`)Aq;Pl0_8;I=D812E_`=ikA;LeDabc+Tx#3_9b`0SO&>9y^DY-dyNUg+y1C%(Z-Ku67(04+BNu$M^ z+Cygwp6%4Fw_A&!?qK&k?EDxP8o#)Y+y?b=l;&$_jk_eXEt;#Xb{q<&G7E|QCx~_)unZ;&9K}bqs4g4OK^O zOV{i+?(U2u3jA_1d7aysw>LNbuap?c>}QdgI^RX~J=8LM*t{~Bdr)cD(8O|^!M4BZ zhNs3wE>^yHSI!_T>1WYgkg;dhfnO@+$v>6N>JE;$==4Wlqdfhy?o!grm6er8*YZ-@ zPtRv{_Jm9z4SSu&;ugoHL)=zR;kRqexbWPIfht!X|2V=<_JrsDGO8hX2IY&J8u0!4 z3f(4Du{*b|hcinlQe5A_M94ir+S z#_w?{wyq1xpWE0ICbhLF$N^?ir*w~wx+9HZI%L^fwIBOL^n3P>Lx&E1#_YQ2(mlKM zTu}1h1j#H+@%G+>)$xk}H?!fbXt@_d9Y}uCx7n-;RksLX0PWe_D5TC|@5VaOB@~}8 zibe9fASEQ^FnXR{q5J5wO(C^gUESU50C>4oi(Q^fCJBHpFeH|8$;$FQbHG$j9H_t* zxZ-GcGoI80jSKvhT|fAoY97%AT7CSYn#UWESQGHG}UO^mP_ zv{RP?*1T(OriHdm1meo|M2+I=!3Y=C+mEW~$<|f`#}cG)mrJj`I=2haqOr^%GU5dE zaHNBS`9Xx=%K&gjo^q~x7vCdXDgDstSBy6Kr2zS=Hw4Q!LB^9XSCkY(_3J2CNjXQ>7&b(t!V4J?PtD z!kONv=23W5D{)1`3vupEaqzMqHY{!->l3A>l`1En)6Bd@tK)YbWX|% z-T;@l`}umj{-=qF28F#3OiVri<_<^R6khYw^!|NeERoDNekT?eCu-wV^WJ{rfUe^b zEMaa}qm)KLcqzxELj7i{GijLr(*URR)Ax?VCYPpW^ryTKz6v}B1oWluM|Z&-kdYhF zlADix*DiZD4vt+o(B*CHAeKdv^4HDuH*X$et;Q&$-mZ84H+N`?mY~h-ot&6(M3}$L zDk!KHU9B(o9cz^ow3L0jJ2^Qi1-&ysoSnFyV&o$PO4@brP%QpJ3*-C1+!-4_LZ?eoQ~sQMy7qNMw*BZ(ed6uyUD4N^sJH{?MJYOjDEYBfZH)&368J1|If#o> z&d-do=khAvfm~7K@25{A!LunK6uF0l&jQyI=qpGNf5Qsb_RDEm45zTBi4yvA2YN_0?QM96n zFdow1;ba>{2MhP)VU7x$ZEXS^M+X&!*lrEjvwE$A!(gHdW^~ zPp?ZmX_ij#{F{9P)1q9IpeC=1HFr0i8%tds1%-fs{i1Q}*8Ty#lSv-Wt~QGQhJ zahbJmtW&IRk({G);|@n{gTB1eppfI6=72|$&D_w3B`a)BiMbT;DF1XZBo2!(tvZJx zG8KI*Ff=0-*r!+<^KPpUs_5Ih0A+ToI+Y=c&SI#Ox<*D=`A(oC5c%{wEU^tkfOwy| zyNiOVcmTzt+jQT+z;jQ}ousaov@5J8^NCaNqZ&1YmaYUaFo(^gE~)EDJ{^r#uiJR; z(2CO}B`z3${PbxfRB0l}SsM6?q=?@^Tk~&xHmAL;e)jxXRZFSkFzh0mng7M{(I}Fg zv!&A?Z7H9C9{$3c-rQtwXGi%4!Fs*|G!xkj){7IlWI`Ydb))XN2j%QM!BxPcq2gL! ziW!y4$x{%7>;fE4YTREh_ZWh$J_Rc`CN81|XMazo?PUKNB>VY@SLxl@A2f%IAvG}Z zOh4-hI}!z?H&Dr$2R*Gi{$^hK0}A`9_y z@m|VHb`_sL@5FIhiUN5Tx<`?Mr~qmNpJ_EUNR4uR9nN1_G7rPId7PNY0^1RHoDhkb z51Ju09baCueXoquo;pMwhdWtzZrSpicw&!#oRpkQT@#y{%09!P4da#j?u%Ymk3*%x zglxWcR!h-nfs-z_3(I>?HPCcijW)1`Vs7oN>fW56gyX`CfaIA8CrGFCl_amQ!n2BJW zKRl~E-zJJzK{-Euyk+#QO-HcpG5rrS*G{x!vyXOlS+j12;(hVMFDzuReKz$lMDVkQ ze8+-Rr!%EF#cF~w-P|ES^U{oW%;6-tkybwu#_pFBBwII;8!f)4d3ovnxZQe+cd_ON zuWf%tBzBV$_GiCOqV_|luPEB2U>y4lzh&kxMg0au?fuH~j8H?O;*HU-IG4h4ZavOK zKqDJsBl@OcC4c&64nT^{I~48S_oAze>}5jeId=Zm;@x{_7a~cL75LnsS0nL$2bsbF zTjnffL8Esi;m^*(uU-XeoAlIxT-2%ic@-?VE2sC4$b#_FZA_ph0c`Z}g8zYwd4^^RJ%P8%Bnep)(a`UYX|#j%(c2 ze{lW2zK@` zi5p8#NHV8xpxBjI3_;&?py-fz)9KS(UeK8tZdatY%p{uT*?XBnO89+wQ*`1yl!J%j zxKG+MTwM34pxeCN>2z(Oa4Pph^tuM?)(SnvQNP!NWiz0a>kf6*t*h6$`b(7T9|or0 z%fB|XyHr7t-tmXR=+`Y-gN^3jFtlaY3+)1jr32)aL^b2-?F{MfLBa`Z>yQE{q>wU0M5JKwz!82)lYgqhFw zM}K=t&R69Vufy(f9?{Y!Br9f2Rc$ZSSl3MCZDA3UJTcRfr-=3q_cxW|`2D+LVcn)?)H0FaLv-PVK@KHG00a&S7o0Gpp`>w+J`mLBzt>SXvlYqo{(yMP zn>++=D+$3!iTs?LpEe(G(Qyq}DkEZL&X?}M3V|o~`sf_boaXg<{lm`kWzR1@kgNC> zXPa%a((QM5Y+>S?8{ceuA%E!vi`Mk-DVed8MlWLhb<(s;==fse7}_QdS>o%XZg9;# zm1Al;W#BGvTR1P@H2f{m9aisR^-VjXJm_EC%V|~{GNMj?*<$3+_4AS^29o?4TM(1w zS#$XQ%Dt7H13kqu(FvoWt8+ndS*Q1|IzJixE|1t;ZENaxJl^Q$OTVP0rmoB6z2FPH zxWof+VkUz(k4G{fDNf!EK3#$Jd!qI3$Y>`l=xl26R^wx|_6^?jowVeSmeFI=9G%H9 zBbv8H%7*z=r24dIat@?qJz@Uq%h=VO&0%| ze_fm}*s3vYQ9NMj@lwNN%#iq*q2UfL=N8-E1Pvd~Zs&gXD5v76SJxuFf6CW62V_X|ufF?#p*KMvSFn^64L!@l4$#u%-B zx{M0f$jn@E4G6XppC4awUHv{jv=S$MYA$N0KRxrqo-#mMb6XxaoAise)tDu6Y%|It4;Gn_lYA7g2O+E`|8zFS!O37=4N+Oti^=DKhhZ zslIncLj8So%cWf6MT5qxIx(qFFRz`*JZu*!JFRbTc|JfufKug4ob4WKzVNPdQF_tAQ>+xrd=5%37@+PDxAsgBSSx>JHxWc<-Tp5((rT=dBqcWm*%bHyQH=~r_eO45BR(#r&m?;!S=VIYi-MN?(f*dKX0?k3rb7O6T1o(5+@%y zr~;pd5!rKMdfm1%HW3RtV@sl~OF0cs7M$@n!r?wm7qxG&4}7PV89MJK`Iz7=)8vew z>N*<230>Ht=iS@lB8N#4Ce_g6I4NuVx|#j$AiLP;RGS2(DQ$&s2XMx_Bw!oT1;- zl1toy4N_GdT#{{jdZY@P>h}aiWf^&S-F3xHJIhoJ-+8f7ke&6gVbvnFcl3~vpWQmw zfPd`ADefnl*p*_MUA8!Z`j8wa1qIo~6=NX7)Nf&pD@iBh&@=P?$PvzfYoDC{tcTS* z!!JIsjJXG5O5K81$}ckslxNS8x1}VlPZdxQofaxx=6cuQYjWD!i|c}OW7W+G?t!*b zwGY_U*_|xn#u}8o_I4!d6_y%gB@9g};ns+X;^)!zjIsLM{>$Uud%G4_cKF@Y{Cjfz zm{+^D+3x1Sb2145Go44WuJWF=Uv}k4|My~yu8^}(7~i1%kTlNuJR|@r4E+eSCzzL( zl`9U(734m+@b5MM`EQNsmu@fO8ArNzt++wRS#2KtF(IWuz7ckHz4~UE#5TMU&Wb-T zMD>j&UP$@yz=Os#(e|LSFB_ab{dpG;6W!-FER+jHIe*cyzR52aDYh+k%*7;5R93Ho zhABI|PV9HW=8`Jy9eQDpX7b-w`MX~}aF+g`Yw6q{I82CRAlg#% zRrBOk{i`YUlx5SNYG`G(sq(Drxh!QrKtB|%R1igVl3Y>PMkOW3dc{w8*XgN5E=djK z1=J68eiLdl^7eD}4rybszWGgP^>Va8l%&SR#qpOydz6Gmth{@p0Ff~6C)ci4VDVQm zX-%3oeI28WkSi0uh$NuM$%%HSPfLN@Oi)UXffQAIciv~XdXRyps_Gi1yT>CB_&q&s zQF#wHz4%;4yQ|3S&6mCA-!18`2_|>SYM8MdlO7LX60eZVd-JKXIN~p3qA`ANl(zg( zg8A)ZncMEg>8m+xJh6#l2DYB5W{b1qM^(89NcWomW;%9{CsD@Rdxig<%l|tvDQvM{ zKze@sI@4Uzf=-)Zef@)au9fiPWB{8@+%d`?>;!(S{$nbmrs(s3qP2uhMqys?_EaH8 zG5ytDtTJ=#-(4)`^=AiX-}`3=6Q6S~^{L>2U&RA2udYw(kXe+D{Gwu5X;-f8I~v3u zP$e4sK+sz$cSJ;Q6!SzpT3GBS63iA{K2>2PgK#`F9^q)d7U(oZ64!)E)1_br4}A)h z8lj3mgY~r#!$4@e-n_sHY&phywdX+%q-myFZV)thD{+JrcxxD%fj6^65$~{R^~Z+EDZvk!oEL9bi`hWjx}Sw%N_6UX zAy3eCP}dDeZ+;T@t0mYAGIXG&&`O@ z{V3duhq`RZm;kt3>!g5MP^fp9a2E|yBgAgj$BP9Jobco0e~=a5dS z+^`HGDJ2*ysi-|h7A7SvUExYl4#?T$cbv~wKxazKp<71Jr{7ejOn$p}l40G$dN}&p zL)mWnBE=eBl&U^4!&h%e>A2b~y*Q zam{wtCypEsYFtV;%<&gYwK8gse)@)t{@Wo#)&(=uT40+6DY1*$h(T(B!tEobN^tp( zN4He3Z3;X{jF_|>Fo1Y+IK7tnY}V}3-SP49Kqz)dlUg`tBwZ~j!&)aANJCP%N8GIy z!mv#8LE#-;gFKUMS`a_%J|R(}`mj%3ElCee9)~cn2ynmX&75bmF6!Y1HL2 zXA=t5w>1*u+q|w=+dW#3pY^|wkNk;rv$0$CMY$3pR>8qv7Bi23s%&1G!0kV*e|S+_ zZl}6XUaMjHV270A(tE0g`Ll^h^#08d63Nw zkoTwLER%NZo<}ahBE2VLE3WtcHt_)IJ0G==>({fJX0m*LRwqpnb`A5s8_O-qOQff}tnc7v6G^4~F6xau3SmEY*diWHRU zskUPUiljyr@vqn%#uW$9%jbktl0pj^W!%oY^?T0PRUYK?J#1{Ymx3{!=G4tFAmJBN zvu>UuZ2H5Ws=O@Q$CIZTTVFdQ^;<7EdtYpJm8NQ$xcohBuOD2pK3=BMN==8Nd$r57 zvl1W0I|r&vN*Ba@=d+*PfoTh3^@SQmgOfE}gL^xaHx14Y<`?`LYrA(VWqb6irf{Dx z$_{qv`Bfo<(vi`l#tn+931=-E>Hi&NjQWfG+-J31k!VdP#O3HDBvQQJajWoP_~+-l)$oF(Q$@2NH`|2zKfH8KwS>?fy?0K1oi-@;P^j1oC) z)wPBkNo)VUA`I|EJn$=#++K(|F$d#=uaW;E*{XkxKpgB`o<57oZ{?kxz&V3uV3$We zA;|5XHlxE^4d@A4&94>q!I6j?1I7)eCvKjiX}6oGhUzjH?IWZ@Bp7y8#Nzlyc{L5a>b;4;FC&PO4b=cKrQbwFn}tV6swbL^c|XR$qS6MS{#@0GW#{7yW!O~PxS>F zK5h06??6PT`SE)h4*Um`hZ39yofL{21R3*h+Wx;wSNyN+M-4L^dhJ^^dfP_oy{<&j zI(QSz^4urLBdSXhmq+oWq!&#@)HJk`GPXmyE8X#+AcAVVLt zuKWTMsg^--2ZeP(cdsUOF@&zn+p$u=MDAEi-SWC^^Q`09veW#1 z!SSY3Tnu8{2F;}%*XOw(`kEY-ae2cS9}%T*ILIQV#1NP!G!XT~(BYD$lSQ4&*{%Mm zu~}RZ|CG%5ndFDk;9YwC+a1wA(?3<+ILBna_huO@*`bAsU%Gc&; z4H+H{1A^V0_)%fk-~gGZ<}jyqJycMjHV2IQ0EUU1RJ=OdVRgwOPoQ=j-UM-AGPb8K z^adGcAWZU?=3$yV#62|UYtdRtHVlY)fm5MNIsf3t-+%(F8`EIfm52#tigXf)k#&)C zgwW=`+@Ta%l5;&2dfqanI0vq@b>RDfXLa3oJMM;YGb;BF=s;ZAO+vO;wCTSv|yj3_44O>pgTL-Q3qu zXmx-ycFri&C?(wWI|~b3>a+b+E$knd+`?XbaM`?Fc}80 zn-d?i$@AhN%Tm6SGN*z}$B+G&tmnk{5JeH5`ze?oht1b}2cg`Eo?UeL@Ga%S$$_7e z179te&R)qiF4W{a7+k^Iy6r^@J>!UyfyxuD?&$fE=)h{%O7eShes5G%Z^RVjB-9wH zynca!2{7K_OTKN1ee$N|p0&FWveylMoT>2E2a8x^Y6nFh12g6kVEyA^*;JcDYFnO; z295{T;sNlcwcSR?ccxQ-^sk5DUB&z!s4p_#D9&Lon5^ff3SbYyh~Exk#lGazr(WA- z40x!Lt*`?Gj_%5q?;%Lv;_|@#I zs8kG`%xuWWsuM%~JGy%xvq0JfN+Vq}FCnUcWM2OccUMnAhp0*W{8P{GjEQ&nx&?)r zO9v7jKHhg!R%87Zg+zJWp`46Ny{`r$%4al$8Qo6!U2Igl5QaA1x4bH2Jv}|IyLg45 z0zJT~`K);2yv1;tX;PTcVej%NS~aWi&l4;Dv9UTt8i~CMzh~4E&B-!2e?EISv8S9(A*My|FWf#mD2eim{&#=d1a)Eam#Zky~-V%tI}+zpNsjCF7qmv z%s2n{38OgS4P>zVhla|NSJ(8u-)B1C{%0MgOT(y<(NLVY#4)i#!>O*&;T+&ND3K*- zaPJA1ZB%W@86GnBi2GvL%el^ONQ;1mbsrbQ@@WF$@>}&R+V1?d60c(N)S(azta3xs zkxPa;m>s&1wj!bkX?QB%TY%AP`_M^4t4Ai2-yCJMeQvSbSiEPpo`P`#X2h8UBo{|j zCombQtg^CF^~ z-(bAfWII_bsIN!W%kv=k^)sy@(r*m(-nt=w_J-Zvu^B=#G zTal5Q^bR5Lx_WJm(5P)Qn$rj0*eJVN%b}+0WEf%T_LZ2no0pACktMbQ4-9EIGWrC9M5r3dkcS{Prr zM8()gxgT5I^AtV}y*c%7w#W!Nu{`0l#rSiI?4Kqa6RYL(OjW)DZu`Y9e}@7xc;pHC zvjhl4e;*SwHsgA$YcpWQlo2c!`TW6tav-=AGb|?zK(mtB1m4=jD*_h%69p-t^yYth z-}pJ8B&gqoIqzihC*g%Y6tcGN%VUE#6gmP625&;jAi*yrDA@5m2kVvEx(L6P-{Yy& zu3Q;%N70tp;qKyMnypx1Gv&-rVkD!|f`SJ(EnjJH>Lh&cR9jT2UFcXoa5J{RX!E@| zVRk~R&4dIqf;49IHHHr>RaVMgSkpzomt7wtY>-5eV;SK8r{YsK$C=y`_*%mqF4OA# zs(uCLx7|j!jwDgA3q?l$^9=v|N4TVGfWhr0OEp|+tiP4+kjM;_2sd=AT+RRXHrG-` zYweLx2Xfv%wGpZ7L!q4XmpQMUs{DOp@Af_kjvn<;vC(yu=Jbl@wY*xpcyvyVgN+;s zDei>f6G*83y3z9bn0C4nz5V11j0Q{uWknln>H*Hk0N(drQGj@!MpxmYbKleiczJmp z3Q5FMdND(A1y%o^nNh^dnDE{uW3dT!j60&XUfnH`uAQu#e$PlO-iaONIh9qKU})h?xm}h0GLL?KQ%B6D73j{U~BYa<$QD!6x2) zz?lAKq>xPQ0lH$tdK0e6<#1zib&{Wd@?Q!HY6&aL__lo-Tt79hnvVIgsh#E_?@vlj zh~3A})pwW&>;SiwpV@?vtK=F)4mMh@O=r#8T_X@YX#TJUi`mL@mbE?!jT}6ehL7mg z#nsPsZN~S=ZZDYWNL&~zDv~llf}4N>Bk!E_oYqQc?R#RxA`gp>E(M+eRy$-c<}k3> zlwj3D>y@;q=#%11I6#*KlDKU%=2-XCzyB%A(4lc{mNl^H_hD<>n}OOtFg3r#Z>kQiJgq^lt9oEh;^X6_iuD4_f0Ju73Wxf7)z= z7`f<}wEb*{{At=11;s7#w^AJBzG6&NQL0k;cCojzLV_dx2DRSD1<_bfhb5W$Y3@i_ zd|8-}6%rAQ8Tqod8Pd^9u#L2ojrh$3?rlY2S}`Ofq$E&-=X^^4!VrH@a#w09Mh7@^ zllvg$3KPLq5$(tnD`95O%`PO+v{-X7IeB;>lIIbI_%Ny?@=)*JuY`l~df-nSj2wMk z%Gey_ozR+cO*O`=|N9`b`aWNfiUD zW?@qPUaqWM)j`fyqJOXdXcm$RGZMS^S&PvZ%J5AG(&aOTzJZ-25Ac=YeOYMBJwI@f z#S>__Drtp_Yx(ya0Fo&5v$C>^i%iADuU=(rvcvbtJ{(=eXqjXYRHJp=PuF8Pvn|2v zslWH`HNq_uqj_UAdiFro%uDGkvl-nc7zpiHz3Krv(bCgZ%{mdT?&QV(??ZjV#X-h@ zlbhrb`-Q*^)95-T^6yF+G3ddEw&s+!1sUghqF>H+WJQOa*5LYTSRb(vl`Z62jn(~7 z<~!^Qo1wm*ICM6sS{aUJm}8w2i_?0M0zk z7XynZ!5< zgMs>Jn{lFqwh>lmNcZG`4|zqwRIaDDm+u?b>C>;@WvwuuI1%%VIDj9JO+~)e8l4mV zRvtS;6Pnf5Q}i^zIT7=7lvYnSo32NjP{_{}^6t?xTYpJuglDAi{>T1(|M!L|q{e6E zUL0P$$(fg`%d8#{Ur!7_k`Yfz(@oJco5XTjL{E~h_&p#8B&bn1tHiwEbDc~qPlRraWfmH?uno~b!DpH6 zfYgB1RE5jPAKc+_$q?^|M{a_U_(IzG+LIV;5|9-`Gc2d>>`O z0lGi2_1`;Zj``FcB}km*b29s$eWuR>Nm&0Xy@7*#+) zg+qdNH{l(e1Y)r_oX-oq*$*Tf0YKveDWRY4;SJaTM5EQRiE4OsYaaP*j z__E<)y(a2qk;3O(D3@uYAGjIz?Wjn}zrmlVyZxVWhX39a#i#v~xfv^)n6y*Vc-^mv zxm=Ohk?MIZ{|UKRHimod&lb0{%SU#&7tWl}=_l6oX!h!sj$h5v+LA%<$z3Y2VyJ-m zZz8`>=iMXd*^M)|8pnSQoB|h+9aC9Sm2M+3euYYHC?%dY_avnr)j`3e& zs8U&f@m=YIgHEtlCEf5ekzc^E!I$$^a?{a~A~=~r6I}a!4sH!Ud7HrVuI(!VSwe0Z zXCE>jM#SbiE(SO>IDcR2Y?5Yh<<$nKB)JluXvSvk#*%N>uh_aO!1VqS(;beF}(Qwtr3N6>q1ZQyx zk@)w-gg4}^fFAeK(8OSa$Kk6ueLv7X!aOg1tm}D9Ei?m=37knBvN~rsH+k4tAVt$k zZ_(rl0u4`MLtrh$P*h7}!l*pZsZ8Cvi{MHWz}SlS5TR*|Fq_PPeF7xjS0Owh6(!2b zf#9Bwi{TpH+&qN^6bO5(y@wB{fXGsxJ8zMN{vkc2eXUu>p^~r8g_DC4A)m5d9)(NJ zQHZ3;N*oOxa^%G7c-fPf$R-*RqBT}L{HN~5Yrx^*i?W;e;OG=ub?d71w$ zuqWe_exk%*)x&q~#Hwn1Ws-aAN4~hNMt0}t7qz>bAuTjOL|2AB_C@7ml@qP~6g9Zz zGqW*yQ?)16PxDbSzxlA2E02tuZ`7&|HAx=$^=h(F$W8KSvV$^Z+{sLOeZq`XTZB)LGjDqYnjj8=r{n(e$(Wgq6t97e#AR;L&o_c!$LE zK852Jd8!~J8(=q{j74sM(q+!!fikhLu&@vY?#<@Ss@-hVn zV;ZaCAIdOE4}*L{)$-eer)X;%^?E#rRuatpBh(Oc>!Dl1OjyOZA^1fw^b{QF>FbNd z#0PyqeYqoV+kOHtphwqq#=r?VhjqoUgey)=mCc%In=8 z%l3(-&5wnhD|9<~oc{NDc;thT�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 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%0AgLSZ%-W%Nh=mzl&Qo3({+xpiC$z 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

7ZtO;{tgo6 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 YbHXB7%SpX10^#IY}OG<%Rc zp$rWH9rU}{=a%79XhM@EH@XYHn0Y=+C4}^+Y={u-YGvZRQ3kfU`Ld2S5co*rFRt*B zA>SgZW%3LMCiX#Rz+jp&8J_-u+&Vu(==zl5P$q)0#f^N>ya%Uvll6P=a}NeFKKjQR z4?gkSYxz62?^Z>)iHUjE>=oma)S^%R;c1uUBD2ts%k-};IkhtiD}t{O$(`#WL)LXT zKRhkf)`|AIA~={%kV$&`uyrpNxE@{c=GhT4+w>U8Y^Cj-6P?(JwOX`-w^GY186qRs zePX-X_fNT5?b)awTgQYwIFvse*zv-W@jtMGklVy32C&wjBKL@i$^D1~-nco91%WjI zn3GHy&O(BYPB;Omga3i`n|EG?>5Y`Mv|mt=p)GR)X4VXV2VB!|-Uon#AV9&0-do|w^PkNFo7F(qq1q|KK=SrpeS}WDUpoxvG1=AP# zLNaseHk6=W_!&o5iVtY0B1eMAC%qjyPW0i)3@t_ILsc3El4ru614UHCbMA%kY(`y} zdysJ!7B&?s0y4-&^vL4>t$9de1}3(NRK`~UK6qnJwD`jw{{7G#QkNunexkfS0fHoi z-H)*DN!T4Gp*0$MZlB1Hfan-DZUEHHJHy_|UP`=h2i6Wa*_o4jfI^Z{1BhJ%9Kf*t z&pg_GFc&5b*jCqpq*X^^Dgyt?Jv()4e2v(O7K6EPN z@quF}>~Y5hbKPD-W|%*{0quY0KC1`d6M)}h(HxFlzDLNM7(PzGdei#d|84<>6WnQBYj2I z@p7}TR@C3Eio-oU{lH%Q1%4C&%>-N<)>#D;e&CC4-dRn#Y&Y85SI)hoQII`VH4v0d zyp&PC?O`-Jz#HR$jKNl8~J7$Q%6t_#!B z(xUW{N7n1@bN#tP2jS#_9^wurCNtZe!E>-t9uX}<*13~Mw@un)GJZ=%^W2g;oARwC z2A+%Vo_8*>emHW7p{AOVU02iSM#;zX>DLz*wAh3j8h%}=qE(YAXzvRkI(-}-u?m$r z=!w@z5|N);!mNazK005Jh;4R#_f!78XPjB{MdaAiCytrf5^M9ku!eeuhZRuwn{*V2 zfb^B=G=lg1t0n6Ysxb93yZx8h7v4QQojI*5%ht{QpwL^%*8y=T6i_*ay)vLSH=12U zibK-&RpEKc5L@X6wSy7l_fSHUy&OgsS*hO0y3{Me2&^cR&fD7B22EjU66c`ElT%W9 zD;oLyc{wO4Xrw)CZ$Vd=Z1?Dd?P(w8Pzo=1=ya3S4xcuYf)@^n#=_mJB>FE|h5^P9 zd1S1H{2Yi@MvJz{5wc7{Y*jCF{`1=H{O_^<958Sj|H`6I!d`ks;pjeywN3+|Bp9${ zGtBqWlJ2{RxdzS5SFn6EGp?@(WJ7s@(lGGwrN_wD$ZY^i2QcHRG9MlZwLDph6WSPa zz;tZ(2;Zuj`90d0`?-n3oa|p$eFqs;#>7P6tzm*{IIr z6>tcp+;NW7#D{%sC&7BayTL*RG}P3wIB*GcI7yWYx>JhC*8$z5IEQQxoVp&sVq_i+ z^B^c@yZw*igd|Ti_%kg<@{so@L}n!?KEaDN7k~j0{0!tTqZqZ;1xU0TOG8FBqY~a$ zj~+kf7kx<1z_<+c6yl!H-cvQnsFBO>5bHLMgbLtzXNarF?`}Biy|!LJU~aD5x=3cUJ276_VqM9lUx>Q5b!);QsipQ5fs&E3QQqMuUG;|4?8F4CbR%xA^ZVzM5=K1JbIc_6oQnA2aCG4?+=@k#sf;s4o}a; zOQSDU)XW5fOCoTj;z_#`RBg{b3eZj>o`>R7w>`?;2~T_gg423lt_3j*0o{L`|f4 z>(DT=%>*Rs_KnUXnEy=93uw%Mj^%q}U`soG`e(x_Q!`e_pKFka4}Or!bYF4~(?^L> z`|p|-*`~f;X5{tpl=-LA=ZUtCMm63Qk?-Svaa~F=hrWfA%j^jdUe^_&5j_)I|8T10 zwd;x=Y;Po&boXmiuJzGpH$r}*gmGI~(!}IL)$D6ktj`;nW{wGqdh4ex{_V_uDL?)* z*;0>(*Qxi`!>{MYhu#(x_S@%+Or@>=>b&U<%Z4@k{|(7>kh!k|6TR`*Y{*(9&K_9Y zsLx1K@rgfG%XZB`+J0kQL&N09+z6f8cM9O8pgeDR!@LN26K1BMX z3BrvW#xVh?nR*4{QzlM8@+XqXxm9KyVi$zw^@F=_MWgcrvp-*;$hijB$~obAmoYqt z^zQr8Pb>G}Yc=c#dz$ogPqGq`4EFBlvR~9o1)H5N^WVxja)tBCwCWBTf94edBB$W7 z_0h(A={zf+-{p#{KP?OjI+NqpI;g^ScfgAw=Bmt0*uz7g-Dp`Q=5{5XF_qclrCi24 zU%ojlR?DJk)}h&=y=o>84_)eGHW>YIWMv=$K$lS!qHg_()=qiq#kr5=x- zK0S2cz&*GqKHhcg9K1tFBpqeR!4t%ZximY}r|(KiPLbsz@FkbB??B@694FXt<+Yip zvc;iBeu+v0Mq@`R^|L^kxCaYrUj|*r{bkvs(g-MIDU4T-z!k1KMMC^IiR{m%ra?+A|db!ETQ0~S2Ie50j2+1+8h{8JEfPVrN-P7e#&J0b$JHNO>;9*wtO z3F2t3{(Cu8fPq`z_Aq&IE=@=(aDE%T9jmLNK?nhAU5c`g?9kd=B$IF0*ZPz1i9j?5 z{`mpi*orFKnt?8m^`C*f>W@;ttIMx4EPXY#X;o7*q_f%+Q1KCw{V~8?FPTk53jWxi;-5$BSRm~)RsDj1R{ap$$**yFC$)2CDJM5AvzW{X(ZXjS|zk#Sl#el zHIY#&T*L3)8C+1ba%6}hNiM>7^F=D^Lt-yBtuI(^e$63q?9r5b^NCPPpKq}ODMgD+ z8Vx>1Cri7xWE?HprjXN3_lJj0My~%-m0@chrK+DgO>h3rC8Jq^-@P;D!umzW#05&z zdZfwyvGgrPGXQlbBMZi~eB?#92b>|IcSxkLuu#Wd37Hx2*@&31ujUo<4c7^RKywRq zMM6S?T9GXDo)~}e7%){|E-C88c_WzEF9)9KriIhUvkgCZKH1B3BXce(cY%W%T8b6&*Nu z@YB$DyqxEiCb(y*@RHs&5uLXuXWysj`i6Uq)rmQjOtJ=1d+e$`o&5g7DJG(i#22<0 z#J(qjG=(0V$gUhbE@H%gI$z_(aBEPl2RhgvQByqf@iBy}fW1X5w{`90`2Do8Q&MWr z8&6uK(=WZHl^~dR6;rD$MNepVwg|Fwf=@2hlu|G12XH`A-`Kqut2)2kZ- zZ{C(h+v>!qk@aeu%?4^>w{OgX>q=EwnFpM@{17YD(9=x#R#0ugPa<&_18F{ByS5)rK!<#wBNB zyeq4!xT{vhW_Pj6L#xVUPOeC4`9IWsJ3nbgF;|V-R2*-g+F`+>tM72ukf6}E_hJ$q zn|}f1DB}N(WS(UmZ_ji7K_Xpj{(9^>9)e?~ ziIcob8H;tkc~@0-zaciWx@l|;k!IJ^g2OMa1c{0!kaX7Qc42EgQe~fT(?GwoxpQtKyn|C zUB@h9{c-SwQUlbwc(yW-BAl@NdArVP`9k7_{p2bHIUl84jylR7C{PD6p$dSJps3GT ze}Dhym<6e0LpJDv2I~ZJj`3gnP}|@U`{!az%wpGMDmzCMAu(8QvvcCuVEte63jDM2 z!bFazUx+?a@TXpZWNR`_{JR=F8_2|CsGl@->c{C0+Qfk?c5oSTgx=Z-zW@gv2ZM<0 zAu*q{e*z~s9EY6f|Du}|C+Eioyv-9KS@qRLu6zMm8JS5i)inv0%HQ7iaH8HcocQzS zO@0S7gAlG4H)bIBG0ca4Y9m1VSisWS?`$6dgeSc*KoTH5uMyby;kXA*p@Oi4hb9YP z8XNodNgMUfb+S#T$y5s6r7_1s{25}A$Z8>3Q>ityR8$$sbkk87D^2)WN`$ZuDZZfSW4Vs)x}}-wZ?3-Rv$>!fyq$JTsXZq zIBb+8Zam)Kq&G)f`+JUER&bZpQozDvbt_di$E!s3rWy_%D@XVIak==8*}H0)sF!M) z7K&?By!W;i%U0ZGQ>w5@hqEL(Sf>C(N73J?e$9;DjUh%EkxPtgiD+iPn;^g{_} z=K1JR7fLZexOXu;t(X}s2YegtnGJAG3q@JgKQ}8thADiRksO}n^Jl>0AZpMM*(%4* z<}XmM!$BcU*x!uJjB z(D0FjKjhW@grzrtFo3yZj_tLzV?GO>(vuNbV$~sPJG_;;wfD!psN3JTIj#aXxE z82r_qFN_La$q`1}U#>I*mmf1NBCsvTzn-PdYyXk%xhav$CNeg@N)zegtSvfy zQ0G@69OpXn&2rBK9?|fDcgqx*bZP*)6PhKhdx=e8M_gKiY%!LuaRCCCP;mLC^i|uq1d}=r$fm z;G0TSk}P;1J)Gd}^ypz@I~SAFZ~T|7V&Q2 z$-B2B7SEoC)hx$wVgidz?P+fju>& zf})S6Ld0HZF&WPs{r2mh4)=eVM-EqO?#F~(Z9V#ZYHMuV?uhdFwO*xJQ_-eoF+_mp zZl&`fI%O5FM{~0!^8tc_r0kOK7f@DF{3QXc-4W1N zg;eg>_lyG?X(u{{kM7%d`z+x>L;86StlvSGPo5fNKLdpsBa5^(If*w!=;j`<{lJ#; zEZ58Jyu?LU5e#bR2eb4-8GvEXZqUQv<~=-h4h~=zdK{>9z(}7!D=%RDbzkstgAIvV z*@sbb^`Y1V8QK&4lHl+GA(CQg`|CrfAYn%OeCz!1o!7m9QoIA>7okqBKq?z%=5-J~ z6F4yWftzmwUsRI90+4d-@2LgU^S@2YsWDaIcDPja>=y=V0nsyQhx-|%;z}(4jSQaj z=w%|q-^R+C_OOb4^9ZQPaDJ=-#5n3G4iEsoPsl&zq}W$hf%%73h@L7WA&0J__`~5+ z&);87d7mrFBv^6Va4cr-GW>Htcyno>?A0=DxxB2r)kc6#2%{z2hFvsw=;FFcn_f>< zF1GmQnI74lC5xn{H}Vu6uYzBwiau+@W#@BrnS z>z=(&t`OStd44f_qTS!mIXj=^q6=4kC-YFGv}=A@w`k|IolU_lH zOr(*;1!R(kbVd5qsoST?;$F(St|N{&U9znJ&Ee+B8IL``qdQ_QEYNM*BqZub28J`v zhZi$zCK-)7Cl^;3%PKdrh5#Q}BW`hM(gPw`K3ih&LNe*jLb~kag>$a(hE+Q{=8n~d zfpe1yCSZP42sM~l63aE!u3(`9DYsV_^DF2|kRI=w^8J%vC$C-Ey4TcxZcMAL^ygUb zK&kRA51z=om1PlEnpvKuZJc&FRhSmEp>uWl$B|(RS__W>4-bzlkZisX&yEZfTu>ra zppaaizy4C+?K6^95$8XgzzH3!`ROXYpfzRkEs;(my?@H=i2p$}90A?Rp$q=R2jglI zfdS|G;qjsGUk#orDY>Siq5^@@8a@b$96Nw)yg)vSVC#$BkNc7ViJOX+R#^1i`6MDK z3CdqzNIl2VCLm>x&3ZNm+<|j_mEqK0f@f)Qk@NEFpL>aiAlkkFXh%x0_wJ2iUQL(@ z;2Z}J99Y;oj+$Ez&14(b(M9vI>;T)&#ka^ds=F6tw`-ojg!=nkuxxmK*Y-VX}3Qo59N=R6Tw%PZC;Oc${ea-VU4`-j{D-xb@XAU z`!<%O`_>WUI{HY5C^937Kyp3j1CQDM`G<8$5H@dhG~^C^bX@e2XRC^uVYAh2d=&-K zrJu;#v(0=$`Mnm;FG^Q(=q_mNj$n6KbV^P9K{R_6EZOJ^A7fNkyq&${eR#-}vlFc2 z5_jI1muMQH?2q$SB3l#P_M^os?ie6O$a?huU05Jhr63;k^j@sVfm(p{8;v>khk1TU zSIWA-%VV!0wvklK(!N`MmbpM5V9)%2?~d79PFCue)Epx&K%t zh(m1sW~SB9mm*(CH9%8R@!Rsx#uLjug$?)Tg=m$HPcn<1f9>i+=XVmf6#K z_`=jI@q1flh+N&~tNe_sAN!FP0WJp04w~91oP>y@;MF$o5w%U!S#n&iYHkijtWp7B zaR?1UGxWh^Az{Hy-ZFrh&2OIJ)(D?eYMjXLV?wKs<2# zw!V@;Z<*=FA0KkpjZb^Mwkh&Dlb{QViML%Qh-(^mR zUuM_w1zV}C*+Cqw3VD5P`%$JFCT9-pitO0NOtU}kn789yh0|U2LBtI0o8!+WXxH*c zj!y`Srh0mwP#8L2t|&0N=zcorq2s*t-($IUJ5;ytKgjBDQR2O2d_gnU`Nw2&bB)%r zM%3BmGK0IjYR~38B01>C*=|{2+7}Fez72gx)(^IW4mWY=iyo;3%a2SDAQMke7I8YA zIPo0G$w}SW>FGX@8wsal`}R@v^aN?2xjYfs(X_O8(Iw@E&5?|`1uYdhlTBRH=!(2p zNo81aN;O{De3_qld-s#-(OYXvm-B1Xzf96=|ClV?x@m3ksmkCSNyp)V^ae-AyB7On z)L`*^k}s@F-QTRX>$lPT_B>fkuvaNC|A&g|k$vsfO`Ax-0I7M+{Cn-A92^f(SpJkd zQm7?p_If3Og`2)t*2b2xTW z2^zdTD;3@ShFdq-j$vjG%cq0R8ia900A1>nf3xrZXY1pCCnY&(jiwBuq zA!}MjlORJs4dv2DyJH%#n#&7c8m}LmX1r)-M)I#pCSBVARX=)U)!FH_xD=74qJ)un z$Ph3a+Y-V1Nhwii+sGT2}YL_t|>;vY<~%W)aKbI;@ZtknLY#PiA>-(DP& zvcHGiOrh+F(g6o6&86Bt3vS&4W7~h|=qQSYvTtWW@$}Qqu>Y;a>OOZZzkhM@z*OzG zSC=ZKA5A8Fzwc!`-?i1Bf3lh8i`(J1H!h}@@m}K>eH=`uiG^xsC@>Pf(M$JXn1;6! z>^i`)8Xv#AQTH~t#T|>&cpkl6AXi@>{2HxZ29WbCIz84RD$8Ig%44b|$b|<41R8v) zv5^kFue+tLbP-h+RMjUhj+d1v@uAZ+BYe0#p6*jFI=?^`6k0sb!Y5yoY)-Xva zA%ooD7caamrUle?zeS6%gH6jvZhM~j#He;MRK;arH_IokMR7OBm|GU_f=sT1>u_z) z<{d;zh~n2d`NR&^qWME3&;JA9Ev757{|TkJG0YT!3q1^69`dl$kYQ0*^1{9<$M{P) zr~;@!J_F4n9TmWMgl@wsRkG>vkN3jq#{b?TJ5#;DwW;-G{WJ&{%EAU4aD6X8+9o|L z>}z#am|n!oRXK%KtQ(rWU4F~7<|v-GJ=x~Kntm1;sRRfW(u~TPaPaE#c~zF1vb1;R zr?U>U3ba1)@jo!@(Rlq#`yo!23*QDggEOvg-bpa*-cVchAilOFxORBIJQ=|?#%b@$ za-6C>{jT1E@6Wy47ud@!XhileHxjGov1b@; zj;~{~f=pR%LIK14@gi1TSGOVAgvLLUu4}jQcQVZSZz4z&Ru9dQvD+;gX#-5(7^IZk{Q^>kc z;k1lk`n(U%8>{{<#Dn?$H=g6=4XV}%=6$66=jDv^io(#?(=&hkxYM{{VMoE`X*#j< zA}h}?mQ+5?t0r^}5%}}cjpJ9U6K}7=L-F};INvz$QTjgy0|LK49AGSTpjjX!`z}P>)m^T-B^2oV z;6REG!}L}I-0H6@8R88-MD0tpE4k0SS%}cHOLvWTX+<=B8m@okcoX6{mM^PZHu5h1 z?^pNChr?G`eZ(@?plMV5``@=A*P-%ali2ZHS~P2El~*HgKx}L*Y5myY*s~Q?V{g&x z!$H|EONWn{Ne|HcOP)s#xHy@=WP^JInU}D3-@Oh@uZQFa%uy$g^!$BKa-X(VhaAX% zA8GNkQ~zf@9~wXR?%umc>H`}yVEP0v_+D+LKuLNo)%(D~lJ${=?}Jb;7`nw=p9*uK zFmDS^6~X{Z_-p>wR$@=XB#v|1+TjqfB24aDm^JHR z%PYGPU)rQOK9;d6Z(DuN59KRvug%)mP@`l`LRuwv7PIRrK=Ir}MYW%ct0IkXqPt_s z_Cq@Qqum|}8aIaTlC|MU{Z$)`GpX%QbT!ZN-}qwr_m4@kzRS!=G}_K0l8?rTm05yh z_p6tY=q18`K#vW`*i#E*G$V)iv2`2h%4{U%1y&l79JHd(ik>RPjrABWS{#+k4>%S~ zbOjF^@!AZS#wJwU+qh4m$;dV}^8Wn#R=YIb;;S1jj+Wp4!m>u;tg&){hgyfnzfURB zX!7=Fc< z(Ft^?y}ZO~J||};O+FB7Wl{Ii<%d-i5Ph*q?#<85UBKX8bW{wR3)HB5L)R2Va&P7s z{nUGHUWY$3EL4CzO$d}Y_>Y0?vl7+CEE%q4%^0RfzbcrECYUm)7;^o$Kh5ztbZvS6 zac->#-OKxxM56Yr{sr<9|DUhRU01fTI&BRVqdKDJ5izwN88JD(hVApKAA9h+>CStD zn!=U`Z-f8!}6_la6UM+*H zl|iLeE@gXWd^y&?PUYWJb@aUSk&=e2uC56@@9&~&s~oZ3jvaO1>YwBRE({>Wyr?7~ z3-)wDR*&+b^Y z$#vL(xO2bsD?xX^ul92v`FAz6PS=!@#MYOeyjrFkZjq?e|Nj-ttht8z`tAfNL50$Y zjD@4L=Ry_#JrJ#mRI`s&@6&Ck$==Ji3cq_U99CH>t`5moC#zbv`71B)oe$YUf4H}8 z->naIv-Ct|#cB32RU4e@elCwg`3J7SS&y_J`0$gRyjcd~*1m#=eecVuWM4F19iRD6 zFsym5c%kR??suaE(*^RnCK)eE~&oLhllanaHfyv0dIVb zb`oY;lsG3rGL_6cUQ{c{tTsj&RMh&#Mx;il6gi;YxeFlh|9%C#s;r?V+GH=^7!;xE z5Lr+A)MKqQbm6#}>w9_j8n-ch{_XL;^K7=zzmK3I|6Jo8qyCbUMsNOe%a79&^rtXH zm%Iq}Lx)ZtukCz47Sn4pK>I%22yJ(nLkJ3V3={mKw@-|MB1H)oaryimQKr7488&gXSGA^5sHh_voe@yG5|2N2bh_ERTJ{n=4 zcO?y87p7=JIt1nb-hn?^G@6?UVDctmXTfseIY2B9Fu+MuD3FgfQ&H6+Nz8^dO@t(| z-2WHf9s+361S#x`h0%Ovq{GiJ9tU$R=;`UvmD>blT>;wRCNxq5LqnZq^C&-W5vRFq zBqB$Va+O;LwIQA7ozWc8_Iif z#_;JGnFKs7&hKJd6pneEtB&$pzWi)LyYA6V)m=9f@$*jU8d!u_Vmdnc7-u?oTq;vl zN-lg3Pp2oiwJ(E;9!<8ZF%0F#9=I|jB80pI{5gcC%r}s-&|gtT|3F`THcZSZ6RzL3 ztu|0#rhwNo8f1p8C8Q8?o+AKAVk+7~Fn>{c1u{&~0s|g0nn}PCu#atd7 zZgptTp@}3OW>(1+$aO#-{gr3nbtHK)@R-7oL#x1X;^r6wrR^B!jhZsBCJ)Pty59{r zEwzKVRoTlXIP%QOE06v6y!sD5*~cf$Z22h^OX11M0M@}nf^O$tHGLR7j(c|4%b<}| z*Ta}I=*9TyO0nyH=|}-lMts9kc5&qB4tQn6f+{ldo!6-ZQ0H&0fq|}{`^xn=^|`m9 zU64k1K&EYC5s-x*mXB#mW}FYJ_z>~YfN+7jVfu$zdJ?YMeyppz`y~i&@PILJxd{OI z4=8A_@SQy%Shh1#UhInw6xj;`+Cz4(e&;7?+J!IcK ziDSR!)J{u@f)73fl!!*E@o7` z5s?%V(}ohd*4x-J6Ucka0ZREz=_74_wN<_b*WcM2`(|fM0J)!pF3n_Hv_tU6%*6f_ zgNq#BHa};-ba-U$X!%A?{i0zInG{iT)ng4?R@#)*Ox7##^dAI~b_VP~_qH5`n zRXe7U535|?bj~Pnv(aoqXz|iam_YaLFXlqSPyn~+YIMjR9vQt)oGQ=f)c-6A!h;-O z^+o_OsMyRDIReP`5+(?o3gjO!1EWh=a{2eu&c;{L3hNsF=WC$&*3xtDw{tw!vy0_0 zi|!#7?E@^jJRuEFl&~`=!!onu{0(NmdGRYE9pjbIx<# zPp*7h|7-SAeRNdpj#j7Dt9QDao`3PJ@6I6KLOb*^8-R584h#&0U)?YVCxWb{4Ojdx z7JBaZu+QS&aZ&3t2f6d zBn$&n%hAp!U_7jo2eT8qx$$dci~^5R1Hfe8sJl_>1Vp$9Sbh}-s)&zpC(b)MkaM$D z9R@~^p{YA^gtBv|CgE`^QXTD;u)Q0{sD*f`{@24@ChV{nz)5;l91kC5a+)<1Ks<3N9pLm+%zTk&N{r(!+gU58xE#-SU4v8PcJGW%^U%@~3#U&(EHa0f?y!gMK z-%ehMPjT_<1a3{J)Yo~}Kf1}7lYGdVTv|_hHDq4Z3H7Mw$6PG%uX{u>09$SN4+tiQ z#UuE4QA$`2Yj^LhrI%hF&U>jQlYsDFq7!ezWpd^6Otaf;y8}KyJGo~aV=sEBS!Oy7 z^)xhh3l5BUzPa}JjRT)_mBSqr=4N;)+_WIHQP%9EnSOVI)hv85OfJCSio6ZQQsq83i0j;?KpzQi|stf7LIp*+k)% z*?5~+`jLIpWvZte+5>~>_mMNo9cCxRyrw#rv`DJk7vyC(Ztz0xA_o&&s z8Zq$p+Bhf1iiS()Y7EEB!Bq!cTM*ivP+eAd>{iJ-6CkK+svz<~co-VC(VBnMWwN%e;A+^W|C>(LNG=A;yYWy|QOepHnD5^%lPv?Brfa zh`tzoT87Hz*B*a`j%ANI%1E%U?+dWm7+Ka)E_{8K5^B}(qBvbTd}+$*rR1`!TKYOM z4MY-xl230P5E|s~PF1`714p_U$hy`xmBn_p$b|nwCo!VcnihVqv}AW6-&y|_*M+ig zkk6?rgiO7|x;fjlwxoUE%JQ+@{;@@CmTm>{%gV?OB}_{u&&G&vRa%diD}z*LGYw4> zOwV4Te=-D(i^HE6ZLnQNJMj{MlaaLCKx%oMp?>Xu-MX*WV~v{J_Sx^9&Gl+=&w05- zFFqEFn&?DovR+JuA$Ith>KVn)Vpt%O0bUo&C1Y&!E=wm3M&(?`G@z-?jC=E4m?Czb z;%?2giUGaviO(8JF4NLVkaQnR5 zXhwSAJcLo`(|;pT#Jz`uk==e8t*^W7!pyuO&x_x1@!qHFe4=Y9`}V#J6p31Ec*(w&!EiDCG)x*5ffX;xWeSE7ITC)KVs2yYmVEarWvs zCx5T=KHGVtj@8xw*ZNEltuDn%qZ2wAi z?tY8bg_pLCc?1J*nA1_@DMf21O&{e4LspHMij1$41mflW?MIg{c@?r>`C zXj>E)O&CV~3b=3Y-xlD4B3fhp{TzCF3%ZwE!J&u1w8d@4D9SA!CwXfj>wi5*%isyl zK&z=E`nKCCw*|fpUA0|H$u&b+^Jx$yP<*3oQt4cFq*&T*8QChY#jk7wpV5`UpI(U07hP&VYblvJNBjxs8 z57qv)KeIJ-8;$hb(_#bJmWq8);gRs|f>B~`h zX#0{t5qgOdN%X|Csj6@h@&wK_ORX@dCs%LyrrUm;H#Shdmwpv(tJsZf+u&t+qB}O#cR3ZLJZF*;J zH20Fr(6Ge-BNO?CIU%5Ff>Qaz$+H2cix`ca?t6JD_&k1`uATQ1On*)xp{6@Y%%l_f zP$9aQ$9~@_1D`uk@F=mS9h|MQ_- zLvXP@C-8Zofw2V6yOjs`?++GZ{L_PAzdm3YDDPMsFo*_0sCsl7>7^PPVW1#&mt6D# zV>}7ZatOUf`!Uk9R`6Ea_d7|H-t{#jQqVC7m0?a?&l{UHl$rti1+H?Q(6*J^hHl5t zmg*9}`USm?{&jt?@uSGaV^{T})>hL-0p9&TPe4tH1mLpI3@m2UQ+H}*GY4*>Y!=FD zNx^I6l91>aLKamOHv4q-+FI6ViUP1zV<8G>WU4uf`N3)NuS zA9}*-n&up`z)2>rPcLzDF|h=Y9qijXNaPne zTR?Ry6e5PUQmfm=cPpgic~~bFl6+gp*A4#s8|d{m#%0z5rOMd&@% zHRWbUcX>6;EThz*XJLuxV+IcoS0{389i>F14VN}BxZ) z*FHPveyeHs*nEy6QLWjFiROxOSbaR^9R->Q{Jf$Y{OWcPhsbF&Xy#nCaYY|Ts0`_T zGN9`gW<3lr13VHOzQR~s- zi$`I2(x4awz)BcN?RQyI?owr#)i9%k84=KnL_^La@|&7+n~ziJ26u^;*muSElDAZz zzIU@5YWt1TNiXEo)MD&F~ROSs=FCGVdf7Un9prK0iE zrJ@cA`>`#^ze)Z}%mMO_%I^&|r6vR1{=p1bM=Y*t_4;@JES&9t9-wt6Gjn*18!iVC zH4O-e(q7l`JAY@#Fgk0XvH2i7J0|65hVov!3v(5g%mIN~v4Fm?b8E_1@D9{wqu>sR z_!EzUL1dbla%%KtVBYOy^|)8|=`Hcs4(QcACZ;6~_9)9MG**?QAD=BdwRLnlR`-{% zRG-4L>^!|Q*8X>WM(QjQo(_Khq$cXRUy6b4L!f^oM?eL82z!X4e+7Gkqy+cKB{^Nz z$jM{92Y@Czxi}`hc8Hctcd2Mj_TB6^DJyjy86DOM;u@x&sGxeREPv6!wJOT& zCc}x9rHoO>w2Du$Y#l{-$QBN?PVZdKaRe-Gp${_fPsmRwXcy;Cb7BZmW>^ge7J03aXJ>zQb_0GehCR(IE^#` zskL#Xp-^)3U199HdGqEkwuNBrAU0l)AI2!ZWY|ww*rmgV?MrQKZ5^GT0vv=AK;Nwy z`i|Yk6|r&#ir;)kRuH z#uQaInIU3r2IA!KeL_r3O*J5QV9{dTT5Bq2Q?YRyR}*T!TYQCV45CJUX&1*m;z#yUyGke1F08YEv(7Y|)lRrRm7!8}s) z4vQ>EwEHn;?fZxwiisR&w?Bh*>I-{fpIDnxIORBR6nRlIjXz;E{qrKy-Q_vtOD1+o zTF#+C=Gt)wuc%kT%KwH!P*dM?xr1?s6u3D;v~}2sbbilZ-XTzawLw%vm^@xFnGS$EFeOianpakVn@ zXlSH`!*4M1x7)qDcmJR@Zum|Y1iED9Nss&YFGujm!`R$Ljtlyh74s<%TFnW}Ge8Oo z!zeyXH8=}NxJb>~pBAW1Xk6ZJq6~|PiS_>e4T=~UomRf)*%(zvieIS}pAA1d>+S8` z2#b(6*ams|`N=>qNH7C3ClZ}Zg3H$A)KoxnaxyvvI~f=fz`i}g&MpPEKnz#h@D z^^A%Oz$EN%=c*88Vm+MquDsXOT0P2oSEkL2 zp3-(XpXTV~1iQf>jH#j-XZhu^2VbdWKHd|YoV4*vlWOJW>Arzq=I8zN{!c@^XFO{S zrThr8n4p+x0-$>Ke46Y^Q;tRF$Y-mwekEUsK^g!N4dWcysc+dmY)aPE?t*XHTQG}W_>M^r9x$Ga{{uS2nXM&ZmE>o-LJ z+QIy=z7R@{6v`R4f6VU=0pd;rnrbBC4lM>bi5A6bO~ffDZCKRXk9DL%)^7$y(O-;g z_ygt+6U&y>_&om&*imv~BIo%iiS|KGr9MF0AVDU9-A^LE$TA16+fsHX=rpMRy*Y0` zJvKQPr7`IqVmW%K>hH(nHt%NiM4}msQ@_R}%O+2BM>|^$Q>Th$pKVs_w&6k%R|Cga zznE#fui|_D{~uRZ0*>X{bv0<9(nQ9jQc6mw4526@WS&XMtjL_9r&LNsk|ATELguNE zv4n&uLuN(1k(41*_}ASz-*?XUyROr54)MOvb3c3Uwf5R;1DpOHzz|L=Tqe)<3t-LF znho!Jr2&rM+7w{yF|;o(?$4{*#63e^CmJj4T(7L~EMPW$Gmum@jSp89tToOb^Nw%v zc|GQqrB~ne4t)(izjxSGxL;3AA!B;#+quGw9>;ygLQ1mFJd>UKCw7WSHqtEV=stcS zQbhfe`A$|#dGYS18sQ>3Y)N+d1O)_i_lit4!*XhP(WK4tKd(bq80HEPou4>&?wp+b zc|Pc&XW>aVfT_89HM-xoZZQUj<}w#=qw8g+AG9k=H;5>&2@Vf&nelxtU|V}J&hhZj zB^BX#o8vUQR)?Plrrf6!WM9h-IG;GakKe%H$wH5`1$6YvSX1HOG=niNKCrKqcToQ0 z?Z!%kb5MACVYQ)#c_~MSr@sdwu~CEj$(KK)t$!+%fBxuQgtPDz<{^qfd@%qWZ?S9u z4J+i_I;4T%$Vl5`yK%k=r-={zZ_K$}#W2#!H-A`*k`A&u9Rr_1cn}icC>Ph$`;kKV zlZ3J?2_-&GgUL~}mHqrL9ejc^lYk_JAfcWU#}6c{BRVUk=IOCSMrDn-`kuE{^wy4Q zNo=%m9f;oiWvnYas$n#mWyED%P@J8PPOr*pM;5}4{Yuo5+EzVsX?3fp*tGHg&+|3>(k{~BPm3x7Wi}8Xg(joc9pjF}1B?ALibc(OS z;clzh`p2O6Q39XbxRKhp)3_iPb3JJQBTupUD<4UJMbXkqUrc;rs#hDcnvGyDVAUc9 zK4HiH{o26g`Di?WtqBea+DdAE4-fLgaL=(^EFAwl_4uAAkLgZgXmYzqLTp6ma0lQA zGYiWTyk+t;0MZfZHS1%kqhG#$O@xj<(f-rRohOS5z!;{W#qt#YnHRoq?_MfElhxHH7mGL`S$H`bQ+-G55Tc{guU`QxWpgGkwSggZ+*@HvxKNS z;PfS`iVca_?w%A7u-Yis{xHVP$N|--^uzJPdItt}0y~oKErPN(V!meaMXwIbo&a4$ zV^ZRF5u*!w2_H}(Ieji$e$B^c07VQMOzPPFiEF9};UlQY%I0Pr9D|)2Pi`agJ;o_X z!eb^^vGkHB_=^i+seng`IN9RxJAaaaw9Zcn38@of3O~2JR2awY=T5>qIF2D%O*{zW zFt}}LCji&gkZhif0~CkmLbQzKI(B1Z57h-M6Id@QbILM$Sl+OBz%sU*ROws z5I6vGLmb9#v9Yo1IXL+5y>S}dYmNH35n~$|WIck3$=xmDvVq9sh}hCrcv4!ih#LN6 zPw;@^#wMXke5#-G6mKOS)w!7mwwI$pjX5DF(4Y~N{7$U$BU@+Sc9ei5O1ek>@BWvv zqqARf@696~SsxgaD!7ih8)6|fgiJ~Rc8-*FDwqr!%o+2~?p4Qo9|sJl0Rz_&HWZ!` z8U$2Z@Bj0}e0RanMIFGB2xtOjEZ~JZjhuYG>Cv0(>oLtCg1i|QN0;k|xilN_4{{ZU zHok{72bjJ~Tk-UK{gK!s&gyVv+G4MNqj67xk&EpE>RbEviq84LH|M8&>lACG^Au!l zoa^s3w!Up^d=+D{X&y@?n=$X1jfWg-#&yu}d5`;Lwm)L1^8*e&9&1fJ=Z)~HAjf5u z(h7OdAEb|gbx3g}BVrO>9NWPC=jP`%&?9SjqRatVn;fxn8;|`=eIwzM;6L0jXx5^z zJ`3BKCXHf9vz*EZ^Bv9gD+JBz+@20x*o5$!Tj-<7f6D_ z%(|4jn*{xN(c>j(!sE=hMyaCh$^L)L*T53LFI_sA7$5x}Q2-tz zfBw$z*C3PDZC7c)gOn0#?5==YBqIL)ECQi2CeF1nr{w3quzM9UuM84?Gm1Jtf6Dvd zLp=Ayh_rq$-J!LQs{_V5d>ZBC`7V7gC=nAE)4s>#8GnI?WBl~ccZP)bir;ttZd!rT z8CW9Hy&O|YUp}4hKl%|+NE@i=Rc*27R3=$wiU-UR54xhFqQl3|!1V|oc z{6UgoT4s1<3AIuk{1=yd6In5c%Px8*4Y=zozF2T}jjqe<^75y!o)h=@mE7S0hg(Y= z8*;*Ag>V6EVD31LyXibNVs`zTRSgM_;KK;lH8MV4I5pUf^WxAN*5ZsQo)n`O+8Eeq z#IwYyzQi^|cm3M6;H0SSHki$K$4w;XA_@C%#X4tDF@?h~2TKML($mv9hbQcS=t+RaCSEn;58oE^CSfM~Rf8)1XK_}wgdsm(_6T7sD{N}+H372oG z@N1I&Rp|CJ7T@xi6tAF)V2B%zOw|`qxZvSKgUmC&jna2!#=gdZgV7T(3wcyhQt~1{ zC=cECod(a6YlyY~TbUhqf6OjNqe$M@p@*!SZkWbiTEuQJhgEdkj%JH4pl4Vyo9%5wi zzl|a~(N+{}jqq}eGZhVj2@R%SHzN!SP)7L;G|@ljcfA{|o6}%q@DOAQ4TazvwG(%; z+HpN$g!>c(9GofWT0|h?MHBnwCnKB6lMq3GJR#|ujf<=Mznj zt1*ht6zQ`irScjzf9xu5EYOG;Q@OIe;hB<`yqxUDHC$XN*C@sf)^Kow$m&70xnpXS z7wQb6hMq>aA@PZjczA%ED?8H)Ms5M$qA3DZ+)lUh*C-TTpQzNPj4}FxmhoAu^ip6MW0Kz)fwG>VMY^a?|09LM{fC z6H)DunA725h#CRY5%2LeXsQNEoSqRC7an1KEVsbZng*NJLvUNNPmPQU_2ZJzmYyBE z*D(ku0_BLK0aJR2JXrk^2R9?}*=8E@X#+9@iTflHAPq#iNAE)nWuQQg0B9qb9*%!7 zfdH0>#}uVeb!PHfx`0#vEgCRt0LZO@l<5rf6(vW=o}Dq?sD)Pgfzy2oXpd&vL>PaStXjhIV{ccRFOaDGBe7IiQ9_=QBdDccEyg|V4O-OpJ zhR5OwhBu$W7+WZec68B591%QW0H#^vgk-QyhjOI>(a%uxUKFCwTR<-Rb;_q*^X`A- znC>YnK7KgmV0Zf9-eWE-UpkhGl}pePGMQ^c_#9;@m}QH@6O%LU6HyLMiXM;>>mG!D$h#uo9K zD2W5|9vBT*BbgyIP7+IfW01qF@htkR7n*NFq;5po#!Ed8MR{eg@CV>0M4fS3y)1cV zu;1oE((q054Bc<~p-5$na&EHc!bnH2NirM)@X}A9wf?5@ zWE_Q^t~$tk;~>%dt1htII*M!72r?iM73`qjfzHZcnLa9-i7vMg4i^K625+4TArc|{ z%T}nvbd78>bhBYf7T@=F5MF_2{QzV4hsWu#VOR*+h_CmxLCMSXSP)KLZ6 zIDbR)p$^{>>0U%_eO*>YgOQ!G#|)iL;1xJcG)u(<~OZqG9&TWI<4=`T+6G- zCn%^ICr9}Si8Ii(d#m@oXn(^PAAC;bxzv3NZjas;lU3tyzsL^cJKye{HNA@%f+OdU zfad^*E96hJ+Cc*=D99`vd9F~MI`@9;=Zi#*3<(jB0<-pT@V#{(eLbddI#SFe6Z zDt5_^@`(orw?P<(C$$mTgKNa*{Td9v$`hUk=4)5#)kadhHIpNPf*#?QS^@Oty9|Z% zu;E2F6jPM)eZf+zlWmaG0X0%e%HbmQ*lQI_+{}3Fc7bH^2gzbk*opRT1oy;HTXWwu z&WyZ#)d7qR93UOqJ~wFTl8uY;Q{jsOFF6$5;cz;I1~&+x7LriqDDg(?!;SzaxIR4+ zRn|gb1SX(bRe~EvBm4><>KI=*$|XU$RF5o$we3kl#HaY<#q4-{;Jzh9s)!Jzptr(X zCqEl|Il_jxdzUU*(&~8|Yz9B6fRM`&s~Uh0MSy5>@GKcv{BwZ*d?wn4RvScVu5A|x zlth_6MvJ@i6ge~>@3?`&0l|ya!kcw*uSIaQhQ%3-3GS0_2AF5kOeNX?0J(E7=I+XG zR6_`iieC5UXSY|qeti^JsR4obA%dP2{w|SJeqadq^7L##TT;LI#Bj>hE@M1&UC^bro?Q&_qG22u4I$d@bFX&ro8q4i0aA;jQmv zJA2Wr|LNWL0_Fk|&t+|Pe^+~VlPPgt@~m^3omiY{=_-`&a`Nd`XiSpVLFzCJ5cXQ8 z0pnQ0;0As$X%3NtC|%hxvx3waM#XsS{o7X9+0kJHhQdYK{1FxZ;VGBmrV+?$->@ruNw0#ywx~pB-piCBG$oju>oIvic7%8#d~jZ(rtXGO$XF+ zGZM;KCr(xzV>uMO1jt~@9uX4MI7tty_^Ge+ZxLzsVJd~Nc`-8!=_0r6+ouJ|Y^_rV z@HPHg@zezz0xgVKkbL@~9Vp`~rZfmN*2wDHhj!ZsxB*%?wga+&_sA0e1<%A5&%;Ey z+<*)i@c=x(phGjxY(pH;Nh6X@0xaPQ@%%QIsQn=l4v2&p zB@rJmzz(r~TzB}t9X8Jr`|uIRN(5UrXMvrclI4N%U7&(4+1A)D(vmk7rp;dM4^Nuu=S>|FGl;6&9n64d!6RAT=8wwPMQDtHKB zAxr!j))6H&OE}T&kMoR5uf*O{M5}X8gnN2=2(<$5Q_&CMkk)9U^wA&q290r zB(ko1c)9VsO|cxdm_LOu_+Fk0P-=i z3``|3y#m5m{sjSXaeXvqKsgnF=|cWbf+`Jq%qn!BFe$!48?T;heuJHz9x_+}obNAB zEIefV>B|@1J$uq{jNIIGqbyQZzz_ONW@jmFU_kNI{!5;|NZE$tRa#oP0e3#%TW2RN zc4x!>{tmYm1(%t;`CBXM=Qqo470{WIc|Gp-n8m$7oiX^=$a4vvO$rFe*!x&Ww#Hwe z+}&FXPoO)S4Lcb)?5X37i&bHsf{;15-NVoJteSd`N562SieF5;7&(L}Z#xFj(tipo z{r&Q64iP{`2te`bj};Ti=9$((uwGNo0;aJ2ZUC1pdiR;Rc&xiThPta6BLcVmy$u7y z!=J*byr0UG=_@9?UkS;D9T7h{ha3TC8NwE9;wE)M<6u+K9{9e}Kq_X5Qy}HYBEFjK zUq<61gOoydYAKQ_hsF#Tgdkj$4CrdxIrMz`6oWAbYh;kH^0|rPdBDMoePI^g1v3b( zsD(!z)k;`7YExm#sEydw7dni5tPZEy4ZE@W&e*$izA^y&%Z18 zyzCaa+m(++#K^W50%`W2+{3Rx%25oSjMfxS{Xu};=QQA^NB+)puUhhdD*1_M#56BI z_vz50njy+?=ws%oGhL6b9;*@kb*0soHRky*D(*)aU)&a+2RQ!$$nl{)UP#FaNSYFx z?!q5=A5rgu)p0H8OB3o(;G3aNXhJs)OU=g}^!A9I?obX7Np&3qA4D1%ji0k$9Cmll zC;R7+={UG}4UFBt^3v1Ovr$}Ix+-fQ?6^=5eMU(9@poW%Nh&ZZ@@xStxMb*pUehep zFJY-3;7(y?AC}sTZYF-ggT}&IY)XwU?)tI~V_B5t&KPKSF6+2T*lh&=R69{p*9C>v476=z=R}nb_Yyw#^(_lNoq!@8I>ij)Ck8 z+2))xhpqaYa7VZ!#2lX>_TKC9GWHtRf&owM0^dg{(yf3tT@TI=rWH2Senr92h|a}1iDBqu#da@~JrgdhX$8rmL&FoA-QVTcJuLy!1lRjs5%M;lsEfHlZ-3Y5U0+uA(h@dL#Y? zj`D3GiBwv}+-N}K-g`>yMrjYMnG@aKju)=s87TCMRe9Z4%zb~0oi5&ztYRUm)OehZ zmpJe6(3ZsTnBuWx>0;X@C5?cLwK2=r(U0|Ns`InM)R6IfC`hwDw>t&h7&g;HD~z}= zK?TFi&28s&n-kmLa%H@#aQ`>`am;5L{lfUf-hxacLCYXvTMU3o2F~2!ggOp)!vt!6 zZUAC^RJ45ovxrfE{KEl-baWTGFv#XitK&&BC9MI_!6}`YJAYtDO#`08$RN>)#$-JW zRIu|kWJtueRvGR5KONyN06_VpRKeG-$JKDSB60FnZKie=n5R=oj`!}}<8tULCXHbX z!&fzh!;B4)>szYFB98xD)W7~6Fwvg+P!zJC&_GcYjDm*r0LZ*~y!F4|#Yck{?@~dG z-j$_emV>p^d);QGQ#&v0J>QuqxSx`7`92#}Gi#&$Kv6*JvAvbD*y%#r_Kwp{30?g* zwpSLod(5XCRX*jb#?JaXgXNhUeBj@jZP_xi7BvP|#vF$K3?Zf<*GH!pGQbq%>iDP# zNb3QXlOQ7y>l}m_x)Fl4IHa|06&_sD7Y&iQpGnPp6HcOf9(a!U;-s2Q%%P%f#FK)X zcfy}9XYK$#NbL-2I|TYLSo6f9a)CT($F5yU#05cG7@rVc4+wquN8xBVGzMPSm9VPq z9Xiuk;-!ir0p#iytwi;sP!a`$2EvPUCQSq>&p$=@Q>a@xe|d=S-mOB!kHqdSV3uL$ zEsU34wZ*cx_gou5F zqXu)H(UWW62hO*5ZM}6);QsAnMKPydNW;jb{LR}&$%y5*F=Dk3N~5+uH$V)E5Rq}h zqyY_DuHV1k!^5MWR?r6fU`@0y#vwW-j5p?@{PEUJ9WMeJ_;ZTIf;yq0)uREHTy~V~ zTjqIO9SGi-dj}t1B@bIM_EM4xn4s4$)4+((CyTxyR~S8mx0=|26)6`Kq-HrlEd!DJ zkknjQPnQG@v4dmQY>EVEbVAITm^?(&>~p{<@7Jt%QXjx%I277efB2vQv8gI)y<%c4 zc!!1@&|$XzCVmAB+bEtmp@TJfP*{*s8`uQB;+?=e6?eFGY;BWkMqxAa1P}A|Gfc~t z)s<1c>(C`POX|UML|X4o08R<0a>9koZej!QLollCzdG87%fMZWU;6nh(3LIFqH`q%PT!ZkmZf3+GrtWMfO7^iN`DvIbR>W z3ZT^RIM6LrbP5To-^ay%qT84V=>jOaNbFVE3B-muOx-_^GWK4ON&uA|aGDyTDNKqI z5GV(M)5S5RvAb&#T_rc_*&M<|ew%&8B+Z9M3XL(q=djZQ5)0^je|tx^!!{DxOhwF0u)|)O>^=3Qq+lT!Nz{TUWF-#%A&$D|TV4!LhJT-D z>Za1#zwyY1upYiq7qr6HTtign_FwEDf)%5YFX1CRn4(k=dt+k(EY=kdHl*M zJA3BlXm|EI)YjBU_V;c3=`OXgtKzxXgLnP27cAEF_Z3L}GmekX9{Iz6roO9qF&zg- zgv>X&jUgc+J1ZbkWJtUhd!jLm^7;3-2T2#T$_#6!sItZ7GnEHM*{F55E5|(SbG=+6 zb59|7&(7!Gg&E8&9UUo6zk8FNXkQm7nssK}=nd5!r7bIOm{jW9os)zyoJsIZM=Gvd zxx#y0sI9g2X?vU?D;rx3z!BLuD+M6FkUmu3z~EH})xm|aLwJ}jfokst;?pNo`I%!b zkm%_R(9JKdJJ*`M9Lo(VD=PyG?NB>fw&(tQ@uLYl*sz9ASKWk$fb$9RiM#`OSZ&0B z1xgoQ#%m?2#w^4`b!ow(CEW<=*eY8JT)%ZoI^AT@HGz6L&$0*-}Sb+qS|Mt;aX zGMl04coS0%neX+&!oo-Ftq<2vAJ1BLTt%fEFl=k1;NHEZ2(WbskPB00Ko6Ukn2=Yt zY5R70Dy|Uosy;ZWEVN;tSJG-Fw39S~BU8AwoSTk3x3bJr3Ub z<`SW#&Fiba_4WB+#h|SH931007@g7sx6Oh_VnwqH&x!DAZtgosp2Q;in6fgn;po^` z4Id$*a;x=Y-7E9M;wN~q(`ZhJ)BbC7@%JYT$1fHaCw(7Xf7CZFF0Se)TDCF+k7)e< z4^IAL(6Bi+_G(OZ(A%Ir6(-c+o5CBu6z@qjt;;o2eZm{ImgN0-6`hk|dPh+}wW*p# zx@$&bXyy7kS^t~%3iB1)1*>zmD2=T&8wh;l;Nb8QCx>jbZ+WSRjh?p=U_Jpkl!0g5 z+RV6eWpGRqS;@EzG)5VUFWzQ!G?{%?uz7>=IUJ+fjW#n?hO8=*+TYW21tjUQ@5fa@ zXV5d8xp)%M7$P8gZ2V(F@CqEXw3usJDB?@vVU`JEI~a?ZNxu7A(Px zWuW^MzCOCr?8#?S46I<;OQ7bf=H}-mm#gi@zqPEx!Fi2aA)@~vFwk3ridTsNZOWdq z9aqH;a~Iyt93qx#ElmX=dcw&}MWkltfla0q4N;tEKY>M%qk^F6_y>!6$JkI~KJ zs{Tx`aWBq8sd=zDg4$=}1N!dkLt+s3?~ifP`scL6GEA`82FE&%#jEnwVP{0JBW|wt zv5xg;&8mVf1K_8&{oDOxXA^6cQl4(Ofyu8r1=bA9z+K~M0m9PI5&@PG)y4I1(6jd535*f#N_Ct z?E7g5=}y6*KG0ez`XC!(BEn~#rPrZDbh2T-Hxv_!=jRLr%T~}8%~HP%u*F3uMI4*4 zE1>5IK;duk4HKYnpuda&{>b>&Q_KgIw6$@-U!H~Y-J3V1C`GRU$={gsJOE>$deuSb zU1HF0yf1iaAsBYzs>;gBx=BiEBQpOhgf=XEk%|;|W&e{4)GZL9?p$rCxL; z<>lMn}vjoaDbD%{w#RW z_s)!e5-;_4`hC4oHf+b8IpdC>ZKVRa>}!7yA6+SQTRwY!;Rlb&lJ<{E_6H@lFJ+2* zX+PMqsQrf9C4+YxH;Im{5z1V=kdJY1wwPU>x9!6V!e%wL^%bwz&A&*0RAS@D>@!s> z#=%vsYR(0r=qs$Y6U2H=Jz4*2eCrvoIgqoTs*RGxF4;%=;5{>cAx7X5E`im=GP}-# zyM}g12UrERA~P#%pT3=q%`I}e_!qROv$0l=>STw7u|Y<18`8UD44d*iCU!&S*WKH@ z_4vu7e!7(^hj-~`9~0D7SqBL68dmhaT^DDRd)V=tay_SnAbCFX)t7SG&dW;=F6^GB zDb#tYeCq?PQ64XVRHhU;cb`7@>eZX9;H$ecAHQnXq;Q_E?{cZxF^!x-EV14Qd|H8S z<>+lQGqY2eo0$Yp!8@)WBw$>?iidB5ucq@@k@+_3-i1i4jk!MRiDgiRDSq2yV_4{}^?n*4i!4PDavr_2*OV$h#$dMO z65@?;klt1G#0FbdhETfc(* z@`pRVcx2JV*JIFT2x6if-R?VUxvKD+oF^wIP2Q~i`6?VZ>Jn;;hrkgR%E!jW{ybu5 zTQyT;?XOY`!?e(|VN6a=CW*sh*WSHr@M0>E#2Zs}lC%X%2Qi_36>Hn!ZKD2gu51Oz z{uO{uW)P+~jKlg2_Lrj6Js~+TQurp4jW^(lM_biBeSW=?jeD>czm)YZUT4w#y6s=c% z32GTnN9=tu%uW5&z!cr-Lx;<#HG1jRN74V+*~@xEe~ax3UL7w^E0t(HLfGe z&o%ASd7J4L`NQ>cb7My8jqZ=}Q?(v}tk=fADXkRWBDUUq)2IRA8G6}Ur|GYOl{k$j zQa>>z6&W-RutR((MvyeoMy$SIek&j`B9>P`VC9MEgVbHkIA}U>7}C%_dk8T`pmncn zt0XfM>a^hOBK+Mt7-K&UMQN!poz;tSD|75HDsy=_`eV*$lV}rA?84^3`nc<~J=ZXH zu^hb>`c%D0tnOHZ3=!LdM;A+~mI(=8oA(+X7`O?XV8grXV^x)+nTZp17zXazVK7S@6b7=&WkifkTg%FyV@xk3vZxT*tLJ3PjLK|7bbDF7$AV^(&kA27Im*wS4aBj*ID7CmF{p|%8)-kf|DglC6 zT+z|dv1a}Ht03;HE*`5uyD%Uq=qg^8&2M2RIF6-bJ%+CSO)5oPRJ0ot+XUL8E5TTB z9q0i3;U$P+UX~r14A^68+Ox2ker{^=Tvrj-uV24_F*=~4JBo1g=jHbG_C6YwLrufOD-J9R4N%DI2t+&`Z#qXWlR56?NAvavCe zAVKIW^myULY!`o0>$nZw)6lUMO-Rq@A*%Fi4qe>T)C5NYZqhm*)c)(|{k^e5aj}ok zy#yBLh+cPtDBC7(cfZ5?;uZD3R(vd3cJ}Fk!x00@g4{j!^GEsoC3CO#FnQZcjx2C+ zxW;eIb8LTcow=`pHTz1v^0FmriFPAV@oDjwqB4SgUZ|e$?e5-`=d)intfr=hY)Zqj zB3NT;*vu55l3gBgfU@%`D!Ldmq^C(@mO7uK!pg~D_Wftio=wqCzq1V*+nrWkM~*DU z7UffxmV6rWj~HFQx8Kb!LcJ^GJaPwPRo0wUo-@DB>UqR`jt@7zVD$XZ5uvKu+H!!W zPkntM7T6eM&WEWZIp<=G{z3}F;4kSpDcIbG($brn3Ei{jcfVgsN=mmUUFK}HX1og5 z$B!SE`G-YB^uM?W>tj)TGYYFC{hU&stayUgty}`p*b>Pq;@a)>|=;(+g4>4f*Xf0IM_7y8eig~}H zFaS0834Jl$;){})RJjEx8Ek_*d&a&E@ z@wk{@^XdN$|H$X=?@*V(S65{W<`p&`kq0lVg{*ot7d7wd`6cA;-OEJZ?|dhgjG~ae z#bgryKj-SN)1|nA94m%jW{e`mMv|^8=8rhr--)yiIe)lDXg6!y(>^Xf*RB=7F92flhK8KC{rrFrE<*|s1NPqjJbqL7J~d1#c!C^8dBT!xbNci` zT(3v*@iy%d&!{U;U^9e)J82Rcng^up*jQOj@HpB#IqeFXy%`Q9r=UL%2Ih=~MQHA! zK}ea7>7T?83=@AtTEfV|SJV^roG5K=7Ni3;fUhtK{yCA^`z+5;LnW;^qgjDma_Y>P zts3%&zzmn$uvIA?(afX`4)*lEq3&fi4`Iz8ZcKbrJDBcM$nMt7SnVK8)HhZ()-8}m zKN_E&o+hgTd!>+3>LKGE``*C;R0Z;E$;+27S95SMUXxkC$jAs1pcJVE8kQ^ga%&De zF4H}y90=AxUIe6C5DiuPZjlxsIg~N>l)e2SWR~u4-;#e8??HWufrsUf)qSy|yuHw4 z17sR9*v&^*0x|+ZdN~xvCN?%nE=Jd6ey0Ay!?$|vT5p8of{U~4xC!am*;oDiR>D~h zqQ^ygRP^S}u`iurdsZDOwhq`OuG{VO>CISzwdJeSPG)=?Cxy<$&yg?3w{G1Ey*wSl zBxZsyWn~E~VG#IzsCwd&W5<>uo&KC2x4|8F)zriShD{#Snn#DyZeYR%mb=9g>nVdyaC!z4myl4j<*OskY7n94Q zuD(`DS(*F-;92>m2M@k{kNBThov;;(6;V_-SD{F&G?oA^hfLhBN({;ZQ3_TNm~7yg znWGa#ivs>>viv!>gm5DWA&7kQ5=^CHyCY)YKOgz!s^)8hgF=#BjL+AMXr+G|q*tZw z$ZiX|@!njU*78u&eZS?M>TkOY{d2FZ;|V=K^7EwI@98iV_qD&f6PMYl)GG4-SQUI+ zZ1X`eN-iZYFwH*f zuuEnZ0?URBEyqs|bvN|K!L9S~#Ji5GYWd~V0$egkT)A*MLJRlf+gE}dwCpO9grUjk zZRiphKoSKORNyC*`oA;->$(zF=ulh`Vskc;T%JM92@xXt}t5s)scsQspL>JE3>c)(|LE_dl=E+#(-Ei3wd z{4O>E0!3910`dY_zXJJr9?BcSNdk0T=tGz)si|2Be&#i5lx{Ha`ofzw(ZL0E!NcjI zK_D(c&&eN#&3M?ZKu611i#hVwC}YlpRRKC;2AR(MP3t6ek{g4^mLHz1EJDi+%~ILy zrOsH&xDxkW4t!O# z$Qu~3e50L}uvbK+3>^qZBVm-@NW27gMsaN=4fg+hjPaQ83Hyq>4hB{pd$o7o=0C;) z-vhKg-oF1Rb)Ick&93aOAodmGE9+t%7G)>2(+L;)^jz>$~X!+M2 z*P4z?N^H=4w)57bYRw~$3*qTBff9d6QA;9H7fH5lEt{WTeM#deH6@b z|LK%$@UT-s;(KS|Ep!7{0WoGaLgv2)IQJ^9U@Q;;0X^W_7s|`azsX_T5~K%=j`GFc z(eV`&Alc7OV3nL8h0(;6#yzXh`Q6%l!_QCPd`$J;y#v?UZr$ziP-fn~eY-+THOgre znxP$xGN6Su(K#g7%dKYnk2}h?k zs}tv3C(W2Sg~Hhd{k!DUse!`iyJ2CzC}lump2n!9F6ek-!qwF34Mlnx9&sF&U!KDo zBrl9CCL7Vggr{S$kqqDQOF}urjq+bk@g_CUoP`AX0}Q`)b_HgNu7Z8yLHn^Q54bTG zJQ+5Kt-yNN+lU~*2$vEQt)lY|*mbU-m6}W=%X61Uq@p=(@`Dt2d!d5Ij@dqg0}>J( zn7A&*tw@K51|bck=YI=VS67c1%@pBflX4{XHk?8xBMR1mf;$%a(k+Vb-9oy~l~iq*I%2!qT8 z@loiEK*oV!)`R&DvTF}jfiHkW4=$6o-v6dIn(Ug58~q`6A-4fDX$MiE>`M*4ckc?e zl$)T-U@h$dHP;qY{w8>P_UP5R4L^roVlVnerBrkA@wLF-xI#+*%UE~?ls$O*h^cd6 zcH!a0?s;=ePvpu!?*FNynH@UZtDhJA+~H8M99PD(3X%4x^hFC~FTRfawWTg6WP6pt z&FhAeM2`*+q!oqMKres=txXFuB@M{JSu7tj8?zfg9VB8sB%nUQ?CdYF-ksRHu`mypm+ zAi@Vxb64|3=p`c^rJ(JIum6;i6xJ67%&qw8E$nTfRBc>J> z+cmbo1oyMW%1eRz9qDxpX)b1v<&4hSuD=&->=ZBCxDBCPFZFsTNRCV34)YJ~OX$Y@ z+f{I430#%Gi;yx4;;Z}9jtVSDlPTplL4!uxR8>z+em{$g|q-Gac}l| zgiPtZa7od}n|O;h0>azR7RurQ4;&X6qrQ;ojhuyHU7`2xErOiV&BMcH?5C1~g4)dB zXRtUVm4cLb>d=WUXyd9g7rVe*eER;~AC+S8C=vnFi4*S@N(QiVarr?az8NzFPPI6r z^#CfKi^95|Uz~Nv4l}NnmX=sYbPnrK#ClG2P_FdiXMPaWg97UE^q-xo|HUCYzhYka zC!DWi!5RJ-9~byBSOCtb6w`eq9(%$u+j^-`F*7^+O{gkj!5Do+d-gI_jLz;-_y!z? zbfzAmU@dp0(tn~h`FFnA!@(s9mg26XYpHVw^B2)>Exo^UY`t!eFcY^{iq4HFg}Ai% zLxn&Glc@egZ($WvHQWd zd+ob*qtu!_IV%gN^H#e>wL9Baec^vz(jRQF$so+H*x0ALtn0vep1$2hNnJ}l9?&Pw z&QZFo_c!l2{(HgK=PSlnm?U&Rf00^NQ4xptBI?+u6f+bS8F?Es6pE=D_j$@evWS80 zUkq)A-XJ>%2iZ1`NP9Qu-1#$rH85#bIK{@hxBCD@aqr#npJC$lDzkx;V)tYZd%HO8 z;NdykEKs={ituKEzt}-aZFwKcIUrb&N*ou;QPf;RyC4R_El36KbbGBs)rC$!E6SkV zw_T1e#tH?}&5>|P?tQf=Sdo{^)nQrYI>@a8G$DohW(#Oy(6e*`0JJ{K;zWBf#Z44k zkK^%Ut;T=Ih+)KiA*SC-5p2PKXpcDKoD;GRqYv)~q|lup*m*T4=WT~C*^c*zP;il^ zd!#gF{6n<{rwujLpV&V{FS2vzfa0`vN%YQms}Kp z^HOvhp|~X=2zco>o}X8MMds$_syl;k+`1(TID@161H&Jm2w^^=$Nt}wj8Ark-+!;@ zeNo~^MX}wDGnxKVPOI}ptf-TsE3NLv9kmkGPna+9)O>GKEn2*)B6^NjJU-KmEyw!n z;McfBS!EIDgynRV+I(4wM>e zN{AaCI$Vm#T{*aN7@hG&4zF^MJ_kwZvK1@VbJ=0ZDuAO8G*Eb1xT&X#G2c`jEy-~_ zWY^vH6R0XcqdjagbaWiueE!`qe9+6W=lztGRpOxb$T)8KX$V&{=`C+v;5bqQ1}0^Q z6q%PU(II5@vl-;t$Iz}MGF)4Ty4K#oK?bY`LC707Mh{S0@{xs zpJWeuPOip`4Byx+CPeK~uA`DpshimL?{iSaL^_QPV_TSp320F0GPtxwN zHCwe-NaK{5eGV+NE4SIF-M5GS3}=z|wF z=bl6F+U?gjHd1hBUc@*a0pTR+q0om%LJ7h%wn^Ot5bF83H>TNoJ_APOrK)|vhs$eS zot(-*OCx9c88(BnxJg)Mv_mUvYgJebUjPmtIeK)t|4M*WK=aD+aSG}@6c@tpBujAn zlZ^}6NyE~47E^z*hu@=tQUNsU$YppxJp3l=+I4{1xsLt*-Qr{m4kzU-7!)?*#yr1- zttIS|%)#5vQ$Jb+g#>q%rQT#YZt9rra_+{KQ=yA1xRg@%r5Y7yGcM7#y0!9zN3iX6=v+}}ByHeCL#P)mHbH$gL$I?EptukC&+|RoH?%rKH zARHwna$c&QzW&P(AJ#$3D~e^w=mjxmKe&8(0s8+}@B}a{u?GO+!dFSjFE#($5nQxx zx{9TxW$JT0TbEE2(9wYtJt`YE*gz#-0Wq1_m;~+%^yM`mXfm~Op*%?|X$fc78qxmc*! z8QU_5fa00^>!^lHC&8_TiSG~xzs#F*0-CbKb*HEmW^?Ii6Ab3lx9klH`-^s9cncm< z72+$;{@~q4>^K(JV?JH?V12wkob#gDS%HhWUjSiMNoP3&5OlMI#EX)d*=FB$FR!1@ zM_B@*&D#_r(OA>d;|-Ww-@(rM4OKR%_G3@?Yz4!EraJSAGjnJ!QKsOGjyRE^=kPqF z0v)S#%#xHI>YEo55_*a8-lHd*1G01s3=GhuP;~nJp7)ciQ8C^u39f@ zamCfn4O(eQXoG2dnNS8-Mu-+@XTIcbT(jmfxRd3na7?i~!t@F)(udvSBx4R2&$HJ$ z4hdZ8zw<)jp&N-o`f3@Fh!|B3@z(1KlHWn=yP{LL+shiUV}ujdaI+n%=6oK$8$ z{6KSV8N=PBFO*k4qW5GU;i-gfG6 zzAEN`jGk|LQLQx26#TbbEf7_~LLerM3w-cw*oYO*-9~zsZdJGJw3OghU)X76e5^uIA+I!??v=>i+#3NV(vDHv@k(N#?Bi zwaFZBTNiUZ+SV54=BF{^pNn1VNQ2p#^5=ix3NNJJy=;dsw=}4Dg~7)@+xq*#J_I%$ z_nJTUymy%yI!@x%H8o~5xsAWW|Lkf*pP?cBlH9g3sYY;zn4>DaFXMaihWXPiA8`Dk}*X}bnGrNXVLfp1!%~aY0 z8jo`;EeFGDZlJoN2O-Z~Z8Qo_WO8ci6tclGM#i`M%x!INql%7&G#1i=bQ+JZ%cjFa>1|<1rB5mY;_Ge-5U)3D`91FR;fII7d>eFe}pN%qW$A>m-S>rabCo+#K zXwcnXXz77h-(&Pv{#^Q5di?_}=M5{&RNmDFJubQ|!yWh3Ri=MLIlZrbP2|P%9I{3d z4^y3agZA&dc0XG*$A*`(c>KxSmXEzHzv?}Q@9|^D4na1vD+jpiNAdhD6AGzI5fL1> zZ{I%BzcX0zpx5+zc(BS5c6q4n`t}pi$6AZi7cvuKlg#=%-+`{o^ySs%x)@s1p4d_K z$Y*BZ{9=h95u~rX*>m_FA?H9Hw3(n1-`WTSKm{g71Rmu$b-2~U%#1g$96f|O4B4>d z|4laRjE3cyA7bHY*f!*)g4^RHQ~&>U?+W&Yg<- zIQjGN!y?~>77MAK8`!fE#d%~hX;mz!!sRxJU*{W7NjC)%#`RVhLGdmm|jP9H`5#r2kK{tYH9(OOy+;r2S1qd4&L1XV!h z0Pwei{m{d6%4d%&C>%y9eE0tSgz-WMU@)bA4N$`9som__I&{?8v zE(O(4(ZNi$ivCt?^!kYr7{9@%42PODaZ54rX<}{;B?|6;eFlD=RclBBNIHG9O`|iA zd<%#_8ERe)LghM;Bb6w5QtL+ges>ISX47=__4QL#`$+p9q=$8LZFO}St^s`o?ks3F zB3TFfplx#pO?ysB_w}H}OYwuy^Bp$qQD0PXt$_RKIfM%Eym4S_p`%exlC!nl)mIyJ z3-Y+n@D>SVGX5(j{slX!&9O{m_Ry(g;XgM!@hdcx%|v6U`I676gO2&E|NdW-X1z@F z1wSA3d$^uFcspC^=k+q_^^cWzeKJlx7d^Pfcdvd|TaKn)vW?U#wB{R)9eLz1^^_=Y z{X>AxbF}8bI7BV@S;1IsRrgzyjEWD`#ObJta0Gz z^@fLEG1G_CQ1zkO1B!~RDbLf>FG2UL)DeWR&G>!^D$O@tu6Xy_5_MPqI+qELGIMfX z1N=OM4Hw#ewir<%#*oeiTV=FZlaY(domZ~Nb~H{2`k`-QL)oM>FgpN@|Nhlxm)ZEC z&t@6M1avVRZabb`Z{v{pgD1t^-91k#4UIKIY}wA-EZl>x9jU}&xNZE<9Zw?Zra)R8 zIhen{=;YO+CxrzCq)Ni=WJzekqxTb@CvO_D2K8SbUJtSSDTn$sv-rOO_sAo*9q$6} zp1U9Z^uhIGM>K%2%ys_Mk)yLb zQ*C%M-aWj!*1hiB!?Rq2H+4IlMCM%2FIUeJ9*Ls1@8(p{OH3E+X4>64HYYnsZ)RtA z2avDo!|fwf>nbyxNlEB;lN%*FH*j#=f|=we926+)_B0ea4?#>7*rbCA{wLt5f$U^4 zgP?xQ4(&hUUhw8)qcnzt_^iCJ^({vA#|r5K<5H5`}dhyR*HrpkZd`-<^GaQcLOf~bb1c^p}h)LAL5iJrlR#6@5Ua`W;^Yin15(Z<%fNf1GTU`SCA_36dcG_Tei z*GEx3IXU?dhK1?RpI=9Z3PCT`m@2%9E5YEyYZKQDT6MYc^X%;E@sjTdI7E3+ng^92 z(O{9zc6T@3qD6~{ngKn=5)2GM-w&ARy2+0gXI8 z#KmREw_Qg3Y= zUg_u5pjBU&rzpH@(uO})y|dtj%f4-kx2RCF-fNttWo12v=1iJDHZi}I-gr$dRA-Z< zgvOV4@JDm*QREu9jfzIy_{~q zvxXD{9d$lox@6r9@0jYp9}7CvN>74k7Rt$eP76jbhy`i|{+acx+%Ee7)TNVB)t(06 z5zOr~;4)PTv#ejgc>DHvnfY7^F)?5NC@C*?xH{cEn+9a!`^z2%9)Hlw_s^fbn^GtP z!Wv!MShcGusjyIzq*FxfFZtxF1lWVG706aK&$zN0Hmae6XEP?~=?J%pH{GAFjp0n9 z#6TF{VUO1h-9F|uHV`o<*f01`+yO_`gMq^`%(oqB2DiPrxec*-Lli{Z&e?Wd#%2^Z z{THaaP$QE3whZkfbWVsol;}-SD8vqeCM#7n|2IjvIj|R{-b?U#ie;Z#HJ!j9ZQ|!Y z{;v)hGb4lo6__Nyr6pH)Jry7=|J>yp$F?vS9XRy*m3-qs+*z*)!{&{0K2&U5!5TNt z#}{sxDVQV(mgqQ3^yghX_?bPQdv3uZ|C!Iq`mx#`mS0slil0xitlHKzRV&HusFPH< zT2qQO)t`t~8ho8v88l&qD-RdffRKOE{Zm%6 z5Fe~ww{DBZfq5+Rpr=5NZfztpPD&jCyUFT}KpS$B(BHZn!|~U)b%1@c2NPQd zJE*MjnW>m_xdQ`dnm2Z?I%N=eFPHzpC~M}iTmXHJ2`bjEY>#QPo-9k3K123otVNsU zRJQF;Ie;5m7ki@t?^g{C92XtlwYP5os}F#1HJEsLFb5J^x9TI-!Tw_(z*boyz{<`Z zJ@f;AckmwqxgY--98z`&>jN|>7Ve!(;Vi=hsuMBQG3o&ncw^?jRZ}EGqeLe|4AUoj z1aGCLZX*1rjwSzz0lImZW2q4wly>ggZ6u`zoEMQo^w&1)JFIjPZ2O1J{6AGSc2CW5 zu6ufErA)&7+Pqi46*rtPVWA$p->9EmH@9G1%zLGr)s<;3yiv{b!aW182lhv~yo|gf ztp7;sH_Rw}Eijl7I)ss%YlknNw(qLP8sDE^6b6bfp22>6+J>|g;_fWDnZOG~sE)V=dQh`ame?;wpP1L2W$)%(qM z|L8;LP}eq}Oz%<{6t-whGw_=qaE7dJ6z@7XDhkwtznQY~3Gc7@?E) z08VYw8U<+qV$m5v_!1QTh zcRPk0V0|vTB)%|&P(V%+rW%WDVNq}uje`K-%*O!;PuBIf_~moLXpjCUH4MCvg0&Wa zqrJ3qI?FJT4nzbR89(=*n32Lj3?aXINWRSh6nGL`m{KM!^=giVF@XZAAbU9c!iwKZ zoX}pivpi*5IQmq=dd}|R?lgsY&oxwNry%DU`MAWY1$DbX5d>H~F%Hf*MD7FiUFg4!WUYL(+liQ<*M0X4l@{ z-jgt^)P&ST?>?A1Xy0zMuNq8aDYb= zQ2~IUAdI@cpaZd?we~7K4Gd(0kxe+}kUjV&WHgAOKr>9*NXg>T0rnMhDQyORg-d{! zKF`AhG?Z6)BOrt-2$vpO)lnS4+Ze%vQ6NGTsO=fRB^>yWw+SXf!Sx3{R`%+RU&4aW zB`A0*LDR?sUlW+{BFF}BA)TNS5o=RJ&HTP(2_3AnYB2R+tR>qr$UCvlnA~$e&_nXQXw4SU6_ei_8R)h`3Jf-o1N$X^;pv!ycnP zUV#%Mujj}%4?zN8;gV#8)kqb-@M0QK`=I$en`3LiI{{`Tp}`RTSq+p5Bi+vzJ$JRJ zNOA%F8pIj~5I(BVgk6X7^>hOoYV~1D!}KGRU?b$jwag8ReZV^+xgDh^6EXb3*q@0I zUGR;FoRHLacy+*v;|KP{%gM?88XZ+bnJHmj$=IAUipfyOAHuI~miW)H|NEaQzJynY z=2mM=N>8r{l<}*m$X@<7`B(o!p~VZVsjp`t>^cmgV1v5J^oiPVI@oIHEeUN8L1ZuO z2kYvyV)hoI*O@EAVj~Wpru-FFSFWmJP&qhjEB4{(5`~K620`(IC#2(k?`rzGb=JvJ zwqb!MRCX|!j&8Zy(VfCa*N)qnGG}wHs+IrckmWa7&jvhXIVWZLvq#^P;r0jp7do_+ z{;h#BT-@ARIjf=a#*0cKQYe?P?dcURjsOoPr>9?|?s5v0G%Iyq4cnNqnjwhVC1A3E zd$9<@xod)SZWvV}6fJ@$r*N@>E^#_0^8lxK+>TdG+RfOo;tQjmZZJT&X)mdlFI9jE zIQ;J24+-5_lhXh)sRtms$K6l!mQw->yW|oDMF0J?|^Z>F)BTNX=x(D*##T#lSNqXX>1(w(+q_h z##7*-P|}UZ4jozvgYP>-Mi>D)mHqhfV+C-%=WXCTya38XF7vIpxJ{5G;n!e9!^*PD z;Jt12)h~gu5C>Xd?2*!=3RewaZ|_WKXzG%6g#IdZ=Mf4VfhE8cjUAOcx^Y#6Bs}-P z?vtO@9P~RV0}(2k41MtIzJLGTgw@bQ(*x2#5cF)gaq6oazc=v@+XkWhsKKLmfH3#D zG=_s8%DiOBbhRx~9xl*+FmhUqhehb@gwo>18-dI81)MYAAr=;vCVYeaUa$!Gub(*@ znZr)?Q;Fow5KhE^?UcF&%Ze3*%?03y2(KO~r|$nxb2`S~OrzDJKaqg<9tZ(^U@g(M zt)^SMHgb2P4k)#TELQgz^0ry|IhQLu+$u!()R)1buR-vx^}YVvmNut+8_s9Dwj`g| ze=O!Fn4m=GGZ}hnV9zS*=3Z<0q1x9?ET*D6)o9FbTw47KUyi@{fI&$Mv!wfI--??^ zf>3FERd@o-=Z0qq`XdBKVY$t_K;!{q=!VV9DPQW~K^ClQ4#9y8YlW+Y1wsRz4@!A+ zyhez$3(l-l--G_I8zi*=bep|KPQcQZZ=t{@aD3?o8aqszB5gyArted8hXy34IVaX-Ux-DAR4+#jPfB-YKvE7^IV2dqNmB8>D`1!#V| z|AC;0d=?9CF4q*m`^5o@8&De86RsVF7qxkUp!)dHGa*!DBqFvINAwMm{23RyradsL zPy&vRcgJsQn&hyu;?d*BVh%!iA}Fn2fWbF{+2c!tqs#!xvW%asM3_|vU@^b^Hz8N; z=C7q|LMcOz6%wBBkhn>a4{p+fvIvYV25#k1c@m`3`u^$3;UAt0@6l@)6%_?-Y*+`@ z1l&CfhJwf2vW;bDp`3hlkp~SO7cmxeE`xfT1Zvn+@)!L?=KG88bnfeT(TXsW_J`gF zeY0=bddMX(MZum2t`p@K(=SBaJ|Yrb;P(`@TdXK^Unx#P$Vz!Ix%rtIR>8UmPa$i!&8zTRab^jlyKT738U z+2ZaGcwx?p)L96K;p>xvvP)!@$^U_~-@ql{IpUutX`FPIz0k21*|Esmd(5tRnWC|a z>V-oqPY9MikK|nK&ON$8CM~P`M8}Go)*L10kM?JU*1LA71_KNfJrIv{ILqthwo%`C zet~}0Bj)C(@&|0MZVDa{c+GdS@B4Rn4oeahWfD;J+W@!L~5^HXh6aqcSUAjtS1EjP7eYqS=LC*(D+ zm$CB!7wL$0Y$gO-jydGUVpRkVOL?0#SPw1deP(YK-j?KKV@pE!gV91>n>2#rl70JX z-FV@aXpR$kOXeJPyJiZ2B`Yhd4`Ph!<~3(c4zIUvOb9~eRZ?r}fso(u z%2&cvg*p$Cd*35@3UbuwOb%y0<8;(j9iNyk)*EzMT@vdcs()rNG(m?zv=4}L^r%jCZeh*hM%uz zAZH^LTA1@vf7LKsx@YkFaRh&)V8U&vbp;|ACAw1y(iYtCFL;u-s}|7_B^j{mYPd&9 z=cH`|MtJPesb$2U16>t(!bz~3AZky{+xYPwzr81_JpoYj$OsIl_HlwG)^r%o!ZB~nHH#=M-JSL)xY~ko@nZg6yVgOxOUb{I0o572a0^uNM%kHlab|$>EKtOu zJ4tA@g>*{{ehHvEEM;asQv4Bt*9x^y^816(-m8FTA_1y4biZ0@WsoeAo`85v|5{98 zpjeG|iWu+|oL_Sqx;JVJh4o37ezrSmlv?7kc_nd(VpfysNBcaA~Don3xXj-WquYuNR+kZtwkgAOqL68|T<4eH>VF z!3oCgA-Ft*--xVlqqkK~jtllb>Uh_L?oQ^m;C49C`g?o%#Kl(y?Rg$0M>AxB7K%p`Nxg&A_2509`pwzdi{uD>T_SRuP`R-UQOB-7TCc>8V z_8W1OjtH6OP}Fb$_NGMUPMpQ0^<3l zfF@=1H1G2aB%q`{B3Bf(BtAa10c)0*D>9Ku8w}2fh8H1vADSS34$+BBGk7eRlwaf` zGb4}*|OEg=|~gwFJOT%7S4ZRA*8 zbV;!@m|?BPR0f6RN$?_ec~9@eT9Oifcv7g^LYNGDHD-V%@XKC_FXji@!4WyI+k?U1 zA`;+T?!WjTQV9hF{Hj#$46FcPDd|mAPryk7)dh6Fu|Os@3n?<0CIi|C*t9Ra8|bzq zRe|sd>DX0Zyw7MfPME&z8GQSjGPI#kP~qcr1F0e-kNNo-d-Z+$2yn@pB?WmKz)GU< zBvkLTu0Ue^hDY-PZS+IX+E8h(LM+Al-x{VNqK$+dNYT@$slaK8&7R4>m&6{9r@Z?B&?)!%!v;hV;!Rh`k@ z)2CJV)-VXrGYZi2t*LB#&7A7RqS0jN$IlV0mqU&GbUoPqXzA(mW{ivsDttaFKC%n! z%bHs|n54=#1T$Z-($C=;?Uvtbml!e`6Tvt6M22y4VZvX9>B*K`T}n$0);LGo+&`6O z>C)?@PIW3Q*ejOCEWD{*v&iz`uW$b4=d<-1%9Z(-M2cta)A~8&W)=}4otJyrV|+!44Ged0@*~C^SBQo~*NJi3c`&hoj3mJAM%}rYOMI;o;#sBqa$)0B!X(h;D!# z5&px})Rd7zE~;j*%HKVx!QH0twEa}KPa9UFwuz?`6qVy2h9N;hN_ODOMYh&B@ofz6h;QH7`eMTR^yuOtnGR^(Cbt_6omR=8k59uDP zWTwMM_Se06qXEtaP)u_xtHsXFb4vG#KO5wGrKtZIsLOO9{q9A_XKrbk8a<8lNDOG| zi@}>fjZg1BdT}3wxWKN>p$Y`!EvRKuF;d0~O)RKaI9d-MJ@Um>C>hBSmx4JsIMHi? z1w*gg@{J~}tjtT)u7?f<=m=d&OB39@W*K;X1sC?>%^(hp%uZ3xKqj9(e@>5yLm&>R zmMc;jfcUH6hc0FGb?e%6&f0ruuJ*pa|6*L*sPmVyvjAKpoeFH||-9Py5C<;qL-Rm>iv*&pnjaBp&wB7hV{xwJ_%0;h-?K0 zN3Wy1U@OzS+}>_NJP}gwm0*>H&?9~+x{FwPN4zx%jrh-T`wnR5_w3mN;a+o*!G2CG ziN2uLcS8&XA(#v`Xv4;MG^{`le`loDw@`A!(~RUk0B+BbXfRZm4p$@ZUe5wDKAY@f z{?*hgYv><_mnQB;=zy=uphArTnPtEcxZF~OkCiCYkt?Uee}|*D!0c#@r)N<~!{#-? z(6(eds+l4jECX&OowJFJ*)?H2`-}TU5K+E;=e9w&^KOA@4YNN;^K6hMr@g;jJw7M+ zPu~B}KVx`J=vkse<%*&XLwqsqsT6706=;LPW(J2U#j zer{rL`1x96>8YKT^B;Q_obOl2*)!2O$SKlh%5mi<{5H*6Ly4PTr{Mxl0*UB;FD+0EX})hIB@OY4Nw}(H?hXh zYcg-7g#As0l#T*v8&G!Vt8}wlr0y$gKYU#)ZP#jV?rjx=K`Xa?`r0JWd7$n zrX8N+EZ=wM^9JYMpugO$efZR6I#%X~y}7JKh7ZDvy=%=~2JCvj_KUvX$wl`zUvh`d zXd`ZNP`TUqoAM`Nk@R;@l~;y`1pYexeYM`hZGIF@E>?@S#3z4M&X?~mY=^le>YPTa zySo6GB6;3LT*;WHR&f=X1t3f&xw;0vHxHX>IC&h!=vR z7uZ16VypOfw0^O|4V`hT9#80!#arUBw;_el3VXZ4l+0c}iLP?Tq}#?Hf~ z2^V=e&1%y1&2-iJp8QT*JUR7E=KIBUX{}s|H{iLP1h8{DoIes=Q%tD&+0NZ8J@5lf zJZi(1HZP2JFc4Bt9o-kYjvo0udIDR4E#daS9Y1GaVBVvG^^q6qOG+0D%MDJ4C$B~W0j-#Emqag`OLk1u=q{_^*Ju$t zHcUBM+TvhL1M(T@Iodx)p?C;@JxRgDVYq>sT^#Xmo9S|!9y^P#w@Gbd}3x67D5!_UlWX9qX|0E zv4gQ>jBu@ zfG`8MWb5T&L*7@hQYHw``o*hP`|-(-W86t_a5Ag?-c@0idmM;(p3C47IEC-YmD7?> z*UK1QYD7>ph?UF%58slu$thUArj7sqWr^Q@l8(`Mt?HS6S(u)(D(I6(%C@Axu%tdgL(yTr?v5AV&LU60sT#QhtHO z$UZamZ{az1_JK*UBy{ar!|P%kb?Mou>MfX&q1F8h&Z1)mD})iRcDN5~Ek5HwpsP$p zi*x2v;Wo5+?5)t*ZGtE7sRmN&16$RX?}A>4FIsDP*wdn-B($vlH7KX^K-VZ9Cv@I# z-!jIgcoksRi+)AWxdC2AI2islX29N}MJdDA*&ktohXKZe_(6=fh_`#a9GYXYy)(On zNczw%^)`T2&W8F(goa)3pP3>gtT3}C=C!Die*O9df1&*Lg5u(0h|Xgxow2e0Dp+Ac z-j`0C*hm-*m?f(^WAPZtr8c~wzP=3KJDzgljZ?LRZ;iYR?~(F2S!f&(G>JtQK-grI zZ=~C*H^R57#)U1o`NI-uf~b==+6cV;EpDB-yO2z6f7AeG;kCH9%p*!x*czXNe{)!= z95WO2bXGa~GTZ6UI9Q;g#zb=|(NIEI$WhWDFGtBGWAcHjPxxP4KDGeV8)*MdJot57 zI2T|y@0cM))Ryoq(loZ<^Mq33v86lkA0Z$GuS=GtuHOok3-6VPVc8K1Gh7kByFjo{<6n;A2C{N@uTpi8|Cd z!%LeS@Lu}M{teZ|`I@8^%1%2l;pErt*GO^%dQ4s+g)%)kGue|-2(N-h=2q5s6C zCa3S{W22*81j@knEqYi2G~1XmF)JTPSMp_>1g&T1D)(6s`VLb#}33RupcOIF0)1b<2tDrcA|NW~{u+1L=@NFvTdn%xJ$x!{N_kaG|}Xb(u^ zp;O{=HoKQdA5v}%0iuBB_PrZR%EC^RpRm$FVkPhOe|}ufgJ42jK&+^SA6*p-e)o>* zIq5@>i0OWmoS}}+uRiH#T9{d?qoqi8gzw=h?&qZ1d=-scOgzo-*(Dd+V`|al;x@07 zvSz^n-Ri83>+w}ad?SpINV-XDTpLm?8P^S?AOT6qM@{ZnUs}2MIkpc3UA^jyQP^9G ztJ8Dx7eDYrKeWxUqrmrS0EjFP1A8C|u({LFB>>xoQgoNX_XfSB;9>WaEraQ|`Q&Ti|f zjhdR-3*ixpKtZJxtK{2(i63^#WNobiM3KL^s3q?MJXoi_{R9UZlT2 zlR%CE^4(2=#8@OLwawI;WV-Lw+V*;qZY^$%*@#f<@7Z1X(b(9_VLsVE*^Hr)LqE=RxWM*)2?9 z9jryXGD_vfp8?OzNNa3Cj1m)r)m>&mKykIlR&mTF$-D>eNfoFtiE$V^Vc#zw^dw(B z0lE-kAznP`fsmVr_{Ial_mQ??%zUk^)f|WolSx>30rxTKmAp!!pl1t+h%i4n-*ICq zM93-{;!W^J)$kn&-UhhtP)NF^{!t9UDx?7{GB zTiV}7fD^5@f6Be1K#WAn=Cvbfakx&+_lLnYLFzWl%sY*76!`osKm*W{9AX-D8A4%6 zMnfFpCJ)}01G^xC3@urHebP!oJ<3AdG19zAiwCRR_JI1^Xi4%b1L~i}ZF%}_r&a4s zgf?>k@q|oeO*PyJhNN%aZ=pXPLsh~>VozX*G!$GeTQLN6jV8dPXjL@GPA3W(tHAAZF;b8ie(#gH^a9GP#!?g zO8jj(elFGhgf}?QOr^g6nHmW@DdHi7(wl(h%~;?YJ46BnyrosMol#d1FAu`bMoO~z z`d9NJa>(xWY%E&aJ%}xiv%SmS%TjG+665!xg4s`;y2nRNWq3D~vLpQEhET_fMZu6}YY=S`gUgoK2ip^(7m zSOFN86NnLSDZM@SHN@XajAP(@fhtD@(q6XC(tlJN-Ux2R_-;hqA7bBC;KU~#b= zAgYs?S4vvFepX$*7&F~~?Cf)SRttK(ex&$}an(iXKGv1?U{4Ypw{=@|a2?C&d)p0E?W`OS3 zVN!(N2JKZPi1J|eIJmg9*q%Ui0=BRi?SHfF%ITfU{8ho88n&>F>v4fI#d~LGN9L`d=f5EEzyrce#OUD!L2yY}beI(g;6e7N)QAuaYx>si$Dt zHh^8TPvJcB%^aQ{1Yc|S272L}NG0-O7GTwYJ(L!(7Lx2obMOnZG+T~YGuzgzslzg- zmiQnQq$VXLy>uleY;Xd?Ulzh2{S(#{llk^9QGtB3IQx=#g}}SWX9ZS(1O*M`SKg~n zO;`ujipA{D7 z*UeR&yuurzBmAy@V`@{{W#0KvrJ(WJ1@)F62VQP_$wa5g688CMnNmREB=?&P*=M}{ zt1Jde&eBEA)Wt?Q?JD|`Y4gT$;1UcB%L7hx3115e>$W(~{ie?2 zS-y+@?l+pMwWe!F1Vpt5bL&1Bb?9{EFc?Bx);rnNfSebEfBnNCJw>@nY|@g=I8Sw-UeD^!KpVAIXC1VS-8y9577*{gH@ zf>p$hhMTzE!D+s?0Tb6$OrXI;q6dEMk5Eg3A}XmOhdsree1g@uh7t(R_?LuAM+mQ( z9Fa8c*EZjvv?A>~mb|4nbRaM^RZvvCG(X~izUMhy;;rwnQ-G|lAf@^aNlMaFR>tG^ zsqbwC%TeuIFW!pM8o#d=fyb($5qdX_UA%@dk@}2%8_iljG0Pp2)(n0SP2>U&u!o8Hmv@Sw2P#_S_YcI}(Mk)Se4EnTdu z@aJMGx0TLkdzn$sf!x-Yuj;Bp3||2X7P2y5l&3Rxel8~AlKbsxhIek+DtlIk#b$5r zTlzy`ExTPE9i5TExN2R-2`8HIx;Tr|UH>3S)t zsHA*bOP34h#GDVGUAunvr|il_0{x$@@aq<{b}KwNG;loq<5P*l#)j@~C9gX+u`PX= z)X8^j-4*jsbCJwLG19{RW~BkCS2ei&hyDS{_>R*vQkpZUNym9EqF7)x2^{YEAy-HGK#UjlgdDYz3_7Y#Jv zOSKLHRx#&8LTnbO&=Ot8Y;`WLK&GpiRmIdJRYeEGm2=c`d#VBJ$?Ica2 zh~iO6>BQi;hP2hq3AysGV7&r3jCBSJZV#*lq8d`df#%i4J3BfOB>~nW3dW8S_3|A# zXUu*1C*-}L!S(Nl@hlGrqmgpp`f7pqWAgdZIYKREm(ePG^r#Y2x==t~FIuP;y}sLk zUWiH#&9f@BoCxmAvtQvMy1N&(I}>MH;1!k6o+UMzpzE3{n1%M0I^oMH9EmC5Cc zu3bV$A!b^{$h6QFcrVPGZ%we$Em;}Ky|lu3*0LF)@*j$t)+;R4HtqTtJ)eYG-mU!y z^Xwa_C6lr?nLGUQF0Z!!vmxwbSE%sL(?T*nkp+rc#vi?#u1#eRU-Yt=aXX;%V*j7W z2!_jaKWt?7^uBz5=2&uJTf1RP9!5|?2Mz!{;nTk+oR)NMPC zw!s;)gwbh2$VN4D8~6fb(2smNf(^&QChNJlj-Saw3SFmsskB{@LN9>9hfDGZnk#;& zG@IN(Ng)hD!5gCeXg-|!OI!v8@PX*S7g++PvN{H=g!7+m_4Z~{QxT0cRAl^U)(EPhu{$1{{tP~R=m5Tl`i^=5dg51P<<6a( z>@hc+pB+7H0xbo41pihOl)WGmUn}l{_CVAyC+g$1sUNc#2|1vYCM3Ky!FPiiLrGOO z@Q%OLjqYtO$D7-!8u@+hu~Apzp4bZr3vyjZ`>vDeseS7{-B;t!_viDrJ6E3u)uspUU|XN0 zn*Qj_i2|k9A9rP#uBU6~G5!2=AVYV>ajm!yC(|3wOyS^kOBtSQMTxc<mds&q!k6V4U&x1|rWauwP*Wlmx0ycXaHn3nG^Ultm(A;4r zMqN`_fJ`X12h3sO+2#niA$F8Z-3Sd6?{^U$%5%8$i97!Q#8A*yrQh6WjZhnvVGap9 zAY*gzJKL_NeTwIu&AZ)EGs&A%GqtJxb zfm6n63!P7P*a~hB@8t246Z(qX`alC*yVfvY`6Xn?v+=7|XGaj;QnxM5T3+#mj!-~I zdfB1I|B-bH2#~?~D(Wj?`w$6eoF0C6v;(i~{gSHcuL#L71(CcoKLuhk09|}%e@xxt>M(}}l{_#?@k$1DLa4t{PS zPOG`OMe>*Zpfpgh>p*ZD>x`R?-@-^o_JS3GE}krnkOEdxv&}t>W>ZmKN%j-r0a&XT z;*d#R1h2CA;~E47ob|U_H<6fM*%{1Y8bVJ8TWN91%^s_{3?zlrP?UoG@v{^Fa(gjA zII?uZsox%SJ&@xp5k+C@=aB3nB_&1J<^|8R$kPKki!fXf8I6<;X_&Gu55uX0kuxz6 zB?R>1VT^N#ekuIjU_i<+dEa>u)mt1qItxfifHMb}_CxumgOwH9sW^SjTT_57O2(~Nqyi9$ ztP&w6bl{f(SqhAdJSwrZWgCzvxEiv8%PZV+@t8<7acF{hXBF_BQ$G`B&T+#ooVe&` zTcLO*v_I4&2YUPasU3zCC{1|B{mo5B!mOpEgl6d!aQ;K_ReKEhLyzgtDzBFBrtM}mXpP9 zXMv&2RD2QUeozg=P!wC>D+~~||Mel|#aRA;1m>RXh@k~Y@^tR+?oOPO8jC>R{u~6k z`&_PMB@xzPT>eWTBRfV>P+xM3cg5O|zAGi8==8CY;$^%&)WQah7$b9lJ(g_SZ%l}d zcw=NxM#MpTP@0^?de`?Xe_zCO5@VTh{J(D^+5wN>sUH;}8MLK!kx>m^b3Q*@Rhy}U zMEPq1d)*Ms;E81QU*_~Ll!F$UhP$!JaR-o$SZDZ|+(PQBFNRrxIlv$JSMb}FBARH) zeqcAfeLrB516=O$4baw?OUAK1K?uO03#+}cmJCS9tM&y%37Avqh#tTC2prvF?PHf^ zW7*+xua2EMkdK{e04=QtSHr&sJ#BhH?q7q)`@gn`K8wp8L45hFVK~x`8TsE4`RC8{ zxUL8BW?+)hw149{GN`_LzmVu!yWA}kBS;y^M1R=Tu2^K0Vhq(m!T9;M$nqE)AD_F9&%RXs29i}KT#+$Hc zUi3Iy@YSo881eNs7#kVAKDS{`2_`34GrETwbY9Fr5ASc`C)e}u5&KS5OTuMJV0gnf z(--bm82AubFH{Hvo8#mO0)gAD+JmTsdC0I*;lqb2sEMswHUHT%?0Qqz&~xHv7{+cQ z|9qoEcb>U*c{9O}-vt6K)ZD^(w2xpI`j4VL7Bx~P)v%UX9BgOFn1fJ-aZ##aW)^{7 zAp11pC6d21a@yajfbdKfQ%7!q4uh))#%0>uazr&esU+A!kuf|R)-qDBR3qGxl_0QS zaJg<ovjZxYBE}S|!B97O4adWziK8zd<#!1lQfaW(72fKvq`Oz=Vwj zEQ?rI2>Q|;EeWI85+T#SbDF~5Jiz^A*(Hv+)5HQ!G*&h1e#;_mS7145Wn(i=qLz04 z`w{r4ya3t#t2YXkb#hLd;RQfw4+DI$-w1Y(gvZG}F*1UUsV|r;r_YaNpIfqI2~in= zKcU|SOLITG$5dFWVa{ENrokmj$4wlfD7J>76k%uN4Pqq|J%Ldh3)oj=*Ba}(b(8z0 zrT;2jMVR9x*Ak)>FSNv~)05C}V3SpRUs2BFFS`>CcgPKEh^1v!V}6aKn;i%s&e)qmII&`lDgPPbLNODAXwqnUkaoFPtuozFJb{*D*tke;_7}RnHvgcqc zr-rvq^vK(`zRO0T;Xi7TcWi6_p)H`%pjRYR*4JL6zkidS7uT5&ZtqNkMHpA zSK~{$bt20_i`eun_V0bPl5Se;gBr3fy8vs#vriq-N0Es|;2VLrq(5$i0X}xn>J(YS zWd(~y-fd2JTVGGrllwr7w9qo>X9g2u6ZREg)bM&g?9(8cXATSbn~FKPWg+uHV{Fy> z8m7p{GdB}Q2h@|qACRoq6&Y@|Xu-S3}SWsR@bA8|(wnv=2=XbC@B-V8l;=k>PS{gC`*Tl^b^HoN0$C z6S=3w_kr_ctSs4&PB;*b0XEyrbb+_CLhlJ71%>T{8Tyv^#7_OF6xbVvv;f@`k4?bp zWC4W#)2C0hX3$B6p!?=YJ1Vw&_XfOg{~GU$7rU{}%{d}vZx?_gqdJ3jFk^_c0iUb~ zg&4V+WGFH=4=EPD!_bc83)rF|doZWMUdGvsZa9*ro24h>uP36PUY>!E zM52_f?U1S^*$}K~ypgcHurUe)3*OLk9VP6L;20^|VnFn=u1<8PI2&^_h6?DDI6Q5! ze51Xl3GEDI4{-)kuPx0f^UILwpF|sh(S_mD@RThyhRZ73!-~7$Yg383))D)yOt3MB z%psxN3TdA}!*d4$o^@+DI8d58&mulZ@*W1SfO-8YUK~Xfo2|NSUyj0u0v-}<1lNJs zp()o)8H6CV;=}PnS>>?v6uLu3X(D;OL?i&AM;=l)kq00}lj&A;+fx{j@!bErx%=&g z{|-@SgEcq%g0uiyz_n}Fd@%kKveTRa?1Wcb(KI>p=8E#ogoGTI1XMGx&V3QPt{Ihc zlno33jB)!qYO$_eujKOm99&&!4zt`RM*i^?RLoA?lzaI+%0~2Tz2#unzs%<1;J9}o z0oTJEwf1ml`6Tsad9f|>5Ha;FXcRdMSc~v2$>Jj1;)ewV`bG1oQ>vrBFLYqK1 z_9H}XnHX^a39eXrbaXTi@Vu#p_ywd#$O8zs41qzybL@;i?PFDyI?lnvb!#&kF*w4I z*Qp;i79kRE)}weJ)NNTpm_ac|#68Tkp`QM~8=^J!L3jJF-t4U)WQ$7~8N6%xrVqdC zQ?3*wiIJU}-k$gPaTUHUaM~+)ZZAzIP&+|=IpQaw@x}sg@2*P#3foulM_VS3@{nmf z8E^y6B|gqZ+1WXy_?47ggL99Hxy5r150i*(jB>rmTohLf%Vk7{QLu`mP#FE$1Nb!+ z5FL0J(Z!c2jGT$+8ncjl=iArp+q{NwOTd62;5N?Nshk4`4~q4j`W<)CRs@UhfEKpy zKj#hZMHQZ@F1Q{3w0Jxsz<}kGzUljg*is;p!rVPdt^zl_?1UM-)cnx)5SG?1uRmG! z($ka0e~mDYu;TPy*5qxw_xJx45ST6nQ|TXA2|4h;f4rBV#P`FE z$Ftn_vc4Y702CY3RoIb6^vWPIY7GxU%8hx4YVyOTTk-Mn?c)ebL|w6Y&Hn4Bp*c4B zX@Y6x)pja31ClWQO`8_sjtv#OFF<}l-#Ku%Fo%0UEA5C~XDJuX06WUBF=O0qa|Q+6rs6t?i+%; zmUM{tA+#6r>2YvlBBjt>89Ho3JewvgMMvyCk)>tI!|^7tHzB5K$u2kO zm!C=hhF+Zb6uDh`2J>|1J{F9LqjO@>xWR~ru-P!{7-VvWu$;7dT!cl7mOxbha5L@c zX7B93uv*{B7~F#|3f|3klF;hb}Wnv!+N!RnT3d7tF9%~_AFjMS~1H>xs= zh`p&=#J*S~>IPHQ%G7H@O*@T@uJC-`GI>sJjmHMN@ljb7jLknB!HMMa%5QN}tHSg?ZRY2Z4M@Xq$w6-Hb4kH9=vE)Cl0- zQ>MzF5`nUcN}kv*DjLGH(LHIu7q;uTA#L6WwSE8o{RoQdC&3k6xIl8q*y~U!1(7fM z-jFiuz&9;BjT)L4^{?HJ)s43xM*|Y9P8RHN(U5u8qY4W$H1n3O3FrAVZ~}icg6udt zu)U0p{C5b26Pymi{27qPW^}3S7`R1%b|TAtQOT)SQw&n>p=sa+-0|R9H!M!6CvV|D zKWJ0ww6WPZ!X!dvB|9hQlVArfI)^_Spo@UEVJ(s!5jyV0<2Uj8Q9yPq6#c4Po|=;* zUcN9ta||{wWR=|UiP)WIkJJotn!4zs(c7W~CVJ=)%!Pt7b4o-K+`j~qS4)18dKF^E zYA`fH5oxLeR#597C6Mw1^AOv2)QdY`3TP+l+`ZwpgYX}^WjG%^0{5OUS;-uIL&I7S zH;p7ag%Qv>@ebciE9%3y4uwn@F%Cd3%e)gSig#|+?$IAl{{3~*HhS<(5)m&Odn+U^ z9*#a8MhVo#U(cCFYS!DIT9HVZIaaen9Q-U_W)v^D2m0B@q6+{dYtaqde%y$iKU}%x z(>CB__C^&D?mS+^d+W+i5D!NH0Ivm=t_SA$^SKjth+-}8-&dnk2URmFCZ-lU+EOvf!3u;JGQCN?caLyfIdEUfVg4_DmcGo&^X1;&R!jPSm|Td@hN-c;xJUmr%i0nUvoj2JDyr^Up{3G`0C;N zdB1D@30~qT=O67gs+jxp34HrK(AZSyHvnmFYXfd!nnf8u$@$o*G(C`d`ee%YPSB$=8b0#j)DXZs?^T+ zu}8rnhLW97owh7l+i2vvk&dFWUh5IJk#l%9dUcGAl!xew22I8?)&JP>`2-R9rxTLstQ4S~JMV;O3 z#j*Xw26!&o7f5|dK|4@`;f}XKV?BrNMx0^D-SUrnbvV}Y9H)_MIX*uArY(1y@#8bP zAo$DDEFZsIzP*(7NxRd5oZ2&wFqcn|5m-S-*UzkL{l8z$XNwWa6eRUtPnL#9<}av# zY5<5%ic9EzQKWSnX;NDi|EC-;E=Ql@@R{dzoRxy-JJZRD`KBdVqX zpQNSYB}E2FF8beZx3k%mX3D9ruYWypIML>Q3jSoLM?a65GhO#~Xehi6ChV5O2R9nK zh(_`YaQ<*ABO_x=M`B_kFTylHqThSfO76b{Pz8T{53~o5tG#}0M-cG9tXZMQ=m0~> z>eU#gG{7tOlYK3|t?^^~EeHz{_Y*ubn!Nzga$sS!U1q$8Ow`SrHEOFA**H(Qn};Mc z*42f8MyISa^F4nTl)lCuB{gM#+9+GDTv*7cTUlAdVNcX>WFsA&Lt#PP`2TroB>v;)+$-eJR3tib*|Yd%+R8zefT4?) zp1!^YQjoLaN;-#?T)W*J(4%Yt=(EATV(!Alsjo4*M~|*WQB%*|@CM%y<*o+)La-gn zG@3tn4VTG6BEyPmD4b+0pk1lu<@1jlvFnEKXK{bREjh~BI+Dr}789%I<`fqdwQX(x zX#Kiy0XI+T1ax4Qt*3KJzGYM>9)+Z~b#6h{Vj9b$PnA7^Cx%9U1doCY5X3czlP`

mIc6Ys?xFuU0Zp0;hP7pT6Uh=@7`N#lM;ZeA{R*xdZ{ z*+hF{l@f9~(OZVxL(tmIL15>%v9Te;yKn>;EAJd|lO2b$pMd@=MbPeTN)>os$Cdrw zEw&%}_DxdB7=$~L!kc&FkeUJX*x6%*Fb0b1sTH%G4lhjwP6`sw1a zVX8~HXB-LN9l!YtzV-dm)A@5;uka`leHX?Pwuy_MZ@sgSp6B*jFvjFaA{Tr zY1(By5`kS;;ZX771%v`utAXOh0-%Miv2onU{BrRkJ~+f}M88351d_vB7wpd9c1i%i zpPU}b?J1jpGw|)(w;!aZ2cvYdiocKNf)$LkT7(}Sl=>0aTJVF8?u_woZu~eYGX8U1 z{_{^2V`p6S$?y4%#81T$bBZi;p|+d&aQpDS+7ZoHOSK7u6L!W}4RC!IjMd=Ow@YB2 z{W1jW~DNHYu|QyCRY_1@+tRg98%9wJ?Z=Z0KC2>kpKVy 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$;> zt7try&^~XZr+;}xi^6G(Ra$9~>(3Oj&)0lcsNR=(fQ3Ilhx~M(oK&LJD?T=JN^4I; z&jGh%Yswpb_0%SzuopG`=X)7X8GZ?Z9HpJ!lEThJW5T{_a;f~b!P!ypmJrIrset&TlR?0VZS7rvAy6kKN@ zw_KF;NPC;)*s9w~zWMXvSM?1ui#B_yGP<7JKiko$7~9gI&>fv0B}|+S2G~4H$tsD$ zJ@Bf*?La3?B_r?tZ10w#^Q*!Ou5U^&+p<2ApsF^%f&C{vLw{Sk}O^NxLtM_mrhP%PGANH1~@{ z503A)OF3_9Uv>VTU;7LhFloaHi{pSRHVHvNL=Zrfx|kwmWj~zCmkRp=H~}u@+LS`D zD0c0q@#&@m`)yGWg|LbH!28Df@D1l56g0Vphg?`)7-#Zw|m#yv@iNJicB5@qe_ zVfe}NkVCfluU8jF172hG+W^-nS?s@KZTsbAd~!B@Zn&$xq~Q;J;O6D>lP-ym=%4vM zYb|q;KcgHRp0&w+S#fdbWct0q9IZ=iD>PA0zsC;wl}0T^Zm5?TNqMz8!hgXrhv*P~ z+IqF_{YHhs4eQ$OMg-8Lpm;KX&rA zj-ulBDuWV^co3%42Qu}q=)U=6bB{?4ABE*Mdg&ypJw76Kijh=x#PY1Nmig0{?)$56 z%nvulaywGzvFK+z{huuo`|SIWu*&B5b1fJZWTD#G=6Os=E|f2x>%h0W^_Jxsyqpr}kP{#Ieqf-7>He@$F{P28(T#^VMU#Ue@DWzN00k(GqGTf=( zv$(SUIVDzb_IA7reaGn4x0eFnV9`M`{7-6x%)x^(*nZ&z2IPw+5$q38IU>I*3F3fA zu;?0NWPqToob|s0J3aVcrr|k&r-CawA*b{=Dd71q;@`XuaHa(UYDFDZ3w-R!b+NEAgcxz0| zalG})*Tb+V=>?osfFDv+Gz93)ON>=WNGoN##IbHyE|Ob|!op?JzOCpD^w3jS;a??; z8m!NOfY{|BGTbq2T-UQD_^9pU%jYpWc?!TSICe_S{Q{4R`zHW;UtiLi+fk|BOVncG zB1Dx|_x*HQzWSW0QC_CAjGkjBn@;DFndHr~)_o7c;(;g z+r5ZFemld0p+9Hiu|H~obdJ(4>l%nx7NZ;4%2?-@?8?+hL>aHh{@v2|1ylqskiaf> zj2!o|!MsgXq<&b`B<~ggVp;BVH4?%lISL93T>~!6LU!sO>kJko&3-A~e(@+)ed(U- zqD`~Hg74FpA$)v_+jM!1-gp#V458w09+k>}(du=(=$TydUL(SS+k3N9m@K!Dphl8x zG^|BgJd%N-4#FA8p7A6_snoFe!g0KLqUVg zsLc&@`w+5=Bs@PvG3yq)jPkW$kcA0t-jHj7a)UyEs|#Q9-WD;p?%?RsxCfu8-)_N$6Ui&Npz;LhDA8He~Td@9;#^GsQeoF-IHsu%4j zmHH>h_qA|Uuc?Pk%bHsK^75JJ*=|-Nj-#)xRuH?mn*t8aS5)dxQCHY(_}{s}=l@Vd zM&-#TGI|ETij!=B+C!J0pCX}Qa{xYy0n1yg2Tb#Ds@?}r2xMAyG5+6%U782a>HBbn zlz;Z?P+w-2d@4D}^A{D{Dk&zc6!xrdVXJxFsMx$r8P#m>2Kj^mF~aRyh59me7FW6+ z%@agL&7fS^?vYG_MZ7+Xz5rRiMl{NyenX2IDdRkhq;K;lMR;P>00QjwBtTMKKvg7$ zBAc%Tm?nBME1U>u-&@nH{f+W3n+&%mH33Y#V>Y;kgq{~T$aNy)3VV^c!0XZM{;E@vi$^Q0ys`*ilcgBvtB;ic`4^? zr<7&!vMW$PMs19@Nmednio}j$(@hUklU{G{wQQ`bd*3@;drNiu_!lc|VvB7<0ly<1 zj(HRo2;h;%A!TCIS4;v28i7Mp3DcUwl8js}5CJ8@43SJ1H zUlzMC@Sg6X!`{lID}V4d$uIBmn%xXR2ly~w80n(JCVOd21m7g{3kckT z_ih3xk)Pw5Jp;~7p*ogu9@cf^vln-XZqS z4+lkVeZpE8J~0xmj1sO-?D6%upkdB9+qw_MzpqE@sD8eL=NIml+@+`kR^A4c~O>QSKT$SZ~$BRF!;9_aTwir z?UFbcJe5~7!Xsa0L!$PtPIuM}bxhOXnfp1gd#E&b9v@*jpk%V%T;s-(R}U_!TwtP! zv`^QQomAVd(Y5|$82}@yTGT*jD)ulMDE%^OsOJV zJ)Me-CL~psqjtK`nVp1D$LbxO-|A+Y4f``?D7pYR>WPiG^?rV5zUw~ffZ?!OgY)~c z7u_mY`dm1chn@flxKs3sJ^AbyMlivy^Xm`q3X07G1)9KwMDK|VY3j9S4xpES%rKM05)%=*gG=C3jL=(?k$g*@>pae!lSQ7qHk+-}yu=Ar&Zg^QX`_FV$1pC~0BQXT@yIujTUX(X z*FwTir!#pPL5csFTnbYqD>F?h97+iJAd&op_n#&q;2J^;FZ!N~94BdF&OzCZZUNaI zcRL4;9XqxJ_L1Gk%;?akKMyz!szK@ZXs!4HS1v<=gNR3fV@zmhO4B}1uiJ65zO6PtnL?n&kZa?QitiBTwCT!-}0oz1) zR_0vd5dZe47^B$wnv6J^HZY=3`K)#W`Qc;gJz9A*@TpGrC$9Hf?rci0&Sf}juBmR7H zA0jh<{}~S@4s}}~0GwR%AT0OMb0^bDOSUBXtNn3hF9{ZIEGtK=V}o{7-~d5IFDw)=&>uCK?=oV_n62}yXDx& zzK?m(v~Y@8O#Jk7weGsQtA&u!N_R$zmnZ2=^MT;F->RWJ9{jb4H!#!5MLr{cu^ z)`j>|q!pb4yX*~*5->R6;x<+Uwtg>iPik&$+*ZPK7F1}(<)4z^eP7YADFf4G8bmaY zGhE}-?&^k1M2C6Sz*Vb>B8IlK%($;Pb+W%XtjAqto_X1hqw7PUuFXkOHwK=a1E+^gbAf)n$axfiK^t;He)gRm`PBY9+)9wV`!~b4?Ty~}7Ul|M_Wdn&b9#nR6HV=Xf5g0r(uJwT& zOQ7dD4`Ar>=RALO=}heGqwNP&yhbWpiY|%s-IwDYo`FQudlvbu7nk!#0@ zC{^pyxH0HHZY>eUA@v=rBpNHgi<*5vT$8pnISbu=BwwTAy&=MdS~cpaalqR^v2?3- zTfr>7nZUtls4;`b6{UY}AMS16W1eRs`Dwv#>Vd?-`^gjt(0GqU77SM|E1sFqT)lQrcav~VR z)pGSRcV-7Xb1?AS9-^JzKG-&6v74bIZdHJqxZAE4t9xXi0hY!2|w3c8)Z{d=* za27^idKKPo0(|CGmGlr|JKnpp&lJia7OCC=9v3zZXTQe9bmzRDP4ko1 zxb?TKlJ2v*)Lo>n%$PFj3iYWCEdF~Mms+vC_1-j>M3KEUz1{4~^qZ-Rr`5o>x!d2; z^Ka=!Bk3w^vE-`BU(Cr?v)Ho^9eJdFbE0ZZGuVEy33@a47b^Lyg0i%0M+vrd%0}Tk z`)UJj-5OiaLJiknz3yU+-#(VUr^QnXvJRJOO6vSRCTqmKU?r)h{{!^`1HD~n0aR4C zp}e(2;wa#-Asp)!d7`8!6~-~(Y3xA#G&kphQEdz4Jq?YGq-ZuHLl6!%Ag1oZ%!PI{ z!SNQLJFv3Bx!VH$yvH{j|9IXZdfcyQp)KN7+o?Kq zNH7+6vzYMQ>ZF^fHJJF5%J}p8-nmMpZp$CRH(r>sojb5IOZHYrwL>h8n^a-bjb~D9 zzK$Q;MrI9>=_Zs@i^=l6)AmI*!^))uD`Z)}?tz1==RFNirh(n!B= z(uqn)+_qF3^h+Ld-OH%ro+~tCdf#56pL0^8|uEXb@+nP0JAUo~*&66P)bEuqJ zOrKK7z9X@I!E7HZ>daJ3uiWL6kA|OGvEZnp-Ch-X`}wRzGF2P<)DtTYtz)f6>a`l= zwkN#dC7L&->upzhXy91$#-H)qM<^EfR@?2@MLpZN_H*M%n{?7}zeKym`@L@`xi6$z z`LYfTIojkvOY4&?X}sr8S>J8OuU{uGq10lo_P4aXVJEU(I z?|Nw8*dZ9(`Oo(kGmg2{1=-uQIgj62x7CD)gZTC{luw4r z+eW9XI1=j}W#ivyjZ|_rc+h+}R3n>&75De`X7MQN4Wx0A>4pjIi*1NAEC&^bv?F;~=Oa6LY4>JR4P}ct`;#Xa zO*gv@Y>rdiW06{F^1xCevNG;K`|Hj-;0KAL&?DcCNoNzFo^sT;kQ!g>|0@6aj{@(L zyZyaCBph6cn`=H@8Z$&prC8%Xbu4QKhx?3PXqBWG*$P?Sdl^6Vd8FH06DfAV;G^LA z66AeECJiAOjb7p4^!U53k7@~}fy^;F9)j5%Rw#Z#T`z1h9Iid7Sm4XaVK(RLnaHp$ z_#4xjoux@Pw{HUC=744#+%pqSLXxY*pJhqlN=L)LmDucGGk2$NVbT}g`e{=L-NHcT zD&4IpH`$QDz_kNKGyw#IUh$DHM{wqt*&i(FWYBdxvLLRNF66WFCjNE?4C6)c0R_D&sW+`nhOZ2_0loBw-((Xs|G~)hdg=dEYeauLN5UpxD?)YE32c5NQ?YT5+`-ib$N;%f`1}6kOt8fZ=ABtY&;K{ZdSBbgo=3$61AApfe z;FI8uZK}Z(YW(A;M_%2^Ucyf(vw!UGE44fXkfdhyyyr%)G655T@r8+=H+z!Z{Q?8a z|Cok^gji!zZXWurxXyBn=Z(3VIP>;!5qpk_w69{qo7NrkYz1Au9AjI7E`t~eSl+XcEe_!ErYoY}`OIettCXLO8i_pQFIXwv_!t;6W7_W@8m zb7evah^~X7w9cu$zU*<&lCNZ6_V2R;!3hsRuM+xvQR*h+rI}UHY*CW+%R9IJ6l$Sh z*7nz%*Gjz-TAJpMDK;_YrjKu>xNmL;~>Sx@eyQ4ua({~RWy=;_9( z;y+_Ggu=baz{>4UZRbww3WR}ieEs#hxXeRQQ4zGV!dkoL{kwP5c6a}1%(=GOI6z|} z79)AD_S!SAP}Ir_;I5ktNDUtXYw5d7Z7dB7Gi4dq@U&lsmvQUmv23&TTFH6~1@FJy zStBTR2nbLkAxh^!%*czZC~JlWg3`q`?C{KmJ+hk_BWu9y!kv{!8{=@q8PAzXD zN)W?!ptJb%{0C9>S>!X(@ho9GcscH4 ztPSO1ut}yrS^a3NxHkKTCh|Bw=x09i8HaVI)8DtXkxYt@iV^F`_B_*Z{VBov=6BMY z;-dzM4vyk4#NljN?g%cGx}AJ^qWhA|Gp-!IL-FWd)Wje|`SSA{oUF=wayJd{vxzB; zK6|n;`m^m>Jtw<$4JP0GT~QAyTZqqcyWNTJ{4@RXyP&f29Ive0!2W$%EDQvLnr!am z$1~nt+HW)ktmTp=cW_2HaY_I4&Sf@z7sa$l2oKSLQsU-N4dzRGT`$A4Hq$7_-T{#{ z)Z|J3sx89|Gi!ga+hP{)#m4TzD1d!fwx&bQh?8IkmC{mevYd!Y@?I<1r0_kb%Y!D9$ zRgapwx`ebMb|xJ3Og)lW7!AaX(22-wF56MxgZ(MnnXtKqN>a9nhma<{*2N@dn z&$Zz|Q4a$cdBq^02L8fU4vvd+g{MspS9QMwE za&d8m@VE&asTil+M$JcLPGP5r%<~$!C3+0UpO@0&GXxTC@PC;44tOlv_x%SU8AW7d zB}&L9n?$ydnVBuJWrUkjHjl^1CXt<@gsiBLy|aa6lS)R!G=2PL!UkDpE3&wEmMz%WNZH!vkusjK z<>{5n$O9y&E?%1Lj*`4xx4dn+z?GKZ8|U9;UAsyWX8!!3HjfSR7p5NiqhmhlbYC)5$KPa}NjtcXd6f+%|b^DsQTG zxoDL?NC_})+i+-{ocgs4GdT{Rp6JaP@yKmiw&k+ymvGc_?oriV^^MB2f0<2(+QRHj z2`G5KnCqsra(&Y1M-DCRjVB2=6-T>_B4E&n5%>q9J_wK;P}x==Kflzg@#jFe0quLu z#J+$3e!)k9M!!IaUus8F+=Gdm$F9DVSmwjY{kSXt-@3cPx}!t}e0+Qb)RB%&P&SlR zn3u)zf4Ky$+8-|bqd1rG3G`0E_mc#i9K@Zj%%wiOP+fT@o(VON7rf9URIur z;YhRIf@p7(U0K_HE|&J5T8dH7P5sy(9lAu}Tt`FFy9+NyiQZs}VrhTA>%6YOaaX)T zM72JLwV`px4T!`~HS_yruyQaH`sl@r7rnCsnZ)d8-HS-7zg%h^L>dSgn-%jR@H>l) z;hp`9KY1Z1p6(?dzJ3g*p1CwYJ3@s2uSZgKqB*JRS7Z61#C^+<5;efTIL--8J?A`i z$vN!v-q>&iy3Dro3o9pns`APUg@~3C8L)6WnXq#eC(JfJj~?xOmUQA%S&wr)v6$P; z2_R5ftp>WdxHusbH8jD&!M5$XIH=%22&(W?7I3-}#a_a{61AwO2!8J94hlQu9-yaV zfUKP0UR8vqRk|gip&NZz1IPcZdGBL%ugBZa13~c|YONTiOx8x}zVH+K*tS{6e4A_W zO^-PpA-dS%7pp}dn`|hx-hC5PhkVm;)s=Wh7zbHqpIEpL%-I>}^~JkpmWj9CgbBOjj3T=9n*e!qb>C~^)xXB| zyEJ9VBjeo$n1rmR{9|50Np~MY|>^%{))Q$9kO0WyLzY(`6Ysn(+44^IOb#$E(bKW1aq_>4ZY- z^GM7drZ>3Y1Z`Qtd0HBpy!&TJrxzB&Ag6!Pf|yn{4WGBRg8j{*tSJ&0m65>&=M$iRm&IujOmTGYG-)*K^pb31SsbIbA`9R{Ec*K~} z4E@}bBCp3GrMIm0k7IVb?5#UgXBu+$HxhbbZuSw-R1$o$c-jr$SQ3H;ZRx$0rY8CQ ze?PMfVR!`vxjRyXi2ooBM>3XHR-jM?!<-*aYlJVD#l31=;D=jw+J<9`*^kgL6Q8mB z-2c6YR{p@{Z(siX`*#;m93SWiD=J+$KLohiugN-NPcrmgK(86cZ)ZIX4HENm9Zrzvn^mlGBWq%CtRv$sHiOW z*VtMVg2NQ{iqq-w;Y|mFc;)(-YkKrG)Y3oEyF7<+}BmuYi+Td7UR@bk@!`<`Kp`(AM^Wgtu~{ zdB`tWk{&&(jHh9(+u}8N0!PFp^d$RL%AO3(+X22mvk0uXZw9}vR!gxl+s~Fth$_`8 z4-`CVlDMTj8PL%HBGqx>6IX4Cf)GVnXR7p@CGd}?&U7B0CCO9U67{wh*~<0G>#97M zG*>hWhS<{0FXTjUI0IJq@L!jZvoCE=nqBuWG-F@e$9?yBzcJr=1Coa5)D3`M(e^1N zEp6yj;2t@cUK6o!w+k|eI)xn_{6Wx(94RR&)r>uW+zj93%rzlPfQwvY1+&pHm+`7# zXuOwy5&)v*C-9p0nEHM8k~-&`+u4BGgG6QYNBHRtlcVnMgBbGHgDGf~~|NHuDb;W~_A4q1vot}aI;~AzWPCX$A z$ysb#T03fjTkeDNFkQH}^5jt6o3k1Ti}7GV53v)p2@|TBy@IwiEm(ELmxI%#W?M#<&>R`>)vH&n$k(re_tH}>9ohOA+EcD-SAK1Xot&J6`|QlUECY&I zp?QuE*VoVEjUa5<8`SW+3oPTj8g!VSG|{IiOde^CJeQbOdL*Nv8jOSC zfv>o3Ik^Wk<)ZMO3*UfPzhmGLr9p-B-7RdJs|U!#hlYiz%TaAkFd-^QXNK7D%b6mN z3LmM6Q!tL66c&8dy5r)YBIn##7^(o&d2jU)wcdbM-OWyM&=9YM*={iD8Z#3C zyJL`toB?6|WLZQ8Udt2UGM@MM2PsRySM+8Apt!yACZYQE>od>}=W*+R0IXUojox$u zc{GSRK_lGJWUmwzzIb4RDH4M(B?d(s1fLzrIh**(5U;+Lto96ND{lMa*lUBgP$i%b;^Tw=D zuY;mV`2uP^X=BB5Qv4q6=1+u3uA1huL}$QpiF()in)2b<>|!Z0IOW+U#u#e5FipL? zHpQG89^T%=GGR}&HpVyoSg*0T&JtZJ_u{d8)l=?4^P*+d$E}Qqrr`!#@hA8BQ{0lL zwRHCjE4F5z^yYQI%~{UMV^_%ziOc;hu@~FEZ}z9uJ(;mwEpo3A!E>)GIxSt<*ou3d zg{Spsb}U)73TAEyc@JR%*W`dE?bB{`IDzp?MC~O%+7j z@V}^HodxpG%^`+a`p!HI9RqocO2Ts?2nHl)f#D$PSDRy5k&r5&U>#Ub(fHb8+DG*D z+9}sMEl;-QQ=5&rNc6G{8J2;V3u8{aX0>6!-L`_U9Zp`}b4)E5OHn|NJU(Cf0GT|8hNy zXT-iNY(ftR_I>$-8C^QONx(>MqM}f%QIK>=QTDZtW`&NiLkc( ztZNyMMEKpk`V&dy0*Koi@iz%05(^vI4Z?b@eK@<*jRNwmqp;iNJ>Mt$Dx~ErC{eEb zo$FuVKN2yi_cHaQ2LIP`Jm$khEsn3|aCf=s#1MpvGRX2C7e4`+R46N82U=ySwPgTc z7}j`RVOJ4UOG044?=#E_hmO7P+_=l7mJ(i~#&pfXQf&1#t;J!3md&#=;&bLFbgKD| zvzHSfd?N?ltyO4hzs8Q7JTL0h2*>sL@Yrf5BEVL(`b&YBb)!hXlmUo^PeGP>7KDJB zfKKSTwWLQ)y}wcV8pi8+%&ZDh@)tO*Z@%hkEajQ~0tb@MAoDQqlw$S9sLYS6oYkQUq42)< zym_x(GZb!!#f?OUwJAL zjL3g15zAdK$G+n@T02gssJ=U+CcwLH@zcVV8MW?s_vd3;kZa9miZ8HBIkO;%mRRob z_J-kxYp+1qr%3eZI*${!SJsj)M5;eqLtdhJ3<~nq?Q7Lw>=>1DuhBKg0cWsND!=}aUMDXf_5)iEQodSDp+0$<=NA$C0h@$I_;}2# z8|SB}_vs{hwj)wHO}{#+uaQk?`_S)lS3Kdl>iafyu21>+ROh^gi`78TC1~34* zn+2Ws)#&A7{iG>1w0SaxR)bystJ`$X&1~)Na%ma#Oy3<|fNK~aRlJYb6k7;29})t;)wWvsGuLC03a@TlIrpA>%I^=vFiCRL&F#%nbw)-8 zF!0DsYCK6$aY5)49C(A_@wc(Di-Lkw==2jLKsK(KFeOP}SDE_ACQ0zD(Y4F;K9?|b z=g54%g=^j}_wa4JR+w}97%f*s-T(=)m(r;TW|Ys+(xPQ;+&s_b<}rp9_fI)<;)1~u z#cr;doZHI}D5FSQqBAUfxv5#YJ zZmw}~uyT~c!`&T=!&z>M0gxzqMN6+*X@p;IqKS-|X4QN4oK zPiY3qlr&uRS=FzOJeHLf_soG58NdK(-H>P$p_T^)>9pHTX?k3X6}EQo`uY-KtJ8Zp z{r9#t8+#Cupj#r-dqz3^37mofESTw*o?tB}n_Fr|krr>8bZlR6iW6s#^P4DJsp1@O zE3d?!G)jZbO*M`dFaOmpJc`=<0b>lg)+Q~Xb><;;nwKR22Qw0Tc=@4jDJ_o#QJl^H zB(_UNyR&_`pdFg|woMF>cRokaBSNddC-dI zC(Ez$SiQt4oKX3;RlLS=2vaLJfjh6Bpc)10;d*H^7kz43)0zZrxr}_UA&~~rd*>aB zIgrD9?SjpZg(>6}@+|2qwhEX_R<<@l@laUPl77IfGOM})zCxJ)^r^15$JK5RJ#+xl;P_3_D$gJfVAbt-&wLm!Q$t(d{-bDati&x zw5oIRH3#`OUsKQ2z56vpJK~t$m7HTI>A0)hTwMS5n;?HOn2$s_^-e%PGcO6uRW&s! zKnNuSZnhUtaN4S(Z|Q#`T#7)H{(S9|3}Zi{@D6n;*@q% zme(xsi?RU}0-?*Yd+DQ77vgNRv#p(;9$I@WbW3&0+t$RU4u6Tr`Sxp%RAlGyQL9u! zM@CQ9J(7b(3Lfi9syM08t@kh(T(FCCjXuL{_4QL1E$)v8*3s$lt4X6)z5EI^Wlef_ zp1ih-+0~UYBUeFt`0sO#b-_p;Bw94JI_q&q>Ap=K)H@tX9m}?Dd3fyI`5`4R&T8$j za!x4LzS-&`=9iQgU2I22(Cn2qw7(MfWPP>lMA;b^NLF}mAK!D$e~+759nbQ~PLY!K z0zn!AN&!Q|y+JOZspDV2ejPO{>Vd{mEzJC*wE9$G!~q{*P*iEq&CTug`}cfq6e@z< zKMTRlu>5NI38^2%WCf?h48JLzJrzWAMQ-VSuL^p*g%y#A;jB8QD@eU-i7enhmmMd9{<(&Aa*bQ1Pwltr+Y`%N zaAgTzO%gEXLs%O7CwAOm?n24g`PFvtiBTAG-}IYRBX@l2koDOXy}1@oSMT0jSTYS_ z+@)uaeK37ajxFa@&c}YFv1%eni3Yk{)G76+d6#eAK?EwQH`JtJo~e9PT(~_+U0F-L zLxIVZgjA{~@^i;uiL}g!%8g5RXTO^(C_(>~^y0F0h%m`nrpK-2pEZR1HJ#f(1l70J z`W~`9a~F6A#|6mCT?PLlA|iS!>~3u?51$4RYJNkX^k>gPHIOvX=b(xKf)}^LW3_L8 zEqQ5?0?ufag>l6E64a|+XENr@-fzkMQe@3H^rSkj^tg(Fo}3NIBDjRnLOM|}UKJmY zzLSN9^n2H7s|jA8rp}m?InMAN2tvF40x<$WDC|d;VCq$gY3eHy$)Ah$^&Y*5(2zyY zVjd8Ix2M^AfGDUNUEGG#DAxhc7^{Jjm(Jrr0@gNhlKdbR84&@az|4A9FPem-<*hHl zcgzmx{2Mj=?dYbKn3@^^;yLuvU2S+LN$2)R*=}3VSKJTNb$gTi=n?+@{zmsD<%=<+ zvzPd&H&`exVE4_QnpmCp+~P&#DU44Q_T3J$=98eOqzpeZM3(%PWwq=IRGy51=7c=w zEhj#AaPe|!^YYm6o;~<1Am^3@IX#dF^p;qy@573yeX*Q>_+z}QrIGLFbaa&sr|4ft zRmdp}@x1WAFU)hI7myl?toR)L22^GL)W%P|9uUIgF{yezfV6<#2OaEvn@kVjyF*(4 zSX-Rzw}T$M3dp0woeZ+i@{5ucEMAgmt9wO@UwnI~)8Y6vIIhFMxD`n0^lWShu$8<2 zPo&bN%I92QLokew6fRevMz0blph28>pFR(bB??ndwz(cfh~)&^dWuRFVh<3BY~QzQ z=TC0=N!K6lI-X^xnuUZx%x5*bclMX3T%;e*+Y8HZY3N+6EedJ;`X%z?d?JdHhb6W!k zhheS!NdjX@`s4$3FQJ8iy!)c^=?V|eCy=$)jn>=StDuLFrFeYHb3QW{0*(U zlVae!=ui`~?7zmlb=99>aU|uq&a%*C?kdm`l7o^PSw3^^_u)qPaSzNkwhyG+mqB8Ko)|pC{zUxCdiH8FU)cOuK6D!{zm#eIa;Lptn0~ha9q&r zoAzcf%G(hA^oD_b>N&PKN#5YkzAQ(lSsg~wrFW61>4nAsO*s_eCbR4_JjRvkgG4Pi z-?95trLvxhBLP3YuaPaJTirhd5*sAhHqeL_n=je(`eh9tC&=V9oe2M=6;NvrY?U~D z!!J&01NE1U5YRw^LRUod;unDJ;xaRxH^pc#XQxDvRv3wl{GOzmCt5@=k~vvCoZ3YU z&9A?pDQ7b~Ll||)Y(II+6NfYM5U7~!NHO|qQZqxgz*o=au*&r~>!#u?xQ_6%r~KRr|H}SD%+-EY_9zqDWRW9TLdc=N zn3$LxjvXdGPXOtLh$RiyALzt~!4LNu4z`V{si_lu%wZTGH9`TKqZu%~fa>*>ySqC| zy9ce-f=>eXR8t1|wpqXES}U^%-g>-5Za~?Q$iipqxj>SL*X2% zIfM=ZC_>XxCt6bcnC+@MOGjZk;M{mY*AutL>5zq9{l~#g+gmNQ+2DqOERFkbS=P|c zXnoRlpe^^4L*n_!J3XWQtudE|yWsf4kT1{x@;etrMfC>_-@&`_u%s7q$de+pzk*!3 zg8o-;(|!!yF(-Xdt*7c-9 zAbB7$+wx;>ZW>6aaL7XLziANOjV!|uK08s$dmTJC0oL6|-c6W94)j#;VY!?K6{rYuyIE9CY zXZY4$yD)YN1X>ALJYaFDT%Os`qY@37J~Jc>o=5&jqm!LoC9LN zLI`_t=msz>aCY9xU0!%_-tKC=GVXEL?SZgiw8qqExz69wAQt9?Xbag_c z_sVgkY^4LAEI^Qjd?|3Jf~<2P!+Aq``-xWh2RA7XNZXU!ber%w-WC+E{Fwyd&$!goB6um)0Flca z?R)518H*&Gnag)$%~{vkgq;xY`!@Up!t&o<|zJgGS=r$BRk zg#}QMFM{)@=0>)cCgV+NeJBw?3I@fZeL*@%V^GY9DATv^(fjf?=b!-0G&Nz{J4hBU z|4H{C_aS#*uxu3(y3QSg})bA0%1-g&D{hSuMuc6 z=fsb9k48XLcA}4PxsH6daa&f4!4}tFbPj;*f%~)NJnp{u_W3(Vy)4llPBZM7zc5Wd zM|jPAc{EGIT43fSUfLwlrXu_zD-bU_dFqs)58~|13wkRqt1};DWH?;3Y9QY7n%6tI zn$^|Mc_hN&C8yyjroRnSOpgHpv~-0xx#w(N=O+RhQXi;V1`2Ptz#+C~h~~z-@fh=v z^xrPh%XckU);IdUDZyeK~&j8Me78&$U%%1@vosEsFxFI4X^6V%cVOviB_zjiV zC(J>NH7A3f_%8vHHPiYk=(Yy5&++KotU0?d79-|i%)+~N{xrj#z@f^q0ILzOgb&rs z7rHLk?*}lA>)MQ>p4A>X1415pbH9(@=+YJc(uI@OFNo@P2)A3J1pG`MJP?I(tyu8s zOl3`6jAoKN2Q-4BFBFV2EHy-rg*6qDEWrm+3~2k(@Bi)WWJ4BhiBGQ*VeKpHaEmzm zPh;WEbTf=AN_(#`LL)4%##4tKdS%e=EM}Iq@3389kSe(g_5W@e+CGC}pugkuzzP5v zs#B^8_cqDvgV#3L$OG3Zg@Mqo7|SfJ1=6Eu*@a5M&%hG&jEcTg`sRuhdF{wXpG^!s zu^^=w3QQZW4|i^1W|0%;Jc*q1!Zba~0?hHTLBVP~4I#-;mS0EivTM1jeB0GYd=q39 z@_GyE@34}Q3CsCs^@k_gXOS~ZEtb%mV9GdG8)G23^^yCxpWNjQFILL9t2lNNy=8h{ zXO0|VW%0nDEloh70MVs-Ik;EJ&(R#g{8qB)eFm6>ahnQ&sXab7b+9T#;{=St&e!+- zgh`uO7?I|7ORugcy}MBTU}=B^Dd%}+$iT$H5(|WTbeIalKqL54xc&Mjz$otiX<7m_ zV?u0G!VC8A)!^ND6wE;z%r?6>F7o~o%}ICsS|C6kb5PZ88ybeeS^5q`(l&nn`uc4K z`>0kDVB~M3Yz5H%JTo(efq_BAtF+9_7$`L?j}8y?s}YvWFs@60(rH)I(9%YNm9K*J zap}Tl{IZx`;v<3dXeDV=Q_~7J4NoKp;xPg2cT-(GYWt%)I33?kmh^tLw01x&b$Vf3 z1g;_Lf0@1ySZ~H=gus1&Uity_Md-kBY4HB$Bnb6EhLwM>BtHJEpLBm#3+Z`%GFpUs zDPyI&RM~C*=%?;?ayl^uy(>Z(bU+Q-rq`{lbH5a-JHkxy4%`NM=n$D=u~Oyle_|OV~ zQ?2n)(H}FvMGhWA3!kjsy*~}Hu=+D`O3c+iw|NoMn#Qg!3PnZ5ztJNNh%9hldTV_> zPMkQw%FRs*Bk*DmekFfAC<_b>y!rE*?&}g;by(Bh58f{RU|YyBnU#_f4nSj)Lo~d2 z)Gk?2;yh)FegZdtHrMK)jT~Q9viN(t9SIsA0R<;eu!Xve5pH51P?30J+sR;!*xDvN zlrcukm%e`w27Lz$sK9JZuU)x90_^*b5Q?T}W-N!^g@+AHYij14`r1Pyh?fo1HCXn- z4%w{0-9q|!loc5S;pzJsE{V1Pv|Smmgn1p*-UBFPN)WpWov=N2X$^qDW{~d{R=2(b z+2{hy0Tk(IW9$(Sl!nYT-wkX!+JFA|@dQRuiW2%QvNX6Am&zOlB(MbYJ;~wF)m)6A%zweSzh? zK)fS8`!V+T8X5Bj^))B}PG$vcr(Al{L37>K_R`bSEHQx4rUm>4KTcFSq-Xi6PZ=FT z*=x@8o$(}^D#mT0Xc1)`Kg?@9`taeye~Sw;e8&Zn4Fmjf6A;vOW3wc@ik><^;B1Ew zphv3&Z-xe-R(WUtaQ5x`3!hV) zr1nv;+lQ-flmDr;^V*7f^M)J$J9-{^IKCmLUGw?`PVI)W%)ygVa9prl6*is6hc`)$hBAZabAH03OGp|FIHeG<~m()<2 zg(h_BoRX5~(USz%sDjcP3Al@4YUW$DNB+pL*@p*L8;}pG3i`oNX|?9o*48R0!4)RR z6sonr_MU*^BWy*!KVqA-EkVcQ43V{Ub!$zednHu6x+y=jwaNw?* zZ0!Jkn+>-B17yMFyddLy9hOor7D_NlNJoU#bEOrvS0OMaEfcJPz!$581ahZY7tT{& zEkaCt^-c&x0Q+R+hrnAx4;46Q>UOWe4qfw*Wn;St^9djdQoxMH92nU(+@JprdK;F& zi79INP*aoSCJV=*3A^$~mPh7g@L+xCB2(1fbARVg?PiE} zp*UohI0gB4;_XCE1QP64GSDA;3dnoXZZfQvC4df)5&ZfU1>wySdaSFPo5Fq*AWvuk z!sUk5?i}oGJAMOwr;-L^!ee5-KxG^b@ujJ)tx(-V6&C^@a2kxVY`LFZ%2{{NC-JF? zSfKVkm2%DW?0=|)!Y&M?x*_0e-YZa|fBiZh$exD-h?WxY8;ye?GHDA8?pC^|e4mvR zbTy&JeDdVUGbpvR^(|xb^T^TYnUDw2;9d~MVA|e^CyY-8r~52yy}uC3`^d&5HVGK0 zl4#HaBdWNptg?Ii5KQ@fRxMDMdWj6pS-+Sv_vczBR=nK3N2Zmky zUX%_s$7SZ-0q+o7z}9ZKKQy!_f}m>b^*)&%bMBx@#g(DmgZtX~ZoWN?`O)D;nFVRa z=aYds7t#7FPU>;(^xSu7R8c1OLM5ziXlOVS@bTlv(~L*Zn|cn?PkAz5nww|q#~}Kx zg4(+!IB$SXDhmpTri;1ZgQ6fP6yMa=rUWhxO!wgdqz*zk1lro#KKpAeV6ZkpJbw@T zsz5kbdnN$R#g(<~oE)~t8;Qt|hbJ>LGg0am$Tgz+F_w_df#WB8Utb?KGm`?uby2D; zbT^?yQG|?_lJagaEfsr?j`R%qIOmDL+6$sB!Nzj4s&cL)e$$XnhP8e{O;K_#8rFgO zFZh9xfSc(_GBV-iQP^IJuCDyxVdgvp4cV^|c}RzXwIBqD;JUgx$QBe7Uj96D%5*?8 zlGC>ScB}sxtre$;@Co~7_9>ly9~m(B@{nkdK6T&2E9~ZuPT8SDAWaIZW3G0Q}t*Gd>5*mAE|br zRKB`lg@=IwEQt&XloAO5qHZ_n>0SV}w^NX@-_X*+K3)832Qg`3vQ83^D&216`|Rvv z&^dBQMx6&&nk{W-7dl~*;!3yCTY%HL$#))>#h-Z~1N@^1V+g4Q_%LnsH~{jk)GoSk zf%_k<_T%fOvuB58pl7I+uq(rU%y_gx0jb9?13JLB(+8+MIXvAO^u_77CL3xu{iI<-hr+JP zft<dxMtV{(@dB#X&nZfr78Ex32S=wE#8vt}82g@S{P>NgA)eL``}xVYzj zF@V-igMJPKjVEboX-^lUKxg9#K#27Nr(4<~(Ify)6w=2DgdQ&-&V#O|0=zYC6O)pA zF(01%Gbl5I{;-gR-R12UJAlt^E)9~x(cm7Ig4*VNK@Onsjswtu`k&ra(ND3!eK8<9 zN24TjpeGLVXGnnT&vkWmv>Vng(hY0&eR;W98#QDT4Ex++lm9wl1gWK7h&RVLXVIq0 zQ~0sGo+X4R6{a5jx#M(_vFrK%_oW|S%ATH{wX^CG%YC{4&VZX3=fsKc^V|<)>0zs( zYa#ux^5b4Hu$I3FD_AeGV+e}ySu%)qTq4`uN-;Z&Pph`jQ>mOj_FgUU!Y+uAC5wmK zNcyhN5j1!segMp%S1Ihz$MBVc!}Im^MNK9^2t1TQWQU%P(&*gEJUd$_Tz{~l*+6hW zOLNMUVe`)&t|vwI`ktOj`J)5Ggj>wPlEaUII9^WP)z!5FVm@D`yCL3c!$hS2(ZOGa zT%DibWr#KbznZp^VFUyO>=95NCW1$Hdfd<;3rALe#TSaj^TG~&CqOx2kTp@_vSzv* zz`X6~PoM+~m?;rfR#dP)&v4B-iq_2M`S=FPBnRmQe(-=ZKh)y-Jy~}iiez4tnc)v^ zg|6=IeXKMv9$IPf5x)w(sAE8a`UPmYK-fd-Zx%*91K0uPE$%|{|AW^$aN&6)qQ$YfS3|5IngHnNS!K6C>(#_ilz}C=47W zi_=pYNhqO{9#xB<=D&HF{zB_61%*lr2)r-}6*4lcaqE^6WchJGz}befM74P$T_N`h z1bmRfyA#h>idG{Wc(8rAtm~m&2q|DBh>gU`1ned}%zXP+7>&nhuIlGkL)7;5CQ>$R z1@2B@;)Vyh#>OlEpw?aOlKf+jjS6e6jA9h0g3!tLR|WiK^#?UqEcSFKgpmn=Zz!p#bXI%=54H?IGvN%Zw-RK>@HftbnJ3)F zWGDcf`|>4{^spY}`(FUY!N7izEeDG|QwttHKQb@N%CdkS-%aQ@p`s1&H%`D97^=_= z9f90&4{=FJR2T`%uJYI#R!G;@>|^7OwA_!Ay(%m3T?%ceh0;6%sx4h+4cup*H|(c= zJA=D8hkb(CsY!qvDqVp_$arjJ(Gsa+&N_Tc?={IBb1N|F#+yleUQ1{O{B>P-ePoyY z484+WqGBbW*&GQpipQ~_07ANdU?g!%;qOKzF%co2L~#CKWXW%G8Q3h)72k#QGQ^V# zth~P$=4Z+~^YW>yDkQzI{4>v9)Cg2$@=1et_w>Lz?b*M}5)upu#KteRz8lztgbvp5|O@6vT(C|Mv#baS4z}O?(K0=CKe-pF_feTFatUpR(OIh**7r;jwvgSp@B+h`J-}(KIb3%wTgVu=^2LZb)6}rLi*J#b2$Sfj3 zI-J5!8Tsj5i>?S0KwYHBk&`@fhp*Z7;$_ma*FNQpbZCDIoH>miy#;eFgTED%1Z0$P zc<^wjB?<~od_;;qU?z&gG@+{nUw2Rd3zb)>DBA-Hq$OG=Zsg=b7mI7vSu-c16e>NU zKcMH%1TtJ-_c!1&u>_+kI%z*)AdPnJ@IVaUNv4m0CdU81JIC?yag=!5I5J`s{|}NX ze$a)0*KY;1K2X3xdacbcPy&92sgs^um9yyaME0Lg(AofI_yoNAlq>#0bku;X3AL?N z#)(dasHm#SHv}GNflikH?qWW$xnEw|z(-NDH}<`310_ahL36edBv(XI44{DqwLftG zQah9&6hMjbaxoETod@2ar%9=ihKPO!_(7y@ryYu8l-j0StWS=fJBSaLHYCKwzr#8_ z4Gj&wv;nb@=}rT4cXxLS1YGUXJ0jrvcn-pI4?F@;zQ2I&Of0WyO*XV(K$WB4X$7R{ ziQskjJE0VDosYQ46mLGvP(7P-fJb0&eom4gw<6M$wM9cwy@qNoL=Lu4fBvWr*7dmd_s34Vy-LX7J@dc6bD^c5CA#!iZV3?UEHafv}3+PE19|>(os^0{l|+A zdc>6$!pNe`;f|HY&sspX!2$0Pgd>#l3e&an^74;*H(&>oqgs$er3rgK+p?-C~CM_<Zz2%528xuViva{HzFbx75OGvdQq&uJv{4$TG zjos`<&0tWeKr}<5WMGJZ@)2!>rv6A^CqX|ntbhpmu!r9PT7taA@qwEF1_Z7@Ldekq zA2i_K^qqh-s0osmr+{?5mubLle=8u+Y3&R7@Iewq2tfdk3>*@uq3=|p;DR)^n|Ypsodc+L z8Sr7z1Ps_B0(+yN#P=B{jXLXjDSMH%vn_rspv-lVi|Z6TnyZJ$4ba}lU;yxky6OwG zVdIjM!=Ub96%f$wUr#+kJ&@mkETb}2>`!Qi3xI|f++~(;?{i}vE=Y$q@Y=j6CN6$~ zmzM$^qxjw&s!@(S&EXXDTB3%JXM_6}Edm~gwV)1_V|9j7?<8>QKSRQd+QrA4c5q+3 zNFaN#89z@;r_~Hl2U<~DSY)H4H42;N=(0ASrpJh#-Jk!%YHC5p;kYaBz zPB4C7`FR15i8!vK?#X~q6(c4;#-qAFZ-3V{;`2VDrcsP~^IRKiFQQ?dEI!9 zg%h0vVAVoyyk^AiE{0X5%`5dRd>g-woj^rxUS}rT_>&Iu^!0E_*-h${(+32YGxtID zy^Qz6FTs8Rww2b4NbCSe>po9UXYAL;u&#iAm_~}AB4E*?OdK;^VzXqZJ(2r|YR$_S zVLg5QB(#%vF-EM(Ga(GdXp))z7B0ZYWGzG?dic#QP3BS@va;qN8<7f5O!p*CVKCpa z#vk-~xu`v1(zrY_7I{s1~9~%D89T1&-*E=;#BU9 z+Zy@k8l9m4EU-GxtGKw>t4sW+J)pKXhlqpNB|1sqztRmovYc0@5xkZS&=gh~aT*%} z`;1qx2)*!3;@?BgZUW`D7?Qk~FEDcBs<&@}FPU{dniRdrZ=%UMbr(Iug?o*)=nM6>ITrQYfCq#7x8!6gngdy-)= zt{Bk0QCA#%a9}eev?M(59_<&HUO#SsC_;x}XJ{`^n39=7zb`2Hu5lk$6vwABxqZAQ z^gn+5SOO$l)Op-q;#3g(r%EDpsWgyIPTQDZ;Y-;6B@=jF@E`#3GEDfVavt!DHmw0~ z=(Dd3oxqFK52V_3wX`hYrGAnw8!m?Q<|crI{7f9bP%(Oq3<*7udOTh>7|~G#!-hfe2OV46my4Wty*^PY*@JNS(&)S5MNSMR z`;FzhWO3>Q=JRZ&e%IC=wZAgjUU)KOqK~Y!@pB*Km)|jUk$^|AKM|2)>>`_B6CXKHYJ9CWyIvD^`jy1o^+o>bw#d$F*d~3Hn;MZZ^ z6i|Nd=;gI`mV?19*51uOQ|9Pp@ZV;ypgDJL>D{ndzp3{G$Fp`D2?`8*F0_a4K~*X- z6LwKu$)OUmVS9K!25G;y@KUi@6W(WF;(G32Z|X=N8Yk*44oD@OJ~L=4>qADbu7rpA zHNV^dDFchHTpVpy5?i)!)+p7|TCao>~DD+1{A_qan@K6v())LjXpAoiv}qSQ}+{-(tQ z@fVhsiZH>4Va!e*(f!{8^AfJBROpAJPnehcX*h2f=6y?`tXM9o=n`Zi#86FADltBX zvT&)W_!W*x=?NY0Geiw^0tP^Czu-lz%%~?LM%f2~?+}hdO&D&ye(h9t5fMFrjRzs$ z8wBq%I6Ig%mdjV9K&)v+Px5bU^u55OSytGormF%0t{B`6MX%_t8FHT#E2J*4Mo*i%7rJWBq z7Y7=S%wp?gjV13ns<+?=RbeM2lz3y?{|hgJyowSW-JY;XF_>@*818^LtjrevF!e0u z8n{rwDX*uRUIrjV_@D*CuJRs_t*B}1c#x$nMlNT~M~VR&5;Fhh&LWU1c6+8jUi$Xt z1u8Cq1`$vy5o999;BG=_K%r)UwzNQaE@x4U*bA_;d(fKk1Nc8NF77V6>7sEssyb-* zr$SA8eCKps&v5%fe+S5O&NYjdzyS+gG-A~Bvecwn2fCQJcA7DkmF~8--UHxYR0G?E0J z%Sje@m)W&_cT-wcGvkZNE6Q%Ef??SMt#@8{{ckX=wm&Lg+&zQAOk3>IsERXcpFnq& zJXAAvizhKSWy?%t9{r=4Hs{YBZ*=}=ec0}CN@mIg)Sztwi7qpE!w`qPKWq33W7vzJ zZD$V)0ERG!c>qzS#Z)|lR+l|=MDEo3ywMcy|RaEr>~k+Y1w6XB`u0Q1iz<2n8kVv<^s{o(h~FSFYqvO zLO&|w|GTIf%y^{NxZ6lJe9x(-7{9bllrQdzlb2M#9LH1ki=tck6;Hnk1|vtO)xl^q zR#YtP(94){v|v7P*!^sAJ%42|%7#?;N0|r{ImYs-jqz7!B;E=Q<8mDvBYlnf|3zmE zMwof{S(6#~3TP+=-GvT6ddXw`YxCT_GE1k6gsfg-tAlULXkTdO-oqlwd;4PN~k*BpR0a&rR)I~SpgG$=A`@&az{7e*M&7To!eVtE0s<%mErR0B?q zThNQ6>l}D~gLuMcHo68B&VM}E5Iv3g^aw)w!S~Zh5Bdv$>bC$!M?)ynMEEvj(3>r? zhuSEl&J!sujR~^@lgM;bxD2W|b#P>l1-!6Ci!;I|SQZCo7K}1X&}4fGBksOc zavboJR*V@}yfmNbe`yq9gaC#?LT+8Z9;_*~rZDngr%QTpV89+|s&~^)V^SaATDIbY zdrnnDL(j|W-6AJHtF*LfD5HDWA{_?9e%YM3TB2Lq^)o%Lp~Ev(S}g4g_uP)nvlv?N z;R;ef_0zT%`;`Fs9L`mV-)x$@yw$v&T2S)4^6Ej()Chwh$n#15L8Siq*B6wKV(b~l zD!o1u(%J*&QY)(Fb>TAC@=x2`g(fw={+{PIyx?wDveCfEZF>HhGzDxT;c)+_ z>@uK}ef_b>k(%SMOT_5z0h2w-l%_8N!;{7f6TMc`~2d#&f>4)SMe@A_rIIM6MBHWLJssTP2Zck z=1f*EGHM*CrtTpbo4$%Z!)v2`B#M3AW2#5}+Dn_`d+1MKK4oQm?(jmS^;TFc7u4Ht zH|M2S>I_d_&EihY>qz4Eb5ztRP<=i~keAx6ak=p4GUtbb*%>FOf5Iby@hhsYzmRv- zF|2l!!l!aC?RNIceaVG|%Fv|(+_pr~ed35zJa+bWq%z?)?!ORZBF?V2l*w^mm-b(+ z)wBqL&f3t<69Hfg&Gwx*ZNA7%fI)dG1ZVtUeuRropmTX^2|CiEXo{%?WqgpfOsv{Z zZ*12et)o2}nyt^GYVCQ6#(8{Px#WYdP|1In6vKxkjBj@l=T=A) zW7fF12Vb;*P=4keCm-|HU+rMy^Lpo2Hw|~Cs_cNM^D8NH_>=F|TivvEs<|&V*gt%4 zc}4wdlN7U7B-Z>wdmX67Qf>_9_37&0Z|}BxeD&XCv>9|3%y?-AQNb_Rb9PV1?O9SMO{b3Sn9PoqWybB| zo~4iOm3;gextST4KFm_LB?hdvz~-sCDd6E`XrTSdi{^*l77~B@!9-GG>dP0Z6ngnN zRPWlZ^jz?LaxeaNcBMGsy)@%&>eyimON@PH)FZO$+FA$5%X)MVPUXdN=UG@$l)*N^ zgq;U}-(poYwXI_FgRh>{n3JTFgiSI~!fBvfBN_vf3oUm;x#u-<>%mi`7l|e{{WdT$JheK90KTn&_ISgbLE2qztKuG{{iW zD&5kO59*pI-Ce`b9g<@q0z-F;M3< z^48oQ=7PP?%9@}N-uJS=t^-VqZ49=B<))Zwj^&G#H8R3AsHb*};Usrel4YA}IALA6 zPH&4OGRyh(D^^XWBv-j5Fd!JY=u?Zcw>Aq@-aW^8_D?g*58=rfV>!aMsuE*EMOYHRBE7w6hk_77(rNJTO^5=%s5Kj9g4x_vEBftE(s5*D z_|4IRTFN@Ksx%)N}ZFR!VsZGi?X z1@}MgYq2?Y0~}4H87^Uohg#SUkQ<6@K{WJzsUe_yunAm7_0XGxTom8F$uz%NPdAW~i(4lIwNYkmB01CCflXojr1x?%J&l;ZYNZ=vL`e?`F-nr!H&J ziV1a{^gZ2UiStcp{Bm$_M-b~ftALvkg*7Qwy4?5?huWG3|1|ju?dgLfW>JjAI?YF= zWk;W_oTqTKBh8gBHONYu&b&4}w=rSB&Y@+B`OA|@(-MOo6?$m}CKJqV5Bg(&jzdvk zM;YS0&|2>51U_S|1gN)NaHF3T#Pvzht}_C4Vce1c_P;eVGn1>jc^2@`R0we~Wr~8Gw{p|1ElxD+*kx@+=u$bS zd1!WbLF|e?Z`OcT#|!<8*0wyrXvS)MpXOnN*L};FjCQ8F^HcCiZ&H4oGOt2@oWU)+ zfzfYMkr~=A-KG`6SO4k(bKWV%s#WS|?cT35ZW?Li%95E`r|-7hfL}ZOYUzQIY%qjR z6cqP|EV9(5CuvjH!-`WkzMp44c|L~uQ072fCehUgC5sXx3Ue^QPOLJM!ccvG8$g5aT={f5f%-1GmOtMKNb zL_co&q6T|^7jhU!T`^(K2Oqd5dEr^j?Jv3)?drw481#RRhYiM)wpmakU)x$u?Q<2d z2a4G0n-N7R>s>`7$cnzeHm1eqXuXZf3R2yX8oe0&#PGZv{)T^SBo(?2zC^3?B{gB7 zlYw_D7V!C#sRH`4=E|FR`v6JyMov^vZ?&>o%Vl$B{zOh9=g_RQ#77_*(1Ke%2`E! z|6x@t&F7@M@b^lu7wl@2(~B)RH7O@~AmZCPd#cC%=$oPz{M37;pWE(eXt6{HGQzyG zWi>Ry;QTb2Sheine-!zR^$$kBz2>GzEG%WNkDNH=ZxG^*?$(Yz{WV%o6RL+^D#c1J z#-O^Jn^T%geWXN7&B#6n7+jg{-kj#rqUoa6^9^!IMBQgPh2J4+9v)z&JA@Zj&FKTZ zN#+}en}hJnEuv#}&BE4*LQDGub<)r-3Qzjcsbr2fUI)Yk}E*gkm99w9`>st5)W%BQ1~(#BB)OKYY&7@|9W2Xo)M*2bz@|Y zxQ}_Y_;EH-T+z3CsdHsZfh&Zo%H(1mTNlo!re?|#16t^%-5i$Ki+h)mIn6Dl9@(w# zQ|~H|Aa<#Rs_J3h@B{vDlr=IYQf7ge+}m+c;jLal%bBlEGp}reh9kU@r}Vc3cC-&& zFTfJO(M*FIEfvsWR!d9E&mD*V*xd~*Ox+>^)GfH6kf`u1B)A<0pPiX;DD9Y3g~a<3 zLS8{8fbWnuw%@a_vis+0tt-e2)#%5zNH2d6R8&c}_?x~8b#Z<_x4aBx$;d{2>&)2} z=|r)&JcEB#6Jof+64?zMPqLh+disp$-#5ycJO3io8!Yo*x5Te4ylh#I@XieZSo+lY zc4>bux0I5?20C}QmdhpEV`HrR?4KaarSN5ogsvAxY*OPlNB1ejDim;XVoh4qT9kZ0 zyEu?Ci#xXEv)+`cin32zAb{Y(Ls#!G-gpCUagB$&T(ST?xwSd@?2PWqiIuUHjV0(J zG8w3>&;%D`XNb`qYg^hypLF+UIwuzQAG5+XXDCH*R;{r#hppQ>)9l4Rvr%CZ%+-@) z`)1&`O7c>*FGyG84@GvSCMR@?TNdl#68vS6HlEYkRomw%RYrZ~wIAVNX6Z9aV$F0l z5*veSUdmZ(1bYk3OX;{TwE_Pw5=blwKxH!p7Dj4HiW1$iMra|I4}~>Av2_iY2Wc`Q2VLQ&T)~Juk>ynL8mPij~v+dH0kntlrusC=2Y-dqy8VUhL`d- zP$lv{5(3~4r;Mexxmrw@zri+2`RibG{ZXv_Ur+o+{H>C8L()u)bU{y@k@LoVQgR;d zGLkbkjYbC#z-}2|Tu71xP3#pUddsnNW5-GyNR12CK>WWDxLY2E3&U}3Sg*63$kp1F z*D&40AUcgB3(VM;ZEsaaVPR`un)Tm}Z(L`;AJvk}7G+z*d=6uu3~9Ct z&|8uE#~e@wYM`J4a`pg3H0TtmtErg*pagd+_@jK+wXN-JLwiu`qa)8`pg6Z089LZg zCZ+eYcyPa~6r9X-ooP)|iyx~TX4$t*~n|2gD! zm}F!-BzMYrPI6~;W?N-#Skz((R-$dJm#y2h2pehpXj+sxdKS%PVe)_Orp-`$xU`;K zH@4)mG^t0{1e$Im3^5Io*|hn-Yhqm7+`K?DkdG13f$CR4A^Q@cdwBN95z7>n=}7Y5 zmLlKojb`3W(p~9~-8J;(4g#!Bc*G9%dTdOyaB}if?-9E&MC}Bx(J3hbpz!&lT*T~@28 zwZnwhp3K;K%NmzMg98bB&rpzp>7Jj-y=?= z;6yczVpOrP6HLoSb)0-SMAzhSuFmrC1Lv5JsnnT!;qKM0e1U40L@NW#bT z&)-4hTMNw9QOC5X*Vaor^R({a3=Sr8Pwl4@hmZYQ>09DI4fgl5ICSa7xX{$~zn+|r z0W3NKsxl4y5&Evhi&Je&1chd1Sd`$)w2~UF?|8X8A zJX}ey#}I}dOTMaR)8bv})7GCtQw`Bbu-I-a zH9I?7Vqta6{nFki_hp_L+@#vEy5N5w(_=D3<--5Kf4qQGIt{-2`tM_&El%-bqeNXM zHJUJAXg@t8_G61N1P*5zIYyXSCxa3kxBOc6R&;bhenk^rT8!i1*0zR8UP!aolQ|mz zsMn)on??aoCTk*up%51M{TdL59MVtyfvl1gkyPMtFflUXyX>w9wHZN!-@2ia;N1*xdNTMgsfC4w8g_pKr~8j3 zFZ=hL>VGK3WT(#7(ut@uDu4dpM45ky%B}y1%40)maYiZg5SbCZu-cr#+VPB2b66wv zEIt68dkiEc;wE^w$6EYxp~a7D3)|orE}3*FHPf}V@6BJG403U5s|sHkVbolnR_|7m zmxir>b!l;n@?a*yYQ4M)?b@-BhCQqw{}sA&g+PXZ?vs#z2V#t$UuPo*VhC2-zb8%_^!{+-0nK^?lL=e&_UK zhO}_uLLlFk%vNlC484+j`_0)ns7o=2F0^&$Xz#8w;E0`je(4MfF);h6mXI`TVQuUxmsYWK>+HtApkA9s#$Upgp{yKfs|2cho-7|yKD%jb5GCr36 z@cJxp_8_W9EYM(+t`4i#>F^b%wkroQ+rb#PA%=N(@Jwn&P~#UFD5Stw@<0| zI0;+5AgFDZl$ccR`>uQSSZjBsd3<3sW98)#ehjUole6|blIWa}+wOxiNMhn;toz!% z|F7f&CX+>{x+_w!3QPu=qnC)emKwnfwT9KXY+ae_hg`d?wBWl!hN`u>&~=;rc~|am z5R~yXoa)Ieon@l3kX~-SR&}8zJ?Dy{vGF93eHydxe+uWVSbA=@HJm>5G4kMCJP$#N zpD-T?+l*u!Wl4` zp(B1#!5lg)Azo)JuDC-26S7HSUO$a5np^+Z6Kbr{oQ+Q;Ec)_QwNnLW=YHCHeD&uV z0!?I;nMhQ-Z&Zl5Ya|{2P3Dux>#(c&+wbbazBT1ZxRx$Wp%(fJ{e`7ECTam5-ON1 z<~yx}-Qqv(TlT9J=auA|FNP{AX7{D<%_}^U0hROni$niB#yk_7FZ^ZuwW@}{coi*J z#m|;{1Zlknoy4~>>HdhTYC=`i!;c4!%k8C*Iz6?CMvBRj|5vZb$<}5doJJM+km0}O z@UITDMvmz*8GtExx$kw@F1nmGF07oSFTJJqT6wTY(cMWAO>@jaM_bpv`9#+d>A9~X zHr2V4D-Myq2Bqmym9-pQnR^0R1pNUOKj)!CPSbI^UFPeIpSK**TMn^8&-lbEh09Pd+wyx&IkeSINAwv3X+-9NcMe9)H6fWerkjfj8Eyfoq-$7SO z9rYeE={mtl+911G0k%k2%}`&uBcC7jci4$QYpP^MVv_H4{W(|2@-N91dm=dNm{O;d zq&abNi>ab$Ys;4TOKIj;ORW%mc<#Bo^~Loh*B*)oyL*nKlUe=`S|(?^k$7KG#)=y!b=**cJ<=03 zSrkaX&W?Pq`%#^%wVvnFVgWNj2A0BgH~Z`~7q&y(Ze5WRVzyf2QVvw|jf-@2X1Sg& zmEp~#q!gl7W3Cq)$yZ#%L{yPcOBG6?(Qvd?Wp~qFw#oalH6KDaZ1WO&Bv~ zDy5g)OMS3y;zv6S{;o4_t;QlKqjgHf87qV+arSzvo)Toqk9(jWPz3;03KXp#mok8A zUOxqak-#fHb{8aj+B1E`F46C<348ow$E?u_xN##XPqsbL)PWQv$YCkpKSmR<|9S$} zx1`Mg;5&K0y_bt_NA*2GeLUZ@ST5|PirYH!Vzr2_c4|t8Tzic`Os&l-o18xAdc{;p zk~68sG$8Hcr`N5i=H??soOjeFEpQ_^P;@~f@qB|~?Uvhx8bb=ATlQU!54MV?p|&9J z%XDY908!f4gvofHX1%d2M<&Wg_5D#Jss+&oV085DN3X*xo<9=)ao~UEACfw)Na~7G zRxu>{!Itz(=YNhB$afUS$Zk}AJ$8TY6_2aORKv(bjb)n>QHL6p(YA%0%E4?3Cq*k@g@cw$vrXhD&et{){P8>FyWu{y6*^5)mu0^|z zYIEiAa(_4 z;_jHYQ?Oxm$c*xBo8Wm$c9pcth$bsRJdR7tur?&@Qjf&ajl@7}bKSUyAsjj%BR`iB ziE=>kEvX(#MLJJE=8@V50JMC-cdjUOEXO5z4^z-R|4|Pi3WevF-MVl{P3 zY$>aiZ93Fy1oOqho`uaPxf(Kj6j6*!URLLKmIGQG)c0TV{ZjVns9<`v{*!|3Kk099 z#YIw?T!`t*m(@az9R)@HA2`&nqX_>`A|bSqWZWzr5~k2(tEP{5&ncr2#4#UK53N4v z3hu244&lnu*(^wU>!KzbqnCb$0^utJYLBag+Xi?4z~ozi3B zytwn(Vu9I55LD7*oni7n$Mf@zeB7AqQ?e08qPBBC=8GcK(Nc(ALZj~QPx;$g${u?! zR!%AMS}x{kZVYzZuRF;JM#%8AaZ0vw&OyOb%z3JXLZ-ScIoY%hA4;zH%($jy z%-8885AJi0{g07*E+5rhsVcFplL_kQ)ri)*!V z_^ziY-A&q&^hg>=djA?K#h)Q3UdYUfTyigHwD&ja9?&?wqdfkS7QdE9{}wS$8su>` zV={_fis)$tkQ#pZ-W$dO5-v}RkkMH70vTvtiOKR2i|;hl2o@sg;tcWCAwidV9Ado` zF19B=QVtg~g0hk0Qh%LiVP%aF`jX3D+}mnLSC+cRqfWcxj&g9lvY~td>ADzEYH%lv z2KVVNM|X5t^AG>uv-wj*lHhK?I>Y3Pyr;#AxZ z?{Ub^-^J1$9oYTz0L(r6=^U~D$M1_LHJ(Tu;`BQ$&liOxlG15o?*H_T{Lqjtr#4{1 zv~{S^O()Zd)=hRq&+_%d_|C>VpCkQ)SVF1*d;LgP8PPp_ErQ=#jqaFlRm(d9D>heSP{=3o&U+?B7cQc0xI**BX#!aHp^PG zJl+IjzVb_F&_4yd{WyM!pW2WUaD&N0#n(qT`ueL%t{aSU)xEoK_VEl?kChe} zE*7D5sWs|@LD4ZcF52y`mNH$Z(F9-`N*_UGuvOUrwX^1m&q89-ExIHAh=jxYEN0pM zHbceUjH><^`HS3*e~O&*g8?1e0~txyDx2jsUSQX?%t5~O{plT5_v1fVwkH3U+v{r% zz{cpy#2W3$-wv2^%vC5QdaGYuM+w(q?J9AIu>uduq*A46q*h94=AtvpL^qv&mCpO(4tJW}S9s756|?!U%~yP6S&3d^=jbstp^rxwnqQ(LfZ_^Ic7W9& zYW!U>-8A!TX z7mG+)!F=}^D+8-)FzL?Abi`FWuN@4g?d)-%G?(Lk}yLFruCD%lHE|IVJhw2oFuA)h6ska?pL=h(bDJ#D+#T^>|agl?t8-SR`%&Bdd{ zEextG=xVx$i%i?!0k-vA;FWXTR&=x1!l%eTUL|9`br44m@fwnZUWYzDZL8%ki*2;u z(YzGCjqfdo*B8X%)q!gm-3`G4^8 zddMl|yw8*qqfvgl&qTpo8xjQ7rV4sl?CYeEiEY zx}u(6|08{VMx}`!2w&9qZ*0u=x$KOFaX^$v*a>$gK(8O8O#g$!(6LwtLekk;=&d_3 zA}ZHXxTJLie~`8aX~>A=6JWuV-9qJXT21Wj@Q{ORYf7SWKvi2?8>x6K+Dq&b_i47f zvCun($2qcROjWH%?YPw6k0hzMk7+1z8jcQqfni;xXJuuLTY0dHE_iMRlE^U5ZVloE zZJX!AoZL}HlxU`cz6&?RkR$N#^Nt)V@+PRbOe>H!IOQ0-ik{yby`0cT*ZAj-6+GK= z=l@SW#Q!S(^Ye&Z8u$=<$>I1@)*eO}h0aGUWe^Pna&lMNpZpw}(BsrHHW^;w#0O+r zG-Y*M>ZCh>9*pMsFP!J@&v% z`HC(OePsOs$9T6TG83xr-6Tq0YY?`A;4jLmbh>a)eGD+0p{H3YLf*#AycWn#Dtz8;HmnMm0v zvxb&4F5h121 zMAQ2oU}Wwl0=83rRk@!hi^TL&Niu{6H#PwJ+Xm``n>UbILKa+EA+S3o-WcjA!-bq} z^S+EaS<&`ieW?X%ylLd^hay$jPTy6y1uk`Sa})B)P{;)gvr3vGNK{UF;)v?H&N$GO zY4P##`)OV@mM2HGmLBhYn+ za$Ojxi9J@O@=%aFFt(LdHeYjN3^3!Wp8`MrU!#E?%AEhV5P6=p@0GyzB*^1CPdr0? zK9j%y9~Q%NS8x>cz;xKgY#Dd^zvDD0WRp!nicMLjw9|W=;fUIZy(pSYJ*g;@_oW{y z4(=53;v@`4?5|u)Eg#|K zP`KsF&;2yltfHf1;r1e4lvK7*-!rs~lMOM0echnucU%2&8~V;jGfo%zIwN)AykMEs z67qJ7mDxt@{emroS{imAe{2$=~1^MSei*{OP$%&GjJW+`> zKd1c!TwUpNnd(ZZD@4SHxg-M&#{?%^-^7Z^s;fxkZVSp18A;fnY zE@D=q6j{9ovOl8N0h5s^RaKfXD!*X^itE$SHmPN0o1S*sZgZ6z z<<^_4a|fRtE)qAIo=Xr1Jx|>3;JU&brZ9RQplXp$8&Vf1&I3-2nff zRO0vasJ#_et8>|%vE}ngTPtWVi!ipa_E=Vr*vb|flv)6+sj;MQppon7Va0s%aJ8+* z!S$!MH@$B<+<5ln;$2ebe+qLrH#i$Qzl3t`v1LsE?F^x)O-^FcS zR1-XZ4$(o4JI}|*99M#p4<0i9$ys$E%&toDs`4sPJixImFn-vx3SI|nZ9 zFJZlULS|$*lAnW36?apIiT+5ZmIJycWP%0@q%)3=G83 z3(S2!VfXO>m6fB5mq(O_C`5F zEzh9ZzYLUrJtujda}0W(AOq(0a6kJ9=k|Bb`Q;*lyH71AwCHpX=8Cba7oei1?itF*pM*&?6AF^*h;eFEP#}gSMXk0g$5KeY$I)P8begKC zZ3ZdE*-i> z)si zhYxbc{^Y$R-fSif=7j)N^ERRe#=lsy9_>5Zu@@r#H=%W@RcQwsfff5T^PDuj^i{mNv2X-$}( z)9AuNe1KwYWdC;j}YFXXfDnq@E?vDAkEDwh){oUvScB2cZ`uj-Vu^ua9 zCXJi*ZlmY<>K=F}?=^OmUbXv#ldSg-!7?IIPRqvf<$CN`VOt$+351 znO_fZUKgl}bk!aO|C6pwlQ)9jqWU?l)z|RZjC!Ang-_{g{g=B|hu(HAuNG=J*EWg` zi0RtaOYAS-aw2T>MIzg4UC<+#TDfgNtA9SY7b;TVttNbA;3pqF-KtypCqU$`3(G(1 z2D^Opvp2OXGTxyzu-+aCWsw`b9w1jfLi1mBL*RBjq|H^Q5c+5=uFP%=PC{dWn7Ft& zVJo{j-i|45O0iO#afsxZqJIN66Q=igoYzyoOv$3C2)EQV?yKg+d4*A|e}A!i7{Tp^ zi{v^Mi!G19;vzpth-=u^G+(e=whsz0yZYRZXdZqWNt(~2>NDOncv1*=!g2X#T=E6lb*uz${5+o4VM1)QpdtRBVoLjv>5QKqUj2iq;=z&tRS24iIzyO&F=~qM0ohKT$(s9G@pgSKz%5PD+AXeMT?j7&TmQL-G;vgo_2RR2g)OiS#;3T)6-r3cxDE%>4OGG zB3f`WL%YYW?q{FC0~1^L4Wx^eU#Q@MO(ed}0-wTjAC`DHzqFZc>Jo>O3Rk{?!tLNX z*#b3oj6$5u2zGsR$#_T3yQ&P<1geZze+Yzy$`x94Mpmhb2FsiC8$Pfo8&9?zI-|FE zNTX!Dab^%%7bTC8ho|xy>ftsWy_h>M?twexOp?_LUn!rx;A% ztu+kpK_S4z+zEKBJ%lOOAMy9uD_1OKSj)R^L9?1Mhb&he5Sy&wmY8jOXv{?zuoRj1 z^DzLHo~!oq8)Ko%aL@L7L{HYx%q!K-R~_?As3+AxDye%UeyIGUvDwNX@V)hN-mtN^ z)PM-O#2%f%>iGT(u0b-3zy0AX}{cmWuS(>761_bULb#MxcOf0#JPKibO#25Ayu z{s;MtrHNi!kd}<9eT%BJJ9L#qv5jzQ91#?holkhk<7ZEqgN&=p`@w$lA5zc`ysRM1 zB^%>xQ1YULyFy<`i?%0xI-;;x6;FYW-Xv=Om^yP|{yLE0Y9-F-1fD4$mv9CLdeYaz zh0nS_k~Q<)B`9HcK`LOIsplVg`3P_sYukHJ`+qn&LcBw(BmW33mO1)4%Beq0Sy7l5 zrq{E}8eG)evW>pkez1Z&)=kH@nt?Pi0i_*M(Hp&Epw;0zn03!QUay&%uC;H1u_6~7 z!N7$F{MKMcRU7Wix1Q;+7J}_WD0rY*pjblSxh|^S(XG!odiRBO?v?R1()bJ;MnOC< zZR9Ym2;++kAtBl53bs8jj$Dy06e;8deZ_p8x^(jk=a!4NP`XG}fXEg}(YW&Usp9Xi zS#u$0Q1Ygj5zJRDL{cHp1Ym5wma_p0wke&7nf=ja->0o*aGDw7$jwJwBgBU$fw1I_ zM*#cfC0z zDbH?2KL9q@+6uZynvR+BK}Q7+%%BGX~4&wBfl zeOt){SHHfGa4=Lh3qjxMI`S$l`La{5jik;Od4Jl?Z~L85eczS!hEZLSxgWmRk# z)3da^JPNIDx@T9RN%E3zhz<~68owKWT6GZL?w%=2a_}A1cbBr17 zD09;9qNYn8HC;oNV4X@FcKys@qZwF%rale(aHsiyRJtyrSzHXcgtQ5HUd9 z=wGRbgvxY{5_{AB?d775f;R%v^=@5z1=bK_#jMHDY|fgn!T0vOgDDWVjgOCqw!7Gk z61ygIXWeIA*S_r+4UO3-j;Zz1+x-6K?b~UGzNV(8t(i${^0M{9*ULUrHeDLVQ9*h2 z81tevQ03KdSps1oCqlJYyB^uFCTEPF6+4u6ni>wmJpwp^J_8O`xm%CpTZF2S;c!aB zOVZAy0@Lxf=l^pB~AqC~-hnuNOu8*zYyW7HK3IYRVsA$hSnadv%Bx{TrPCqYL zYw_9A=&P!LE|+#2(?}6|Fcjfp3UA@%PPp1@M~or`?3z0|LS%6MRWz<_lO0(N;*`RH zU>v!Di0H&;(RpV@NO7^%E;?uo>MyDK_D|Ji+K!$$LmjPEVdq-0{Ju{@@=1~kh!t!! z@#xUdkgJX(@mf`)3X7qw?L6ZG27}23k}G2d;snRcu&>0yxk|9#51LWTI+Q^#pleS3 z&c#HPndON}LHc~vZPCoJj6?3?YZoA8(AsD8y5eb@eQ z>@#LG4WjwhSx4kbk$Kd=7zZsF5^ z-AG9Hun^x~iY9+`@>smrq!erF5RC74l$&vq2i{ATB(1xBR;{Dnb|lXhS}2Z1+SNNZyNuWh5awA4{_0>_ilMw_9{L_!rxeO|wXV;pqKSYGB`#ST zrDM^qNkMBRlbN+W{mX?aEJ3Cj2)K)K=H*8DsCovOWyS1k{En(LiVX4J#FYK|q?Q1I z7mPkMVmZ%t7USgu#OU5_o*&CE9p9Zuz_J_Pn|oNYUi#V_t6pyB(!$#sB?Gaq%n2IC zxXk{=8h)dmWy`hCqFa_tN=B_p`1G#~gspa!R2F`w=UhhDuNK(mI>e6yzD?vKuf>py z8%C@jeL6q?oWE?4QEztgqRQpVmz_IG`-2A7q6Vs|oqGLx5Nm=kfO8LFhl8Q9=t#U5 zhm3khv=3`PNZQ(r6G1S8hypz#3tD10gyNF%>)hY}=8ldIA+MjuPERpm4(9p7 zjIZm+fF5Uhk2=ZedIS-1adC(9c_8Fqhd?J)<`?bgU+9l+nzge>X@P6u=9yv3p>^>^ zMf}#zwTRYy1Ys?LG&#wNIoi1I=brs5U$%cDFhn6MPy^MN>~i4wlxVKdyyE88XSQyxyY8Q#nIvC7abmjViF5a}v5~c`ty#-C zGHZqe759a3%@fhNyC`C}5X-JyhFOHXVOM!d{bcaq5H0zU$m$15nnpgKDvTWC=K@JSlYAMDqHVv z<9#=uXZGEElt#Igd=p&GDrs!2`(s`2YeS@yLX%RcVc<1!cYD>>3J^0`EJ-4Zk^&1v z?uE!Pp|RLPGW5H0yVGMiP$4|)+~8^pd_7}OKc0nAkbofNS`fM!vyI%81a(f~~- zDOq~tw7^DeZ#Iz2#?QWI8%&2JS7XWVu=A=84w^Y1^5-O1>ISm{F)G#_QXHBJUVSc2 zT`gg8pPnm|Ec$wu(sZav)Fk-~0xNoYDC3yZg|-7X>uAZU9%JFG^Fh`gxbf@z4f`Sg zr?IrmZ@l=DK|=EWY2X|$sV=DPrSN>vRAlnNInNH=b)-Ej(%>x634u=ltq25!* zPgtufh8in7$kmOFa3apocjj+*xGBtawvJI`?v*xN^6m^RdMGg~lHhrx5i4`Z%BIme zXbr*foL$}0lhGp(SW2BleuHH0RZ)3kSR>TO&c9emZ1ezc0GdVn&%{L^=Ae;DX$@a_ z-RfeVa>Nnunk|U4HLuur&O8}mLe>jcMo+|S3>42Gi%44)DTN8=r|lT>t@`KEJUvi3p6+@M9;l3Hh{)Da1v^vBz(tt zS({KNgmb!+WLsq3h^WS)T8$n}Qh#fTG$}i|C902_-grT)q zrtBz~k}=qGU7atxO^ne~>e-I}9Z!(1FGnV-$VA^o9^lZpiVtFqZaFO{uA(o(XSNdd zkRm$t?B6_X?oyXsxu*!>h1N)q{0Zie8V!ej)_FU;2qW$4BzW zAoX9{7<}i;VeYhq1B!#-;cq}Zc`ashm~o+6(PKWg>TaHqyvRy%L)*1e6fbV>)IT)R z{1&im(LD*(Plo(yJ&Y&J(XAlvejOI)&SSUBtdv!?hDyZZIslXL2^X^KD>Pl6yEOC0 zz6lfO=i>1n*b1s$_@2i}B(IlJj*|Q4mf|l9S8w88j2Nry1O`OAo5?VU{vZk&5*yD_ zZ_Dfl^=RaYMZhNR$nY<9c@OaxHctJiZ}Om?I+nycmvOqS-t2jZccP|whSoyqzLFN< z-T+O#jB%#?xS*;S|H*!5`3i@XqWQt|WG=mmt@fK|E`o;s}L_J z{I+M1$6?vt=n+Y(Cg_UL^XxO!!cnBCmWa&9Rz+D?hZJ-@Z2QTRvvqqYMSYRY`MP3~ zYz%QivV-4Xps$ZwfE1ZGkGd=X()9bfKjAWBx-B`0l$}CRV$GK*RUvlkHxK2WwYM>(w4D;pJbmav+xdH`&&4<9n;L+91$Hy zQw(BIboRs2&39;8s9?Zv)4o4N!EpoY@#oH<7r+b_xTj0q)verjDa zJTdwDXs#eC+dQG*f0!uMwQ2Ph?mK-r(a8#Fy0)AZXivGEXuU1QLS17Tp_8I5Q;-*K zTM#KD$$+zE4l-lF$q0D~7JStUT!SyPcF4lIX z8Im_in^T=zqESlnwyX7~_*d2S7QN9z75ZEej`R_Zaz<_l7ipRaR}_A@U4}F*mE@7` zG!@Cm;LJm{LAoxg`Ow8mcX=}mQ6g%t1j!aJ#8oG{N?<}Vm@xG>(t`cH%X>d|F8z&& zU}}^nRb`Z8X1g;>?7DfaJI10$64k=beG(Pt`B>r_P*rulh@gHUm~GOkcN@-~mzJV1 zd(0M5^dti1$^JX$vODUx$BF^~@2x;9Oj$jgy93a!mv@d{L4_s&Jop5B-Z)bpwm?l@ zQe6^LBB-39syv;Z)T|+mTfoOCx~C_V*m)Fl$)1x<(+aTYS;628@`Do{O-j2PxkFzt z?x(ao))}%dm{6bWF5DW2C}ibm%aqhA@2wLKN>o!QVO7=>ozu5wAf?goX-mw)EIC(Z z1j)7ZZX39Xl0Ub$L{=E+Dh@60r?{%6ojdUWN2K660{>8mZ7Bc4{=Dji5>!3QfzIdLit?iU4K8iXD$)y5#$3%g zdHKcq6AOOzDc_CC>!vfRXs=R;X(g+$tc^>GhI2OvaRW<<19NmQnz&p5i-$+u3jEIC zgwet6q!M9tmv%;ndK!7EDcUuWpCrNduwrU-RRz;XdRKil5%ne|&D$v|G8u&6nGezS zl#Y1wY{9;#eI&@JXg7`j+4%a)m4E`lq$J^#K>s+i+*m%|X%=f;71{Ot$^2&uMg6-e z^54S6PNUDyTYZIYYmrs7NZB}Y{p39qG=aR5U8|DhDeAqUBNzAp)H6cci2Zu<#7>;y z3OR#P#bTKOuri9krmP(bE8SPh{qEsa28oZZZCzTjEA`DIFtV7FS3_!M>UM?7e~G!% z?N)`5?9V4(Sr80ZD@gH4C@`>LCv}vxU@_-b9Zhm=kkZ{0p#>c8zCG!6?6Gu)Xg!kC zZSaspRoo4Xpx^?u*%Kj2f0JW4zb z3htBa7?0&eJ6uBeqlF=-eZkKL5SYk03%`)swJxVE9Tzz+PBEB)jL%L zKxDTlJ-Jy+*pw}_9;oOkMBzhamT7WS4;nH9&t{g7Jf7ea-M&24hrSYFRbpDS2Hc05 z1B{VB0+1}$Aeq~el6Dg*_)&;&h>*ecr`OllKT>-zn}0`#c1izZBgM{}&EFhV^kKBd z((I=Yvx6f?+$a8`K{_K#;E+%0e%EHg!>c1TQx$lKv~leNLHz>d;L3#b7jKbh#vRj+ zP&nkJrLWD%i$--Qhq0LG_9DDXb3ZZ-tc-1_)>0H^!8mufLtFbiKtzQ(B191nwJhE8 zo=s@M>zJgULkqrDJ#@l!iXfMb33GPnA?~|gQ5=m#jpw~(So~l6(s)}l)^{zZI&oMN zcu(Om;73HMnzh+4@#|f*OMwfo$3dy>K(+`rC2(di`tX~hiPl!g`t1$n6t&mhd*8F= zIlHAMuDz0|+iFX(9W@lL&YdwZb>gaxiMsRBtauzvREw4Fm_?%1Yt*UOdAh~CPI56y zOGB3@iVUcDY|N|)8r|qCOHix(cK=g~qr*vRTwKY%67H)Q-|eQyiwy{^6i)d7H$~l8 zPR_7*6+Vfc#K!1lUhOAbJ>Nh4awf%@$Tpx4e=W9uCpP=-Aeh`|SNR%=O5{!re5kW9 zM9e6BSG+ZQo>`rhO8a`~he~m(v(!?OPR31s6yH28W29z!xOm;~TVk0RUN|vSEioWf zD-16jiqG3$v0qPuV@KhTgenKR-^Fc>{+j8&0@5;>WEeyNe10eu&Q@U0q5aLmt;+U+ zRH_-Oa0;28dcEL+FC(e@)pj-Neqls3n>V}Kq^%hQlK3_HBhtrZ*9$gUCGbTk5lt*g zzyf4C+Y9V3{1<&ZPd7h#MwG@jL&d$=Bz*iGy*5qB=fQ{Zn&u5XTY|3URGLC4yp9H* z{x4K^UG=g!r&v*JW41mZeRMLM#Y7~IQ=@(8Xw%cS@iENQ;9*MmtBpq83v5to|Ng_j zgk!g6zOTTmNocQSq6+ojaR+!-)nz0~xD!BN<0{3ORl6rY$fKxtaDCm^++q^d3^Ne& zc%D_$4-8w%B1-HScyYrkr3i9G@!^4k7ghPhQ$XeYkyqeVYah!4Uzrv0j&}pVos2|sY7}V?Ubh{m|%kWiA#!1CNwir z3KQy$Wt?sM5ala7GAFi^PNm4^|1Ia?Qs+U=Z8E@%pN4$M`^6x@$*K7w>-#mEl#WUl zW9uVvmmwR-(cHw>8rtenR26t|vZ`(6pjt~$t6 z&u)%yfZJzOY%9s|Nmf#`#J4yh?eZaSz0gxOr6{hZy-~a}&>O0~ac};` zfNVuJpR-%~xJsqzV%I4rWEu{g*v3zAHkJX1Pc($dUW1K25_o6-YF^r!TmJLS<^epb zN(6Ly(1$y<4(OEcphu;rV_sUQfOO_ov++TN1q1yPL(bJPWL=T9l7af-swk}eg?pz- z<0RsbK|5?_e*dR1aB__XUwJk2XA!_hd9Pqzh%m-D)2~fU3=eM)FAffmN5?Dksuh30 zt6wQVeL#_|F=Ts;W^4fLjYhHUh({6JCFxpzdDn%jJA&SV`^UeIecYV`D^0 z2`>(Hc6)FWRN$Q`_kzQmVFB2Lh&_}_1HBb&n6>Q123i2ID6)|=Ljl#(=kZCEI@KC> z{`ezT@&<|G33@{Y=H)>!!{39jSsUV~Ppm|4NJO z_ql(>CC&W*qv|T4qFT4`sMi+ts)#{|(kUg_F~?maM)1Znflb>nihi{gBA$al`| zAy>PZFq*Se`%RP~kUoach~nqGpBzkfjOUbyE)=egaxLLD!k9cVcchD6x0x?qq2tex z%X>!=X=0>up``rHff=xCA!yQ;f@)959nt}%{GUd9o|xXFq5c8d-%en}UBS1nMROMN z21nZ8XjXK{wpthv*r{=3F*-1weyu4GKq$hl_`L@*M^_rJ3s!IS96qlltO874F>=%w zrA6}@*0yHoqqQR~%(88V@0QnxVc&8<*res?=%@o(PztJjA$PP;TK&hL{zba2&1_5t zayVS=DwLQI07El{qkOXJb(>A=xn7}9iasv2apx2Oev=+j8b&y2>Os2{0Mqap;Cv3D z4X^e`H2gRFLFnOlaPZ=QV4FIyjLSZ7s5X#WZf#Dk~ThNanFt^5NOsGjWGxsy>)dUzD3;GDiL9y{aEuJMKw?ID z<+;&LntMt*E|xt_Xi5XUc=4U!nd7z6`yYS@8ieh}NXXS)m-%cOWueBkVBEjDAz(XQ z33!q{34tKw1HD~X5$&gxa#m?oj(X@GiH*Zx_IF+la{K*?AeJH95FIRRA2WLUAijB~ z;G1U2S8$O=U9+>Z)FU)DU;lPqCq|2=aY5}D*jVs`hMcbIKue?C=!7AX2IFG>C%r@Y zTwV1ar%=ZMZv$~?RZKB5Aw&e!)H_E5zOUKTr!bf!yyCOGdtK#=rbmRGgqPf&dedry zEPcI|HGj#x=||f^bIFF9-yA(e{AA?h+}(cLYIK8TEq7xowAY@mTqFGIy~8MYbx3J` zQb1DTSznh*=?maMa2Fg;id(+EgBJUtLe>A17jqDiK>e0@>Ax@WIwt!QxMy>I*yi4_ ztES>x6bVf&egUlYYeF8z*6b3(3*Q$TXE+6q)Ft`Vi`DI4cq_LjyH>s?oDr8cpuE3P z)4`*s$gVGlv96oj&*GvyHI4i=ANnjYZo)sk1l`LDhhztOv!VV*-0%;4MtD2I=+53M z%A3z4VCOWvVz(1C_#};|oCe-z%ma4p1Au!m`~SVike8hr=o^j-wSiqpfRLo?MzTgj z)2}PZSjgvRK`&%o{V%a>-XSx);e9c=_A{F!33y!mKt(=HxC}K-IE#sgo3Z+WzCNN% z92iipz4ngYclur)>*FXzf61~k+O>uO!rNiS#&c%g#d6l_{tEHauLmDF+TDwyn7LfD{hda_xhd6E)Cjd=KWtxjZMS@w2W3}7`PDx<-KdH4T zakp~uO*JCJbIJ3=-ui?tDni$k@{9V5)rq1Awpu0g>MNrKr};S=2HoEGC2lvkHCP3k z%Pc9Stu&(}1cdE23J_`A4hE7JxO$Pd|2(Xfr$f_ZRh_=MlIZwp$r|wc=xKn1Q3Or_~Jp5_yci z7SgKL@*bPd8}sFOubB%KINHrKuF#9|^9wlACG*ZL(EqbI3g5!j8tV$++r$@aj9`f# zCi2>GEv#SU@u(&wN35p(`}Qu}qP4@tPiny3!2HFroG`SUK|Rha_|57pW%<>&@;W$P z8=K3Ry60xh>MG%3+bLxF%0qR&7U3-B9!}=-AZ%6ZG+>v9%OnhDr}%gCGjQsLuuX6X zHb?!lK3Y4OGyS-p+~n;66jawslF*rq*>AmJi&E+TI*X=D$dOP)N*d_h=-@E6H}f?G zmaVzpsdmCawh7(n0IK#`KF2iuK9HhJY~C4iJ_3&6gk@xy$ESsXmzjFp*Rp9WrPE8q z1kB}ZKX1mjJje4{?e3RWf$sX02_Yc*z%=!c{6rluz`)(BBDMYNi@NS&M0ss-fQ-#R zPRZ8$0PvauJ~eRwRCA1tS}yqwbyllLtAAXSy^NWAE?6aT>GNYDVRF+uV3-{S=-GYed}Ksd56&@3wD;}gg?*3s+-qFKAofG$9^Zc z0r3SAYHd2?h5Qpbd8#KvC@pkCekfdm-q*b>bA!ED6bx<@lOd zlo#49`c$YO%|r{d9bVm3dNgHf1+Jgu9OiQ)>; zDq$+z3>l1+V5IP7sCD(PVRJb?pvF%(Q_AUVV%{w2F&@N6@FCoy85wSSB?>!*NB{BT zPosw@V}AV-6c*SYbAyBfnoRy1BY5T|zITq6%1-(KX5hF2c$Q#~DP%bQ%MrK6G77KI zQ13izt61b)>4EXlF&XHSYUaYpY?V5F|T@zW8viN;7TxKhA5kW zJ=6J*XCp0!)B2(|$F>M*6JB!Mh64|5yVq}B9N1)@uW0N@rDcM&=Dl7JihU$KEY)or?s4PeMh$q3Ex6aZY3PxaI0HS9 z1ShbY`@h-f!Yb&&e9f`s7wKHd--W%1(v(EsLUDd1z2bh;)MQS7Qq8V1(ra>b|_HI zh$N$hA*ybkrv)qC2|Pm!tJ)(B-GI^S{ioQB(!qW@C87Z}dVR7!5{geyVG)EEoAVBO zK{D2B#R&MawZPZ`VFCnWjb(Eyc7r`HzyplOyB08#g1~zTaX9@3!E2DF062BfYVpTl z{D_sv;)aHTbVGQsuyvox+6+HGL%y{P^+i@e^{t*<=C$mDIO$-zD^xti z84d0|!!EU9gRLLp2QczqdP-boYKQYpL$6`PS=VP@iAAKRr@IYap>I3a9KKG)C-=R`w|zOrWbR!Y3Y;@OQmNzmq4r z*8a^PcJ#6RY@8)wV@6uX{ef-kG0}cKUH96H)wu3~f>Au)t8(cD!k^Ho#g(BpcmmIiGm7k$9 zaI6Q|M@Jt#3!(96G_)(?(N(|(^iHxEm5unlf_=@N(xuLBRGw?LeuU#DN1&9tLzm)t zEnXFq<4NJ69I{bkEykV)QUY-JV|2k(QJd?CAEEIW!+z0>-|uA@&^VmvdnS7a9F-8m zN_k&>im@olY}f?)$q;2VS^WE^Wo2m>Zjj#pE6BAD$?Le7atKX4jg6Ze{;*`e&?B~y z)-yM|4{U#s3Ug9GA+jwl6{x3qB3Rhc^kr}z2*$Sd%8)Z6jo4p2;-Am9;1D{>JeD=!RT2YWU+o%1)CK)QGD8v z(miTwWLR&QO!L}Mr8#FKVz~nShG!mf!i+$IR@#}oo%HQ=O6T=vW&u@kp%lkA zwx!Zhdo=FBFb-lYu#i1MH+0tJ=v<&Zp_*EX;er$EIO=I!fArUmVVX259+?QxQ3pmtOK@AeTF3P+2fQvFDKISW_{jbu`i>lgS=m;c$<7Cl)4 zoMp>in+v`DEP_X7bpvV=7LTo*&D(*QB#G!;;lPI9QXf7%8owW}HS^Ti^K6@%B*z8W zzC1SdW?gL9*v7YSgVr8D3WO9%5C@qDiw7XkOaWb(7`sWO&y)?woo01-c9%18}eHLg7|&4@!Fv##yyYKn>b z(>=eT*bs^K_^Csa1n517gNnM5i3tD6UH!Jkl+8=6Cyq|H#%|?v+cvLsKjcQ3){LvV8@uj+D*5;2iAk-*$jr znw26eXtQh(oJd7y3em9|n9@Q#s*ztubwf0*OLL?A5WS(Az`~&*O^^Admt+^SEIRv; z9#aeQ@i+5oIt)6JSMXNT5rz$GLv3r>udQry{tHMD7 z7HLKtMp4iwW$iJ(EohFtDVH@M& z$@_&@e?D8w)!oS5?Csy`&B^a9vNuQDU54zUH?%w!_z@mt_8{_Jt$e+Wd1~O14FV&p z51{o*&G)-2<;ELynF=#V-Mf>}BQ$BB3jI!Uu9PO=-{om!d?sYATns+O6o$I5`$2I! z&^fU;ivdt+q4QGR%+YORd0JTXb)Nq;&^ zW;!&~tuG@uV_d|p(OD^=wntz=3-}qf%XYS1QNlf4WGnZ`QD-v=LzI5jtd$9!qegWY zBX^mRFqg^x>(0=Xj*(ORu4PPu#Rz6x!SD^{}Q#R*B%wvr6ToTkF4P*lVa=1DXH=|=_!N55UPZUx;SRGo;=V)W() zGX}6;yt#%XKK|a!$i0JGiKp+^`SBX&2b{WMFPGY#d!!~Ixj2DraSG*MX*Ks57=;E? zBJ}wuh+isk(Wq?mB4_1=ncMm(5l#2?MJ`AUjvo_3_XXzCsjcD=^&{op1#;6VS^2$* zS7^Ndv9<7H&+j*B?IL5Hz+GaJ>?GcXT91iTU;~bn&b7IbZB#pv2L^`u?5((CDOZc* z=4j=!UEgyGLEU23!{)f{~>9qHf0=xCv0vOc+JI$xY)q>!^oYR1ivb z)MwTb3p{kaMJy{po8G>>y<^S396};YWjAOAegLVur#FYqSeTicV{SalvFa5>De4;( zNOc;F-@kAleglJ?RDzQ)@RofO{@{5Lh~ZXQ?~dk`f%Ku$hw~{xNjur)Z4D(`@HQXc z(AY?nvLt?mTP_(t%hr+eUErzv##DaMa+mqg%Em3h84yv&LO(OXW;LBcLHDb3JS}^? zX7@d2u0*0r>enEhE?TNXQ`UgaFctC^T{)8SqR3kO*tx$^@#CUFoOFOc$gv&4w7$7o zYKi78FiALsg6Cj+G%IsS)c4`RG8Ro7*>hl_?AR~xOK8@lxZ)e+rZqX(({+?O? z0XWYYt-v@PGxA5ZMD~TgakP7$%hEXcV$ZvG@1&5k82b$6Sgfw*Sekari5H1PO4f2M z#Krj)*0J61vMD_6rB={9_I@w6nN$XLBL$^SLzVHMjUR4X{N66jBF2wnj?G!9@&3av zYe#DJj968pKt=ig&ewBRiRHZRp}{ge!S9)Fq4N$=jB7xVahUAw761T@XLx04h_l+Z zhxTkRqPSkYv@-Ggv^)>hL2)V*JC`6~F5Y8%cQQ?I*k8Alx@@Q`9C9i;=>-G?x;{O6 z20Jot-@)S`NU953tEe;^i1NybEU8p|rPORxR8>s`nhKMtu3W*#KRsb;x~;%QKLLbW zfUaR2PG}$xOydh_fbDOZQ%%ztTS7W?)j(H_m2zhxdM6cHGPFR7LZ(UJuJ?rm^Yp^I zqR}&A)u3n@BxOe>h-ETiUVs@vw4XeuW#P(am}kkg8Mq5lAE5Xl4vOqRtgrIy0GW)$ zzMGfn?-u2HFAnW7{iehGGemAtSs^(bwMIAJ1Q$@8Ab0skURp-^wgzmdc2M_A2X;4Be*XLxJD6-lhs;Mo ztwk9|o0i}aCV*kB4Z0>&R8`L|mRz&!GWq_V7FEp+jM8!L9tEjz8Y~+Jha3!aG{cC% zxkWx`$G#xuQKF}(w^)scscM--`uoS35);RuH9MJC+WnKml!gdQ0EKbszl3yy&w1ZB zZxmOid+lMGYaBXgm0=*BEdH;X)wov1`!!PU`+m?59oR{$eQkX-KJTyuH+phEfKac( zuQ}K%Nsqp~WE6Uds7N10m$jslG=|!?0u<7%XE_cR3k3G))-fk=ui2D z;C_EO=od~IC2supx?Xemd!K{yISTGZ|KD9!CA(2s+Dt-XoC?#!?xLNo zVEd5(iu-3DHu9Y$)BCO0x*l*XQ6KYb%;`m~#M|&&7O+2yV2l9h0+6Fiqs_N`Mc0!= zHzumj9EpH7Vv(isHqfb1N0oGeLgcB`(NKC*cy1R^6mA2xTxe|J9G!5O{P6+0 z_V-iK2-q4VpcWhS0AUvFkf10ijI-3APTTv$6FPTABi-f+sCohmn?X?g{Jd@2gUp-0 zV%r6Rh~soBH0|~d#f$fv_+RSvr?)qGC`iaOnhd-~L84&wT)#|9dxP5dRr&Uo8oaZ> zZ6y4?+Nl53vi}rXkD_@J{S+^2t*3iFiyGu%`~0!dB~oQQ#K?(9m@f8aSOe6|(?Fh!fAj(9RC)jcH>;;$|DzP!28+bz#5T5*`~CobaOIc{ z?o~|!zk^hsJ}Tpa@q9>G-TeCRE4;`yC=6j@+JB%yGzQbmv}?d0oaGrokjt*b!2iZY z=#L*h)uwYDxFq0A6DDWNrkhw2IU-?An|&Ki;bTr7xC}(3j@x^*S9_RbLnvOJAns9M zuGME=SY#t|dCpR#x(Pf`&z8QxXBH0#T6H2~b=8T_vP%V=NVWUa;usM;wXZ-K=%~kx zERMG!DH_gnV;~TW>$te-YPgge;0#nBH>y#SE;9f93cBByegMHp4QobfO9u1FvGsVV zE8Ot~SJzkd^!<3vqsLG_Ck%@+n11L@zuE7;5((;d3apQ?(kRTvoK%u59h#aCt;`Eq ztKOq@ssI088Zz!H9yLkB>8E_P1K!$N*Y|GI^ub#0$apLDpfS=vu-LCRthsRvWWJMZ zg<_zsFx79SEa?;y3S4p@lhpBNz2qgYQtf+vOpNp4an)9>YS67shnX4$(1H+jnvI#C zpU<(MP~8G{hrsI7CAfiiJPl1S;S~@aol%Oou6&G%5eMoWqUWB^J8m|x1AsS~#%{CX z$-Wznrl20ZxNjHBhF>$?T3;gfAvdclv1(m|CS&rLkRA@8ONje%x5x5flH#;`BTDrdM%FHIoczBc{2aZ#s*aF=j z-$;lU<7pD)q`G>Rhem_R^_DK7y!QVVEH)a+pClV02$X#PXT74%bhKk}MaG#gApedz zL;<=Ao88PMF#kr5tsK(F#ErGkF%3Z{CsF zp8%`;u&IOJ;>RZzv2R=~tcId)1>1a)kTK*LeE`IthWBU1OMw8P*L9{8%tbaz(Npy9 z;JFS#9ppkNGv5)Il#yr&=v7jzK$V6tm_QW%95{APfpdlr^ZNKCsol-fgrcFUuBxB) z(}xU|qUQf!6}7Rm`>!qfE0=V^su_OT;Q-&h zQMmXS_)yWuqHKiLLO#%e4h#+s2PvwyZ$1cQ8Uf~>s4NIkPtYX)@z^IK)|v!R(7#8o zOXJt?u#!JO@>GgCu>tyR`8SOuLBpP8NmPFJZQrUa3n~1RbNfo4lPZ7dTI!KnDS#KV zJY@$&`6gO>z(mbcvg?a#G*B9Gb8|lpx-8^#da(oo1umEb??$RA-+Ghvd1}BVS^1NN zRYy)nCbc=jFBNhSH>zO-@k6?H@i-bCWf|78Z1U|Lf7|+Cj6YN<40OP*lr;pa(r`zj z_PS!OE{sna#-zi66Ia1<*E5T|`#A-bL>ftReU7%ZdM75ad}3>ea=mi*HN$U_@(-~u zm9Oe9zg&o)FHMZ2tPN(i9$8yTd9RLR%Y#fOknD}aV=lJFTr_yG_C=*neY?=bw_MlU z!IF<^f5nbTC%ZN^=gh{F3+kI;iv$xQ^HVbrvX6{bR+qGeH<#NH91l3;FDhwS*)({v zNf_Z(`ttH~xf<+VgahoohKS3e0(da&)>6j=jD6uj30F(z@bg#SGFz;>?#X_M4_Pav zOlEp0h?c%R2VlBLjn`rF0cat|Xz0o8_FWV(6=sxZt1*50C7f&#KE^9X{ylhWplaSg zE}(5tkZ20O`Oo#*q+z?m(7IULwi5YtwX)-GpPU`NZqOLr^w9-d=sUo~loc;T)RI%2 zj@#%*?)VIZ_?&J%;hJTS1~ThekBV|jFn=|})*z`IG)OQN?wsLm)HzTjNir||9QMV$;aRNNS-*^Vc~#}^bWgS>Y@R8;yzdK~`& zMBLzyXCJ>va&@nOn_HQ|b;3JKs-563diPZLGxU4@TuIat%jt}RlOC1W_g*AtK{9@) zc-VY*orTXpP~X0QQRybCneF>S4i(sl7_Tiumxt@D>rVCDvL!C@+!y%ys17IPw-g&I z_#8)KR0ToB#ky=Qu`&~Q3huj>0oYCfrS4HDBO{~Skz+4HLTXs$YHB|AZEAEjQlzR( zK%78A<#*nmz3&_eX&RDdG$>+WAsAL$6TWnT_nn`W5@jM^RA$* zwpj$ma-f`4TY^>_&|;y5r3G^1c2jBr6-Ita``PkP(O`>gQy&gp4K zF?>}%yT-zITf2@eI+Tnz&~9+>oqy??8G+*(6`BC}b9sJ$6#Tu9``yjq$Dlk4e|hrn z^eLP4zVmZJ^k3IyBm~l5h^4ll*Pm&LN2=@q4UH!}zf0E2RGJA#_i_&!C15QGIQsdG zt+p_f4ev(vsne(1fF~Ki4~wLvq?flhnP60Ku-Z`J@=QO(7Xku>l>@*D5hmiA_wodd zP8zp+wG9@qfGK#^`=SS5pOw{12uESVs?)$TN|N<@ShMehFcJf?9IwHPx}_?hVdDke z#=wApf}-^PnGO)!UIgKn!Xge#>+N$r^Q4D6_jh|$9nNl6q*F}mQs4|2fPWqu4(6;{ z6zfLy+d)bvz!F}H-`#HWc|n&gH1gQby}_Ffe`gE~dtj5SdtE?9DP9O)l0=IjG-AraxL`M6mCYs}30r>vNr^^K4>;Wo>XSD-I z&?IJ4W=>8{j6UEim#N$iRC^1xC{TC`E76&;>0pI43^1JN47rK(5?%+V%Lfa;6#LC| zEJPc1)n2~o2=|?ZEXt7M^d&DJVhfK z&xc)Ex>dY{6{gXoAC3*M6!E(A`Yol>nw!AmloSErE8)>d1lTr{$VZ zgCF!Q^M(Cz$WuogJ@V1t31OpGWwLDI$fXFV=W zUU#M;^fjrmbQ=juRk>LXPVuVE8-~iAq6WN$`k%`UZ_>E=cBaKX>Stq#iXZ7#9zU@P z*?h<0vHfVPz!4AR!YV*J@`CL|+jEQ=Cj-M>{(d*Rra2S{0>>C6+LEzRAoe;AlO=}) zsVOM%5c0NNH)dL#=-?dv0Z=ps_7Ih$5AbLx!p2E^oC>C6yy?Riu4)A0>Xe?Io+FK> zz`KJo?=dSU!n}m&k)r9oQdi$_ve!oVYXKY~{&!Nw+ zFe9+1v$*CCl=yq~q*;czvxVm*22FYN(PG*<<~F)=QYgad9Fad`lpO>;0hA_+;S zBIsZ6JrAt>K-7ktF5lUX896~M{D8VKvtOh;$JC#rc#_+jN=Ws~s}pK6GFA4h6xvw7 z-va}zY!z~Ha>t7}6m+%TGfZ&=s*;DuApl)G*M9@pC#P<#t@XeE!u`6CSvFAPTFxhq#T zrGUVI0Y!!%e#(H*{T+J=mhqpfj!Ep2YpuQQkzpi6?iA&VI`V9%lYH>glgTYOCEkq& zuA-%>k)^&GP7rp+#bzmqEH_^aEBbwOYpABX?Mh1a*gf%9ldcb;!dwB7`wm4ym}(9K z(?v_|n$OCNfXNX}TcGVkk~p?n+g$D>tMGuYT|W1%0D;CQ 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 #FI^~f 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 z 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 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 452/532] 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 453/532] 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 454/532] 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 455/532] 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 456/532] 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 457/532] 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 458/532] 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 459/532] 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 460/532] 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 461/532] 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 462/532] 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 463/532] 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 464/532] 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 465/532] 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 466/532] 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 467/532] 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 468/532] 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 469/532] 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 470/532] 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 471/532] 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 472/532] 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 473/532] 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 474/532] 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 475/532] 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 476/532] chore: update krakenuniq --- modules.json | 2 +- .../krakenuniq/preloadedkrakenuniq/main.nf | 248 +++++++++++++----- .../krakenuniq/preloadedkrakenuniq/meta.yml | 7 +- 3 files changed, 182 insertions(+), 75 deletions(-) diff --git a/modules.json b/modules.json index 8956e42..404ae6d 100644 --- a/modules.json +++ b/modules.json @@ -99,7 +99,7 @@ }, "krakenuniq/preloadedkrakenuniq": { "branch": "master", - "git_sha": "13b9d4854593c03e5e25e8a8f47462542c2c0dd4" + "git_sha": "05649975c6611c6e007537a7984e186e12ae03af" }, "krona/ktimporttaxonomy": { "branch": "master", diff --git a/modules/nf-core/krakenuniq/preloadedkrakenuniq/main.nf b/modules/nf-core/krakenuniq/preloadedkrakenuniq/main.nf index dc9b5a4..0ecacee 100644 --- a/modules/nf-core/krakenuniq/preloadedkrakenuniq/main.nf +++ b/modules/nf-core/krakenuniq/preloadedkrakenuniq/main.nf @@ -1,4 +1,5 @@ process KRAKENUNIQ_PRELOADEDKRAKENUNIQ { + tag "$meta.id" label 'process_high' conda (params.enable_conda ? "bioconda::krakenuniq=1.0.0" : null) @@ -29,90 +30,195 @@ process KRAKENUNIQ_PRELOADEDKRAKENUNIQ { def args = task.ext.args ?: '' def args2 = task.ext.args ?: '' - def paired = meta.single_end ? "" : "--paired" - def classified = meta.single_end ? '"\$PREFIX".classified.fastq' : '"\$PREFIX".classified#.fastq' - def unclassified = meta.single_end ? '"\$PREFIX".unclassified.fastq' : '"\$PREFIX".unclassified#.fastq' - def classified_option = save_output_fastqs ? "--classified-out ${classified}" : "" - def unclassified_option = save_output_fastqs ? "--unclassified-out ${unclassified}" : "" - def output_option = save_output ? '--output "\$PREFIX".krakenuniq.classified.txt' : "" - def report = report_file ? '--report-file "\$PREFIX".krakenuniq.report.txt' : "" - def compress_reads_command = save_output_fastqs ? "gzip --no-name *.fastq" : "" - - """ - krakenuniq \\ - $args \\ - --db $db \\ - --preload $ram_chunk_size \\ - --threads $task.cpus - -# for fastq in "${fastqs.join('\" \"')}"; do \\ - for fastq in ${fastqs}; do \\ - PREFIX=\$(echo \$fastq) + def classified = meta.single_end ? '"\${PREFIX}.classified.fastq"' : '"\${PREFIX}.classified#.fastq"' + def unclassified = meta.single_end ? '"\${PREFIX}.unclassified.fastq"' : '"\${PREFIX}.unclassified#.fastq"' + def classified_option = save_output_fastqs ? "--classified-out ${classified}" : '' + def unclassified_option = save_output_fastqs ? "--unclassified-out ${unclassified}" : '' + def output_option = save_output ? '--output "\${PREFIX}.krakenuniq.classified.txt"' : '' + def report = report_file ? '--report-file "\${PREFIX}.krakenuniq.report.txt"' : '' + def compress_reads_command = save_output_fastqs ? 'gzip --no-name *.fastq' : '' + if (meta.single_end) { + """ krakenuniq \\ --db $db \\ + --preload \\ + --preload-size $ram_chunk_size \\ --threads $task.cpus \\ - $report \\ - $output_option \\ - $unclassified_option \\ - $classified_option \\ - $output_option \\ - $paired \\ - $args2 \\ - \$fastq - done + $args - $compress_reads_command + strip_suffix() { + local result=\$1 + # Strip any file extensions. + echo "\${result%%.*}" + } - cat <<-END_VERSIONS > versions.yml - "${task.process}": - krakenuniq: \$(echo \$(krakenuniq --version 2>&1) | sed 's/^.*KrakenUniq version //; s/ .*\$//') - END_VERSIONS - """ + printf "%s\\n" ${fastqs} | while read FASTQ; do \\ + PREFIX="\$(strip_suffix "\${FASTQ}")" + + krakenuniq \\ + --db $db \\ + --threads $task.cpus \\ + $report \\ + $output_option \\ + $unclassified_option \\ + $classified_option \\ + $output_option \\ + $args2 \\ + "\${FASTQ}" + done + + $compress_reads_command + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + krakenuniq: \$(echo \$(krakenuniq --version 2>&1) | sed 's/^.*KrakenUniq version //; s/ .*\$//') + END_VERSIONS + """ + } else { + """ + krakenuniq \\ + --db $db \\ + --preload \\ + --preload-size $ram_chunk_size \\ + --threads $task.cpus \\ + $args + + strip_suffix() { + local result + read result + # Strip any trailing dot or underscore. + result="\${result%_}" + echo "\${result%.}" + } + + printf "%s %s\\n" ${fastqs} | while read FASTQ; do \\ + read -r -a FASTQ <<< "\${FASTQ}" + PREFIX="\$(printf "%s\\n" "\${FASTQ[@]}" | sed -e 'N;s/^\\(.*\\).*\\n\\1.*\$/\\1\\n\\1/;D' | strip_suffix)" + + krakenuniq \\ + --db $db \\ + --threads $task.cpus \\ + $report \\ + $output_option \\ + $unclassified_option \\ + $classified_option \\ + $output_option \\ + --paired \\ + $args2 \\ + "\${FASTQ[@]}" + done + + $compress_reads_command + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + krakenuniq: \$(echo \$(krakenuniq --version 2>&1) | sed 's/^.*KrakenUniq version //; s/ .*\$//') + END_VERSIONS + """ + } stub: def args = task.ext.args ?: '' def args2 = task.ext.args ?: '' - def paired = meta.single_end ? "" : "--paired" - def classified = meta.single_end ? '"\$PREFIX".classified.fastq' : '"\$PREFIX".classified#.fastq' - def unclassified = meta.single_end ? '"\$PREFIX".unclassified.fastq' : '"\$PREFIX".unclassified#.fastq' - def classified_option = save_output_fastqs ? "--classified-out ${classified}" : "" - def unclassified_option = save_output_fastqs ? "--unclassified-out ${unclassified}" : "" - def output_option = save_output ? '--output "\$PREFIX".krakenuniq.classified.txt' : "" - def report = report_file ? '--report-file "\$PREFIX".krakenuniq.report.txt' : "" - def compress_reads_command = save_output_fastqs ? "echo 'gzip --no-name *.fastq'" : "" - """ - echo "krakenuniq \\ - $args \\ - --db $db \\ - --preload $ram_chunk_size \\ - --threads $task.cpus" - - for fastq in "${fastqs.join('\" \"')}"; do \\ - PREFIX=\$(echo \$fastq) - echo "krakenuniq \\ + def classified = meta.single_end ? '"\${PREFIX}.classified.fastq"' : '"\${PREFIX}.classified#.fastq"' + def unclassified = meta.single_end ? '"\${PREFIX}.unclassified.fastq"' : '"\${PREFIX}.unclassified#.fastq"' + def classified_option = save_output_fastqs ? "--classified-out ${classified}" : '' + def unclassified_option = save_output_fastqs ? "--unclassified-out ${unclassified}" : '' + def output_option = save_output ? '--output "\${PREFIX}.krakenuniq.classified.txt"' : '' + def report = report_file ? '--report-file "\${PREFIX}.krakenuniq.report.txt"' : '' + def compress_reads_command = save_output_fastqs ? 'gzip --no-name *.fastq' : '' + if (meta.single_end) { + """ + echo krakenuniq \\ --db $db \\ + --preload \\ + --preload-size $ram_chunk_size \\ --threads $task.cpus \\ - $report \\ - $output_option \\ - $unclassified_option \\ - $classified_option \\ - $output_option \\ - $paired \\ - $args2 \\ - \$fastq" + $args - touch "\$PREFIX".classified.fastq.gz - touch "\$PREFIX".krakenuniq.classified.txt - touch "\$PREFIX".krakenuniq.report.txt - touch "\$PREFIX".unclassified.fastq.gz - done + strip_suffix() { + local result=\$1 + # Strip any file extensions. + echo "\${result%%.*}" + } - $compress_reads_command + printf "%s\\n" ${fastqs} | while read FASTQ; do \\ + echo "\${FASTQ}" + PREFIX="\$(strip_suffix "\${FASTQ}")" + echo "\${PREFIX}" - cat <<-END_VERSIONS > versions.yml - "${task.process}": - krakenuniq: \$(echo \$(krakenuniq --version 2>&1) | sed 's/^.*KrakenUniq version //; s/ .*\$//') - END_VERSIONS - """ + echo krakenuniq \\ + --db $db \\ + --threads $task.cpus \\ + $report \\ + $output_option \\ + $unclassified_option \\ + $classified_option \\ + $output_option \\ + $args2 \\ + "\${FASTQ}" + + touch "\${PREFIX}.classified.fastq.gz" + touch "\${PREFIX}.krakenuniq.classified.txt" + touch "\${PREFIX}.krakenuniq.report.txt" + touch "\${PREFIX}.unclassified.fastq.gz" + done + + echo $compress_reads_command + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + krakenuniq: \$(echo \$(krakenuniq --version 2>&1) | sed 's/^.*KrakenUniq version //; s/ .*\$//') + END_VERSIONS + """ + } else { + """ + echo krakenuniq \\ + --db $db \\ + --preload \\ + --preload-size $ram_chunk_size \\ + --threads $task.cpus \\ + $args + + strip_suffix() { + local result + read result + # Strip any trailing dot or underscore. + result="\${result%_}" + echo "\${result%.}" + } + + printf "%s %s\\n" ${fastqs} | while read FASTQ; do \\ + read -r -a FASTQ <<< "\${FASTQ}" + echo "\${FASTQ[@]}" + PREFIX="\$(printf "%s\\n" "\${FASTQ[@]}" | sed -e 'N;s/^\\(.*\\).*\\n\\1.*\$/\\1\\n\\1/;D' | strip_suffix)" + echo "\${PREFIX}" + + echo krakenuniq \\ + --db $db \\ + --threads $task.cpus \\ + $report \\ + $output_option \\ + $unclassified_option \\ + $classified_option \\ + $output_option \\ + --paired \\ + $args2 \\ + "\${FASTQ[@]}" + + touch "\${PREFIX}.classified_1.fastq.gz" "\${PREFIX}.classified_2.fastq.gz" + touch "\${PREFIX}.krakenuniq.classified.txt" + touch "\${PREFIX}.krakenuniq.report.txt" + touch "\${PREFIX}.unclassified_1.fastq.gz" "\${PREFIX}.unclassified_2.fastq.gz" + done + + echo $compress_reads_command + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + krakenuniq: \$(echo \$(krakenuniq --version 2>&1) | sed 's/^.*KrakenUniq version //; s/ .*\$//') + END_VERSIONS + """ + } } diff --git a/modules/nf-core/krakenuniq/preloadedkrakenuniq/meta.yml b/modules/nf-core/krakenuniq/preloadedkrakenuniq/meta.yml index de788af..4ac645c 100644 --- a/modules/nf-core/krakenuniq/preloadedkrakenuniq/meta.yml +++ b/modules/nf-core/krakenuniq/preloadedkrakenuniq/meta.yml @@ -51,13 +51,13 @@ output: description: | Reads classified as belonging to any of the taxa on the KrakenUniq database. - pattern: "*{fastq.gz}" + pattern: "*.fastq.gz" - unclassified_reads_fastq: type: file description: | Reads not classified to any of the taxa on the KrakenUniq database. - pattern: "*{fastq.gz}" + pattern: "*.fastq.gz" - classified_assignment: type: file description: | @@ -68,10 +68,11 @@ output: description: | KrakenUniq report containing stats about classified and not classifed reads. - pattern: "*.{report.txt}" + pattern: "*.report.txt" - versions: type: file description: File containing software versions pattern: "versions.yml" authors: - "@mjamy" + - "@Midnighter" From 49af33f68ea7ab216db898adc24fe2489a8c2f03 Mon Sep 17 00:00:00 2001 From: sofstam Date: Tue, 29 Nov 2022 11:07:29 +0100 Subject: [PATCH 477/532] 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 478/532] 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 479/532] Prettier --- nextflow_schema.json | 1518 +++++++++++++++++++++--------------------- 1 file changed, 743 insertions(+), 775 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" - } - } + "$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" }, - "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" + "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." }, - "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" + "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" }, - "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" + "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})$" }, - "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`." - } - } + "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" } + } }, - "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" + "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." } - ], - "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-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." }, - "save_mgc_counts": { - "type": "string", - "description": "Save the mgc reads count in mOTUs." + "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" }, - "save_ncbi_id": { - "type": "string", - "description": "Print NCBI id in mOTUs." + "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)." }, - "save_read_counts": { - "type": "string", - "description": "Print result as counts instead of relative abundances in mOTUs." + "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`." + } + } } -} \ No newline at end of file + }, + "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." + } + } +} From 644a29c699fd4c9e9b1b500570342b795cfcbe4a Mon Sep 17 00:00:00 2001 From: sofstam Date: Tue, 29 Nov 2022 11:34:57 +0100 Subject: [PATCH 480/532] 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 481/532] Prettier should work now --- nextflow_schema.json | 1477 +++++++++++++++++++++--------------------- 1 file changed, 735 insertions(+), 742 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" + "$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" + } + } }, - "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." + "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" }, - "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" + "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" }, - "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})$" + "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" }, - "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_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`." + } + } } - } }, - "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." + "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" } - }, - "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." + ], + "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" }, - "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" + "save_mgc_counts": { + "type": "boolean", + "description": "Save the mgc reads count for mOTUs." }, - "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)." + "save_ncbi_id": { + "type": "boolean", + "description": "Print NCBI taxonomic id for mOTUs." }, - "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`)." + "save_read_counts": { + "type": "boolean", + "description": "Print mOTUs result as counts instead of relative abundances.." } - }, - "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`." - } - } } - }, - "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 482/532] 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 483/532] 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 484/532] 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 485/532] 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 486/532] 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 487/532] 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 488/532] Fix merge conflic --- nextflow_schema.json | 1475 +++++++++++++++++++++--------------------- 1 file changed, 741 insertions(+), 734 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" - } - } + "$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" }, - "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" + "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." }, - "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" + "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" }, - "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" + "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})$" }, - "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`." - } - } + "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" } + } }, - "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" + "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." } - ], - "properties": { + }, + "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 + }, "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" + "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." + "monochrome_logs": { + "type": "boolean", + "description": "Do not use coloured log outputs.", + "fa_icon": "fas fa-palette", + "hidden": true }, - "save_ncbi_id": { - "type": "boolean", - "description": "Print NCBI taxonomic id for mOTUs." + "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 }, - "save_read_counts": { - "type": "boolean", - "description": "Print mOTUs result as counts instead of relative abundances." + "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 489/532] Fix conflict --- nextflow_schema.json | 1526 +++++++++++++++++++++--------------------- 1 file changed, 778 insertions(+), 748 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" + "$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" + } + } }, - "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." + "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" }, - "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" + "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" }, - "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})$" + "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" }, - "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_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`." + } + } } - } }, - "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." + "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" } - }, - "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 - }, - "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 490/532] 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 491/532] [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 492/532] 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 493/532] 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 494/532] 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 495/532] 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 496/532] 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 497/532] 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 498/532] 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 499/532] [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 500/532] 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 501/532] 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 502/532] 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 503/532] 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 504/532] 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 505/532] 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 506/532] 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 507/532] 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 508/532] 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 509/532] 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 510/532] 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 511/532] 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 512/532] 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 8939ce3e2088a7ba89c0fdbf29901e98df4e231f Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Sun, 11 Dec 2022 16:52:34 +0100 Subject: [PATCH 513/532] 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 514/532] 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 515/532] 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 516/532] 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 517/532] Add database sheet validation --- subworkflows/local/db_check.nf | 31 ++++++++++++++++++++----------- subworkflows/local/profiling.nf | 10 +++++----- 2 files changed, 25 insertions(+), 16 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 518/532] 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 e31e7d31725cf035a51f3e796c0e52ff62b32704 Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Mon, 12 Dec 2022 15:42:01 +0100 Subject: [PATCH 519/532] 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 88589fbc53fa861a76509351bb032474e6ef3161 Mon Sep 17 00:00:00 2001 From: James Fellows Yates Date: Thu, 15 Dec 2022 10:35:06 +0100 Subject: [PATCH 520/532] 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 521/532] 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 522/532] 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 523/532] 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 524/532] 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 525/532] 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 526/532] 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 527/532] 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 770924587495e74a3bef3a57f3439d64f28595c4 Mon Sep 17 00:00:00 2001 From: "James A. Fellows Yates" Date: Tue, 20 Dec 2022 13:54:05 +0100 Subject: [PATCH 528/532] 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 529/532] 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 530/532] 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 531/532] 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 532/532] 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

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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] Fix metadata manipulaton for malt --- subworkflows/local/profiling.nf | 26 +++++++++++++++----------- 1 file changed, 15 insertions(+), 11 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] [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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] Start work on reordering json schema parameters --- nextflow_schema.json | 508 ++++++++++++++++++++++++++----------------- 1 file changed, 309 insertions(+), 199 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" + }, + { + "$ref": "#/definitions/preprocessing_short_read_qc" + }, + { + "$ref": "#/definitions/profiling" + }, + { + "$ref": "#/definitions/preprocessing_general_qc" + }, + { + "$ref": "#/definitions/preprocessing_long_read_qc" + }, + { + "$ref": "#/definitions/preprocessing_host_removal" + }, + { + "$ref": "#/definitions/preprocessing_run_merging" + }, + { + "$ref": "#/definitions/postprocessing_and_visualisation" } - ], - "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" - }, - "centrifuge_save_reads": { - "type": "boolean" - }, - "diamond_save_reads": { - "type": "boolean" - }, - "run_krona": { - "type": "boolean" - }, - "krona_taxonomy_directory": { - "type": "string", - "default": "None" - }, - "run_profile_standardisation": { - "type": "boolean" - }, - "generate_biom_output": { - "type": "boolean" - } - } + ] } 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/532] Make kaiju parameter clearer for documentation purpses and update documentation --- nextflow.config | 2 +- nextflow_schema.json | 732 ++++++++++++++++++-------------- subworkflows/local/profiling.nf | 4 +- 3 files changed, 428 insertions(+), 310 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": { - "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": { + "save_preprocessed_reads": { "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-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", + "default": "fastp", + "enum": [ + "fastp", + "adapterremoval" + ], + "fa_icon": "fas fa-tools", + "description": "Specify which tool to use for read QC" + }, + "shortread_qc_skipadaptertrim": { + "type": "boolean", + "fa_icon": "fas fa-forward", + "description": "Skip adapter trimming" + }, + "shortread_qc_adapter1": { + "type": "string", + "default": "None", + "fa_icon": "fas fa-grip-lines", + "description": "Specify adapter 1 nucleotide sequence" + }, + "shortread_qc_adapter2": { + "type": "string", + "default": "None", + "fa_icon": "fas fa-grip-lines", + "description": "Specify adapter 2 nucleotide sequence" + }, + "shortread_qc_mergepairs": { + "type": "boolean", + "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", + "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": { - "perform_shortread_qc": { - "type": "boolean" - }, - "shortread_qc_tool": { + "genome": { "type": "string", - "default": "fastp", - "enum": [ - "fastp", - "adapterremoval" - ] + "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 }, - "shortread_qc_skipadaptertrim": { - "type": "boolean" - }, - "shortread_qc_adapter1": { + "igenomes_base": { "type": "string", - "default": "None" + "format": "directory-path", + "description": "Directory / URL base for iGenomes references.", + "default": "s3://ngi-igenomes/igenomes", + "fa_icon": "fas fa-cloud-download-alt", + "hidden": true }, - "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": { + "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,7 +649,25 @@ "$ref": "#/definitions/input_output_options" }, { - "$ref": "#/definitions/reference_genome_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" @@ -543,25 +679,7 @@ "$ref": "#/definitions/generic_options" }, { - "$ref": "#/definitions/preprocessing_short_read_qc" - }, - { - "$ref": "#/definitions/profiling" - }, - { - "$ref": "#/definitions/preprocessing_general_qc" - }, - { - "$ref": "#/definitions/preprocessing_long_read_qc" - }, - { - "$ref": "#/definitions/preprocessing_host_removal" - }, - { - "$ref": "#/definitions/preprocessing_run_merging" - }, - { - "$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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] Prettier --- nextflow_schema.json | 47 ++++++++++++++++++++++---------------------- 1 file changed, 24 insertions(+), 23 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": { - "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": { + "longread_qc_qualityfilter_minlength": { "type": "integer", "default": 1000, - "fa_icon": "fas fa-ruler-horizontal", - "description": "Specify the minimum length of long-reads to retain during filtering" + "description": "Specify the minimum length of reads to be retained", + "fa_icon": "fas fa-ruler-horizontal" + }, + "longread_qc_qualityfilter_keeppercent": { + "type": "integer", + "default": 90, + "description": "Specify the percent of high-quality reads to be retained", + "fa_icon": "fas fa-percentage" + }, + "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" } }, "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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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/532] 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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