From 18f4c9c4dc1d96f52797162eea00afd02d892a3f Mon Sep 17 00:00:00 2001 From: nf-core-bot <core@nf-co.re> Date: Tue, 15 Mar 2022 20:58:21 +0000 Subject: [PATCH] Template update for nf-core/tools version 2.3 --- .github/ISSUE_TEMPLATE/bug_report.yml | 1 - .github/PULL_REQUEST_TEMPLATE.md | 2 +- .github/workflows/awsfulltest.yml | 6 +- .github/workflows/awstest.yml | 6 +- .github/workflows/ci.yml | 4 +- .github/workflows/linting.yml | 28 +- .gitpod.yml | 14 + .nf-core.yml | 1 + .yamllint.yml | 6 + README.md | 6 +- bin/check_samplesheet.py | 346 ++++++++++++++++--------- conf/base.config | 4 +- conf/igenomes.config | 80 +++--- conf/modules.config | 18 +- conf/test.config | 6 +- conf/test_full.config | 6 +- docs/images/nf-core-hic_logo_dark.png | Bin 288 -> 58282 bytes docs/images/nf-core-hic_logo_light.png | Bin 519 -> 58238 bytes docs/usage.md | 21 +- lib/NfcoreSchema.groovy | 4 +- lib/Utils.groovy | 4 +- lib/WorkflowHic.groovy | 4 +- main.nf | 24 +- nextflow.config | 18 +- nextflow_schema.json | 23 +- subworkflows/local/input_check.nf | 18 +- workflows/hic.nf | 28 +- 27 files changed, 419 insertions(+), 259 deletions(-) create mode 100644 .gitpod.yml create mode 100644 .nf-core.yml create mode 100644 .yamllint.yml diff --git a/.github/ISSUE_TEMPLATE/bug_report.yml b/.github/ISSUE_TEMPLATE/bug_report.yml index 3505b2a..8e439f4 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.yml +++ b/.github/ISSUE_TEMPLATE/bug_report.yml @@ -1,4 +1,3 @@ - name: Bug report description: Report something that is broken or incorrect labels: bug diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md index 59cc2f6..8b36133 100644 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -19,7 +19,7 @@ Learn more about contributing: [CONTRIBUTING.md](https://github.com/nf-core/hic/ - [ ] If you've added a new tool - have you followed the pipeline conventions in the [contribution docs](https://github.com/nf-core/hic/tree/master/.github/CONTRIBUTING.md) - [ ] If necessary, also make a PR on the nf-core/hic _branch_ on the [nf-core/test-datasets](https://github.com/nf-core/test-datasets) repository. - [ ] Make sure your code lints (`nf-core lint`). -- [ ] Ensure the test suite passes (`nextflow run . -profile test,docker`). +- [ ] Ensure the test suite passes (`nextflow run . -profile test,docker` --outdir <OUTDIR>`). - [ ] Usage Documentation in `docs/usage.md` is updated. - [ ] Output Documentation in `docs/output.md` is updated. - [ ] `CHANGELOG.md` is updated. diff --git a/.github/workflows/awsfulltest.yml b/.github/workflows/awsfulltest.yml index dd00a78..cacd11e 100644 --- a/.github/workflows/awsfulltest.yml +++ b/.github/workflows/awsfulltest.yml @@ -14,7 +14,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Launch workflow via tower - uses: nf-core/tower-action@v2 + uses: nf-core/tower-action@v3 # TODO nf-core: You can customise AWS full pipeline tests as required # Add full size test data (but still relatively small datasets for few samples) # on the `test_full.config` test runs with only one set of parameters @@ -31,4 +31,6 @@ jobs: "outdir": "s3://${{ secrets.AWS_S3_BUCKET }}/hic/results-${{ github.sha }}" } profiles: test_full,aws_tower - pre_run_script: 'export NXF_VER=21.10.3' + nextflow_config: | + process.errorStrategy = 'retry' + process.maxRetries = 3 diff --git a/.github/workflows/awstest.yml b/.github/workflows/awstest.yml index cb0c5ee..d15b4b8 100644 --- a/.github/workflows/awstest.yml +++ b/.github/workflows/awstest.yml @@ -11,7 +11,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Launch workflow via tower - uses: nf-core/tower-action@v2 + uses: nf-core/tower-action@v3 with: workspace_id: ${{ secrets.TOWER_WORKSPACE_ID }} @@ -25,4 +25,6 @@ jobs: "outdir": "s3://${{ secrets.AWS_S3_BUCKET }}/hic/results-test-${{ github.sha }}" } profiles: test,aws_tower - pre_run_script: 'export NXF_VER=21.10.3' + nextflow_config: | + process.errorStrategy = 'retry' + process.maxRetries = 3 diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 8ffa52b..64b9e73 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -14,7 +14,7 @@ env: jobs: test: - name: Run workflow tests + name: Run pipeline with test data # Only run on push if this is the nf-core dev branch (merged PRs) if: ${{ github.event_name != 'push' || (github.event_name == 'push' && github.repository == 'nf-core/hic') }} runs-on: ubuntu-latest @@ -47,4 +47,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 + nextflow run ${GITHUB_WORKSPACE} -profile test,docker --outdir ./results diff --git a/.github/workflows/linting.yml b/.github/workflows/linting.yml index 3b44877..fda934c 100644 --- a/.github/workflows/linting.yml +++ b/.github/workflows/linting.yml @@ -12,9 +12,7 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - - uses: actions/setup-node@v1 - with: - node-version: '10' + - uses: actions/setup-node@v2 - name: Install markdownlint run: npm install -g markdownlint-cli - name: Run Markdownlint @@ -51,9 +49,7 @@ jobs: steps: - uses: actions/checkout@v2 - - uses: actions/setup-node@v1 - with: - node-version: '10' + - uses: actions/setup-node@v2 - name: Install editorconfig-checker run: npm install -g editorconfig-checker @@ -64,14 +60,13 @@ jobs: YAML: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v1 - - uses: actions/setup-node@v1 + - name: Checkout + uses: actions/checkout@master + - name: 'Yamllint' + uses: karancode/yamllint-github-action@master with: - node-version: '10' - - name: Install yaml-lint - run: npm install -g yaml-lint - - name: Run yaml-lint - run: yamllint $(find ${GITHUB_WORKSPACE} -type f -name "*.yml" -o -name "*.yaml") + yamllint_file_or_dir: '.' + yamllint_config_filepath: '.yamllint.yml' # If the above check failed, post a comment on the PR explaining the failure - name: Post PR comment @@ -84,10 +79,11 @@ jobs: To keep the code consistent with lots of contributors, we run automated code consistency checks. To fix this CI test, please run: - * Install `yaml-lint` - * [Install `npm`](https://www.npmjs.com/get-npm) then [install `yaml-lint`](https://www.npmjs.com/package/yaml-lint) (`npm install -g yaml-lint`) + * Install `yamllint` + * Install `yamllint` following [this](https://yamllint.readthedocs.io/en/stable/quickstart.html#installing-yamllint) + instructions or alternative install it in your [conda environment](https://anaconda.org/conda-forge/yamllint) * Fix the markdown errors - * Run the test locally: `yamllint $(find . -type f -name "*.yml" -o -name "*.yaml")` + * Run the test locally: `yamllint $(find . -type f -name "*.yml" -o -name "*.yaml") -c ./.yamllint.yml` * Fix any reported errors in your YAML files Once you push these changes the test should pass, and you can hide this comment :+1: diff --git a/.gitpod.yml b/.gitpod.yml new file mode 100644 index 0000000..b7d4cee --- /dev/null +++ b/.gitpod.yml @@ -0,0 +1,14 @@ +image: nfcore/gitpod:latest + +vscode: + extensions: # based on nf-core.nf-core-extensionpack + - codezombiech.gitignore # Language support for .gitignore files + # - cssho.vscode-svgviewer # SVG viewer + - davidanson.vscode-markdownlint # Markdown/CommonMark linting and style checking for Visual Studio Code + - eamodio.gitlens # Quickly glimpse into whom, why, and when a line or code block was changed + - EditorConfig.EditorConfig # override user/workspace settings with settings found in .editorconfig files + - Gruntfuggly.todo-tree # Display TODO and FIXME in a tree view in the activity bar + - mechatroner.rainbow-csv # Highlight columns in csv files in different colors + # - nextflow.nextflow # Nextflow syntax highlighting + - oderwat.indent-rainbow # Highlight indentation level + - streetsidesoftware.code-spell-checker # Spelling checker for source code diff --git a/.nf-core.yml b/.nf-core.yml new file mode 100644 index 0000000..3805dc8 --- /dev/null +++ b/.nf-core.yml @@ -0,0 +1 @@ +repository_type: pipeline diff --git a/.yamllint.yml b/.yamllint.yml new file mode 100644 index 0000000..d466dee --- /dev/null +++ b/.yamllint.yml @@ -0,0 +1,6 @@ +extends: default + +rules: + document-start: disable + line-length: disable + truthy: disable diff --git a/README.md b/README.md index 35b1385..b7a2836 100644 --- a/README.md +++ b/README.md @@ -40,14 +40,14 @@ On release, automated continuous integration tests run the pipeline on a full-si 3. Download the pipeline and test it on a minimal dataset with a single command: ```console - nextflow run nf-core/hic -profile test,YOURPROFILE + nextflow run nf-core/hic -profile test,YOURPROFILE --outdir <OUTDIR> ``` 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 <institute>` 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` and are persistently observing issues downloading Singularity images directly due to timeout or network issues, then you can use the `--singularity_pull_docker_container` parameter to pull and convert the Docker image instead. Alternatively, you can 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 `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! @@ -55,7 +55,7 @@ On release, automated continuous integration tests run the pipeline on a full-si <!-- TODO nf-core: Update the example "typical command" below used to run the pipeline --> ```console - nextflow run nf-core/hic -profile <docker/singularity/podman/shifter/charliecloud/conda/institute> --input samplesheet.csv --genome GRCh37 + nextflow run nf-core/hic --input samplesheet.csv --outdir <OUTDIR> --genome GRCh37 -profile <docker/singularity/podman/shifter/charliecloud/conda/institute> ``` ## Documentation diff --git a/bin/check_samplesheet.py b/bin/check_samplesheet.py index 9f6aaa3..5473b62 100755 --- a/bin/check_samplesheet.py +++ b/bin/check_samplesheet.py @@ -1,145 +1,249 @@ #!/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 -import os -import sys -import errno +"""Provide a command line tool to validate and transform tabular samplesheets.""" + + import argparse +import csv +import logging +import sys +from collections import Counter +from pathlib import Path -def parse_args(args=None): - Description = "Reformat nf-core/hic samplesheet file and check its contents." - Epilog = "Example usage: python check_samplesheet.py <FILE_IN> <FILE_OUT>" +logger = logging.getLogger() - 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 RowChecker: + """ + Define a service that can validate and transform each given row. -def make_dir(path): - if len(path) > 0: - try: - os.makedirs(path) - except OSError as exception: - if exception.errno != errno.EEXIST: - raise exception + Attributes: + modified (list): A list of dicts, where each dict corresponds to a previously + validated and transformed row. The order of rows is maintained. + """ -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() + VALID_FORMATS = ( + ".fq.gz", + ".fastq.gz", + ) + + def __init__( + self, + sample_col="sample", + first_col="fastq_1", + second_col="fastq_2", + single_col="single_end", + **kwargs, + ): + """ + Initialize the row checker with the expected column names. + + Args: + sample_col (str): The name of the column that contains the sample name + (default "sample"). + first_col (str): The name of the column that contains the first (or only) + FASTQ file path (default "fastq_1"). + second_col (str): The name of the column that contains the second (if any) + FASTQ file path (default "fastq_2"). + single_col (str): The name of the new column that will be inserted and + records whether the sample contains single- or paired-end sequencing + reads (default "single_end"). + + """ + super().__init__(**kwargs) + self._sample_col = sample_col + self._first_col = first_col + self._second_col = second_col + self._single_col = single_col + self._seen = set() + self.modified = [] + + def validate_and_transform(self, row): + """ + Perform all validations on the given row and insert the read pairing status. + + Args: + row (dict): A mapping from column headers (keys) to elements of that row + (values). + + """ + self._validate_sample(row) + self._validate_first(row) + self._validate_second(row) + self._validate_pair(row) + self._seen.add((row[self._sample_col], row[self._first_col])) + self.modified.append(row) + + def _validate_sample(self, row): + """Assert that the sample name exists and convert spaces to underscores.""" + assert len(row[self._sample_col]) > 0, "Sample input is required." + # Sanitize samples slightly. + row[self._sample_col] = row[self._sample_col].replace(" ", "_") + + def _validate_first(self, row): + """Assert that the first FASTQ entry is non-empty and has the right format.""" + assert len(row[self._first_col]) > 0, "At least the first FASTQ file is required." + self._validate_fastq_format(row[self._first_col]) + + def _validate_second(self, row): + """Assert that the second FASTQ entry has the right format if it exists.""" + if len(row[self._second_col]) > 0: + self._validate_fastq_format(row[self._second_col]) + + def _validate_pair(self, row): + """Assert that read pairs have the same file extension. Report pair status.""" + if row[self._first_col] and row[self._second_col]: + row[self._single_col] = False + assert ( + Path(row[self._first_col]).suffixes == Path(row[self._second_col]).suffixes + ), "FASTQ pairs must have the same file extensions." + else: + row[self._single_col] = True + + def _validate_fastq_format(self, filename): + """Assert that a given filename has one of the expected FASTQ extensions.""" + assert any(filename.endswith(extension) for extension in self.VALID_FORMATS), ( + f"The FASTQ file has an unrecognized extension: {filename}\n" + f"It should be one of: {', '.join(self.VALID_FORMATS)}" ) - print(error_str) - sys.exit(1) + def validate_unique_samples(self): + """ + Assert that the combination of sample name and FASTQ filename is unique. + + In addition to the validation, also rename the sample if more than one sample, + FASTQ file combination exists. + + """ + assert len(self._seen) == len(self.modified), "The pair of sample name and FASTQ must be unique." + if len({pair[0] for pair in self._seen}) < len(self._seen): + counts = Counter(pair[0] for pair in self._seen) + seen = Counter() + for row in self.modified: + sample = row[self._sample_col] + seen[sample] += 1 + if counts[sample] > 1: + row[self._sample_col] = f"{sample}_T{seen[sample]}" + + +def sniff_format(handle): + """ + Detect the tabular format. + + Args: + handle (text file): A handle to a `text file`_ object. The read position is + expected to be at the beginning (index 0). + + Returns: + csv.Dialect: The detected tabular format. + + .. _text file: + https://docs.python.org/3/glossary.html#term-text-file -# TODO nf-core: Update the check_samplesheet function -def check_samplesheet(file_in, file_out): """ - This function checks that the samplesheet follows the following structure: + peek = handle.read(2048) + sniffer = csv.Sniffer() + if not sniffer.has_header(peek): + logger.critical(f"The given sample sheet does not appear to contain a header.") + sys.exit(1) + dialect = sniffer.sniff(peek) + handle.seek(0) + return dialect - 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, - For an example see: - https://raw.githubusercontent.com/nf-core/test-datasets/viralrecon/samplesheet/samplesheet_test_illumina_amplicon.csv +def check_samplesheet(file_in, file_out): """ + Check that the tabular samplesheet has the structure expected by nf-core pipelines. - sample_mapping_dict = {} - with open(file_in, "r") as fin: + Validate the general shape of the table, expected columns, and each row. Also add + an additional column which records whether one or two FASTQ reads were found. - ## Check header - MIN_COLS = 2 - # TODO nf-core: Update the column names for the input samplesheet - HEADER = ["sample", "fastq_1", "fastq_2"] - 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))) - sys.exit(1) + Args: + file_in (pathlib.Path): The given tabular samplesheet. The format can be either + CSV, TSV, or any other format automatically recognized by ``csv.Sniffer``. + file_out (pathlib.Path): Where the validated and transformed samplesheet should + be created; always in CSV format. - ## Check sample entries - for line in fin: - lspl = [x.strip().strip('"') for x in line.strip().split(",")] - - # 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, fastq_1, fastq_2 = 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(".fastq.gz") and not fastq.endswith(".fq.gz"): - print_error( - "FastQ file does not have extension '.fastq.gz' or '.fq.gz'!", - "Line", - line, - ) - - ## 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] - elif sample and fastq_1 and not fastq_2: ## Single-end short reads - sample_info = ["1", fastq_1, fastq_2] - else: - print_error("Invalid combination of columns provided!", "Line", line) - - ## Create sample mapping dictionary = { sample: [ single_end, fastq_1, fastq_2 ] } - 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 - 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") - 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") - 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) + Example: + This function checks that the samplesheet follows the following structure, + see also the `viral recon samplesheet`_:: + + 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, + + .. _viral recon samplesheet: + https://raw.githubusercontent.com/nf-core/test-datasets/viralrecon/samplesheet/samplesheet_test_illumina_amplicon.csv + + """ + required_columns = {"sample", "fastq_1", "fastq_2"} + # See https://docs.python.org/3.9/library/csv.html#id3 to read up on `newline=""`. + with file_in.open(newline="") as in_handle: + reader = csv.DictReader(in_handle, dialect=sniff_format(in_handle)) + # Validate the existence of the expected header columns. + if not required_columns.issubset(reader.fieldnames): + logger.critical(f"The sample sheet **must** contain the column headers: {', '.join(required_columns)}.") + sys.exit(1) + # Validate each row. + checker = RowChecker() + for i, row in enumerate(reader): + try: + checker.validate_and_transform(row) + except AssertionError as error: + logger.critical(f"{str(error)} On line {i + 2}.") + sys.exit(1) + checker.validate_unique_samples() + header = list(reader.fieldnames) + header.insert(1, "single_end") + # See https://docs.python.org/3.9/library/csv.html#id3 to read up on `newline=""`. + with file_out.open(mode="w", newline="") as out_handle: + writer = csv.DictWriter(out_handle, header, delimiter=",") + writer.writeheader() + for row in checker.modified: + writer.writerow(row) + + +def parse_args(argv=None): + """Define and immediately parse command line arguments.""" + parser = argparse.ArgumentParser( + description="Validate and transform a tabular samplesheet.", + epilog="Example: python check_samplesheet.py samplesheet.csv samplesheet.valid.csv", + ) + parser.add_argument( + "file_in", + metavar="FILE_IN", + type=Path, + help="Tabular input samplesheet in CSV or TSV format.", + ) + parser.add_argument( + "file_out", + metavar="FILE_OUT", + type=Path, + help="Transformed output samplesheet in CSV format.", + ) + parser.add_argument( + "-l", + "--log-level", + help="The desired log level (default WARNING).", + choices=("CRITICAL", "ERROR", "WARNING", "INFO", "DEBUG"), + default="WARNING", + ) + return parser.parse_args(argv) + + +def main(argv=None): + """Coordinate argument parsing and program execution.""" + args = parse_args(argv) + logging.basicConfig(level=args.log_level, format="[%(levelname)s] %(message)s") + if not args.file_in.is_file(): + logger.error(f"The given input file {args.file_in} was not found!") + sys.exit(2) + args.file_out.parent.mkdir(parents=True, exist_ok=True) + check_samplesheet(args.file_in, args.file_out) if __name__ == "__main__": diff --git a/conf/base.config b/conf/base.config index 42a37e9..598aec3 100644 --- a/conf/base.config +++ b/conf/base.config @@ -1,7 +1,7 @@ /* -======================================================================================== +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ nf-core/hic Nextflow base config file -======================================================================================== +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ A 'blank slate' config file, appropriate for general use on most high performance compute environments. Assumes that all software is installed and available on the PATH. Runs in `local` mode - all jobs will be run on the logged in environment. diff --git a/conf/igenomes.config b/conf/igenomes.config index 855948d..7a1b3ac 100644 --- a/conf/igenomes.config +++ b/conf/igenomes.config @@ -1,7 +1,7 @@ /* -======================================================================================== +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Nextflow config file for iGenomes paths -======================================================================================== +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Defines reference genomes using iGenome paths. Can be used by any config that customises the base path using: $params.igenomes_base / --igenomes_base @@ -13,7 +13,7 @@ params { genomes { 'GRCh37' { fasta = "${params.igenomes_base}/Homo_sapiens/Ensembl/GRCh37/Sequence/WholeGenomeFasta/genome.fa" - bwa = "${params.igenomes_base}/Homo_sapiens/Ensembl/GRCh37/Sequence/BWAIndex/genome.fa" + bwa = "${params.igenomes_base}/Homo_sapiens/Ensembl/GRCh37/Sequence/BWAIndex/version0.6.0/" bowtie2 = "${params.igenomes_base}/Homo_sapiens/Ensembl/GRCh37/Sequence/Bowtie2Index/" star = "${params.igenomes_base}/Homo_sapiens/Ensembl/GRCh37/Sequence/STARIndex/" bismark = "${params.igenomes_base}/Homo_sapiens/Ensembl/GRCh37/Sequence/BismarkIndex/" @@ -26,7 +26,7 @@ params { } 'GRCh38' { fasta = "${params.igenomes_base}/Homo_sapiens/NCBI/GRCh38/Sequence/WholeGenomeFasta/genome.fa" - bwa = "${params.igenomes_base}/Homo_sapiens/NCBI/GRCh38/Sequence/BWAIndex/genome.fa" + bwa = "${params.igenomes_base}/Homo_sapiens/NCBI/GRCh38/Sequence/BWAIndex/version0.6.0/" bowtie2 = "${params.igenomes_base}/Homo_sapiens/NCBI/GRCh38/Sequence/Bowtie2Index/" star = "${params.igenomes_base}/Homo_sapiens/NCBI/GRCh38/Sequence/STARIndex/" bismark = "${params.igenomes_base}/Homo_sapiens/NCBI/GRCh38/Sequence/BismarkIndex/" @@ -38,7 +38,7 @@ params { } 'GRCm38' { fasta = "${params.igenomes_base}/Mus_musculus/Ensembl/GRCm38/Sequence/WholeGenomeFasta/genome.fa" - bwa = "${params.igenomes_base}/Mus_musculus/Ensembl/GRCm38/Sequence/BWAIndex/genome.fa" + bwa = "${params.igenomes_base}/Mus_musculus/Ensembl/GRCm38/Sequence/BWAIndex/version0.6.0/" bowtie2 = "${params.igenomes_base}/Mus_musculus/Ensembl/GRCm38/Sequence/Bowtie2Index/" star = "${params.igenomes_base}/Mus_musculus/Ensembl/GRCm38/Sequence/STARIndex/" bismark = "${params.igenomes_base}/Mus_musculus/Ensembl/GRCm38/Sequence/BismarkIndex/" @@ -51,7 +51,7 @@ params { } 'TAIR10' { fasta = "${params.igenomes_base}/Arabidopsis_thaliana/Ensembl/TAIR10/Sequence/WholeGenomeFasta/genome.fa" - bwa = "${params.igenomes_base}/Arabidopsis_thaliana/Ensembl/TAIR10/Sequence/BWAIndex/genome.fa" + bwa = "${params.igenomes_base}/Arabidopsis_thaliana/Ensembl/TAIR10/Sequence/BWAIndex/version0.6.0/" bowtie2 = "${params.igenomes_base}/Arabidopsis_thaliana/Ensembl/TAIR10/Sequence/Bowtie2Index/" star = "${params.igenomes_base}/Arabidopsis_thaliana/Ensembl/TAIR10/Sequence/STARIndex/" bismark = "${params.igenomes_base}/Arabidopsis_thaliana/Ensembl/TAIR10/Sequence/BismarkIndex/" @@ -62,7 +62,7 @@ params { } 'EB2' { fasta = "${params.igenomes_base}/Bacillus_subtilis_168/Ensembl/EB2/Sequence/WholeGenomeFasta/genome.fa" - bwa = "${params.igenomes_base}/Bacillus_subtilis_168/Ensembl/EB2/Sequence/BWAIndex/genome.fa" + bwa = "${params.igenomes_base}/Bacillus_subtilis_168/Ensembl/EB2/Sequence/BWAIndex/version0.6.0/" bowtie2 = "${params.igenomes_base}/Bacillus_subtilis_168/Ensembl/EB2/Sequence/Bowtie2Index/" star = "${params.igenomes_base}/Bacillus_subtilis_168/Ensembl/EB2/Sequence/STARIndex/" bismark = "${params.igenomes_base}/Bacillus_subtilis_168/Ensembl/EB2/Sequence/BismarkIndex/" @@ -72,7 +72,7 @@ params { } 'UMD3.1' { fasta = "${params.igenomes_base}/Bos_taurus/Ensembl/UMD3.1/Sequence/WholeGenomeFasta/genome.fa" - bwa = "${params.igenomes_base}/Bos_taurus/Ensembl/UMD3.1/Sequence/BWAIndex/genome.fa" + bwa = "${params.igenomes_base}/Bos_taurus/Ensembl/UMD3.1/Sequence/BWAIndex/version0.6.0/" bowtie2 = "${params.igenomes_base}/Bos_taurus/Ensembl/UMD3.1/Sequence/Bowtie2Index/" star = "${params.igenomes_base}/Bos_taurus/Ensembl/UMD3.1/Sequence/STARIndex/" bismark = "${params.igenomes_base}/Bos_taurus/Ensembl/UMD3.1/Sequence/BismarkIndex/" @@ -83,7 +83,7 @@ params { } 'WBcel235' { fasta = "${params.igenomes_base}/Caenorhabditis_elegans/Ensembl/WBcel235/Sequence/WholeGenomeFasta/genome.fa" - bwa = "${params.igenomes_base}/Caenorhabditis_elegans/Ensembl/WBcel235/Sequence/BWAIndex/genome.fa" + bwa = "${params.igenomes_base}/Caenorhabditis_elegans/Ensembl/WBcel235/Sequence/BWAIndex/version0.6.0/" bowtie2 = "${params.igenomes_base}/Caenorhabditis_elegans/Ensembl/WBcel235/Sequence/Bowtie2Index/" star = "${params.igenomes_base}/Caenorhabditis_elegans/Ensembl/WBcel235/Sequence/STARIndex/" bismark = "${params.igenomes_base}/Caenorhabditis_elegans/Ensembl/WBcel235/Sequence/BismarkIndex/" @@ -94,7 +94,7 @@ params { } 'CanFam3.1' { fasta = "${params.igenomes_base}/Canis_familiaris/Ensembl/CanFam3.1/Sequence/WholeGenomeFasta/genome.fa" - bwa = "${params.igenomes_base}/Canis_familiaris/Ensembl/CanFam3.1/Sequence/BWAIndex/genome.fa" + bwa = "${params.igenomes_base}/Canis_familiaris/Ensembl/CanFam3.1/Sequence/BWAIndex/version0.6.0/" bowtie2 = "${params.igenomes_base}/Canis_familiaris/Ensembl/CanFam3.1/Sequence/Bowtie2Index/" star = "${params.igenomes_base}/Canis_familiaris/Ensembl/CanFam3.1/Sequence/STARIndex/" bismark = "${params.igenomes_base}/Canis_familiaris/Ensembl/CanFam3.1/Sequence/BismarkIndex/" @@ -105,7 +105,7 @@ params { } 'GRCz10' { fasta = "${params.igenomes_base}/Danio_rerio/Ensembl/GRCz10/Sequence/WholeGenomeFasta/genome.fa" - bwa = "${params.igenomes_base}/Danio_rerio/Ensembl/GRCz10/Sequence/BWAIndex/genome.fa" + bwa = "${params.igenomes_base}/Danio_rerio/Ensembl/GRCz10/Sequence/BWAIndex/version0.6.0/" bowtie2 = "${params.igenomes_base}/Danio_rerio/Ensembl/GRCz10/Sequence/Bowtie2Index/" star = "${params.igenomes_base}/Danio_rerio/Ensembl/GRCz10/Sequence/STARIndex/" bismark = "${params.igenomes_base}/Danio_rerio/Ensembl/GRCz10/Sequence/BismarkIndex/" @@ -115,7 +115,7 @@ params { } 'BDGP6' { fasta = "${params.igenomes_base}/Drosophila_melanogaster/Ensembl/BDGP6/Sequence/WholeGenomeFasta/genome.fa" - bwa = "${params.igenomes_base}/Drosophila_melanogaster/Ensembl/BDGP6/Sequence/BWAIndex/genome.fa" + bwa = "${params.igenomes_base}/Drosophila_melanogaster/Ensembl/BDGP6/Sequence/BWAIndex/version0.6.0/" bowtie2 = "${params.igenomes_base}/Drosophila_melanogaster/Ensembl/BDGP6/Sequence/Bowtie2Index/" star = "${params.igenomes_base}/Drosophila_melanogaster/Ensembl/BDGP6/Sequence/STARIndex/" bismark = "${params.igenomes_base}/Drosophila_melanogaster/Ensembl/BDGP6/Sequence/BismarkIndex/" @@ -126,7 +126,7 @@ params { } 'EquCab2' { fasta = "${params.igenomes_base}/Equus_caballus/Ensembl/EquCab2/Sequence/WholeGenomeFasta/genome.fa" - bwa = "${params.igenomes_base}/Equus_caballus/Ensembl/EquCab2/Sequence/BWAIndex/genome.fa" + bwa = "${params.igenomes_base}/Equus_caballus/Ensembl/EquCab2/Sequence/BWAIndex/version0.6.0/" bowtie2 = "${params.igenomes_base}/Equus_caballus/Ensembl/EquCab2/Sequence/Bowtie2Index/" star = "${params.igenomes_base}/Equus_caballus/Ensembl/EquCab2/Sequence/STARIndex/" bismark = "${params.igenomes_base}/Equus_caballus/Ensembl/EquCab2/Sequence/BismarkIndex/" @@ -137,7 +137,7 @@ params { } 'EB1' { fasta = "${params.igenomes_base}/Escherichia_coli_K_12_DH10B/Ensembl/EB1/Sequence/WholeGenomeFasta/genome.fa" - bwa = "${params.igenomes_base}/Escherichia_coli_K_12_DH10B/Ensembl/EB1/Sequence/BWAIndex/genome.fa" + bwa = "${params.igenomes_base}/Escherichia_coli_K_12_DH10B/Ensembl/EB1/Sequence/BWAIndex/version0.6.0/" bowtie2 = "${params.igenomes_base}/Escherichia_coli_K_12_DH10B/Ensembl/EB1/Sequence/Bowtie2Index/" star = "${params.igenomes_base}/Escherichia_coli_K_12_DH10B/Ensembl/EB1/Sequence/STARIndex/" bismark = "${params.igenomes_base}/Escherichia_coli_K_12_DH10B/Ensembl/EB1/Sequence/BismarkIndex/" @@ -147,7 +147,7 @@ params { } 'Galgal4' { fasta = "${params.igenomes_base}/Gallus_gallus/Ensembl/Galgal4/Sequence/WholeGenomeFasta/genome.fa" - bwa = "${params.igenomes_base}/Gallus_gallus/Ensembl/Galgal4/Sequence/BWAIndex/genome.fa" + bwa = "${params.igenomes_base}/Gallus_gallus/Ensembl/Galgal4/Sequence/BWAIndex/version0.6.0/" bowtie2 = "${params.igenomes_base}/Gallus_gallus/Ensembl/Galgal4/Sequence/Bowtie2Index/" star = "${params.igenomes_base}/Gallus_gallus/Ensembl/Galgal4/Sequence/STARIndex/" bismark = "${params.igenomes_base}/Gallus_gallus/Ensembl/Galgal4/Sequence/BismarkIndex/" @@ -157,7 +157,7 @@ params { } 'Gm01' { fasta = "${params.igenomes_base}/Glycine_max/Ensembl/Gm01/Sequence/WholeGenomeFasta/genome.fa" - bwa = "${params.igenomes_base}/Glycine_max/Ensembl/Gm01/Sequence/BWAIndex/genome.fa" + bwa = "${params.igenomes_base}/Glycine_max/Ensembl/Gm01/Sequence/BWAIndex/version0.6.0/" bowtie2 = "${params.igenomes_base}/Glycine_max/Ensembl/Gm01/Sequence/Bowtie2Index/" star = "${params.igenomes_base}/Glycine_max/Ensembl/Gm01/Sequence/STARIndex/" bismark = "${params.igenomes_base}/Glycine_max/Ensembl/Gm01/Sequence/BismarkIndex/" @@ -167,7 +167,7 @@ params { } 'Mmul_1' { fasta = "${params.igenomes_base}/Macaca_mulatta/Ensembl/Mmul_1/Sequence/WholeGenomeFasta/genome.fa" - bwa = "${params.igenomes_base}/Macaca_mulatta/Ensembl/Mmul_1/Sequence/BWAIndex/genome.fa" + bwa = "${params.igenomes_base}/Macaca_mulatta/Ensembl/Mmul_1/Sequence/BWAIndex/version0.6.0/" bowtie2 = "${params.igenomes_base}/Macaca_mulatta/Ensembl/Mmul_1/Sequence/Bowtie2Index/" star = "${params.igenomes_base}/Macaca_mulatta/Ensembl/Mmul_1/Sequence/STARIndex/" bismark = "${params.igenomes_base}/Macaca_mulatta/Ensembl/Mmul_1/Sequence/BismarkIndex/" @@ -178,7 +178,7 @@ params { } 'IRGSP-1.0' { fasta = "${params.igenomes_base}/Oryza_sativa_japonica/Ensembl/IRGSP-1.0/Sequence/WholeGenomeFasta/genome.fa" - bwa = "${params.igenomes_base}/Oryza_sativa_japonica/Ensembl/IRGSP-1.0/Sequence/BWAIndex/genome.fa" + bwa = "${params.igenomes_base}/Oryza_sativa_japonica/Ensembl/IRGSP-1.0/Sequence/BWAIndex/version0.6.0/" bowtie2 = "${params.igenomes_base}/Oryza_sativa_japonica/Ensembl/IRGSP-1.0/Sequence/Bowtie2Index/" star = "${params.igenomes_base}/Oryza_sativa_japonica/Ensembl/IRGSP-1.0/Sequence/STARIndex/" bismark = "${params.igenomes_base}/Oryza_sativa_japonica/Ensembl/IRGSP-1.0/Sequence/BismarkIndex/" @@ -188,7 +188,7 @@ params { } 'CHIMP2.1.4' { fasta = "${params.igenomes_base}/Pan_troglodytes/Ensembl/CHIMP2.1.4/Sequence/WholeGenomeFasta/genome.fa" - bwa = "${params.igenomes_base}/Pan_troglodytes/Ensembl/CHIMP2.1.4/Sequence/BWAIndex/genome.fa" + bwa = "${params.igenomes_base}/Pan_troglodytes/Ensembl/CHIMP2.1.4/Sequence/BWAIndex/version0.6.0/" bowtie2 = "${params.igenomes_base}/Pan_troglodytes/Ensembl/CHIMP2.1.4/Sequence/Bowtie2Index/" star = "${params.igenomes_base}/Pan_troglodytes/Ensembl/CHIMP2.1.4/Sequence/STARIndex/" bismark = "${params.igenomes_base}/Pan_troglodytes/Ensembl/CHIMP2.1.4/Sequence/BismarkIndex/" @@ -199,7 +199,7 @@ params { } 'Rnor_5.0' { fasta = "${params.igenomes_base}/Rattus_norvegicus/Ensembl/Rnor_5.0/Sequence/WholeGenomeFasta/genome.fa" - bwa = "${params.igenomes_base}/Rattus_norvegicus/Ensembl/Rnor_5.0/Sequence/BWAIndex/genome.fa" + bwa = "${params.igenomes_base}/Rattus_norvegicus/Ensembl/Rnor_5.0/Sequence/BWAIndex/version0.6.0/" bowtie2 = "${params.igenomes_base}/Rattus_norvegicus/Ensembl/Rnor_5.0/Sequence/Bowtie2Index/" star = "${params.igenomes_base}/Rattus_norvegicus/Ensembl/Rnor_5.0/Sequence/STARIndex/" bismark = "${params.igenomes_base}/Rattus_norvegicus/Ensembl/Rnor_5.0/Sequence/BismarkIndex/" @@ -209,7 +209,7 @@ params { } 'Rnor_6.0' { fasta = "${params.igenomes_base}/Rattus_norvegicus/Ensembl/Rnor_6.0/Sequence/WholeGenomeFasta/genome.fa" - bwa = "${params.igenomes_base}/Rattus_norvegicus/Ensembl/Rnor_6.0/Sequence/BWAIndex/genome.fa" + bwa = "${params.igenomes_base}/Rattus_norvegicus/Ensembl/Rnor_6.0/Sequence/BWAIndex/version0.6.0/" bowtie2 = "${params.igenomes_base}/Rattus_norvegicus/Ensembl/Rnor_6.0/Sequence/Bowtie2Index/" star = "${params.igenomes_base}/Rattus_norvegicus/Ensembl/Rnor_6.0/Sequence/STARIndex/" bismark = "${params.igenomes_base}/Rattus_norvegicus/Ensembl/Rnor_6.0/Sequence/BismarkIndex/" @@ -219,7 +219,7 @@ params { } 'R64-1-1' { fasta = "${params.igenomes_base}/Saccharomyces_cerevisiae/Ensembl/R64-1-1/Sequence/WholeGenomeFasta/genome.fa" - bwa = "${params.igenomes_base}/Saccharomyces_cerevisiae/Ensembl/R64-1-1/Sequence/BWAIndex/genome.fa" + bwa = "${params.igenomes_base}/Saccharomyces_cerevisiae/Ensembl/R64-1-1/Sequence/BWAIndex/version0.6.0/" bowtie2 = "${params.igenomes_base}/Saccharomyces_cerevisiae/Ensembl/R64-1-1/Sequence/Bowtie2Index/" star = "${params.igenomes_base}/Saccharomyces_cerevisiae/Ensembl/R64-1-1/Sequence/STARIndex/" bismark = "${params.igenomes_base}/Saccharomyces_cerevisiae/Ensembl/R64-1-1/Sequence/BismarkIndex/" @@ -230,7 +230,7 @@ params { } 'EF2' { fasta = "${params.igenomes_base}/Schizosaccharomyces_pombe/Ensembl/EF2/Sequence/WholeGenomeFasta/genome.fa" - bwa = "${params.igenomes_base}/Schizosaccharomyces_pombe/Ensembl/EF2/Sequence/BWAIndex/genome.fa" + bwa = "${params.igenomes_base}/Schizosaccharomyces_pombe/Ensembl/EF2/Sequence/BWAIndex/version0.6.0/" bowtie2 = "${params.igenomes_base}/Schizosaccharomyces_pombe/Ensembl/EF2/Sequence/Bowtie2Index/" star = "${params.igenomes_base}/Schizosaccharomyces_pombe/Ensembl/EF2/Sequence/STARIndex/" bismark = "${params.igenomes_base}/Schizosaccharomyces_pombe/Ensembl/EF2/Sequence/BismarkIndex/" @@ -242,7 +242,7 @@ params { } 'Sbi1' { fasta = "${params.igenomes_base}/Sorghum_bicolor/Ensembl/Sbi1/Sequence/WholeGenomeFasta/genome.fa" - bwa = "${params.igenomes_base}/Sorghum_bicolor/Ensembl/Sbi1/Sequence/BWAIndex/genome.fa" + bwa = "${params.igenomes_base}/Sorghum_bicolor/Ensembl/Sbi1/Sequence/BWAIndex/version0.6.0/" bowtie2 = "${params.igenomes_base}/Sorghum_bicolor/Ensembl/Sbi1/Sequence/Bowtie2Index/" star = "${params.igenomes_base}/Sorghum_bicolor/Ensembl/Sbi1/Sequence/STARIndex/" bismark = "${params.igenomes_base}/Sorghum_bicolor/Ensembl/Sbi1/Sequence/BismarkIndex/" @@ -252,7 +252,7 @@ params { } 'Sscrofa10.2' { fasta = "${params.igenomes_base}/Sus_scrofa/Ensembl/Sscrofa10.2/Sequence/WholeGenomeFasta/genome.fa" - bwa = "${params.igenomes_base}/Sus_scrofa/Ensembl/Sscrofa10.2/Sequence/BWAIndex/genome.fa" + bwa = "${params.igenomes_base}/Sus_scrofa/Ensembl/Sscrofa10.2/Sequence/BWAIndex/version0.6.0/" bowtie2 = "${params.igenomes_base}/Sus_scrofa/Ensembl/Sscrofa10.2/Sequence/Bowtie2Index/" star = "${params.igenomes_base}/Sus_scrofa/Ensembl/Sscrofa10.2/Sequence/STARIndex/" bismark = "${params.igenomes_base}/Sus_scrofa/Ensembl/Sscrofa10.2/Sequence/BismarkIndex/" @@ -263,7 +263,7 @@ params { } 'AGPv3' { fasta = "${params.igenomes_base}/Zea_mays/Ensembl/AGPv3/Sequence/WholeGenomeFasta/genome.fa" - bwa = "${params.igenomes_base}/Zea_mays/Ensembl/AGPv3/Sequence/BWAIndex/genome.fa" + bwa = "${params.igenomes_base}/Zea_mays/Ensembl/AGPv3/Sequence/BWAIndex/version0.6.0/" bowtie2 = "${params.igenomes_base}/Zea_mays/Ensembl/AGPv3/Sequence/Bowtie2Index/" star = "${params.igenomes_base}/Zea_mays/Ensembl/AGPv3/Sequence/STARIndex/" bismark = "${params.igenomes_base}/Zea_mays/Ensembl/AGPv3/Sequence/BismarkIndex/" @@ -273,7 +273,7 @@ params { } 'hg38' { fasta = "${params.igenomes_base}/Homo_sapiens/UCSC/hg38/Sequence/WholeGenomeFasta/genome.fa" - bwa = "${params.igenomes_base}/Homo_sapiens/UCSC/hg38/Sequence/BWAIndex/genome.fa" + bwa = "${params.igenomes_base}/Homo_sapiens/UCSC/hg38/Sequence/BWAIndex/version0.6.0/" bowtie2 = "${params.igenomes_base}/Homo_sapiens/UCSC/hg38/Sequence/Bowtie2Index/" star = "${params.igenomes_base}/Homo_sapiens/UCSC/hg38/Sequence/STARIndex/" bismark = "${params.igenomes_base}/Homo_sapiens/UCSC/hg38/Sequence/BismarkIndex/" @@ -285,7 +285,7 @@ params { } 'hg19' { fasta = "${params.igenomes_base}/Homo_sapiens/UCSC/hg19/Sequence/WholeGenomeFasta/genome.fa" - bwa = "${params.igenomes_base}/Homo_sapiens/UCSC/hg19/Sequence/BWAIndex/genome.fa" + bwa = "${params.igenomes_base}/Homo_sapiens/UCSC/hg19/Sequence/BWAIndex/version0.6.0/" bowtie2 = "${params.igenomes_base}/Homo_sapiens/UCSC/hg19/Sequence/Bowtie2Index/" star = "${params.igenomes_base}/Homo_sapiens/UCSC/hg19/Sequence/STARIndex/" bismark = "${params.igenomes_base}/Homo_sapiens/UCSC/hg19/Sequence/BismarkIndex/" @@ -298,7 +298,7 @@ params { } 'mm10' { fasta = "${params.igenomes_base}/Mus_musculus/UCSC/mm10/Sequence/WholeGenomeFasta/genome.fa" - bwa = "${params.igenomes_base}/Mus_musculus/UCSC/mm10/Sequence/BWAIndex/genome.fa" + bwa = "${params.igenomes_base}/Mus_musculus/UCSC/mm10/Sequence/BWAIndex/version0.6.0/" bowtie2 = "${params.igenomes_base}/Mus_musculus/UCSC/mm10/Sequence/Bowtie2Index/" star = "${params.igenomes_base}/Mus_musculus/UCSC/mm10/Sequence/STARIndex/" bismark = "${params.igenomes_base}/Mus_musculus/UCSC/mm10/Sequence/BismarkIndex/" @@ -311,7 +311,7 @@ params { } 'bosTau8' { fasta = "${params.igenomes_base}/Bos_taurus/UCSC/bosTau8/Sequence/WholeGenomeFasta/genome.fa" - bwa = "${params.igenomes_base}/Bos_taurus/UCSC/bosTau8/Sequence/BWAIndex/genome.fa" + bwa = "${params.igenomes_base}/Bos_taurus/UCSC/bosTau8/Sequence/BWAIndex/version0.6.0/" bowtie2 = "${params.igenomes_base}/Bos_taurus/UCSC/bosTau8/Sequence/Bowtie2Index/" star = "${params.igenomes_base}/Bos_taurus/UCSC/bosTau8/Sequence/STARIndex/" bismark = "${params.igenomes_base}/Bos_taurus/UCSC/bosTau8/Sequence/BismarkIndex/" @@ -321,7 +321,7 @@ params { } 'ce10' { fasta = "${params.igenomes_base}/Caenorhabditis_elegans/UCSC/ce10/Sequence/WholeGenomeFasta/genome.fa" - bwa = "${params.igenomes_base}/Caenorhabditis_elegans/UCSC/ce10/Sequence/BWAIndex/genome.fa" + bwa = "${params.igenomes_base}/Caenorhabditis_elegans/UCSC/ce10/Sequence/BWAIndex/version0.6.0/" bowtie2 = "${params.igenomes_base}/Caenorhabditis_elegans/UCSC/ce10/Sequence/Bowtie2Index/" star = "${params.igenomes_base}/Caenorhabditis_elegans/UCSC/ce10/Sequence/STARIndex/" bismark = "${params.igenomes_base}/Caenorhabditis_elegans/UCSC/ce10/Sequence/BismarkIndex/" @@ -333,7 +333,7 @@ params { } 'canFam3' { fasta = "${params.igenomes_base}/Canis_familiaris/UCSC/canFam3/Sequence/WholeGenomeFasta/genome.fa" - bwa = "${params.igenomes_base}/Canis_familiaris/UCSC/canFam3/Sequence/BWAIndex/genome.fa" + bwa = "${params.igenomes_base}/Canis_familiaris/UCSC/canFam3/Sequence/BWAIndex/version0.6.0/" bowtie2 = "${params.igenomes_base}/Canis_familiaris/UCSC/canFam3/Sequence/Bowtie2Index/" star = "${params.igenomes_base}/Canis_familiaris/UCSC/canFam3/Sequence/STARIndex/" bismark = "${params.igenomes_base}/Canis_familiaris/UCSC/canFam3/Sequence/BismarkIndex/" @@ -344,7 +344,7 @@ params { } 'danRer10' { fasta = "${params.igenomes_base}/Danio_rerio/UCSC/danRer10/Sequence/WholeGenomeFasta/genome.fa" - bwa = "${params.igenomes_base}/Danio_rerio/UCSC/danRer10/Sequence/BWAIndex/genome.fa" + bwa = "${params.igenomes_base}/Danio_rerio/UCSC/danRer10/Sequence/BWAIndex/version0.6.0/" bowtie2 = "${params.igenomes_base}/Danio_rerio/UCSC/danRer10/Sequence/Bowtie2Index/" star = "${params.igenomes_base}/Danio_rerio/UCSC/danRer10/Sequence/STARIndex/" bismark = "${params.igenomes_base}/Danio_rerio/UCSC/danRer10/Sequence/BismarkIndex/" @@ -355,7 +355,7 @@ params { } 'dm6' { fasta = "${params.igenomes_base}/Drosophila_melanogaster/UCSC/dm6/Sequence/WholeGenomeFasta/genome.fa" - bwa = "${params.igenomes_base}/Drosophila_melanogaster/UCSC/dm6/Sequence/BWAIndex/genome.fa" + bwa = "${params.igenomes_base}/Drosophila_melanogaster/UCSC/dm6/Sequence/BWAIndex/version0.6.0/" bowtie2 = "${params.igenomes_base}/Drosophila_melanogaster/UCSC/dm6/Sequence/Bowtie2Index/" star = "${params.igenomes_base}/Drosophila_melanogaster/UCSC/dm6/Sequence/STARIndex/" bismark = "${params.igenomes_base}/Drosophila_melanogaster/UCSC/dm6/Sequence/BismarkIndex/" @@ -366,7 +366,7 @@ params { } 'equCab2' { fasta = "${params.igenomes_base}/Equus_caballus/UCSC/equCab2/Sequence/WholeGenomeFasta/genome.fa" - bwa = "${params.igenomes_base}/Equus_caballus/UCSC/equCab2/Sequence/BWAIndex/genome.fa" + bwa = "${params.igenomes_base}/Equus_caballus/UCSC/equCab2/Sequence/BWAIndex/version0.6.0/" bowtie2 = "${params.igenomes_base}/Equus_caballus/UCSC/equCab2/Sequence/Bowtie2Index/" star = "${params.igenomes_base}/Equus_caballus/UCSC/equCab2/Sequence/STARIndex/" bismark = "${params.igenomes_base}/Equus_caballus/UCSC/equCab2/Sequence/BismarkIndex/" @@ -377,7 +377,7 @@ params { } 'galGal4' { fasta = "${params.igenomes_base}/Gallus_gallus/UCSC/galGal4/Sequence/WholeGenomeFasta/genome.fa" - bwa = "${params.igenomes_base}/Gallus_gallus/UCSC/galGal4/Sequence/BWAIndex/genome.fa" + bwa = "${params.igenomes_base}/Gallus_gallus/UCSC/galGal4/Sequence/BWAIndex/version0.6.0/" bowtie2 = "${params.igenomes_base}/Gallus_gallus/UCSC/galGal4/Sequence/Bowtie2Index/" star = "${params.igenomes_base}/Gallus_gallus/UCSC/galGal4/Sequence/STARIndex/" bismark = "${params.igenomes_base}/Gallus_gallus/UCSC/galGal4/Sequence/BismarkIndex/" @@ -388,7 +388,7 @@ params { } 'panTro4' { fasta = "${params.igenomes_base}/Pan_troglodytes/UCSC/panTro4/Sequence/WholeGenomeFasta/genome.fa" - bwa = "${params.igenomes_base}/Pan_troglodytes/UCSC/panTro4/Sequence/BWAIndex/genome.fa" + bwa = "${params.igenomes_base}/Pan_troglodytes/UCSC/panTro4/Sequence/BWAIndex/version0.6.0/" bowtie2 = "${params.igenomes_base}/Pan_troglodytes/UCSC/panTro4/Sequence/Bowtie2Index/" star = "${params.igenomes_base}/Pan_troglodytes/UCSC/panTro4/Sequence/STARIndex/" bismark = "${params.igenomes_base}/Pan_troglodytes/UCSC/panTro4/Sequence/BismarkIndex/" @@ -399,7 +399,7 @@ params { } 'rn6' { fasta = "${params.igenomes_base}/Rattus_norvegicus/UCSC/rn6/Sequence/WholeGenomeFasta/genome.fa" - bwa = "${params.igenomes_base}/Rattus_norvegicus/UCSC/rn6/Sequence/BWAIndex/genome.fa" + bwa = "${params.igenomes_base}/Rattus_norvegicus/UCSC/rn6/Sequence/BWAIndex/version0.6.0/" bowtie2 = "${params.igenomes_base}/Rattus_norvegicus/UCSC/rn6/Sequence/Bowtie2Index/" star = "${params.igenomes_base}/Rattus_norvegicus/UCSC/rn6/Sequence/STARIndex/" bismark = "${params.igenomes_base}/Rattus_norvegicus/UCSC/rn6/Sequence/BismarkIndex/" @@ -409,7 +409,7 @@ params { } 'sacCer3' { fasta = "${params.igenomes_base}/Saccharomyces_cerevisiae/UCSC/sacCer3/Sequence/WholeGenomeFasta/genome.fa" - bwa = "${params.igenomes_base}/Saccharomyces_cerevisiae/UCSC/sacCer3/Sequence/BWAIndex/genome.fa" + bwa = "${params.igenomes_base}/Saccharomyces_cerevisiae/UCSC/sacCer3/Sequence/BWAIndex/version0.6.0/" bowtie2 = "${params.igenomes_base}/Saccharomyces_cerevisiae/UCSC/sacCer3/Sequence/Bowtie2Index/" star = "${params.igenomes_base}/Saccharomyces_cerevisiae/UCSC/sacCer3/Sequence/STARIndex/" bismark = "${params.igenomes_base}/Saccharomyces_cerevisiae/UCSC/sacCer3/Sequence/BismarkIndex/" @@ -419,7 +419,7 @@ params { } 'susScr3' { fasta = "${params.igenomes_base}/Sus_scrofa/UCSC/susScr3/Sequence/WholeGenomeFasta/genome.fa" - bwa = "${params.igenomes_base}/Sus_scrofa/UCSC/susScr3/Sequence/BWAIndex/genome.fa" + bwa = "${params.igenomes_base}/Sus_scrofa/UCSC/susScr3/Sequence/BWAIndex/version0.6.0/" bowtie2 = "${params.igenomes_base}/Sus_scrofa/UCSC/susScr3/Sequence/Bowtie2Index/" star = "${params.igenomes_base}/Sus_scrofa/UCSC/susScr3/Sequence/STARIndex/" bismark = "${params.igenomes_base}/Sus_scrofa/UCSC/susScr3/Sequence/BismarkIndex/" diff --git a/conf/modules.config b/conf/modules.config index a0506a4..da58a5d 100644 --- a/conf/modules.config +++ b/conf/modules.config @@ -1,12 +1,12 @@ /* -======================================================================================== +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Config file for defining DSL2 per module options and publishing paths -======================================================================================== +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Available keys to override module options: - ext.args = Additional arguments appended to command in module. - ext.args2 = Second set of arguments appended to command in module (multi-tool modules). - ext.args3 = Third set of arguments appended to command in module (multi-tool modules). - ext.prefix = File name prefix for output files. + ext.args = Additional arguments appended to command in module. + ext.args2 = Second set of arguments appended to command in module (multi-tool modules). + ext.args3 = Third set of arguments appended to command in module (multi-tool modules). + ext.prefix = File name prefix for output files. ---------------------------------------------------------------------------------------- */ @@ -14,14 +14,14 @@ process { publishDir = [ path: { "${params.outdir}/${task.process.tokenize(':')[-1].tokenize('_')[0].toLowerCase()}" }, - mode: 'copy', + mode: params.publish_dir_mode, saveAs: { filename -> filename.equals('versions.yml') ? null : filename } ] withName: SAMPLESHEET_CHECK { publishDir = [ path: { "${params.outdir}/pipeline_info" }, - mode: 'copy', + mode: params.publish_dir_mode, saveAs: { filename -> filename.equals('versions.yml') ? null : filename } ] } @@ -33,7 +33,7 @@ process { withName: CUSTOM_DUMPSOFTWAREVERSIONS { publishDir = [ path: { "${params.outdir}/pipeline_info" }, - mode: 'copy', + mode: params.publish_dir_mode, pattern: '*_versions.yml' ] } diff --git a/conf/test.config b/conf/test.config index 5582c1d..f7064d9 100644 --- a/conf/test.config +++ b/conf/test.config @@ -1,11 +1,11 @@ /* -======================================================================================== +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 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/hic -profile test,<docker/singularity> + nextflow run nf-core/hic -profile test,<docker/singularity> --outdir <OUTDIR> ---------------------------------------------------------------------------------------- */ diff --git a/conf/test_full.config b/conf/test_full.config index 7498783..7c09bad 100644 --- a/conf/test_full.config +++ b/conf/test_full.config @@ -1,11 +1,11 @@ /* -======================================================================================== +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Nextflow config file for running full-size tests -======================================================================================== +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Defines input files and everything required to run a full size pipeline test. Use as follows: - nextflow run nf-core/hic -profile test_full,<docker/singularity> + nextflow run nf-core/hic -profile test_full,<docker/singularity> --outdir <OUTDIR> ---------------------------------------------------------------------------------------- */ diff --git a/docs/images/nf-core-hic_logo_dark.png b/docs/images/nf-core-hic_logo_dark.png index dee3db82069b61e9a5380d940355f47ff565057c..e245502fd09cb0c22db3025a4e6c9ac4476a77a1 100644 GIT binary patch literal 58282 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 E0A+RGdH?_b literal 288 zcmd<GQFQTl4v7qKRqzP$^-%~2b@K6aR#4K_*Y|V{ansj#32}kQ80i`4>%00X*>Tx` zRNC2ixH`JnaoL1;hWNPJDVQ2qC<LVz=a&{Grz-el=4O^Ccor)Jr6wk4q^8*DLsW6u z=!13HIQhFof($aW!=uN;(2gr4BUPb1HK{nWBvm1^SfL~}w;;bLu_!aAQlT_2F)1fi zp(J0SIJKxOGdWeEGQYG)p(wSmG_|-yA+cB?vqT}aA~`iRB{fB%2<EmNklXaQ0&-Fl ii&GU!iYgTn(-SlE6mk+vQj7GsZ1llyv(X28k_!MwgIRh2 diff --git a/docs/images/nf-core-hic_logo_light.png b/docs/images/nf-core-hic_logo_light.png index 1993002f28494136e88a278dbbfcb5170b757b3e..5601950978b384469e001f12c14318c51dfb064d 100644 GIT binary patch literal 58238 zcmeAS@N?(olHy`uVBq!ia0y~y;P}J9!2E)Pje&u|;dqe|0|NtRfk$L90|Va?5N4dJ z%_q&kpuphi;uumf=gr;vDND*@)qj02Q9B$G$n)6XOrNt)tHhy_oa8e}9fnD>X7_e< ztX<vlA}NHcq;dAyU3#y7y)O7x729{c_ofc_rBk0yi^j%y2e_=eB(YQH*qs@|)t3#Q zrCnC!aqdW#>3)?sqvXE*s<xLtX_HpYd-d;I@YkxjpXa=i{~EH_dgiND>z@Cu*%uua z7RJN?1tEuBUP74+3<qWg|6qjj8n^;S*$fN}qu~Ha5ToHR8V-Xy4cv^ff<zGmLr&P` z;K^TAo~z!Rof7~5llJ5{)weFsE4w%O?eC@fvbH<+?D^y{$zQ!P<Lb8$cm5ozI>zR9 zXWG=MQ!hzEO<1tw<;s(HJ@vecDkrUfA0M}eue{WxU!UP`>ZE?voyB=|iIuYN_$3Uv z?4cTZmcCqh@~!7O&rh<RakHK@O{$z^Gb`@nbN^q{zt3P{nbUQMAF47rxhktDzUt|` z_Z~&Lld5jI_`gc<6KSxsGT;9p;GxX{wS^y;AxaN;%$_%Ejz>}Kr0eRHkq<4hx6XND z>v_+{eE$cBhdK_42+NneTzPV?=Q{uOFNy<inm8BhoIHQ-tp1<hmmC|4MCu@>F-T}$ z4xU^+`A^NH@bqH+o26#^a`WmQDlc_rNX^leg(_lbORUP;H1A2g+Rv3ec^9AW_^wu2 z_ENw>Qtb~^ML_1|;K{<Cbp|K()ozAcoO82E&#Oz^S;CR<cqYu{4ynHWzWWqTu2<W+ zr(_zF+9ZuX2PA@E^~r*wU%|EiLMO$asF3@;Pxs`;ONtFf$39M%gW4c!W^20B{N(P* zG2vF;j`{Ou$7{@G)Npyo4v}v-HDlhaJ$fgrC%@60yL5r|q?#Qi91CPx<ss4xW_w?* zJgHJyJZZkR%+f8+o^=OG<R$Xqft8a5c7LAVr?yLxT(8xBZrk~@wc3lF@f6&F372Qh zn{{VairLApt&69W>6|P-cUJ#Sm=#CBJa{zDzVzkFlWi*dCqAietJr*e(w+HF?x}oN ziH!LA@uJG^-?!I=%G+z74E2n&IU>{it8wSgR(rjQ{|D4IrKYAXEdjL`K+dh015P$| z<|n<|N+$20|74nq{OsBB7TelvggyUhoZRYss(6{4->1LDpSk64KlsgRW{B|T)R!wy zx=ph8__S#Ao|T6^@6CKNZRgL{-|Z7#&r&H)ueN6X@%W3{Z<{@h-#J4XRQH1HV_;yo zVe)Ho$-UW|wSV84{bZTS``NSOU+}0#oIgJK&eSKD6z@G-siXe$rpo_1P$HlEo_mD? z!p6z<vs0eweEWaiGjGo9cnhl~Ht}ZW`zO3yd2;roKhqQMf79BoUitUVpF_E?E94!H zMqc8ESlZy5Se5nZsb^h&@9y%+e_q`AbLe-w#7oX)%hk54NBV3^KVkmYW0JXQ<@A+y z2ZG@Z4{$F0>-kT~Gnsey{kc!(gQCIsPRMdITT{!)Ps-a%ijPnFvs?v~L@G)=wsZDa zz}?yfio%(3H=i#uee-Xh%6gDD`OL3Qo;`2YpP4HE-|6H(Q}(P&%By?$PSJ(w*okYG zU@aescyI!#Q_j}@eP_m#@Mq7&+oWHe`6KVS&+Mc&+nx6wRjNy8i_|u3HG(I}q-D$1 z;%7ezzrNx1e@pZIA1)t0XWUU2`Esl0y-6v@gJb?COp2bgCpoX~;l!`!*m}$m&YUrC z)}6^u)=z#TQ*iye%Fl&PlWXTCRAm+APnz#vR66Oe<;Gj*YCYe1d|Ifo-`0G8!4@B< zgew~G%y{I>l_%Ac|2$~eU2Af3`}wo_GSTfG>A6)|MbVSEC(F#39d8k1#cwbRUJBeO zxEwrL-|v$;^Sd(lN%=Ep$G=$PtkQ5Q0G2xwoWCxA@F#RqH~WpZ1(Vj#oE=}0Q5(b< zavaf6?3r6X_uwfz&rg$2*)iB6a@LHOD^Gr&{O3)>?pm9Z)@}3I79iQ{VLvnFHp6xM zNl)CLKNG*E$>;DD?u`wK%a*HsSE)SPu>0?qJAV%SeLazV!77BCHO$p++8y}%-tUw4 z>nW@YHf>w8X3dmykhH~cpkwyDS$Afp7@q87Ec^X$=g-#f>w{GqP9b8a_rrPPh?~#% zsqEkD7s;UI3y-!^Q(MzW|9s2!j(-l_`E%$~)f2`QR`9sFcKfSm8GpfF_Q`wlYZozu z%!g<G*Kga|_WX-}_DsBQt+!Bv-~w2|cVO4dd9(HyoD^k#bIJG9ywWaa10lFKBK+6O zeE9Wt=g-!2yHpq@1mOX<rW;gZ{Y+<m_w8M22a`b%LW}-%wVU<_zVfU6d|Y~p$-oFn z#@^t;*Zbz?`#0>-^JH-AfIH6F+}6}`;*+V&@4nspdV<Ly3!#TUT-CC^;kEsoC+k3_ zA=$%!-~PeZ{JFE^Bc>}bEOvv3(85>x&%bstmjAvCGO7!1l*BggNpIu|=KHU47ib7v z0{8!hy%`5y%lj2wuVP`8aE1Gj=e9Y2#b5t3XZ3Z~dkZxPA~am^@%L40_W$v7Gsx$g z5Ed-sp8Q6-V1D#<WsU<Y5JmHhb#fnmxlg*YPtK9SZ7ST;hrj4D$NdKt<%?fWVo7k( zgyj$epJu-wKacEM!XS|t?G3F$5+0kr+Pc<LY|@-~tJ4g1OE1S(1-}$H@Y2`c_nmLi z$A;a1zgDF%N~FTv|M=xoPdzQ!B!<(T_rk1LK1^8`b=Z!d*Ov7_$L1yC;B<JPV%Nr! z2FBVAmt(6IlyE%I^j(`cpV`@;(clrxPse-~$L+Q`d39+q&x>W37#oZ~{V{!$e2D)* z16;*<-lfbuFV?ASpT@^HXX0Pxxc$cF`!7UJS7A{0fyPNfkIAd8ww`g3R>vFiUX@Ju zN@tjN=*yLqNijAL@}_-eieQE&;D(Q%l0COg<uhz>pR{Lx3CDw;H@=r73gk~$GOlTa z2Hb%e8CSAzPujDuq>pj$-pjF8K~^jUZftYkO`h?Ad4n3<|BppIzfIvYY)JOJ7iGm# zaO~UqM0w#lhHDNmNAZ}v+N!d1BgmNjmt(CWK#Jz=Z>zO4{vyJV3|D3oGxf=*ONwkI z!7mvOIOx1&-QWoKyYtm$ziT#Kj@`Amgd;&ATl0^MToqS?AuMkhJd*l)>!;_w-6egD zGv6_b8rho8R1p{HV>B>>8R2&Sb@1B9PW-Bw)A<;AQrsuyX5U!vwSP8)8Sj1@Nb&9# zu{dtEdS&iQ8RlI}FUMMiS+N*QxSM_FykT~O>4($8;J8fK@;719+@;Pu3uZsL?$yq~ zwk^H)w`Cgd1~yO%YB;;%W}dIg&8aEzRrzf>^<8g0Cizw6yOo6HwokU1@#NysnKyg? zDuPUssP3)O^~}?lo9yuZWyy5DseFt)XIkVNc$a)&J`j<$E&BGPH~vObpZrld@45cY z<|^rDpPxKT+x<0R68o>)|6j%5oBQP6(U~`&D&7MpGMVz+N#0)V5*N-cWoF1uI>di~ zE$9bh!V=TlYnO!I+qq?bZS4P|db4kp1@2W(7p)AgdGE3L?k??<b3OkVos{)_CZ3+Q zTY3hlA=+@UB>5!+^RJBMyG#6E3LKaPita{{ItB^Lvt`-wRq1+vC;xkTZ&T;IOW#z& zzifXzZT8!1Z$0g1J?WoRlU11ZEuymk<iU{O#c{hePI`Mkm$={ya@4o}Ydhv2;y)mz z@rNOx@@(1aiBDWT_nBUm39Qi)whUzYHB)77+U~C#RqXd$7+0rXOaYs66rAkueer8x zUUd>0J`Sp;x7V)qjGOeNebOGAliN0RUW--UJO6X}<>+7FW`*DC!1ZrEifTbox$|;t zl%6b8#Ae&<JNd^0f*E=^Tjd$F7T?TMJ^A$I)S9@dTj%S7tYTRF&i#^g=Nc_J-%s-{ zDK>20bnW|_@4Tk02WABPU`)9DTL0$PSt|CkQdSknfYjf(BK7r_%c|{juCFiM<vkay zqqg^V?Nyi^W^2=SZ#6zCJ?YMjl<<cZAUy%1`rbv3F9nz*{EEC^3LJ>Mz3tfFbJAH{ z4TcLpFdtZUIcIy>^6*cU&TH<1J<<#=IksBgUCQp=&T#Hll=>fyKMdeJI@@jY-CI+i zET8-*Vp0{<bj#kVx0h6|PdR6}V73=KL)#%(fEAuC)Ao#;`(*m$H+r+dEljPqZI>9? zO57*;PvK+aIU2=nzkAtowb#X;x$iDq#wbz9WzQgTHD~)b^~&f~<<|s3j?dBRt;#K* z6h0MXy!G9smn0h=Mr1!!_xz^1^L-BU7k`61m77=Zm#zC%5k4vXtG=|S+OON!LgnYb z%66Y*vn%WO?tf1oPTp6iaq@7t@#gg3$qaJ@Tjd$LGPXtEp8O|gQoZbXcaS{>JnMZo z?JenGw3+kd?^0(5=VG(g`JX?Dw9c=anVvt1J3Kf3?*2P-g_q8obX;cF*|OL3K&|T+ z@%JW!v&3T7Vn*c?jA0CBF`MsJIZnFo_1+a6_yyCXzTUc~vR;2~vP1sclIb!G?Sclj zrZeZ%K2#U~ckS!f<MYbiu~sH6eEwtGP4C{XD$~DjzY0p-e=P$Utm4>qWf!Jx+q_Y* zF%T42Z7;XKkDvWy+MK)G^&nS2__$AfuWI3{M;Vj0gUXn*k+S9Ye*O8yU-OtZd{627 zX}a$HZ+~}H+kM~jdEJ?5x{FJ6s+CT<{(YOedSBg|n|XI<J>j49r><&p1J@DeRT)$2 zJef9hn%-VpHEFwQW$8;DkR1k1c{;KQ4)5QWOqbJ>Ws;b+dG?;qtxsc5T3UyNg%zDk z=ZpP2hq?aygNx7KS$_EW?4EY}l>E)NW<5Fj_wDq_ckbtGx0@5k_~LQ5@n(0gHfFQ! zy4u>>ON|)}9?g1t&DFC`{p8Z6n|m7M<L1n)4Sy*BvNA`mx9V+|N`0Kw@rHf-F30ZL zT*4s{{<rhb?aR?kuY9&IxBq?cyl!swgNNyBZMNO<$e;B8o62pqX~r9K-^uT*UR!xC zGpF_exBi;gf=}1C&oM4Mf9dFX%c6|;>rP**x-D9!a`N~k?f*3ug=ya!Hx)LVb$iI( zP<l0I`#RtCZ#FM3nI;J7^B#C?@@ngSpHHVQS+W&mFW>z|cd7G%6`9+jg+0Hi+^oLz zZR+wLw`Sene1FrPnlF*_|K8rct@hc4i@JC9<2G&Dw8{A7#kcjJ_-|jUnH{}NM}O}Q z!@^td^KVx@zaL*zxA(K?`5hH&zZ){W^ZeAPk{>%~rfq~354cD7dfCmq*y&H4UvB*) z$p@)D_pJ$B|JHlcjC-35LO=Rj-(C7Y&Wa_(bMxI>^PWsn5r68^nI10}|LEr2CtH@z zEZw+i)1KGG_2t*UwaZz?{D1KLyT1PVH<72$`sB>6*z)_V|NWm+!gF%|KS|fGzxP!8 zxzC)tLP=N4bWZ-Bd}oV=akcwP0|!ekdxkaL|5E1jKh3%R_Gt>F?yZSj9QV6b<^Q&l zK1Q1fPgYysUHbHrV}fzkw&>`~+FyNCf8J7={>^^hij;N6n>J1Q`@R0*ykh&GGux-X zv)@ww)4PA}N0WJL&)+Lce|~BC+>4uHqt(>j*_Yfb-u&gvvDR#UYok2hqTosVdgspk z+RK#;ikOAj+oJXT@_i#y=Rbsu2P=49T5)}w`p=T8VB1xX)UEC={U2b(k|TDuEZcvQ zxa!YoD&fn`kEW|EduDF`|7f$dedULJOLxn!lmC54T>osQ+C*QQ+(#EKncMz-acbHd z*$2=1WvuJJzvZw0TD(rq@7Af^_9xGJ-rH(nT)m@2A|YAh4}(F-*|OKORO%&C=YL%U zZd^J{S`xVaug9c#{kh2ucU8{6ESWB+E6d`Qxh?wlCG8(R-}S#w_uXPR?`G|q;)C%u zb^l(-&ObZ--@_9>qqn71p5E4Z?$pocc6+w`p3^;@UHkW(3pf6CGT;ADvvj^NpZd?2 zD*5qqX4-~X@od-!ss(4I?f%-NQa@`+oYiR#Xdr;9@_$-;m)5O%WM96^d%eCalUdN_ zyR$sj-}qeXxz1N~+Ow$i=&))1@BV#x{@&*M!u@kki0?0n^fUhXyvKHP-Rs8F^S>{8 zxI|jAT<zz_qcd;%Pvv7;Bi|~|(6;Di-dm4P(>>SB+zqmxfq}teaoldTlQA!4n5*iR z?=H!IDX`(*FV*?0FKhp-@t<UyDx4elyyl~KdzpPfLEY=;a(8!sy7B2~_TITqZO`xd z`rvxZf-j$4-urx7c68=VcQ1CvHvfn04V$m!Y@hVReDa=61yc$k?J5VUueaW-R#v{0 zVg6CDeD{~POPvo?y_{aN?o{Wb^S7q0kV>}x_wD`rygT1-x?leLNHp^BmHEl>TYn4l z$A6JIU2S`Dp^E*~C)dT&)24g3Gq$BKDq&!7JM=a18>qR}z<Y7Ubv>W0r|dk7ieEBp zkel`P+PAdbUuUWOH$FLEwbFS??X@Q#HqWa(*(m;Q|EuEr7C&E{dY67@SL*3$?d&(} zUoV&6`D$jrP1X0Rr>i%_de)hq{GYKcdiqp8W}f~-{0!+!Z|1%A|8(t=C8!Wf=-C5m zf#03{Wbsnx0|utI*WNu__Bwr%j@nG$P5TR$O#FD`TkdZA-&@7^y)eH2Y3uGj+wbzV zS*NcRpWAZ8_~MWG^Y6`@IyL#V)P`N_JU%@?TlV_u(q@LkiJtll*Vf$3%k}^C+*40? zZfZ{icvvH$$Mn@!w@K$!ZU$PNW{A7~Qg83#5)O&BwB4nFljeKmfBO4vQ|7Vb#(c8- zo=bkO{T8sV;0deeHrtz})93Gfe62b7eC<Ux*VU{3Pk7?nZM^wZU_heUABF<6I=fSL zAn$CLxXyp;DZ75P%J`Q81>0u5y;ga)?Dh6Ze|#s&cW*l1_NzVC`kVZYM?b@DYo7jd z|NQ0c{F+U#{c8Swn0lMPT>i#_jL@(8lm9qwzI!Xuiep0=sCe<*eAi0<<bI90;1R}S zu8ZSldlWf?5}Et*-B)yFnXaw6nU|ZrE&9LO$$0fj*OxYr-$lI5tmcdP_-8d=eA&aj z(dTTRue%(RdwcV{U-A8U85^>8>FrhBr>7^&5+U6x&v5P4*+Mq3={ZZLtL$7+(!r>s zzH?~_N5ty1-KDXU_IrKm_I%a)c!Sq-?RkYC)7Q=0_2tFqZ+Ew)o}R|6USI#z`?%ii zkK5bdYffC7r04fZ{A}54)uqi0&A~qy6B5pry`J>NjU8;h^z&nv7}>rw`jx+2cu6rK z;B49JKWV$aT6_M}*z3eH`-<{&+uvR1<NlgjgM!B5XLaxXpFNuP>1pm&r>plaED=aB z00qfW{bR)(pzzL_;kLKTb5b^_DSLJ)^8tlfZ^LH2z4m|Jy-%_CW3Bkp(<)zEeq|1~ z`Ty$Qmif-{|BhX{sJ*TB;R)eo{|mf?J@YcRMPHxJ$27;1J)2Pi)bQ3idD{Cq$mj;c zV&|6(%)4w)s(ZIL7+=lV{>rmXd+(xK-wqW<G`pXx{wB)4{?7h6xzF$2`+w=kyK4K| z_=^EoKfgX(_BwT`GebJ4ST+V{-sxTt6ALe`xLyWoGRQFRT6sBEYcAtCkd+!I=Yyh6 zXU^Q?+wyPMKA5dndGOS_V{1J(J$*ktZo|`!PnDMzhn{em^#7XuPw5*^KxN&LtDbvK zfP%E4_v@^X>_;aKs>o}|GM#g&pLO#8?37g{Vr|bi$A7=7Z}sht?fj_7$eX)<8_(ar zx@2D0&3RAwXT7}!iXeZ#hwKfGTfD$M>;{nYwy9MngOXPE^4%p{N;oQv&X#2_x|z4v z@?`s@HyU%>A6EZpTEAyg@k`e4bASKb|NVDHf%W7+_d)S^$+6*b@DIiZJtnu;&NVzI z0t!U4TRxLMd$mg(xTun^FUvH~XY<`v>Oc3Y*oRwjzkUraMGmg7UH8&Ad$a!DOXuHR za%>0&nc=h7=&F=756Fnc55P%gpI`aQiI)@~l!Q&KjSI8lmQJp`z0=w|eZ_|E$u%o( z=H=?jvQ#Lw$}^n1@*2rMdj3VB;J!u)gT>sm-CJ$<ZaTkp>1K!4n3+$~z1tb)c|2rq zSbimEyPkhh<V$ex!60pw+1=-l=f1lXyVUu>$}gww<hwTUuQ__&<n~%^uXYAGP^oNu zQ42Eqe#~=m-0j&<rb5RD9)wJ(eXzz?r82+X(<WhZzz@a;o?rh9RE5IKuCqCL?UEwf z2Zu@b^<|m-!0F>|;J3!jrG=BWPvK*nv)}{sf#981C;Kjed!q?4Ca<>Ude*He>0`Wm z=cS(RbUw!AAMz*dSyaLyA()@BE&5dP22YJY3?D-Ftt|ls7=wiIdY?_pOF9@!Chgf= z!eJ4)`EFI_q<EdV%x-6P&whLD+$BYZR(Xbbw@R0SQV_#|9T``$J&VBcp1yo{$&M0^ zh_&ECdiK)d101)+U9E12h}1DyfO<{(CqtlKaa-qC6!}tsdDqes2C#aMPt~4fQ_e9d zzcM{r_IlAJ#e_S#y0Q!nzGqA3A1s|L6SY-$xp`fs|D?Nt+gKSG7#^Gq&E0kWefci$ z?^F30)pu&1Ji65R0LSfFPsAtH#J^N9I44raP+@dG%IbhxdHtm5$$ugz`KweG6sCPU z@p9drob76twEw>GEDD_T-p6S2k*Mt;-!BPVKX?AU->#uW!7mv$L~XviOYda=lyi*9 z4@A$Fz1HnE-dsL~kLj`3L-vN?SJQ)iepD`Mzf>*!_;0uIW_Grlg@tKlmM0JY&9(E~ zeKT*b-pSeXx88uQ1?Zk!lRxQw-zQLK{D4Ju@+wosD!Y@%z1kZd|MIT<TlG@L!0q0o zC-bN9F@i0)ywm37x=V^?6L(Mg6IA6oKl$)3&^W_lPrFG^l+TvEKBlsN#*_K{ufg^1 ziZ-{sVg8?HU9w~=DPF!i#EN;%x6_{Iv}Ku&o!EM|?DbJleKSA6VQSPPhMYC4z1eT5 z^r`%Os1m>3!ua>T#A&sD+boQ$L9O+#o^dnc4uZ<ZhL0a#g=GKwyin!6wk%U$_O|Hj z%c_=IO0ec<Zi`-Od>|s|2jhd1ed|gZd>_nH`47?@+ikpAx@>v3@#gKSKaYFX8J*lE z+5-yM8!}Q~qbA)6usYsw@7_y2Sxs4{NlR|#<@$cwcF8iqXRpFZZ}0YoLeL<|%a|xD zhs6J;dpDiGtNN~{FzwroM`zyrpL*}s_I7XZ;6cLSnCU6?F9nz_raf7^)cJtcde5T3 zmjVXI>h_c{NVs#^GuSx(&*@ls$&%|=#-#df7RI-AWm5{%zCHHbXLz!?buq|A8|uJ) zF8LQF)A^?GF?wFg*)HXIFUE?!XXkX&+iO3AoU`}?^MREyb5f#T3bfvt|KztgsLjJ} zxz0ZIMXTpKow=ZN*zhpxO18Lqr6;JMSXsgl@iboLX0R2@gzHoJ7#@R)@nFg8PxtKd z+?QRL_ATJ0f_n6vnYJ^Y%$|HF&I&vj;9Lr>D%M_(-L<xa!(&p~?yc%4XL~(on542k zb6fP|DkDpgjay3?7|fQg*Opx{!Cd#;nR}sDM_%fjJ5x64%=B}hhSz}tlUG~kdaeU? zf|vc?F!N8yB)69W4wLRJSvy_*r^8DH13jM~j1NMN6&^ajQ02XjENDGQ!^Tg_p0AcV z^E_~nIgvU!V_UTKq&>?@_#PC-#al7-2)D{J_&wcpiIJ<~_@gs9+e<*Hg5j7ms15Py z*d<H0FW3CaUq-wXxKLi}^S$xxvsr1oOAB8L80dkr-kg7tg1^0<-$*z<Y0p-u)>Ee^ z#{^g%Vdzt-bbl!@LFH^&w$e%7rNs=(zuaBQd|(Ht#7lWTl`r4`yI6XfycX1zL0dN+ z`fYW0sk>Ku!@lV%J2#YYJeaa?a|wflIF~)coE#Z$`~AU?so=+p1J}pSdIHG^FBvwR z>Rrmru)H*N^W9s~RxCZBky1aiywjDcCvzd?mqFO7u&^Hy%Xgc^Td}BkZoa!q<>c0- z#SH$hQkOCxumHR0ao7*b8BY#E%2Ww{q~Q`T_J+`V5mpQzrs%w8m3DZ@-Y~f~^d*Dz zn{7vD-n=9UN@x=D_R~Nqh<S(p$#(Dd29-?ExX7MeC43JwV{hkde+BCCf~u{Q$7T<o zpN9-sC)j`s?zni+knhWq>C?PHK35A=YB-x;t+SW?HK^{L+#CJy`8UWcmW1^E$tn4u zJTd3VTu`34A8o}@aBSb=5(bG<a3I~`vS)|XZ3#Jd0;~=++`IWwuhgr(;mPUKm3!Be z@IB~>4YgwEv1*lP*avF;`ffdEAk}sl8ce^WzTTSZxehe2xqS*B!|IsnO9DYdzIvJ4 zqOHB#8v>VoU_Oww+qmvLZ~rttkjD>1thiM&pTBIE_xI_1jH_$nUospxuueyo!R_V_ z*(<CMPQKNUUBIB+2}-^Z;k{LF_o%D~8E-z7kKwrK?X|g{adB4c1{?CVWEtFM9^z+M zebt-&MnXF{7q)|JNO-c>?y8kqarmTukPQ*%xL3Vgb%`-yO6bd@stm95t6wrmpDBt1 zDP6PLZSOYQlaRLF+;>4Qc{bcCpTftm=A`J^GH-RpYn|-k46A!@w}1xA85kHg+^aJH z6~AmBJSP2*vSOL@WY#6d2GdNHnOd?;;8}>(z0nVkLk*wpws)F}IcR)td-*PJP%?cy z>+Q9DD&o`6F|N5Ox|A6_pOLV&P#Zi+aiFTIaFyxJ2N9FDgX*rzz?TdMB4>g^1~k2~ z8Zwh{;6q66uJifjyS&-G+8ZYOOy^^mGxaabC{xIwg+!Cv-m=6=)2E*U4-Ga1?^ssC z@L)|$kQGDEs<lg*88)oU(U)alXi(3(lI{6^>#bL7>$=wKs#{*VziYK!+~1!Y{mL_w z>lql#dfoP#O%y(_y!_U-W#8u%*1TS`%jVKcJzen*-q5e$M$}2a@|WK(DJE=9+r8EN z<k6+Y4Czms(spmHElm67@lpXa>y#jzwJrK&r}>-hYL>J9Nq_D(-h3}4(RL<i47B7@ z<I2UJR(xiGsl8RX*^_KNzpcGBZ}O8pq4VFL>kK--P4V8}qQ!C1u}oGoo-9;hpH#D} zzVgA3>sEJ{9(LZ7FTvegm0LY&Z{?rIKT1;fKDqL=>vHYe6_@1HU)!&L<6Y!fZ*70F z__zH0>Bq&Z&b>;R|F8JOtNO|8plSO5ujB7cfAY_-{N=^XJLOmGa@)I2`DC`&bMUbG z0nI%tN*EF}^t_DXtyp@bTID4+rS0DOtM~Wbzq#>~*86NSR=*b!`Iqhf%6(<KZre{2 zW?is&^)_WsKGjN<lZXGFK0o)%Pi0TJxH&Uz&5p>=y!h$MB}N8`*uTty&zF`ny!vs? zXOp(S4M*vx=l&J7S5{o#<;l0a{J_g6r?1NY|Esy~bHF5a>$|G!yCcm1F1pp~sptLa z>&xB^cI)@Q_1u}dO}*&R$E~a9KWAOOyJ&IT>nARZFAl2I&wO%DrQCAHX^X5Y*}W>i zFIOM__2d5U<M){@>UI{(D(ifgpMJdC;k)`y^ON_#=)doMzGLFm71zJ1?KIl^d@6U* zqC3TPX74JWKDnOud-9$iPqa;6ZFRq_|NqPO{hmeDlPZtq9y{{YQwmfwEL8cww}iu@ zHD6DbL89w#;E%?I!9N-qO>VE1ec9V*W52vUIRCuW@f)}9U$g2=-FY+5cE&wvz18;x z_UNDdd&(hs{S`-b1~-?*akuBj6+T$><&@3p)3(3cYRZpub7z;X30yB*?^}{TX@A_; zkB*mxC0zD17)%v@I?wy}Z4IA*oF(7OFMKrob-n(l^w(R=FQ?Y`O>cPTvp!?PM$W_& zzfQk+>$!f#cKef0R`s9Pp04Bh{{1%Dzq&7NpU0J7D(y3Uwe_*<g30qA^HubOIWLa8 zJ?+V-FI;x_Z|t|(pRwZL8=v>34^J+=<Sza7minYWnUkU?-&wfe*ov3p`&Vz9b6r=i zJ11!RR6YitqyH{3CWvVMIp8_#?KPLGboaOK^UuGJkDC*>aQUmg|25(&JHIV?uWNpL z?c;ood-I<B_bj^o=**hUWsD8#FZx&Pw>c^5xleI#v!(cyGbRhxT7I1MKBZmy>#dc1 zlkVMqsaI;Ir!+fsah$dNN$*L2@?YBW>1oYgF@yWp?K7*^+umAn{hiPI{4RU1B2c%g z<niKzGhd5`^-tGY=keY$*LL}rHQU!#)&%BnJ=|OMR@t-8{G_|jt6MfwUvKUEGELVq z?%htE!?BkNH{Y1~B=xVZ=dRwWx05Xc8FsA&&HZV~@SOAxUVFXWebS$(mjVTw(sob% z;<toh)%(h&%m*}rekA6Y-d-E~a_`5|qLt4V^*o!cnVzJycmDrHU;b(MPBOW@wt7;H z*2(`b;_u}O2{80b|5p@q{QQNw#Q#N8&Y!tCF?jyOd2V~l4EBCHAM5$-lD4tUri~wO zWPr1B_N1EZD%bge|Gw96D_i#c{;OFk|F!lq@09oc)b43_=cS%)fR5yo)4{=dXCE(L z787A|<=Cx>PelK|jaVGF+w|mn)t?KFKR@<b++)A`$?wa)=NHOcy=<-d_D5$XC`Q{S z@3G$doOfy9su!RckuUT7%3lV&6e!>le{v+mx$Vsy-IM>;KDYU_Cl@qExM$Pb2OE!< z+5EVXZ2dp4GBu`u;>LYt)A<+{dpvC4cp+!|w<YD*-f|Z`dh<C^U(@hZ-~69-wf{fo zZN9t9bnj-y`uf7OZw@OH7!Le;>Hne9bJBaS^*nEUx6Rx8_pPhvy$LG4Rk?O2k1u90 zG5U4-XUwE~$q%A0|Ng&sZ^|;R)#+DN+W&o7)35Tg`HP(XGK&rCe)T{1zFcinA3bTc z(LVKGb8@mLiGSZd`}g^Dd7t$RCDqG!Z;3IwvjWuceCBfUIp@=)O}cwe78-l<nZDZk zUA;1Yl7D1hpH{||?CDQBCto$+J=>eT;qrz#*9Bs?zP;1F@BPjA!v87BzrV>opSL;t z_K_p|rcRxDw=zj^@$aKgr?$WQ*Z%IHy-i8Q_4fT6Otx+bQZiId3xCOA(6w#NnjgGp zGhX_?v#c}w_Oa-ErK@xAzT21Wr43Gk+WxJNL*h5z-DS6zSy}q+?x4NqD(8+JRQbQI zq=T_Gr!egsX#VZuRr}L_QeWDt#|W!)u9?ad;QE#S(7%jH@;*g%4=o-)@R-!E`cwa< zuejmS#)U7YhpqSh^!BA_?VK;hJDNT7JU`6`RR~KDhr}+9+ijulWycq{?riN#-@ldf zGedIHdaK@sPu>F>JFnStIri7JONtLdX1%?3UbV9LrA+8I-rMJFfBfBDe((38^%-w& z+HFkrot(8j=jNvu%Xi1``5i7-RdN5$#Kqz~mP(Hw?>jm(@^sa~37UTbGS8M}r&qPk zJ6*i!PO;-jpC^r9y6oS_&6&A(aly1xS=*xLdv97^!e_P=Hpg<{#S4Gi9XcmZU)KI< z!LZd%q`_?CzoJ-U�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ÊK|!kW2`2 zv6Sv{&|+4e2VxJpUT}CSKW9D=QqpoIA)fJ`sH|e<b0mYefL7W5tPFHB_mDCaPJW!- z=)Kr_N!u>rip=`xX-j57vJl8?O9Uq_J=u7m7`#~XM@C7@l8ImMy<k|mFwVlztS-Ey zWl3x?xPb^(eDR~ytgm<ew}Yn%ReIN~Zk!Do*Q$Jd<i-zByP#~nC;u;ag!qBxZ!1zu zjx#K4;9jJx(z~v6V_`#m$GZtqPqYt!mTLL-gNHysW~=nJi8KCob?13-X^%#@ySs-} zrEP+1Ny`<6aK`hqB&6@l$SP%4A^f=V;U*JC$a3sO%qqS6{!N=-yx4lltlw%MzI1N< z2wGOZ>^!(l01CTFv);2j=m0g@`E~mHCS2hIl_i0>`V+q-Xg4hP1tllNNo<c1F?qHe zG%W~O7aO#D4zmwvEqO6>!KWiPezd(1@N7m36}Hoto+LcD@}iIN4rh&(l~d4epPt@$ z{yoaOoL5bJdSJ5pv18ZW+dXa>L)!2l-(JZ94?*n%HPqcbvX+`Nffl)#eyDrUDV+Rx z@<qi--|o!Ojo#*B4r)k%bS$x*u=J$e0a*vJyGFjV8`__{R)&{!EGc{SWmiA@KjU4_ zT$?y6z8<;pqZOoio-}A<3OG$>t($&vPNIB6zx5ks%}Yma{4j6)?o#f-c#Wz4(T08# zE2JQ8++;G78#J~7UgFMKVO!u_(qiIrouPl8gmk>1tWxGP$P@x7NP~=RMJ-gUk{GT( zaec{J=J`<V*fH)0kq36Y5X<Da$7++Alyir-`clWt&8erSy<h`r0r|sZfsXG!wmA}a z4I9#*y58*Wo3Lc9)!uiV2f_<Io7^t@I+Q2n{JHf)z;p9q{Wy>YkS9!irm3}GUXwUK z^nmyxWtGfmQ1k`KzE|y?#AMO_ibKD>c8Q>wz7=Q>1y~R7n>V1@iwWXSLrPjy-X5@S zaA!z&Y4<RGQ1rl5IQjAFMb0W`?fSof6?;xnS?LH`O}>LULg22EujPjgdo;{l+C47y zl~mo`dEn@Q?nTi{Y`2J6aPKHd%CXtydTGLrhoBudAni-iDpk))eq-EmB2nJ6)XdP# z?&{0Zc)m02e%<dfck~`8da&(ZKliHp*Oh;7|NHoo+a;9(xexO?Hx}-{=B4|%4YUOT z95zx)-jgd2^fxjuj%NG7UKw~#OjglzH)x>~<9z0Mf_E<&%x>&%=x4m{*VCJS>!$yk zFS~v-yE7hV&}Ze7bbG)N#rwy&;Ng)Q6@s$Lnr(=DW$H3bZ8_uou6Gg#o>m6h=~_8W zTDJP~>vQb)*!L*yTB@kWbkD@lY+u%e_!}=v8Rhu*$XLjFq#Nb9+~wIL`{T!v8$X`C zknr4yluQ&inf%m$u;WD^qm8BhDec9|DwzU*9jEMHD7EH7UoHc<<hbdxXCr8uUZ3$E zgU+nZ?UqSl4Ec<Dvn8bGclAvS;YZ2}43V>Bcx$Y8B{P^a_n+xD+T}dyo5%9&wPqjk z4>Y})HfyJ3#j_(fe)Py+zwxqEoMAodIo5BpUv9te5YBMAVYT|PV~e9zuJ#~#*kPKQ zJaZgqnMe3j*PjPpaCqL5o*VZ)<AL!3$Ag-sg|;7-bZ-3kb@NX@@C5bihW$*NZq~$` zZejbO@?m4=#*fmAlU1%xN0@jOv~_^Np7ELMcAv{upq85$XxGm6Ux(G7Gp_H*<1CZ? z@Z_f4x0_+hug7|9efxatfj^0R?=!q^@DI+N67_Cl?4)IoIbv{3XX$xQHfOGvziZgA z{i$nZUP+6}*(IQ<#2#ku#nDV_82sd(Z8*QpYVW(o1JaGtFV1;*{jO$%ccVW;xKB@S zKHs~ER}2v07m^HWCf<5?c?$QLU<Y;mQ>GUcCz)Kf+WYQbh_n6qjy%alq9L<u&0N|` zs_r&7To2BT&U$og{@DXhLuS{2BBWe+-V$4+O3ZZH(vznf`d!L-9$c;rw9~h8nv@p2 z{JL%Hs~PK6FY0c76SeBB-NVCnw_knP)!k6sVBE-h&~kUNaDnIt(+9J5{f+a=(nHi* zt2XNRPP;JYtsMi%ujwGaZu47j&0nGVAuVD5gE==h$W(aEWe>61`_Ab>>4EG<9gFnU zrU#~mFx!Ru_VoTX4ZO4lveFxr*;G6yeG6EA{jPWg^VJXM?G9QRr&?Z3n{Q*4V)d(@ zt)6iX?;GnU<@TI0&ZZBFRSRw(x$$Fyu*%knh`98ev}L;0-aM{3e0$g`d<xFp`@!_# zPv^#uN>(WWbK}Yx3zR<iJP3KvAXz7#-T3<V_V-`jU$=OmtO;2U4t0Y`v(?^r7ekuu zmosxW6|;TRKVT`G{5bfcVl^mdvGzUt_i(=Ifj^A*j%dkQ+$jEg<i?L!<2jn1)n^bj zl8Wan*1wCF#j)*?vM||}Hr<TTTm9Iv`|`3z(Z84-elvGBHvjs*pWTPip7Gk3{Opz6 zzUB02PF?a6GC>A)NLt|X>#P=ySs&7QW{69Dak$U2OE~%Qc9(XKNyxRIil@{hzxBKM zuYNdx@_=T@?KGtvhI5Q|CS2|no<X+}W%?u)PsU%f>-iY{nC3Z|a!fh*X?HAZ3`2~C zq1nE=Y4@kAWKKg-Y<l5k>2qf9hQ$r;-{1E$eY<<we6QRNsT~qOnxt!0R{lg38lIDu z%zBm280BO7qgdsGLBjvHd72ygvNojOHQWB4DV)*V@`<wN;-kpH11goDxq*AqP~WO} z&ay+KERf(5Hk9B{@yvqE3V|vOa9$f#00|1(hQr_gZ|>Hwd72)p{$cy($^L2TzS}c* zl{Q4Zj@Wo5id(5<qk=uxA|<gutxumfX>h!0a)>zE*72HOfHiE2Mweq<7gvY_m&pa! zf`ujAC5+ygT4mX~cReqg_?CY<nR3Ja+}nFQFYp-`zqdXAbKd7FRsVA{Gp(N2K2O_s z-gjQP9X|sDgMlKKJp&Ys47Rm9d&0)htCgPTWacLK*<HIE-p|Jf4S|Akk-8sg^JYAW zT<m=2qP|+-515SDH0`}mMGOf}B6Xy(%lh~j4%CEPeLdMGyQHu3^}Bq@xlof6v}b-` zhM6Y3Xp{{Ki_vfZg#rVE@TTGt28L&gch8^u<mTdHh#<oTOSL~xCc}XijS<FvBO}XT zQ5Cw?_@wRiYxB02_B-F3KPBaQ?3%ltS|<;xu=7QhtL&`Jy*us6HI?6!?#y|z+B46q zsCLr&lJCBse@HQIJ9W$W^SS4b7oI<x?_2cemes=v-*+2ThrNr5F5hQABc*<lU5f0l z*S9C%nRN5>=V>bcpHGOtzccT}JL_#fz1hIwo^Vq0&jF^@tL}Q9^C(K2^n1<Tc@v*} z$$5AGec$@u|NSkxeC9sU_S`q)$t#t3kD|~?=gYqz^i5&1NDJMny!rX#x#v&3_u5qc z_OIs6Su5MDC&_HTX}@IEx72SkdyD^GR(!wy^}D~b|MGyXVwg7j5Wh~x*2AwhPqxuG z$**Q<zWMMg*I>_gd$;jz-M`9i_LDA^`uR^bz1vrL?_tB!@X)DG7(LH<7TrHHZ*F?3 z+01k<zo_W%`@8>_ZCJI=`_s>@Uw3Z3o;^hiQvB?ge2AYXD0KHE8<UgG#@at^6gF#b zUzQb~rn<CvvW>ats#mjA<UK$AQ<*+1iczL}m6hhn%9&FY&wCf`KXa=6bcTCcaHpSt z(Lu%i_d`od(}b_u&3z(2sb<@5{xkMU5DzTY{BuAi^lGMOoyp05)yj%x#=Vas?pkub zh@9!m@XKS;ey>mK-tEiHFiJ=ay?XA<sb>30PcF{%{dBWSd*`w>Mzd2&$|k9={d@1< zs$EJa)hE{|omAibdzs@;i0LyH=l{HQeV>^XGxwTRaq}Z1lSBU`mH$5(_OCJY>jV}1 zd65^NpIQ57vwBYbB=1RkG*8~&wTx}Ws>hRT)K2=VTiT!em@MpjEqqdq&Pn#kH7j<1 z@9l+@#s|s_9<pz944pgm$w^N=pQ2L_EV?to)55RDOn9<v)vwDc`7hqRK7Nep*~(RA z>XkW@=AX@(bbgb+?d<l;*RBOml3BA#dvcA&Np_>z3{SWWz>aNDO*q8go_gr~#MP^+ z)51Pf7Nv!+D=6VpsZ5^~Uh+M3@nMGB%U8)wc{0<pPVMBogN0!yb3N@QJ$bYvN)T*7 z!X=S93!T>ahgYwXo$0&0!f#T$`pu282gA;&dg{G;r|rfbX%<=<H%YzkoT2;vn|IB7 z_#A^m)zi#MpUo`X`%vk{nR#3D&%en!YR&c>68{f0c3k4_a}1q3;mLDj?O$`u%+3Z? zl}vIEzq)(Uo-MoA%gJVR&Y5{t>*HR<&O_%NLbsZq<eqG!yX>dVq*H4){JNo19&+`5 zYS_P@yWicjH<1LplHvZ8OqBwWRj<yh`t?}l|D-47i{EU%D>wg1edyKIt6%N7nAo5k z9{N1&>V1`;MU&#YHl0_xJ@?7-Nq>AN)yGypyH{PH1~G@v`5}9sL#XYNRd#cpaC_D% z@~wNGnLg>c`p=@!SPLtj$;tC)Z(dd95L#<+^8bl7Tb@@N=&GlDJM;JWs$T`6u^Y;2 zRUrm(A7SK^ITm&C`C`w1)ssHEKaVV|p0uZ3FrFQ@7GUeDd$FPF{d~+hA))EvSC4wy zO??u$`16KLYopuW@6CNOfAy>DtGsTCg3U{C)cA8C_Q$S8=bhP)CoblmRI_lEo`fum z$Eqy<(7l!?(<j-KmB?*7s_9v$d{T08GguRY!Qv0h(zXE?(}n!JKD}F2RT}zMMwTrs z@a&)ID)D}wmi(B>1X1|x*h86|FJCl%`JDVb`A===TS?iL*3|j8*+RcA_S`q&$@a-I z<`#SqwQFS97aq7WclMLZp{3tmC~SDM>Q&3u*Sqh{fAZyGB}7R=sOBGr(+{So%#WCD z#gx;$YL~)E`?RuJafr0RghTurbo#tOPWtmgVS~@AS3g!&RZl8cFRYb=DA8ePl~0%% zGHL&sRow3EiHSF!n=M@RZvGQv&v^z`+z>Sz&N*sq$SG5+3=Xv|D-oEnY1OZ%D)T)y zm6wP?6eK9O$|p#^J(F|keC6Wi16M+>7KVPkr?P+g%_}-k6$dr`Fr3Z`pY%QK>dVE= z2SP%w-cy<H^=Zb%NQi=l-OE2P>ueUDv}gCKvVOip2H$onhlKL`e|o8s-ggcfdNT8x z0}^h|o%-awTYH0RSm^!<PntdbWahF$%=qz4q^=?KL(8hFUoQkUbgX)HebS%8Nplx( zhDbBGyFFx&5M94+Rj_+|gKJP|{e&mxZqK2TeSL@cH)!?we_D1?afbEpJFzQP%?<tf zP362S%y^3`KBvaePZw5Ioq8c)5ES~><I^`4e+js>8JGQmRh6!xvgTGSJYSxv*qd6h zKnyQ<19I4A^^>RF+8YE{y*fWR#=?pnBDcYk%l?2?RbJ@b;u4N$hwQd5TlLT2<Yl<K z%+5P%Z0IUe-I-CsF=P6ws=!I{Qgb227{d)Ikd;+cp>wUQSaP<ns;Ze3-g6F;`x$a% zTjdi%Lnn#%@iE?Bxk_%rld~J|Lo^-;DrDeTvuSzw)sKsvH>?dSo4<OMt*4&frfPVM zX0LtYsNpc_@g$qt5{?^Lp<9(t#;e^lh9`-yARm37bCEGY`cK)U_8wR>JBPnjKH=)z zxX|ale2mdcSIJF&;tFrv+;)G+u2A{v1w+p4skff5%JQFNo_cg&9wZ<lO!-(CC(U2E zDt58+0kI0_Ny6^!5E+JT(+}}G6xB>}@8x5h9T@8G`Dw;QONd;<+vOja4L<L<$oL>4 z^s4RTJ!K`(?2}+8Qpb=c7aTgT^K^RXzUAxviw?aIfap3<v*whe#sTx<ph?B<?G1}V zL;L+c-GH0<Gw=svMESoL3<V~uveILoLerPF`$P7GyUK3t4U4~=_Izgxi(Z3xE_;U8 z=hlK;zG3M!XlTM?X~zDgwj8V$Y*U{&E_Oa3xJ%<?;bLcqI~YE1FD_w-Fx;;8(`%CS zwQKh3J2g+f_57y3GdWk*XOs2Gbz8SupFHXLZt9aMD&KvIe%;cJe$D7<XJo}9;}<%2 z)|2P%&m#oORd#-yP#Qex|J<9OYyQWsIrr;x^>@YW@JZDv-+1gx-p;!}9g=|#Yzp|% z__jEClE2zdpGm7hb@}@Hr}$T_nmlRF=52KbCl61S**|su#wIxnD+Zay>8WNDyVh>D zKPf)B#_r^Eqw2i)t9Q-wpSOoy?ezSX_D$yhzOC0cKaPY1_<=-?KL@Vuv^<&WX*cVM z^4;3AW%UW=@4bs&-l_@>ed|+{H%Z>JC~?x|ZPtf{cKv_Bkh5~>?p>Q!eN(GE^+Lvb z!Q_~EPY!$9O?mR^ot?#ZfxFvPcB-BfZU6W0*7u)tRQOM?IaB#;&t^#C-mpWYE}?jx z-=}pd;^p6;E<RlHy-`IzK3ae6s?U>cj8C!}@;>pH8x*RZ|2>5NMoV|nf4i{lYL)4e zx+lk6yIan4u6X;d-@8<<r*1pGWR>5!H9tO|*n0hPTPrg-S`sYS+X}wqd3~CulK=MI z`98j4i@UX%le|~Inxe9Q-pvq!|L^wi+&rl!rG(>0Rrb<;ZujRiW-!n6{ZJV^>3c~z z|G8qHYhE4iBcfNXGM;2(chX;N=lug2V51p$Hk5?VJz%y==j7u_cUJF?-}54MzH{k! z-n)N$RK9zDns>2M?Z8z_omJ0|Zds>X>Ya9Z!n=!i?XTT^KPT(v^K~WPuipI|efRHQ z&waWl>-|1$R4Lv+4bqrw_!<18@v!xbNXKXU?*85IuFk*Q|C_<q-Rs}JJFZ%ploo!w z;QGGw5{7MOF1;xZ-Ku?Zv)l6-4YMchu{gQC^n3l=ceRU|bGL5|dS3tfoxInlwKGKz zx5XQCf?a*!TjZ?ffE#SnRev_VtGhF0*-x3ycXiQeOQ-esp4+tGoP;dHyF<Z~=9pL= zVcKoFS=0Rf#k=cYy|Z>>ms+^{d+GPryM8x%?$bVbdUA}l1+>nH_Ib#@@8Vg{c{|K5 zK0kFaahrGf{TWXLJ@1)Woo2daZN+e>^?5Jfh6DE|KG}VJ*_}7?vT1>9d`qh%%j?4@ zv8z?ariDYh*#?DN_8TsydhRRFWjc51^*iRfe~+lFmzkS-@XqE{Hu8}Yp{4&-(tFQs zY*^>}>BPH#JKycAESceY?e6sQ@1G~#QQn*_>stYd`56Z6w>Dgi4*z&z$L{z^Px{@S zM<`fNo?~Ri5}g$JZD)E9--d>JGoDoM`hDr5<FX~`_paTwpK^0*{Q5IFn`FU3#UQ*% zhkfCJXSVt$@AvU-bnugwWtg;NmDWjNkXgSc+ic!F|KeR+t20y9#{T>|N#(oOr^%jE zmP7QaIXz@Iv$C){pmDd>;N*F=omnN*SPRczWK1~wc=8+rt0PT2>`pfC{_XG19;udn z-Fn~Z-SRV^*v<5<*<D)zt!Y6GE3>GZhx{j%eE+B7@0XP2R`lrw!-i)k7c=X0oLB$( z@7=znk_oBT?uM6tF9v!4Wd3!YK1fY<AU5C!quGmht0(>W^+JaG!To-|1Jh=Fu?r79 zu5MXh(#QJYrwae;ceRU~*L1zxw|95^^}F}yK53u4M_)UxixupN2o-C0_6F9+2F1_H zC;f?;wAqba@<fZg*umsUS6&D-YyRfBc30l((?VEb8)5$PB>M(lk-AAG-w&#Y_ntGn z;klUEVbXj#*@O+N7r%i-48whghwNrSKO!&ReeYRx^o0zwti2V(>b0Qu`IQ$k%y;KK zQJ+!^b^yZzY0W<j?VmSYWMs3-D`D7nWXkuQ?y5I!t&TXHfAKEc4O*)-xSBj|4!FUm z_9v&rbCR@MyTp+edAHvWFEX-K#g^|cF5!R}7ZJi`zhUB`^NPEECrmQ$J7?IzY2UML z)%D8QnNL_@1^EG`;2(_pX4;?55?dJdQ%jX?^{Ty|-}=rO9yq9S{@pufSVIw{uCX_4 z<Bg(-yS25G&Vy8(yU2J$DERL4bMmqY6SkLpe+oBr(d<`_8ad*v^LLk>e8Ir1@yFnj zvOBxPgKsMOlCqE@one{7Lv{-xc?sEs1}WKwsb%+GFfji~E5C07tDSrr5Ao-u96BHS zJ0<P1c~~c>Jx^fha@Cv0R>$Yuo%F;MZd-`Pp95}O_T>wA^Q-L4D(SQQToc0={Ksyd zwbcQJ{5S9ZB2@Z(R1lGPym>M6fvz9?i<!^dJg8D{0JpFcV&UE2cU~}TPzuXEbpC$X z_pfl>Q=s;oZ;`)|2I}iuE-pTEGus{7AZl0{_@l8`r0(53P8pwzSHA5u1|^*0lH~Gu zGq@FJukblF7UuaCC6sVP6s7m_8Kl3LhUP$qWgZXN&5RyC&nx+U@Qj!Jfp0(eU1WUr z=Fvq+<-w59B~q85+&cg8?!pp=h@#ad51)TincfF$!UQk*z%0`n?atn?*ko&M-c&C8 z>1E~cal~Mgt<3>9^3?vw+>>3*d|=b6Rk5CavY^pM3oA&1VepxHh(Bk^hvJIg?(7Y! z+ss#Q)sHuXOJ3EI)nS^w`~&mt=UXl^K6~LXX*E1at_=Fo*z5Dd(xz2@S(?}HJNG~e zKHt3y54#ZGmkJ`!93MXa@aOM=Z$HmnWPEm_G!A0#22M~yb>cQSmARPt%*EyK0M!is z!Ps!L;MEI;;*z&7Ac`3bQbDRY?Ki|M+j9P`q-;XpI(c{i=6JC$G~nm5KcJ!B&u8Fn z-UF%P85n|>ePCv24!zpxS=M*XP<?yJ_kR}^AtolA0)?t@U4vlQODp}$(9D=H86?^& zAE6g~^Lf}ytM#wp&RRM9l%ocN&gM|9KW`9m=Le2Ec8P~AAiwv)<Lnj0oP?IgZtOD_ z|6L3%7Y<y}1gF{!G0Qfc|GOI$9xd_^2i;h*Ql^FJfRS}wNrUCD{ir(B{xB%733_;Z zDlG6kLBVl|-{4T;V&*dwVFSV-=QBj41>byL1`3GapYtGQA2?L>f=znn2j-p)#U%}v zw@l&DI~N@H%smTWqrEbQt?~>K`BS;<|Cg0ObTiDbYL&lnq6Hc%D?bDy9OwH~LFAe1 zLw1S8sa*E!zA%AxH24PnU~KpZ8=7uVUiN_*Z2JXJOcx?_BL&9Vpoh<&AcAjMkpS1{ zMIZ;)gB)y(>|lnT?OwulFw;SPPEZC%<jN1lNufV~Lc`kZV54--k`K(MQ?-8I(TaV! zRe2e7eDc6DpQj2U4AX9E`Tp>Pn-dI*GO#(Bhx{kav4UGU6B<SZuU{|}mpwyHk_<YV zSH3BZmz7O82WqW=ea|ps(@L3^Lwja`T%TXkU}^jiT2`1jf@=jvw;h!w4VKo6SN-9E z1Q^5d6NzBA_H4*%ogeG@4UxN-eqcUeH2aj@_N><VDwf&sC|QMK2cw(~+_{kK%zP%c zT;8MT^b48dZy(^{x=N&uA;GXF6=ePHReloiVi{5fu}?ca<=f6|H})BuWj*Dr;N{oF zDSS?eaw2sNf$L;t6B^tR8EnZ1W`^#E-iw)eJ|JuX7g)k|4S`{WhtAIoEqw;-$QYP% z*%x%Y3;WUd)M#n#yIB_**(yK5!_zd_ii5Rb=~Yl$I<=&aQBMY*!`&XTGl(6(x|o@# zAS-mPIox5LhxpeN&lNYg^>i^a&!;1Be|m}3CCoj<uQPw;+v53BvI!HoSHJoJ&-z-+ z$^^I=PUnQG|B;#hWGAAy()e@0O1Q3JA*i+e+wHl;6V}kJ)v%g%22-ni1gP8J6gu}) zanPiAMCds@WN%0{J6iiLcri22mqV*=S;AbXvrAL1<xrX7L-q)k`7*Kz3xX%@$$*&{ zQNm@v!4D)Q@4czMq@z)9)vCR4*MREi2G&b=e;aH6U9;-0=f4WLz7#I|4d+_qBkY3j zKEG#gbs*t+_|;ap#znJ0^)P#@d_rK1k<|gFic-+P4K$^RO+3WECin-Vm{WQD<R`l> zTC!PNo;(^F3a|1P1%is-FXfAwbsE@JDi6crZbJqrOgZg0)GXU`es6tA1M9~rtEw)( z5Lmr#m0UomzcjR)-!M~CzU5FD$cmFoJ@e#blN|Rf0u4$fiH2T{3@t63<gZ%!;Drq& zubk2N!*GD<)jMX-dxloWn{G^eqQCmpMo@!omDSo+_vSn)_WZLKlA(1ZTID0s5Akov zxMyN@fN7;leQ2n7AK#`kps}vMiIenID}(;5fi#0QOptkWz^YX~!fx`t=evHNQi+$D zo7@;OX?xh!^?iJsa#m&KhwimIX|MWo>6w4)AQf#yz+^iP)&|jpQ|HZpon7^7_A0Bo zk_jtUuPR>k>g`P5FO^}FVw;sAY71B(fpI{o%G+lCyHk%R*DPCgPF6OhYt^fTp<f$S z=6il>QL$!shlKhA4N%Hre|6x{%XiX~V~nhhH{F{3L^$;8t5vsbt<Ef3y(%{J>y}l& zN+$KIRepKl0|^@$X-I-QogVpZ=Y3h(gvPfXpZ=)CuUe(v%eT1$G^$yZJE`9H({s;v z_7*}AO|!S?urFlTuw~cpO)BAi=Qcj@^ZfK|)vx)XUuRrQbXz@>d-bdLlWP=D)_WBl zdJqB8lOqTX*%LlLEsef=f4aBo*O{n?sn1_Hd=3h=Uj6D~=-20-`(`~^>v>LE1~San zkh|am^J|g12G?)rRN^INlbp_-T=U_Re(2ZPp{4IHHg0nceY;}S=hd%xXHKoLoA4yl z@GPVhOjxP;hhf8+X=(Fczial4v$i_UGI!3C@X0kRSJ}me?vDvw-p{vHGPJZP)OO{n zds8A$K0oYPXLqtQc`_vE4fM5(&$7xe3fDEbepmO@>q<Jlao7J_zxJ-$Wpz>&)R|Ad zTl@M#N_!w^E<xoaKWJ$EX0k9;_bh1gk1D?(7`lJrldFq2>ogi)yY_jq%$imDYCDxq zE}tAT^GWyJ+S_}a*G{cI=UKF0#eT!Ls<c06AX6>}6lLTX4{X_^cd~er&#$Oetecfj zMrOaxEdQ4ldUpzFqQ&!*zvnvtqU1@no_T(o*6;o<f0jM;YTp?(lex2=Y}xwtZT9-* z>O0H-)Ibe1f9Sw@ZRQ8&)6ehs@NKxd>$gMbU$05~rRJuxzKM)3U%iSCJdHH*$pOV| z_epo#*F2td#q1fR1C!tiN?NV*2|~MmuV4L2ev(Z_iP$FNlbqR*cw%^#bo>Rw1_zP4 z2F=Qcu(I}m1eZO7f#co3Csp3dKr=4G40}j2(3zil|M|S>Po}{N%!Z#)-<ks~K*M)S zO1_`<j5B}@2ZG0v3=;4D75B6=feYG0il>BC^JYHzhA<@HM`J0M{f3&br1`Jky`H=$ z1u^y&_6SrT$Cm#OoaF5e8{^zI{}BHg<A>}scFp%LdJHRv4txs&n{!}E>Gypq_OqWH zcmeH89{3jcgE3*|+B<gF@5=jsx&-U9HN4$i#J;dVLhTQO_rl%rGoREVhWMNxvR?xY zN<TU2xlS5Z8{VjbmdjFiYqLSaK&RnWTnhqQ@x|`?-RmkpJ5_$Wr$Z7J!?tr?@-2t1 zgGzd<yMI5PS@-=@52WB~P+j<e`L#?Nv-ir~|E*4X!v{;ZwH@MTSkv&XE_Bj$#6ajg zh_9#h*S-_D`?pEsFC>#5cw))XTFPaA;8L{q-#uBduzPSr^AE#;u9xq`)ql=~`#5>= z2j<s4KN!Q@%Kv*!x(^@Rvw->xWVpeu-%CB?1kOVjUCa<+U%261qxpuSUB68|>y%Eu zMHz`^2#YD-uYa<6@*Vg<`-iidkot1!)w}b3KQVi*gO6=n*g%V}<96jDyM8Y_qxSdD zQFtKUEf(Nn_)~wk*1g=`^yK8pckHY{3qTkc7(Vnu%2kH!UB7ib-${qpKtlJxp+In? zGqk^Wmp$3W;AHkANyuOi1Gh7%@=cq6d&xVy3wQNBK6R*E?>Pqvc?JuPR_B><j0NVP z;_&|LCr>@Aa-<;P8IcQ#<Oc>-&r)ZK*6T^jKnf^^uxXGo!h-2;t#7%#&dFeqr}=Nc z`=+wqr|9Af1&9Hls%yiUH^sMC?EbHGvRth)aZ+vb;|*W)ygx;If<_xI-Q9N_qLllP zqXsA?KhRhk`}yl{&wa`#PaDr>JG|xYq$jDK`_}G`zjb$e4<B??!wu>%iPG<H@BZC% zrptc6{L%TEyA)5ZPcggr{OR4=+b<j-2H!Dlm1jseUGjb3ySl_l)vA?+X{thEw^Kdq zj5aSi|Gs4VCdl~Jfu`UejiqXT4t&~pp7+w-?WNyW8_oXl`G`t5U*8e8?W#W)t9*a? zuD$g8?p?R-AXTV=AfHp>+-AQ9-D`K*cm2)<4dcnpd7|t2PC_PoYV6D>mY(mf-aY^F z-D-DsXf5~REvUs7!F%`bM-}<?tJ2kf&Q$qtc(O7%cx_Aeq&=o5t#|#Nbukg*^c$cg zl75K)fK18vx1RTAJn0QBt(vr4t<q`I<#x7cJ#&>x_etB!x4*suQ9rE*94n1aAHO=q zdj0NowVfI#T|-OLCLLF+jG6TN`1ki2GCoD2psCgEyZ<K^Kxd4$UEE&tHalK=E+a!i z^Qv2uBY!?WKG{YEG})@Vq!u)Q+w7_L^4)B9=rm-4pGX};Lu**5^`tqIBR@V*^gQQX z^yorB@|_7!K7r<dCcfL31T&lsv?@n!`Koh%MR}9npI*aLQa0&vTidOu?J7Hya%;6t zKD}Fe`GyC?13FxwxY7){`f}#f`ggOR-1GGF-elfw&HJKH<+|$5vfSFA=f2;q{d*z- zs@@Ewer4#@kCFQS=S+Jd=jj&}tuFWJUyF*h`Nu%^$t7u*EA#v|y`S*)s`I`3Q=aU4 zx35rmKBQVWz!m(1ks%^DboZo?N!IcFvDQY~Uu1TDyZ>|FZvLJVkU`i3uR!jH*w(;# z6W-}(U?_M3>lQJftugu+zq`x<6yFLj{=Y6`+2suD+%Pb>!Md^x3=)EfWl1jZl}inR zql!mEV>E5x%_+@S6nz;OnC^JGIEH|;=4h^ANEppE!zkBGWVpF=wM_rDJ>aU!)78&q Iol`;+0KwXbZU6uP literal 519 zcmcCfbn$l%i41U6@CfnsQ3wci^6_+5P}0@c_jC<$)7N(iae>Gf=^5zjyZR~FaoJ>) z<mTAfWTYmh*m2pEWR~Ql+L;=dD|qG=m!_p<CTFJRl_&(4<QFBTr`qU4<hgA0!Rl?2 z@>427Mi|;*SDs;L$7NGs7m|^xkegbPk)NWFoL`!gqL7zgqL7rTP>@=bmS2>cnxc@O zr%;lSs!)_#oL^d$oXVAynw(f#oC+2!PAw`+EmFuVRw&I&Ov*`BD9KkSF3B$f%W@T^ z78Ioxr{<L;mSpDVDdeT5rlh8Tm6RqYrxq8dmFDDBDkSIU7UZOsz_b*WrWTjzDJX<w zq!y)uOwL61ZCX)kszPx=VsffNPHI|-LS`OUWqxT9*wV!GRE5Nxocv_4b$T}X1z;aK zrle$o>`%<esnk(ORKOL2T&YDx`9%uliNy-3dCB>uc_pbusVNHO8JQq|6;)>DrGwlK s@_J&Pf-6X|OMY@`E+`U8@)a@?^HM+x!9fM_1jGgU;Fz${2S+9s08+)XRsaA1 diff --git a/docs/usage.md b/docs/usage.md index d063428..e7e1c41 100644 --- a/docs/usage.md +++ b/docs/usage.md @@ -57,7 +57,7 @@ An [example samplesheet](../assets/samplesheet.csv) has been provided with the p The typical command for running the pipeline is as follows: ```console -nextflow run nf-core/hic --input samplesheet.csv --genome GRCh37 -profile docker +nextflow run nf-core/hic --input samplesheet.csv --outdir <OUTDIR> --genome GRCh37 -profile docker ``` This will launch the pipeline with the `docker` configuration profile. See below for more information about profiles. @@ -141,11 +141,11 @@ Whilst the default requirements set within the pipeline will hopefully work for For example, if the nf-core/rnaseq pipeline is failing after multiple re-submissions of the `STAR_ALIGN` process due to an exit code of `137` this would indicate that there is an out of memory issue: ```console -[62/149eb0] NOTE: Process `RNASEQ:ALIGN_STAR:STAR_ALIGN (WT_REP1)` terminated with an error exit status (137) -- Execution is retried (1) -Error executing process > 'RNASEQ:ALIGN_STAR:STAR_ALIGN (WT_REP1)' +[62/149eb0] NOTE: Process `NFCORE_RNASEQ:RNASEQ:ALIGN_STAR:STAR_ALIGN (WT_REP1)` terminated with an error exit status (137) -- Execution is retried (1) +Error executing process > 'NFCORE_RNASEQ:RNASEQ:ALIGN_STAR:STAR_ALIGN (WT_REP1)' Caused by: - Process `RNASEQ:ALIGN_STAR:STAR_ALIGN (WT_REP1)` terminated with an error exit status (137) + Process `NFCORE_RNASEQ:RNASEQ:ALIGN_STAR:STAR_ALIGN (WT_REP1)` terminated with an error exit status (137) Command executed: STAR \ @@ -169,17 +169,24 @@ Work dir: Tip: you can replicate the issue by changing to the process work dir and entering the command `bash .command.run` ``` -To bypass this error you would need to find exactly which resources are set by the `STAR_ALIGN` process. The quickest way is to search for `process STAR_ALIGN` in the [nf-core/rnaseq Github repo](https://github.com/nf-core/rnaseq/search?q=process+STAR_ALIGN). We have standardised the structure of Nextflow DSL2 pipelines such that all module files will be present in the `modules/` directory and so based on the search results the file we want is `modules/nf-core/software/star/align/main.nf`. If you click on the link to that file you will notice that there is a `label` directive at the top of the module that is set to [`label process_high`](https://github.com/nf-core/rnaseq/blob/4c27ef5610c87db00c3c5a3eed10b1d161abf575/modules/nf-core/software/star/align/main.nf#L9). The [Nextflow `label`](https://www.nextflow.io/docs/latest/process.html#label) directive allows us to organise workflow processes in separate groups which can be referenced in a configuration file to select and configure subset of processes having similar computing requirements. The default values for the `process_high` label are set in the pipeline's [`base.config`](https://github.com/nf-core/rnaseq/blob/4c27ef5610c87db00c3c5a3eed10b1d161abf575/conf/base.config#L33-L37) which in this case is defined as 72GB. Providing you haven't set any other standard nf-core parameters to __cap__ the [maximum resources](https://nf-co.re/usage/configuration#max-resources) used by the pipeline then we can try and bypass the `STAR_ALIGN` process failure by creating a custom config file that sets at least 72GB of memory, in this case increased to 100GB. The custom config below can then be provided to the pipeline via the [`-c`](#-c) parameter as highlighted in previous sections. +To bypass this error you would need to find exactly which resources are set by the `STAR_ALIGN` process. The quickest way is to search for `process STAR_ALIGN` in the [nf-core/rnaseq Github repo](https://github.com/nf-core/rnaseq/search?q=process+STAR_ALIGN). +We have standardised the structure of Nextflow DSL2 pipelines such that all module files will be present in the `modules/` directory and so, based on the search results, the file we want is `modules/nf-core/software/star/align/main.nf`. +If you click on the link to that file you will notice that there is a `label` directive at the top of the module that is set to [`label process_high`](https://github.com/nf-core/rnaseq/blob/4c27ef5610c87db00c3c5a3eed10b1d161abf575/modules/nf-core/software/star/align/main.nf#L9). +The [Nextflow `label`](https://www.nextflow.io/docs/latest/process.html#label) directive allows us to organise workflow processes in separate groups which can be referenced in a configuration file to select and configure subset of processes having similar computing requirements. +The default values for the `process_high` label are set in the pipeline's [`base.config`](https://github.com/nf-core/rnaseq/blob/4c27ef5610c87db00c3c5a3eed10b1d161abf575/conf/base.config#L33-L37) which in this case is defined as 72GB. +Providing you haven't set any other standard nf-core parameters to **cap** the [maximum resources](https://nf-co.re/usage/configuration#max-resources) used by the pipeline then we can try and bypass the `STAR_ALIGN` process failure by creating a custom config file that sets at least 72GB of memory, in this case increased to 100GB. +The custom config below can then be provided to the pipeline via the [`-c`](#-c) parameter as highlighted in previous sections. ```nextflow process { - withName: STAR_ALIGN { + withName: 'NFCORE_RNASEQ:RNASEQ:ALIGN_STAR:STAR_ALIGN' { memory = 100.GB } } ``` -> **NB:** We specify just the process name i.e. `STAR_ALIGN` in the config file and not the full task name string that is printed to screen in the error message or on the terminal whilst the pipeline is running i.e. `RNASEQ:ALIGN_STAR:STAR_ALIGN`. You may get a warning suggesting that the process selector isn't recognised but you can ignore that if the process name has been specified correctly. This is something that needs to be fixed upstream in core Nextflow. +> **NB:** We specify the full process name i.e. `NFCORE_RNASEQ:RNASEQ:ALIGN_STAR:STAR_ALIGN` in the config file because this takes priority over the short name (`STAR_ALIGN`) and allows existing configuration using the full process name to be correctly overridden. +> If you get a warning suggesting that the process selector isn't recognised check that the process name has been specified correctly. ### Updating containers diff --git a/lib/NfcoreSchema.groovy b/lib/NfcoreSchema.groovy index 40ab65f..b3d092f 100755 --- a/lib/NfcoreSchema.groovy +++ b/lib/NfcoreSchema.groovy @@ -27,7 +27,7 @@ class NfcoreSchema { /* groovylint-disable-next-line UnusedPrivateMethodParameter */ public static void validateParameters(workflow, params, log, schema_filename='nextflow_schema.json') { def has_error = false - //=====================================================================// + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~// // Check for nextflow core params and unexpected params def json = new File(getSchemaPath(workflow, schema_filename=schema_filename)).text def Map schemaParams = (Map) new JsonSlurper().parseText(json).get('definitions') @@ -135,7 +135,7 @@ class NfcoreSchema { } } - //=====================================================================// + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~// // Validate parameters against the schema InputStream input_stream = new File(getSchemaPath(workflow, schema_filename=schema_filename)).newInputStream() JSONObject raw_schema = new JSONObject(new JSONTokener(input_stream)) diff --git a/lib/Utils.groovy b/lib/Utils.groovy index 1b88aec..28567bd 100755 --- a/lib/Utils.groovy +++ b/lib/Utils.groovy @@ -29,12 +29,12 @@ class Utils { conda_check_failed |= !(channels.indexOf('bioconda') < channels.indexOf('defaults')) if (conda_check_failed) { - log.warn "=============================================================================\n" + + log.warn "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n" + " There is a problem with your Conda configuration!\n\n" + " You will need to set-up the conda-forge and bioconda channels correctly.\n" + " Please refer to https://bioconda.github.io/user/install.html#set-up-channels\n" + " NB: The order of the channels matters!\n" + - "===================================================================================" + "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~" } } } diff --git a/lib/WorkflowHic.groovy b/lib/WorkflowHic.groovy index 5381157..dbd0945 100755 --- a/lib/WorkflowHic.groovy +++ b/lib/WorkflowHic.groovy @@ -48,11 +48,11 @@ class WorkflowHic { // private static void genomeExistsError(params, log) { if (params.genomes && params.genome && !params.genomes.containsKey(params.genome)) { - log.error "=============================================================================\n" + + log.error "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n" + " Genome '${params.genome}' not found in any config files provided to the pipeline.\n" + " Currently, the available genome keys are:\n" + " ${params.genomes.keySet().join(", ")}\n" + - "===================================================================================" + "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~" System.exit(1) } } diff --git a/main.nf b/main.nf index 59b9663..7dd9be5 100644 --- a/main.nf +++ b/main.nf @@ -1,8 +1,8 @@ #!/usr/bin/env nextflow /* -======================================================================================== +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ nf-core/hic -======================================================================================== +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Github : https://github.com/nf-core/hic Website: https://nf-co.re/hic Slack : https://nfcore.slack.com/channels/hic @@ -12,25 +12,25 @@ nextflow.enable.dsl = 2 /* -======================================================================================== +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ GENOME PARAMETER VALUES -======================================================================================== +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */ params.fasta = WorkflowMain.getGenomeAttribute(params, 'fasta') /* -======================================================================================== +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ VALIDATE & PRINT PARAMETER SUMMARY -======================================================================================== +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */ WorkflowMain.initialise(workflow, params, log) /* -======================================================================================== +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ NAMED WORKFLOW FOR PIPELINE -======================================================================================== +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */ include { HIC } from './workflows/hic' @@ -43,9 +43,9 @@ workflow NFCORE_HIC { } /* -======================================================================================== +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ RUN ALL WORKFLOWS -======================================================================================== +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */ // @@ -57,7 +57,7 @@ workflow { } /* -======================================================================================== +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ THE END -======================================================================================== +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */ diff --git a/nextflow.config b/nextflow.config index d3ba246..50a4460 100644 --- a/nextflow.config +++ b/nextflow.config @@ -1,7 +1,7 @@ /* -======================================================================================== +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ nf-core/hic Nextflow config file -======================================================================================== +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Default config options for all compute environments ---------------------------------------------------------------------------------------- */ @@ -24,8 +24,9 @@ params { max_multiqc_email_size = '25.MB' // Boilerplate options - outdir = './results' + outdir = null tracedir = "${params.outdir}/pipeline_info" + publish_dir_mode = 'copy' email = null email_on_fail = null plaintext_email = false @@ -62,6 +63,15 @@ try { System.err.println("WARNING: Could not load nf-core/config profiles: ${params.custom_config_base}/nfcore_custom.config") } +// Load nf-core/hic 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/hic.config" +// } catch (Exception e) { +// System.err.println("WARNING: Could not load nf-core/config/hic profiles: ${params.custom_config_base}/pipeline/hic.config") +// } + + profiles { debug { process.beforeScript = 'echo $HOSTNAME' } conda { @@ -121,7 +131,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 { diff --git a/nextflow_schema.json b/nextflow_schema.json index e3bebce..b2c0603 100644 --- a/nextflow_schema.json +++ b/nextflow_schema.json @@ -11,7 +11,8 @@ "fa_icon": "fas fa-terminal", "description": "Define where the pipeline should find input data and save output data.", "required": [ - "input" + "input", + "outdir" ], "properties": { "input": { @@ -26,8 +27,8 @@ }, "outdir": { "type": "string", - "description": "Path to the output directory where the results will be saved.", - "default": "./results", + "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": { @@ -178,6 +179,22 @@ "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.", diff --git a/subworkflows/local/input_check.nf b/subworkflows/local/input_check.nf index cddcbb3..0aecf87 100644 --- a/subworkflows/local/input_check.nf +++ b/subworkflows/local/input_check.nf @@ -12,7 +12,7 @@ workflow INPUT_CHECK { SAMPLESHEET_CHECK ( samplesheet ) .csv .splitCsv ( header:true, sep:',' ) - .map { create_fastq_channels(it) } + .map { create_fastq_channel(it) } .set { reads } emit: @@ -21,22 +21,24 @@ 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 - meta.single_end = row.single_end.toBoolean() + meta.id = row.sample + meta.single_end = row.single_end.toBoolean() - def array = [] + // add path(s) of the fastq file(s) to the meta map + def fastq_meta = [] if (!file(row.fastq_1).exists()) { exit 1, "ERROR: Please check input samplesheet -> Read 1 FastQ file does not exist!\n${row.fastq_1}" } if (meta.single_end) { - array = [ meta, [ file(row.fastq_1) ] ] + 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}" } - array = [ meta, [ file(row.fastq_1), file(row.fastq_2) ] ] + fastq_meta = [ meta, [ file(row.fastq_1), file(row.fastq_2) ] ] } - return array + return fastq_meta } diff --git a/workflows/hic.nf b/workflows/hic.nf index f29d026..5cb900f 100644 --- a/workflows/hic.nf +++ b/workflows/hic.nf @@ -1,7 +1,7 @@ /* -======================================================================================== +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ VALIDATE INPUTS -======================================================================================== +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */ def summary_params = NfcoreSchema.paramsSummaryMap(workflow, params) @@ -18,18 +18,18 @@ 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!' } /* -======================================================================================== +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ CONFIG FILES -======================================================================================== +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */ ch_multiqc_config = file("$projectDir/assets/multiqc_config.yaml", checkIfExists: true) ch_multiqc_custom_config = params.multiqc_config ? Channel.fromPath(params.multiqc_config) : Channel.empty() /* -======================================================================================== +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ IMPORT LOCAL MODULES/SUBWORKFLOWS -======================================================================================== +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */ // @@ -38,9 +38,9 @@ ch_multiqc_custom_config = params.multiqc_config ? Channel.fromPath(params.multi include { INPUT_CHECK } from '../subworkflows/local/input_check' /* -======================================================================================== +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ IMPORT NF-CORE MODULES/SUBWORKFLOWS -======================================================================================== +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */ // @@ -51,9 +51,9 @@ include { MULTIQC } from '../modules/nf-core/modules/multiqc include { CUSTOM_DUMPSOFTWAREVERSIONS } from '../modules/nf-core/modules/custom/dumpsoftwareversions/main' /* -======================================================================================== +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ RUN MAIN WORKFLOW -======================================================================================== +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */ // Info required for completion email and summary @@ -104,9 +104,9 @@ workflow HIC { } /* -======================================================================================== +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ COMPLETION EMAIL AND SUMMARY -======================================================================================== +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */ workflow.onComplete { @@ -117,7 +117,7 @@ workflow.onComplete { } /* -======================================================================================== +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ THE END -======================================================================================== +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */ -- GitLab