diff --git a/.github/include.yaml b/.github/include.yaml new file mode 100644 index 0000000..a3629f4 --- /dev/null +++ b/.github/include.yaml @@ -0,0 +1,10 @@ +".": + - ./.github/workflows/** + - ./nf-test.config + - ./nextflow.config +tests: + - ./assets/* + - ./bin/* + - ./conf/* + - ./main.nf + - ./nextflow_schema.json diff --git a/.github/python/find_changed_files.py b/.github/python/find_changed_files.py deleted file mode 100644 index c0c6175..0000000 --- a/.github/python/find_changed_files.py +++ /dev/null @@ -1,317 +0,0 @@ -#!/usr/bin/env python - -# This script is used to identify *.nf.test files for changed functions/processs/workflows/pipelines and *.nf-test files -# with changed dependencies, then return as a JSON list - -import argparse -import json -import logging -import re -import yaml - -from itertools import chain -from pathlib import Path -from git import Repo - - -def parse_args() -> argparse.Namespace: - """ - Parse command line arguments and return an ArgumentParser object. - - Returns: - argparse.ArgumentParser: The ArgumentParser object with the parsed arguments. - """ - parser = argparse.ArgumentParser( - description="Scan *.nf.test files for function/process/workflow name and return as a JSON list" - ) - parser.add_argument( - "-r", - "--head_ref", - required=True, - help="Head reference branch (Source branch for a PR).", - ) - parser.add_argument( - "-b", - "--base_ref", - required=True, - help="Base reference branch (Target branch for a PR).", - ) - parser.add_argument( - "-x", - "--ignored_files", - nargs="+", - default=[ - ".git/*", - ".gitpod.yml", - ".prettierignore", - ".prettierrc.yml", - "*.md", - "*.png", - "modules.json", - "pyproject.toml", - "tower.yml", - ], - help="List of files or file substrings to ignore.", - ) - parser.add_argument( - "-i", - "--include", - type=Path, - default=".github/python/include.yaml", - help="Path to an include file containing a YAML of key value pairs to include in changed files. I.e., return the current directory if an important file is changed.", - ) - parser.add_argument( - "-l", - "--log-level", - choices=["DEBUG", "INFO", "WARNING", "ERROR"], - default="INFO", - help="Logging level", - ) - parser.add_argument( - "-t", - "--types", - nargs="+", - choices=["function", "process", "workflow", "pipeline"], - default=["function", "process", "workflow", "pipeline"], - help="Types of tests to include.", - ) - return parser.parse_args() - - -def read_yaml_inverted(file_path: str) -> dict: - """ - Read a YAML file and return its contents as a dictionary but reversed, i.e. the values become the keys and the keys become the values. - - Args: - file_path (str): The path to the YAML file. - - Returns: - dict: The contents of the YAML file as a dictionary inverted. - """ - with open(file_path, "r") as f: - data = yaml.safe_load(f) - - # Invert dictionary of lists into contents of lists are keys, values are the original keys - # { "key": ["item1", "item2] } --> { "item1": "key", "item2": "key" } - return {value: key for key, values in data.items() for value in values} - - -def find_changed_files( - branch1: str, - branch2: str, - ignore: list[str], -) -> list[Path]: - """ - Find all *.nf.tests that are associated with files that have been changed between two specified branches. - - Args: - branch1 (str) : The first branch being compared - branch2 (str) : The second branch being compared - ignore (list) : List of files or file substrings to ignore. - - Returns: - list: List of files matching the pattern *.nf.test that have changed between branch2 and branch1. - """ - # create repo - repo = Repo(".") - # identify commit on branch1 - branch1_commit = repo.commit(branch1) - # identify commit on branch2 - branch2_commit = repo.commit(branch2) - # compare two branches - diff_index = branch1_commit.diff(branch2_commit) - - # Start empty list of changed files - changed_files = [] - - # For every file that has changed between commits - for file in diff_index: - # Get pathlib.Path object - filepath = Path(file.a_path) - # If file does not match any in the ignore list, add containing directory to changed_files - if not any(filepath.match(ignored_path) for ignored_path in ignore): - changed_files.append(filepath) - - # Uniqueify the results before returning for efficiency - return list(set(changed_files)) - - -def detect_include_files( - changed_files: list[Path], include_files: dict[str, str] -) -> list[Path]: - """ - Detects the include files based on the changed files. - - Args: - changed_files (list[Path]): List of paths to the changed files. - include_files (dict[str, str]): Key-value pairs to return if a certain file has changed. If a file in a directory has changed, it points to a different directory. - - Returns: - list[Path]: List of paths to representing the keys of the include_files dictionary, where a value matched a path in changed_files. - """ - new_changed_files = [] - for filepath in changed_files: - # If file is in the include_files, we return the key instead of the value - for include_path, include_key in include_files.items(): - if filepath.match(include_path): - new_changed_files.append(Path(include_key)) - return new_changed_files - - -def detect_nf_test_files(changed_files: list[Path]) -> list[Path]: - """ - Detects and returns a list of nf-test files from the given list of changed files. - - Args: - changed_files (list[Path]): A list of file paths. - - Returns: - list[Path]: A list of nf-test file paths. - """ - result: list[Path] = [] - for path in changed_files: - # If Path is the exact nf-test file add to list: - if path.match("*.nf.test") and path.exists(): - result.append(path) - # Else recursively search for nf-test files: - else: - # Get the enclosing dir so files in the same dir can be found. - # e.g. - # dir/ - # ├─ main.nf - # ├─ main.nf.test - for file in path.parent.rglob("*.nf.test"): - result.append(file) - return result - - -def process_files(files: list[Path]) -> list[str]: - """ - Process the files and return lines that begin with 'workflow', 'process', or 'function' and have a single string afterwards. - - Args: - files (list): List of files to process. - - Returns: - list: List of lines that match the criteria. - """ - result = [] - for file in files: - with open(file, "r") as f: - is_pipeline_test = True - lines = f.readlines() - for line in lines: - line = line.strip() - if line.startswith(("workflow", "process", "function")): - words = line.split() - if len(words) == 2 and re.match(r'^".*"$', words[1]): - result.append(line) - is_pipeline_test = False - - # If no results included workflow, process or function - # Add a dummy result to fill the 'pipeline' category - if is_pipeline_test: - result.append("pipeline 'PIPELINE'") - - return result - - -def convert_nf_test_files_to_test_types( - lines: list[str], types: list[str] = ["function", "process", "workflow", "pipeline"] -) -> dict[str, list[str]]: - """ - Generate a dictionary of function, process and workflow lists from the lines. - - Args: - lines (list): List of lines to process. - types (list): List of types to include. - - Returns: - dict: Dictionary with function, process and workflow lists. - """ - # Populate empty dict from types - result: dict[str, list[str]] = {key: [] for key in types} - - for line in lines: - words = line.split() - if len(words) == 2 and re.match(r'^".*"$', words[1]): - keyword = words[0] - name = words[1].strip("'\"") # Strip both single and double quotes - if keyword in types: - result[keyword].append(name) - return result - - -def find_changed_dependencies(paths: list[Path], tags: list[str]) -> list[Path]: - """ - Find all *.nf.test files with changed dependencies from a list of paths. - - Args: - paths (list): List of directories or files to scan. - tags (list): List of tags identified as having changes. - - Returns: - list: List of *.nf.test files with changed dependencies. - """ - - result: list[Path] = [] - - nf_test_files = detect_nf_test_files(paths) - - # find nf-test files with changed dependencies - for nf_test_file in nf_test_files: - with open(nf_test_file, "r") as f: - lines = f.readlines() - # Get all tags from nf-test file - # Make case insensitive with .casefold() - tags_in_nf_test_file = [ - tag.casefold().replace("/", "_") - for tag in convert_nf_test_files_to_test_types(lines, types=["tag"])[ - "tag" - ] - ] - # Check if tag in nf-test file appears in a tag. - # Use .casefold() to be case insensitive - if any( - tag.casefold().replace("/", "_") in tags_in_nf_test_file for tag in tags - ): - result.append(nf_test_file) - - return result - - -if __name__ == "__main__": - - # Utility stuff - args = parse_args() - logging.basicConfig(level=args.log_level) - - # Parse nf-test files for target test tags - changed_files = find_changed_files(args.head_ref, args.base_ref, args.ignored_files) - - # If an additional include YAML is added, we detect additional changed dirs to include - if args.include: - include_files = read_yaml_inverted(args.include) - changed_files = changed_files + detect_include_files( - changed_files, include_files - ) - nf_test_files = detect_nf_test_files(changed_files) - lines = process_files(nf_test_files) - result = convert_nf_test_files_to_test_types(lines) - - # Get only relevant results (specified by -t) - # Unique using a set - target_results = list( - {item for sublist in map(result.get, args.types) for item in sublist} - ) - - # Parse files to identify nf-tests with changed dependencies - changed_dep_files = find_changed_dependencies([Path(".")], target_results) - - # Combine target nf-test files and nf-test files with changed dependencies - all_nf_tests = [ - str(test_path) for test_path in set(changed_dep_files + nf_test_files) - ] - - # Print to stdout - print(json.dumps(all_nf_tests)) diff --git a/.github/python/include.yaml b/.github/python/include.yaml deleted file mode 100644 index 6bee890..0000000 --- a/.github/python/include.yaml +++ /dev/null @@ -1,10 +0,0 @@ -".": - - .github/workflows/** - - nf-test.config - - /./nextflow.config -tests: - - assets/* - - bin/* - - conf/* - - /./main.nf - - nextflow_schema.json diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 46ebe58..b102cc2 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -27,35 +27,23 @@ jobs: name: Check for changes runs-on: ubuntu-latest outputs: - nf_test_files: ${{ steps.list.outputs.nf_test_files }} + nf_test_files: ${{ steps.list.outputs.components }} steps: - - uses: actions/setup-python@v4 - with: - python-version: "3.11" - architecture: "x64" - - uses: actions/checkout@v3 with: fetch-depth: 0 - - name: Install gitpython find changed files - run: | - python -m pip install --upgrade pip - pip install gitpython pyyaml - - - name: nf-test list nf_test_files + - name: List nf-test files id: list + uses: adamrtalbot/detect-nf-test-changes@v0.0.2 + with: + head: ${{ github.sha }} + base: origin/${{ github.base_ref }} + include: .github/include.yaml + + - name: print list of nf-test files run: | - echo nf_test_files=$(python \ - .github/python/find_changed_files.py \ - -t pipeline workflow process \ - --head_ref ${{ github.sha }} \ - --base_ref origin/${{ github.base_ref }} \ - ) >> $GITHUB_OUTPUT - - - name: debug - run: | - echo ${{ steps.list.outputs.nf_test_files }} + echo ${{ steps.list.outputs.components }} test: name: ${{ matrix.nf_test_files }} ${{ matrix.profile }} NF-${{ matrix.NXF_VER }} @@ -74,10 +62,10 @@ jobs: steps: - name: Check out pipeline code - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4 + uses: actions/checkout@v4 - name: Install Nextflow - uses: nf-core/setup-nextflow@v1 + uses: nf-core/setup-nextflow@v2 with: version: "${{ matrix.NXF_VER }}" @@ -106,12 +94,9 @@ jobs: wget -qO- https://code.askimed.com/install/nf-test | bash sudo mv nf-test /usr/local/bin/ - - name: Disk space cleanup - uses: jlumbroso/free-disk-space@54081f138730dfa15788a46383842cd2f914a1be # v1.3.1 - - name: Run nf-test run: | - nf-test test ${{ matrix.nf_test_files }} --verbose --profile "+${{ matrix.profile }}" --junitxml=test.xml --tap=test.tap + nf-test test --verbose ${{ matrix.nf_test_files }} --profile "+${{ matrix.profile }}" --junitxml=test.xml --tap=test.tap - uses: pcolby/tap-summary@v1 with: diff --git a/modules.json b/modules.json index 0fd93f3..99fdeb6 100644 --- a/modules.json +++ b/modules.json @@ -59,7 +59,8 @@ "genomad/endtoend": { "branch": "master", "git_sha": "9b68cbd01a704aaf2c34f6d6bc7c25e9b4670147", - "installed_by": ["modules"] + "installed_by": ["modules"], + "patch": "modules/nf-core/genomad/endtoend/genomad-endtoend.diff" }, "gunzip": { "branch": "master", diff --git a/modules/nf-core/genomad/endtoend/environment.yml b/modules/nf-core/genomad/endtoend/environment.yml new file mode 100644 index 0000000..6ec4ebe --- /dev/null +++ b/modules/nf-core/genomad/endtoend/environment.yml @@ -0,0 +1,7 @@ +name: genomad_endtoend +channels: + - conda-forge + - bioconda + - defaults +dependencies: + - bioconda::genomad=1.7.4 diff --git a/modules/nf-core/genomad/endtoend/genomad-endtoend.diff b/modules/nf-core/genomad/endtoend/genomad-endtoend.diff index a8b48af..4cf7685 100644 --- a/modules/nf-core/genomad/endtoend/genomad-endtoend.diff +++ b/modules/nf-core/genomad/endtoend/genomad-endtoend.diff @@ -1,4 +1,32 @@ Changes in module 'nf-core/genomad/endtoend' +--- modules/nf-core/genomad/endtoend/main.nf ++++ modules/nf-core/genomad/endtoend/main.nf +@@ -2,14 +2,14 @@ + tag "$meta.id" + label 'process_high' + +- conda "${moduleDir}/environment.yml" ++ conda "bioconda::genomad=1.5.2" + container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? +- 'https://depot.galaxyproject.org/singularity/genomad:1.7.4--pyhdfd78af_0': +- 'biocontainers/genomad:1.7.4--pyhdfd78af_0' }" ++ 'https://depot.galaxyproject.org/singularity/genomad:1.5.2--pyhdfd78af_0': ++ 'biocontainers/genomad:1.5.2--pyhdfd78af_0' }" + + input: +- tuple val(meta) , path(fasta) +- path genomad_db ++ tuple val(meta), path(fasta) ++ tuple path(genomad_db) + + output: + tuple val(meta), path("*_aggregated_classification/*_aggregated_classification.tsv") , emit: aggregated_classification , optional: true +@@ -82,4 +82,4 @@ + genomad: \$(echo \$(genomad --version 2>&1) | sed 's/^.*geNomad, version //; s/ .*\$//') + END_VERSIONS + """ +-} ++} --- /dev/null +++ modules/nf-core/genomad/endtoend/nextflow.config @@ -0,0 +1,23 @@ @@ -25,65 +53,5 @@ Changes in module 'nf-core/genomad/endtoend' + ] + } +} ---- modules/nf-core/genomad/endtoend/main.nf -+++ modules/nf-core/genomad/endtoend/main.nf -@@ -8,22 +8,22 @@ - 'biocontainers/genomad:1.5.2--pyhdfd78af_0' }" - - input: -- tuple val(meta) , path(fasta) -- path genomad_db -+ tuple val(meta), path(fasta) -+ tuple path(genomad_db) - - output: -- tuple val(meta), path("*_aggregated_classification/*_aggregated_classification.tsv") , emit: aggregated_classification -+ tuple val(meta), path("*_aggregated_classification/*_aggregated_classification.tsv") , emit: aggregated_classification , optional: true - tuple val(meta), path("*_annotate/*_taxonomy.tsv") , emit: taxonomy - tuple val(meta), path("*_find_proviruses/*_provirus.tsv") , emit: provirus - tuple val(meta), path("*_score_calibration/*_compositions.tsv") , emit: compositions , optional: true - tuple val(meta), path("*_score_calibration/*_calibrated_aggregated_classification.tsv") , emit: calibrated_classification , optional: true -- tuple val(meta), path("*_summary/*_plasmid.fna") , emit: plasmid_fasta -+ tuple val(meta), path("*_summary/*_plasmid.fna.gz") , emit: plasmid_fasta - tuple val(meta), path("*_summary/*_plasmid_genes.tsv") , emit: plasmid_genes -- tuple val(meta), path("*_summary/*_plasmid_proteins.faa") , emit: plasmid_proteins -+ tuple val(meta), path("*_summary/*_plasmid_proteins.faa.gz") , emit: plasmid_proteins - tuple val(meta), path("*_summary/*_plasmid_summary.tsv") , emit: plasmid_summary -- tuple val(meta), path("*_summary/*_virus.fna") , emit: virus_fasta -+ tuple val(meta), path("*_summary/*_virus.fna.gz") , emit: virus_fasta - tuple val(meta), path("*_summary/*_virus_genes.tsv") , emit: virus_genes -- tuple val(meta), path("*_summary/*_virus_proteins.faa") , emit: virus_proteins -+ tuple val(meta), path("*_summary/*_virus_proteins.faa.gz") , emit: virus_proteins - tuple val(meta), path("*_summary/*_virus_summary.tsv") , emit: virus_summary - path "versions.yml" , emit: versions - -@@ -41,6 +41,9 @@ - $genomad_db \\ - --threads $task.cpus \\ - $args -+ -+ gzip ./**/*.fna -+ gzip ./**/*.faa - - cat <<-END_VERSIONS > versions.yml - "${task.process}": -@@ -65,13 +68,13 @@ - touch ${filename}_score_calibration/${filename}_calibrated_aggregated_classification.tsv - touch ${filename}_score_calibration/${filename}_compositions.tsv - mkdir ${filename}_summary -- touch ${filename}_summary/${filename}_plasmid.fna -+ touch ${filename}_summary/${filename}_plasmid.fna.gz - touch ${filename}_summary/${filename}_plasmid_genes.tsv -- touch ${filename}_summary/${filename}_plasmid_proteins.faa -+ touch ${filename}_summary/${filename}_plasmid_proteins.faa.gz - touch ${filename}_summary/${filename}_plasmid_summary.tsv -- touch ${filename}_summary/${filename}_virus.fna -+ touch ${filename}_summary/${filename}_virus.fna.gz - touch ${filename}_summary/${filename}_virus_genes.tsv -- touch ${filename}_summary/${filename}_virus_proteins.faa -+ touch ${filename}_summary/${filename}_virus_proteins.faa.gz - touch ${filename}_summary/${filename}_virus_summary.tsv - - cat <<-END_VERSIONS > versions.yml ************************************************************ diff --git a/modules/nf-core/genomad/endtoend/main.nf b/modules/nf-core/genomad/endtoend/main.nf index 5a1937a..0630208 100644 --- a/modules/nf-core/genomad/endtoend/main.nf +++ b/modules/nf-core/genomad/endtoend/main.nf @@ -41,8 +41,8 @@ process GENOMAD_ENDTOEND { $genomad_db \\ --threads $task.cpus \\ $args - - gzip ./**/*.fna + + gzip ./**/*.fna gzip ./**/*.faa cat <<-END_VERSIONS > versions.yml @@ -82,4 +82,4 @@ process GENOMAD_ENDTOEND { genomad: \$(echo \$(genomad --version 2>&1) | sed 's/^.*geNomad, version //; s/ .*\$//') END_VERSIONS """ -} +} \ No newline at end of file diff --git a/modules/nf-core/genomad/endtoend/meta.yml b/modules/nf-core/genomad/endtoend/meta.yml index b5a6f61..044496c 100644 --- a/modules/nf-core/genomad/endtoend/meta.yml +++ b/modules/nf-core/genomad/endtoend/meta.yml @@ -1,5 +1,4 @@ name: "genomad_endtoend" - description: Identify mobile genetic elements present in genomic assemblies keywords: - metagenomics @@ -9,7 +8,6 @@ keywords: - phage - virus - plasmid - tools: - "genomad": description: "Identification of mobile genetic elements" @@ -17,8 +15,7 @@ tools: documentation: https://portal.nersc.gov/genomad/ tool_dev_url: https://github.com/apcamargo/genomad/ doi: 10.1101/2023.03.05.531206 - licence: "['Lawrence Berkeley National Labs BSD variant license']" - + licence: ["Lawrence Berkeley National Labs BSD variant license"] input: - meta: type: map @@ -35,7 +32,6 @@ input: - score_calibration: type: boolean description: true/false value to indicate if score calibration should be enabled - output: - meta: type: map @@ -98,6 +94,7 @@ output: type: file description: File containing software versions pattern: "versions.yml" - authors: - "@CarsonJM" +maintainers: + - "@CarsonJM" diff --git a/modules/nf-core/genomad/endtoend/nextflow.config b/modules/nf-core/genomad/endtoend/nextflow.config index d108d71..570802a 100644 --- a/modules/nf-core/genomad/endtoend/nextflow.config +++ b/modules/nf-core/genomad/endtoend/nextflow.config @@ -20,4 +20,4 @@ process { ] ] } -} \ No newline at end of file +} diff --git a/modules/nf-core/genomad/endtoend/tests/main.nf.test b/modules/nf-core/genomad/endtoend/tests/main.nf.test new file mode 100644 index 0000000..55c6771 --- /dev/null +++ b/modules/nf-core/genomad/endtoend/tests/main.nf.test @@ -0,0 +1,83 @@ +nextflow_process { + + name "Test Process GENOMAD_ENDTOEND" + script "../main.nf" + process "GENOMAD_ENDTOEND" + config "./nextflow.config" + + tag "modules" + tag "modules_nfcore" + tag "genomad" + tag "genomad/download" + tag "genomad/endtoend" + + test("sarscov2 - genome - fasta") { + setup { + run("GENOMAD_DOWNLOAD") { + script "../../download/main.nf" + } + } + + when { + process { + """ + input[0] = [ + [ id:'test' ], // meta map + file(params.test_data['sarscov2']['genome']['genome_fasta'], checkIfExists: true) + ] + input[1] = GENOMAD_DOWNLOAD.out.genomad_db + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot( + process.out.aggregated_classification, + process.out.taxonomy, + process.out.provirus, + process.out.compositions, + process.out.calibrated_classification, + process.out.plasmid_genes, + process.out.virus_fasta, + process.out.virus_genes, + process.out.virus_proteins, + process.out.virus_summary, + process.out.versions, + ).match() + }, + { assert file(process.out.plasmid_fasta.get(0).get(1)).exists() }, + { assert file(process.out.plasmid_proteins.get(0).get(1)).exists() } + ) + } + } + + test("sarscov2 - genome - fasta - stub") { + + setup { + run("GENOMAD_DOWNLOAD") { + script "../../download/main.nf" + } + } + + when { + process { + """ + input[0] = [ + [ id:'test' ], // meta map + file(params.test_data['sarscov2']['genome']['genome_fasta'], checkIfExists: true) + ] + input[1] = GENOMAD_DOWNLOAD.out.genomad_db + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot(process.out).match() } + ) + } + } +} diff --git a/modules/nf-core/genomad/endtoend/tests/main.nf.test.snap b/modules/nf-core/genomad/endtoend/tests/main.nf.test.snap new file mode 100644 index 0000000..00c02fa --- /dev/null +++ b/modules/nf-core/genomad/endtoend/tests/main.nf.test.snap @@ -0,0 +1,281 @@ +{ + "sarscov2 - genome - fasta": { + "content": [ + [ + + ], + [ + [ + { + "id": "test" + }, + "genome_taxonomy.tsv:md5,44c6cf5ff4c836f66648457ae8deb0d5" + ] + ], + [ + [ + { + "id": "test" + }, + "genome_provirus.tsv:md5,93a6bca59b0bf7f57c0b9b60d2e57082" + ] + ], + [ + [ + { + "id": "test" + }, + "genome_compositions.tsv:md5,9168bea9fe82a979a698d259e1bb906a" + ] + ], + [ + + ], + [ + [ + { + "id": "test" + }, + "genome_plasmid_genes.tsv:md5,55818cae5a57381b77778076e99605e6" + ] + ], + [ + [ + { + "id": "test" + }, + "genome_virus.fna.gz:md5,483f4a5dfe60171c86ee9b7e6dff908b" + ] + ], + [ + [ + { + "id": "test" + }, + "genome_virus_genes.tsv:md5,f84d8a9fce3c92c49e78672bea16561f" + ] + ], + [ + [ + { + "id": "test" + }, + "genome_virus_proteins.faa.gz:md5,6850bd46dcb921e5cfb23bfbb8fcc12b" + ] + ], + [ + [ + { + "id": "test" + }, + "genome_virus_summary.tsv:md5,8cbcf95c2ab397da26b6dca8014e86f4" + ] + ], + [ + "versions.yml:md5,cebe18512f616530fff490a64e595cb6" + ] + ], + "timestamp": "2024-01-03T00:05:48.225084591" + }, + "sarscov2 - genome - fasta - stub": { + "content": [ + { + "0": [ + + ], + "1": [ + [ + { + "id": "test" + }, + "genome_taxonomy.tsv:md5,44c6cf5ff4c836f66648457ae8deb0d5" + ] + ], + "10": [ + [ + { + "id": "test" + }, + "genome_virus_genes.tsv:md5,f84d8a9fce3c92c49e78672bea16561f" + ] + ], + "11": [ + [ + { + "id": "test" + }, + "genome_virus_proteins.faa.gz:md5,6850bd46dcb921e5cfb23bfbb8fcc12b" + ] + ], + "12": [ + [ + { + "id": "test" + }, + "genome_virus_summary.tsv:md5,8cbcf95c2ab397da26b6dca8014e86f4" + ] + ], + "13": [ + "versions.yml:md5,cebe18512f616530fff490a64e595cb6" + ], + "2": [ + [ + { + "id": "test" + }, + "genome_provirus.tsv:md5,93a6bca59b0bf7f57c0b9b60d2e57082" + ] + ], + "3": [ + [ + { + "id": "test" + }, + "genome_compositions.tsv:md5,9168bea9fe82a979a698d259e1bb906a" + ] + ], + "4": [ + + ], + "5": [ + [ + { + "id": "test" + }, + "genome_plasmid.fna.gz:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "6": [ + [ + { + "id": "test" + }, + "genome_plasmid_genes.tsv:md5,55818cae5a57381b77778076e99605e6" + ] + ], + "7": [ + [ + { + "id": "test" + }, + "genome_plasmid_proteins.faa.gz:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "8": [ + [ + { + "id": "test" + }, + "genome_plasmid_summary.tsv:md5,8c4ddaa8a90da779c11537be0fddb799" + ] + ], + "9": [ + [ + { + "id": "test" + }, + "genome_virus.fna.gz:md5,483f4a5dfe60171c86ee9b7e6dff908b" + ] + ], + "aggregated_classification": [ + + ], + "calibrated_classification": [ + + ], + "compositions": [ + [ + { + "id": "test" + }, + "genome_compositions.tsv:md5,9168bea9fe82a979a698d259e1bb906a" + ] + ], + "plasmid_fasta": [ + [ + { + "id": "test" + }, + "genome_plasmid.fna.gz:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "plasmid_genes": [ + [ + { + "id": "test" + }, + "genome_plasmid_genes.tsv:md5,55818cae5a57381b77778076e99605e6" + ] + ], + "plasmid_proteins": [ + [ + { + "id": "test" + }, + "genome_plasmid_proteins.faa.gz:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "plasmid_summary": [ + [ + { + "id": "test" + }, + "genome_plasmid_summary.tsv:md5,8c4ddaa8a90da779c11537be0fddb799" + ] + ], + "provirus": [ + [ + { + "id": "test" + }, + "genome_provirus.tsv:md5,93a6bca59b0bf7f57c0b9b60d2e57082" + ] + ], + "taxonomy": [ + [ + { + "id": "test" + }, + "genome_taxonomy.tsv:md5,44c6cf5ff4c836f66648457ae8deb0d5" + ] + ], + "versions": [ + "versions.yml:md5,cebe18512f616530fff490a64e595cb6" + ], + "virus_fasta": [ + [ + { + "id": "test" + }, + "genome_virus.fna.gz:md5,483f4a5dfe60171c86ee9b7e6dff908b" + ] + ], + "virus_genes": [ + [ + { + "id": "test" + }, + "genome_virus_genes.tsv:md5,f84d8a9fce3c92c49e78672bea16561f" + ] + ], + "virus_proteins": [ + [ + { + "id": "test" + }, + "genome_virus_proteins.faa.gz:md5,6850bd46dcb921e5cfb23bfbb8fcc12b" + ] + ], + "virus_summary": [ + [ + { + "id": "test" + }, + "genome_virus_summary.tsv:md5,8cbcf95c2ab397da26b6dca8014e86f4" + ] + ] + } + ], + "timestamp": "2024-01-03T00:07:52.60021527" + } +} \ No newline at end of file diff --git a/modules/nf-core/genomad/endtoend/tests/nextflow.config b/modules/nf-core/genomad/endtoend/tests/nextflow.config new file mode 100644 index 0000000..149f4a4 --- /dev/null +++ b/modules/nf-core/genomad/endtoend/tests/nextflow.config @@ -0,0 +1,5 @@ +process { + withName: GENOMAD_ENDTOEND { + ext.args = '--splits 6 --enable-score-calibration --sensitivity 0.1 --disable-nn-classification' + } +} diff --git a/modules/nf-core/genomad/endtoend/tests/tags.yml b/modules/nf-core/genomad/endtoend/tests/tags.yml new file mode 100644 index 0000000..497ed72 --- /dev/null +++ b/modules/nf-core/genomad/endtoend/tests/tags.yml @@ -0,0 +1,2 @@ +genomad/endtoend: + - "modules/nf-core/genomad/endtoend/**"