From 50237f1044b6a3588c40b4eea5d009e0f19d7ef4 Mon Sep 17 00:00:00 2001 From: Darian Hole Date: Mon, 23 Dec 2024 12:30:10 -0600 Subject: [PATCH 01/38] add in the nf-core template basics --- .devcontainer/devcontainer.json | 20 +++++++ .editorconfig | 33 +++++++++++ .gitattributes | 4 ++ .github/PULL_REQUEST_TEMPLATE.md | 22 +++++++ .github/workflows/branch.yml | 44 ++++++++++++++ .github/workflows/ci.yml | 85 +++++++++++++++++++++++++++ .github/workflows/linting.yml | 83 ++++++++++++++++++++++++++ .github/workflows/linting_comment.yml | 28 +++++++++ .gitignore | 1 + .nf-core.yml | 15 +++++ .pre-commit-config.yaml | 13 ++++ .prettierignore | 9 +++ .prettierrc.yml | 1 + assets/samplesheet.csv | 3 + assets/schema_input.json | 33 +++++++++++ modules/local/el_gato.nf | 2 +- modules/local/plotting.nf | 3 + nextflow.config | 17 +++++- workflows/legiovue.nf | 32 +++++----- 19 files changed, 429 insertions(+), 19 deletions(-) create mode 100644 .devcontainer/devcontainer.json create mode 100644 .editorconfig create mode 100644 .gitattributes create mode 100644 .github/PULL_REQUEST_TEMPLATE.md create mode 100644 .github/workflows/branch.yml create mode 100644 .github/workflows/ci.yml create mode 100644 .github/workflows/linting.yml create mode 100644 .github/workflows/linting_comment.yml create mode 100644 .pre-commit-config.yaml create mode 100644 .prettierignore create mode 100644 .prettierrc.yml create mode 100644 assets/samplesheet.csv create mode 100644 assets/schema_input.json diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json new file mode 100644 index 0000000..b290e09 --- /dev/null +++ b/.devcontainer/devcontainer.json @@ -0,0 +1,20 @@ +{ + "name": "nfcore", + "image": "nfcore/gitpod:latest", + "remoteUser": "gitpod", + "runArgs": ["--privileged"], + + // Configure tool-specific properties. + "customizations": { + // Configure properties specific to VS Code. + "vscode": { + // Set *default* container specific settings.json values on container create. + "settings": { + "python.defaultInterpreterPath": "/opt/conda/bin/python" + }, + + // Add the IDs of extensions you want installed when the container is created. + "extensions": ["ms-python.python", "ms-python.vscode-pylance", "nf-core.nf-core-extensionpack"] + } + } +} diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000..72dda28 --- /dev/null +++ b/.editorconfig @@ -0,0 +1,33 @@ +root = true + +[*] +charset = utf-8 +end_of_line = lf +insert_final_newline = true +trim_trailing_whitespace = true +indent_size = 4 +indent_style = space + +[*.{md,yml,yaml,html,css,scss,js}] +indent_size = 2 + +# These files are edited and tested upstream in nf-core/modules +[/modules/nf-core/**] +charset = unset +end_of_line = unset +insert_final_newline = unset +trim_trailing_whitespace = unset +indent_style = unset +[/subworkflows/nf-core/**] +charset = unset +end_of_line = unset +insert_final_newline = unset +trim_trailing_whitespace = unset +indent_style = unset + +[/assets/email*] +indent_size = unset + +# ignore python and markdown +[*.{py,md}] +indent_style = unset diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..7a2dabc --- /dev/null +++ b/.gitattributes @@ -0,0 +1,4 @@ +*.config linguist-language=nextflow +*.nf.test linguist-language=nextflow +modules/nf-core/** linguist-generated +subworkflows/nf-core/** linguist-generated diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md new file mode 100644 index 0000000..6d3bdbc --- /dev/null +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -0,0 +1,22 @@ + + +## PR checklist + +- [ ] This comment contains a description of changes (with reason). +- [ ] If you've fixed a bug or added code that should be tested, add tests! +- [ ] Make sure your code lints (`nf-core pipelines lint`). +- [ ] Ensure the test suite passes (`nextflow run . -profile test,docker --outdir `). +- [ ] Check for unexpected warnings in debug mode (`nextflow run . -profile debug,test,docker --outdir `). +- [ ] Usage Documentation in `docs/usage.md` is updated. +- [ ] Output Documentation in `docs/output.md` is updated. +- [ ] `CHANGELOG.md` is updated. +- [ ] `README.md` is updated (including new tool citations and authors/contributors). diff --git a/.github/workflows/branch.yml b/.github/workflows/branch.yml new file mode 100644 index 0000000..68c8b85 --- /dev/null +++ b/.github/workflows/branch.yml @@ -0,0 +1,44 @@ +name: nf-core branch protection +# This workflow is triggered on PRs to master branch on the repository +# It fails when someone tries to make a PR against the nf-core `master` branch instead of `dev` +on: + pull_request_target: + branches: [master] + +jobs: + test: + runs-on: ubuntu-latest + steps: + # PRs to the nf-core repo master branch are only ok if coming from the nf-core repo `dev` or any `patch` branches + - name: Check PRs + if: github.repository == 'phac-nml/legiovue' + run: | + { [[ ${{github.event.pull_request.head.repo.full_name }} == phac-nml/legiovue ]] && [[ $GITHUB_HEAD_REF == "dev" ]]; } || [[ $GITHUB_HEAD_REF == "patch" ]] + + # If the above check failed, post a comment on the PR explaining the failure + # NOTE - this doesn't currently work if the PR is coming from a fork, due to limitations in GitHub actions secrets + - name: Post PR comment + if: failure() + uses: mshick/add-pr-comment@b8f338c590a895d50bcbfa6c5859251edc8952fc # v2 + with: + message: | + ## This PR is against the `master` branch :x: + + * Do not close this PR + * Click _Edit_ and change the `base` to `dev` + * This CI test will remain failed until you push a new commit + + --- + + Hi @${{ github.event.pull_request.user.login }}, + + It looks like this pull-request is has been made against the [${{github.event.pull_request.head.repo.full_name }}](https://github.com/${{github.event.pull_request.head.repo.full_name }}) `master` branch. + The `master` branch on nf-core repositories should always contain code from the latest release. + Because of this, PRs to `master` are only allowed if they come from the [${{github.event.pull_request.head.repo.full_name }}](https://github.com/${{github.event.pull_request.head.repo.full_name }}) `dev` branch. + + You do not need to close this PR, you can change the target branch to `dev` by clicking the _"Edit"_ button at the top of this page. + Note that even after this, the test will continue to show as failing until you push a new commit. + + Thanks again for your contribution! + repo-token: ${{ secrets.GITHUB_TOKEN }} + allow-repeats: false diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..8099ac2 --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,85 @@ +name: nf-core CI +# This workflow runs the pipeline with the minimal test dataset to check that it completes without any syntax errors +on: + push: + branches: + - dev + pull_request: + release: + types: [published] + workflow_dispatch: + +env: + NXF_ANSI_LOG: false + NXF_SINGULARITY_CACHEDIR: ${{ github.workspace }}/.singularity + NXF_SINGULARITY_LIBRARYDIR: ${{ github.workspace }}/.singularity + +concurrency: + group: "${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}" + cancel-in-progress: true + +jobs: + test: + name: "Run pipeline with test data (${{ matrix.NXF_VER }} | ${{ matrix.test_name }} | ${{ matrix.profile }})" + # 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 == 'phac-nml/legiovue') }}" + runs-on: ubuntu-latest + strategy: + matrix: + NXF_VER: + - "24.04.2" + - "latest-everything" + profile: + - "conda" + - "docker" + - "singularity" + test_name: + - "test" + isMaster: + - ${{ github.base_ref == 'master' }} + # Exclude conda and singularity on dev + exclude: + - isMaster: false + profile: "conda" + - isMaster: false + profile: "singularity" + steps: + - name: Check out pipeline code + uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4 + + - name: Set up Nextflow + uses: nf-core/setup-nextflow@v2 + with: + version: "${{ matrix.NXF_VER }}" + + - name: Set up Apptainer + if: matrix.profile == 'singularity' + uses: eWaterCycle/setup-apptainer@main + + - name: Set up Singularity + if: matrix.profile == 'singularity' + run: | + mkdir -p $NXF_SINGULARITY_CACHEDIR + mkdir -p $NXF_SINGULARITY_LIBRARYDIR + + - name: Set up Miniconda + if: matrix.profile == 'conda' + uses: conda-incubator/setup-miniconda@a4260408e20b96e80095f42ff7f1a15b27dd94ca # v3 + with: + miniconda-version: "latest" + auto-update-conda: true + conda-solver: libmamba + channels: conda-forge,bioconda + + - name: Set up Conda + if: matrix.profile == 'conda' + run: | + echo $(realpath $CONDA)/condabin >> $GITHUB_PATH + echo $(realpath python) >> $GITHUB_PATH + + - name: Clean up Disk space + uses: jlumbroso/free-disk-space@54081f138730dfa15788a46383842cd2f914a1be # v1.3.1 + + - name: "Run pipeline with test data ${{ matrix.NXF_VER }} | ${{ matrix.test_name }} | ${{ matrix.profile }}" + run: | + nextflow run ${GITHUB_WORKSPACE} -profile ${{ matrix.test_name }},${{ matrix.profile }} --outdir ./results diff --git a/.github/workflows/linting.yml b/.github/workflows/linting.yml new file mode 100644 index 0000000..a502573 --- /dev/null +++ b/.github/workflows/linting.yml @@ -0,0 +1,83 @@ +name: nf-core linting +# This workflow is triggered on pushes and PRs to the repository. +# It runs the `nf-core pipelines lint` and markdown lint tests to ensure +# that the code meets the nf-core guidelines. +on: + push: + branches: + - dev + pull_request: + release: + types: [published] + +jobs: + pre-commit: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4 + + - name: Set up Python 3.12 + uses: actions/setup-python@82c7e631bb3cdc910f68e0081d67478d79c6982d # v5 + with: + python-version: "3.12" + + - name: Install pre-commit + run: pip install pre-commit + + - name: Run pre-commit + run: pre-commit run --all-files + + nf-core: + runs-on: ubuntu-latest + steps: + - name: Check out pipeline code + uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4 + + - name: Install Nextflow + uses: nf-core/setup-nextflow@v2 + + - uses: actions/setup-python@82c7e631bb3cdc910f68e0081d67478d79c6982d # v5 + with: + python-version: "3.12" + architecture: "x64" + + - name: read .nf-core.yml + uses: pietrobolcato/action-read-yaml@1.1.0 + id: read_yml + with: + config: ${{ github.workspace }}/.nf-core.yml + + - name: Install dependencies + run: | + python -m pip install --upgrade pip + pip install nf-core==${{ steps.read_yml.outputs['nf_core_version'] }} + + - name: Run nf-core pipelines lint + if: ${{ github.base_ref != 'master' }} + env: + GITHUB_COMMENTS_URL: ${{ github.event.pull_request.comments_url }} + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + GITHUB_PR_COMMIT: ${{ github.event.pull_request.head.sha }} + run: nf-core -l lint_log.txt pipelines lint --dir ${GITHUB_WORKSPACE} --markdown lint_results.md + + - name: Run nf-core pipelines lint --release + if: ${{ github.base_ref == 'master' }} + env: + GITHUB_COMMENTS_URL: ${{ github.event.pull_request.comments_url }} + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + GITHUB_PR_COMMIT: ${{ github.event.pull_request.head.sha }} + run: nf-core -l lint_log.txt pipelines lint --release --dir ${GITHUB_WORKSPACE} --markdown lint_results.md + + - name: Save PR number + if: ${{ always() }} + run: echo ${{ github.event.pull_request.number }} > PR_number.txt + + - name: Upload linting log file artifact + if: ${{ always() }} + uses: actions/upload-artifact@65462800fd760344b1a7b4382951275a0abb4808 # v4 + with: + name: linting-logs + path: | + lint_log.txt + lint_results.md + PR_number.txt diff --git a/.github/workflows/linting_comment.yml b/.github/workflows/linting_comment.yml new file mode 100644 index 0000000..42e519b --- /dev/null +++ b/.github/workflows/linting_comment.yml @@ -0,0 +1,28 @@ +name: nf-core linting comment +# This workflow is triggered after the linting action is complete +# It posts an automated comment to the PR, even if the PR is coming from a fork + +on: + workflow_run: + workflows: ["nf-core linting"] + +jobs: + test: + runs-on: ubuntu-latest + steps: + - name: Download lint results + uses: dawidd6/action-download-artifact@bf251b5aa9c2f7eeb574a96ee720e24f801b7c11 # v6 + with: + workflow: linting.yml + workflow_conclusion: completed + + - name: Get PR number + id: pr_number + run: echo "pr_number=$(cat linting-logs/PR_number.txt)" >> $GITHUB_OUTPUT + + - name: Post PR comment + uses: marocchino/sticky-pull-request-comment@331f8f5b4215f0445d3c07b4967662a32a2d3e31 # v2 + with: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + number: ${{ steps.pr_number.outputs.pr_number }} + path: linting-logs/lint_results.md diff --git a/.gitignore b/.gitignore index bd66163..435ef17 100644 --- a/.gitignore +++ b/.gitignore @@ -5,3 +5,4 @@ results/ testing/ testing* *.pyc +null/ diff --git a/.nf-core.yml b/.nf-core.yml index 3805dc8..c1f760a 100644 --- a/.nf-core.yml +++ b/.nf-core.yml @@ -1 +1,16 @@ repository_type: pipeline +nf_core_version: 3.0.2 +bump_version: null +lint: + files_exist: + - LegioVue-WGS-Workflow.png + - CITATIONS.md + files_unchanged: + - LICENSE + - .gitignore + multiqc_config: false + pipeline_name_conventions: false + actions_awsfulltest: false + +template: + prefix: phac-nml diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml new file mode 100644 index 0000000..9e9f0e1 --- /dev/null +++ b/.pre-commit-config.yaml @@ -0,0 +1,13 @@ +repos: + - repo: https://github.com/pre-commit/mirrors-prettier + rev: "v3.1.0" + hooks: + - id: prettier + additional_dependencies: + - prettier@3.2.5 + + - repo: https://github.com/editorconfig-checker/editorconfig-checker.python + rev: "3.0.3" + hooks: + - id: editorconfig-checker + alias: ec diff --git a/.prettierignore b/.prettierignore new file mode 100644 index 0000000..676bcd1 --- /dev/null +++ b/.prettierignore @@ -0,0 +1,9 @@ +.nextflow* +work/ +data/ +results/ +.DS_Store +testing/ +testing* +*.pyc +bin/ diff --git a/.prettierrc.yml b/.prettierrc.yml new file mode 100644 index 0000000..c81f9a7 --- /dev/null +++ b/.prettierrc.yml @@ -0,0 +1 @@ +printWidth: 120 diff --git a/assets/samplesheet.csv b/assets/samplesheet.csv new file mode 100644 index 0000000..5f653ab --- /dev/null +++ b/assets/samplesheet.csv @@ -0,0 +1,3 @@ +sample,fastq_1,fastq_2 +SAMPLE_PAIRED_END,/path/to/fastq/files/AEG588A1_S1_L002_R1_001.fastq.gz,/path/to/fastq/files/AEG588A1_S1_L002_R2_001.fastq.gz +SAMPLE_SINGLE_END,/path/to/fastq/files/AEG588A4_S4_L003_R1_001.fastq.gz, diff --git a/assets/schema_input.json b/assets/schema_input.json new file mode 100644 index 0000000..99b6e66 --- /dev/null +++ b/assets/schema_input.json @@ -0,0 +1,33 @@ +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "$id": "https://raw.githubusercontent.com/phac-nml/legiovue/master/assets/schema_input.json", + "title": "phac-nml/legiovue pipeline - params.input schema", + "description": "Schema for the file provided with params.input", + "type": "array", + "items": { + "type": "object", + "properties": { + "sample": { + "type": "string", + "pattern": "^\\S+$", + "errorMessage": "Sample name must be provided and cannot contain spaces", + "meta": ["id"] + }, + "fastq_1": { + "type": "string", + "format": "file-path", + "exists": true, + "pattern": "^\\S+\\.f(ast)?q\\.gz$", + "errorMessage": "FastQ file for reads 1 must be provided, cannot contain spaces and must have extension '.fq.gz' or '.fastq.gz'" + }, + "fastq_2": { + "type": "string", + "format": "file-path", + "exists": true, + "pattern": "^\\S+\\.f(ast)?q\\.gz$", + "errorMessage": "FastQ file for reads 2 cannot contain spaces and must have extension '.fq.gz' or '.fastq.gz'" + } + }, + "required": ["sample", "fastq_1"] + } +} diff --git a/modules/local/el_gato.nf b/modules/local/el_gato.nf index e45b737..15eeffc 100644 --- a/modules/local/el_gato.nf +++ b/modules/local/el_gato.nf @@ -163,4 +163,4 @@ process COMBINE_EL_GATO { combine_el_gato: 0.1.0 END_VERSIONS """ -} \ No newline at end of file +} diff --git a/modules/local/plotting.nf b/modules/local/plotting.nf index 5f8bd6b..7f5988f 100644 --- a/modules/local/plotting.nf +++ b/modules/local/plotting.nf @@ -1,6 +1,9 @@ process PLOT_PYSAMSTATS_TSV { tag "$meta.id" label 'process_low' + // Apptainer v1.3.4-1.el9 (not sure if other versions) issue that I have to resolve + // As its just affects a plot output better to ignore the error for now + label 'error_ignore' publishDir "${params.outdir}/el_gato/plots", pattern: "*_allele_plots.pdf", mode: 'copy' diff --git a/nextflow.config b/nextflow.config index 0215594..209b246 100644 --- a/nextflow.config +++ b/nextflow.config @@ -9,7 +9,8 @@ // Global default params, used in configs params { // Required Input fastq options (Pick 1) - fastq_dir = "" + input = null + fastq_dir = null // Input data filtering based on testing min_abundance_percent = 10.0 @@ -25,10 +26,11 @@ params { // El_Gato skip_el_gato = false + skip_plotting = false // ChewBBACA cgMLST params prepped_schema = "$projectDir/data/SeqSphere_1521_schema" - schema_targets = "" + schema_targets = null // Metadata -- To add with clustering later // Or maybe can add to join to final output file? @@ -154,6 +156,9 @@ profiles { nml { includeConfig 'conf/nml.config' } } +// Override the default Docker registry when required +process.ext.override_configured_container_registry = true + // Set default registry for Apptainer, Docker, Podman, Charliecloud and Singularity independent of -profile // Will not be used unless Apptainer / Docker / Podman / Charliecloud / Singularity are enabled // Set to your registry if you have a mirror of containers @@ -163,6 +168,12 @@ podman.registry = 'quay.io' singularity.registry = 'quay.io' charliecloud.registry = 'quay.io' +// Nextflow plugins +plugins { + id 'nf-schema@2.2.1' + id 'nf-iridanext@0.2.0' +} + // 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. // 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. @@ -202,7 +213,7 @@ dag { manifest { name = "phac-nml/LegioVue" author = """Darian Hole, Molly Pratt, Jennifer Tanner""" - homePage = "" + homePage = """https://github.com/phac-nml/legiovue""" description = """Legionella pneumophila WGS analysis""" mainScript = "main.nf" nextflowVersion = "!>=23.10.1" diff --git a/workflows/legiovue.nf b/workflows/legiovue.nf index 12cf0ae..ce572b6 100644 --- a/workflows/legiovue.nf +++ b/workflows/legiovue.nf @@ -168,21 +168,23 @@ workflow LEGIOVUE { // Alleles Stats with pysamstats and plots // Visualize the called alleles to help // investigate potential issue calls - PYSAMSTATS_MAPQ( - EL_GATO_READS.out.bam_bai, - "mapq" - ) - PYSAMSTATS_BASEQ( - EL_GATO_READS.out.bam_bai, - "baseq" - ) - CSVTK_COMBINE_STATS( - PYSAMSTATS_MAPQ.out.tsv - .join(PYSAMSTATS_BASEQ.out.tsv, by:[0]) - ) - PLOT_PYSAMSTATS_TSV( - CSVTK_COMBINE_STATS.out.tsv - ) + if ( ! params.skip_plotting ){ + PYSAMSTATS_MAPQ( + EL_GATO_READS.out.bam_bai, + "mapq" + ) + PYSAMSTATS_BASEQ( + EL_GATO_READS.out.bam_bai, + "baseq" + ) + CSVTK_COMBINE_STATS( + PYSAMSTATS_MAPQ.out.tsv + .join(PYSAMSTATS_BASEQ.out.tsv, by:[0]) + ) + PLOT_PYSAMSTATS_TSV( + CSVTK_COMBINE_STATS.out.tsv + ) + } } // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // From fd31e7e9097c7e388bbc51bb0240b9d3a9d3edfd Mon Sep 17 00:00:00 2001 From: Darian Hole Date: Mon, 23 Dec 2024 15:16:34 -0600 Subject: [PATCH 02/38] add in nf-schema validation --- main.nf | 28 ++++--- nextflow.config | 7 +- nextflow_schema.json | 185 +++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 206 insertions(+), 14 deletions(-) create mode 100644 nextflow_schema.json diff --git a/main.nf b/main.nf index 109cf00..8a7a7e9 100644 --- a/main.nf +++ b/main.nf @@ -14,24 +14,26 @@ nextflow.enable.dsl = 2 Input Checks and Help/Version ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */ -// Help and Version -include { printHelp } from './modules/local/help.nf' -if ( params.help ){ - printHelp() - exit 0 -} +// Version print if ( params.version ){ - log.info("LegioVue v${workflow.manifest.version}") + log.info "${workflow.manifest.name} v${workflow.manifest.version}" exit 0 } -// Quick data checks -if ( params.profile ){ - log.error("Profile should have a single dash: -profile") +// NF-Schema parts +include { validateParameters; paramsSummaryLog; samplesheetToList } from 'plugin/nf-schema' +// Validate input parameters +validateParameters() + +// Print summary of supplied parameters +log.info paramsSummaryLog(workflow) + +// Check that we have one proper input +if ( ! params.fastq_dir && ! params.input ){ + log.error "Please provide input data with either: '--input input.csv' or '--fastq_dir '" exit 1 -} -if ( ! params.fastq_dir ){ - log.error("Missing required argument '--fastq_dir '") +} else if ( params.input && params.fastq_pass ) { + log.error "Please provide input data with either: '--input input.csv' or '--fastq_dir ' but not both" exit 1 } diff --git a/nextflow.config b/nextflow.config index 209b246..e0efb03 100644 --- a/nextflow.config +++ b/nextflow.config @@ -13,7 +13,7 @@ params { fastq_dir = null // Input data filtering based on testing - min_abundance_percent = 10.0 + min_abundance_percent = 10 min_reads = 150000 // Kraken + Braken @@ -173,6 +173,11 @@ plugins { id 'nf-schema@2.2.1' id 'nf-iridanext@0.2.0' } +validation { + help { + enabled = true + } +} // 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. diff --git a/nextflow_schema.json b/nextflow_schema.json new file mode 100644 index 0000000..3f72948 --- /dev/null +++ b/nextflow_schema.json @@ -0,0 +1,185 @@ +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "$id": "https://raw.githubusercontent.com/phac-nml/LegioVue/master/nextflow_schema.json", + "title": "phac-nml/LegioVue pipeline parameters", + "description": "Legionella pneumophila WGS analysis", + "type": "object", + "$defs": { + "input_data_option_choose_1": { + "title": "Input data option (choose 1)", + "type": "object", + "fa_icon": "fas fa-terminal", + "description": "Define where the pipeline should find input data", + "properties": { + "input": { + "type": "string", + "format": "file-path", + "exists": true, + "schema": "assets/schema_input.json", + "mimetype": "text/csv", + "pattern": "^\\S+\\.csv$", + "description": "Path to comma-separated file containing information about the samples in the experiment.", + "help_text": "You will need to create a design file with information about the samples in your experiment before running the pipeline. Use this parameter to specify its location. It has to be a comma-separated file with 3 columns, and a header row.", + "fa_icon": "fas fa-file-csv" + }, + "fastq_dir": { + "type": "string", + "fa_icon": "fas fa-folder-open", + "description": "Path to directory containing paired (_R1/_R2) gzipped fastq files", + "format": "directory-path" + } + } + }, + "filtering_options": { + "title": "Filtering options", + "type": "object", + "description": "Options on minimum values for filtering out input data", + "default": "", + "properties": { + "kraken2_db": { + "type": "string", + "default": "s3://genome-idx/kraken/standard_08gb_20240904", + "fa_icon": "fas fa-server", + "description": "Kraken2 database to use for abundance checks" + }, + "min_abundance_percent": { + "type": "number", + "default": 10, + "description": "Minimum L.pn abundance to keep sample in pipeline", + "fa_icon": "fas fa-percentage", + "minimum": 1, + "maximum": 99 + }, + "min_reads": { + "type": "integer", + "default": 150000, + "description": "Minimum number of paired reads to keep sample in pipeline", + "minimum": 1 + } + }, + "fa_icon": "fas fa-filter" + }, + "skipping_options": { + "title": "Skipping options", + "type": "object", + "description": "Processes that can be skipped through parameters", + "default": "", + "properties": { + "skip_el_gato": { + "type": "boolean", + "description": "Skip running all el_gato Sequence Typing aspects", + "fa_icon": "fas fa-forward" + }, + "skip_plotting": { + "type": "boolean", + "description": "Skip plotting el_gato allele profiles", + "fa_icon": "fas fa-forward" + } + }, + "fa_icon": "fas fa-forward" + }, + "quast_options": { + "title": "Quast options", + "type": "object", + "description": "Options for quast", + "default": "", + "properties": { + "quast_ref": { + "type": "string", + "default": "data/C9_S.reference.fna", + "format": "file-path", + "fa_icon": "fas fa-file-alt", + "description": "Path to reference fasta file to base quast metrics off of" + } + } + }, + "chewbbaca_options": { + "title": "Chewbbaca options", + "type": "object", + "description": "Options to specify the chewbbaca schema to use", + "default": "", + "properties": { + "schema_targets": { + "type": "string", + "description": "Schema targets" + }, + "prepped_schema": { + "type": "string", + "default": "data/SeqSphere_1521_schema", + "description": "Chewbbaca prepped schema", + "format": "directory-path" + } + }, + "fa_icon": "fab fa-cc-diners-club" + }, + "generic_options": { + "title": "Generic options", + "type": "object", + "fa_icon": "fas fa-file-import", + "description": "Less common options for the pipeline, typically set in a config file.", + "help_text": "These options are common to all nf-core pipelines and allow you to customise some of the core preferences for how the pipeline runs.\n\nTypically these options would be set in a Nextflow config file loaded for all pipeline runs, such as `~/.nextflow/config`.", + "properties": { + "outdir": { + "type": "string", + "format": "directory-path", + "description": "The output directory where the results will be saved. You have to use absolute paths to storage on Cloud infrastructure.", + "fa_icon": "fas fa-folder-open", + "default": "results" + }, + "max_memory": { + "type": "string", + "default": "128.GB", + "fa_icon": "fas fa-database", + "description": "Maximum memory to allow for a process to assign" + }, + "max_cpus": { + "type": "integer", + "default": 16, + "fa_icon": "fas fa-microchip", + "description": "Maximum CPUs to allow for a process to assign" + }, + "max_time": { + "type": "string", + "default": "240.h", + "fa_icon": "fas fa-clock", + "description": "Maximum time to allow for a process to assign" + }, + "help": { + "type": "boolean", + "description": "Display help info and exit", + "fa_icon": "far fa-question-circle", + "hidden": true + }, + "version": { + "type": "boolean", + "description": "Display version and exit.", + "fa_icon": "fas fa-question-circle", + "hidden": true + } + }, + "required": [ + "outdir" + ] + } + }, + "allOf": [ + { + "$ref": "#/$defs/input_data_option_choose_1" + }, + { + "$ref": "#/$defs/filtering_options" + }, + { + "$ref": "#/$defs/skipping_options" + }, + { + "$ref": "#/$defs/quast_options" + }, + { + "$ref": "#/$defs/chewbbaca_options" + }, + { + "$ref": "#/$defs/generic_options" + } + ] +} From 83f59f1a98cf3578eebb591c4fa4de1305fe8221 Mon Sep 17 00:00:00 2001 From: Darian Hole Date: Fri, 27 Dec 2024 15:10:28 -0600 Subject: [PATCH 03/38] plug in input param fully --- assets/schema_input.json | 10 +++---- bin/combine_qc_data.py | 2 +- bin/filter_lpn_abundance.py | 2 +- bin/plot_genome_cov.R | 2 +- bin/quast_analyzer.py | 4 +-- main.nf | 4 +-- modules/local/help.nf | 45 ------------------------------ subworkflows/local/format_input.nf | 10 ++++++- 8 files changed, 21 insertions(+), 58 deletions(-) delete mode 100644 modules/local/help.nf diff --git a/assets/schema_input.json b/assets/schema_input.json index 99b6e66..aa086ab 100644 --- a/assets/schema_input.json +++ b/assets/schema_input.json @@ -17,17 +17,17 @@ "type": "string", "format": "file-path", "exists": true, - "pattern": "^\\S+\\.f(ast)?q\\.gz$", - "errorMessage": "FastQ file for reads 1 must be provided, cannot contain spaces and must have extension '.fq.gz' or '.fastq.gz'" + "pattern": "^\\S+\\.f(ast)?q(\\.gz)?$", + "errorMessage": "FastQ file for reads 1 must be provided, cannot contain spaces and must have extension '.fq', '.fq.gz', '.fastq', or '.fastq.gz'" }, "fastq_2": { "type": "string", "format": "file-path", "exists": true, - "pattern": "^\\S+\\.f(ast)?q\\.gz$", - "errorMessage": "FastQ file for reads 2 cannot contain spaces and must have extension '.fq.gz' or '.fastq.gz'" + "pattern": "^\\S+\\.f(ast)?q(\\.gz)?$", + "errorMessage": "FastQ file for reads 2 cannot contain spaces and must have extension '.fq', '.fq.gz', '.fastq', or '.fastq.gz'" } }, - "required": ["sample", "fastq_1"] + "required": ["sample", "fastq_1", "fastq_2"] } } diff --git a/bin/combine_qc_data.py b/bin/combine_qc_data.py index 3791ede..6654bfc 100755 --- a/bin/combine_qc_data.py +++ b/bin/combine_qc_data.py @@ -145,7 +145,7 @@ def main() -> None: """Entry point""" parser = parse_args() args = parser.parse_args() - + # Parse each given file to add to our outdict sample = str(args.sample) outdict = {'sample': sample} diff --git a/bin/filter_lpn_abundance.py b/bin/filter_lpn_abundance.py index 1a0f0d7..9418126 100755 --- a/bin/filter_lpn_abundance.py +++ b/bin/filter_lpn_abundance.py @@ -3,7 +3,7 @@ Simple helper script to check that Bracken Lpn abundance is above the required input threshold -In the future we may want to include this as part of the +In the future we may want to include this as part of the nextflow/groovy script over it being a full process but with development time it is here for now ''' diff --git a/bin/plot_genome_cov.R b/bin/plot_genome_cov.R index ed57e78..6716240 100755 --- a/bin/plot_genome_cov.R +++ b/bin/plot_genome_cov.R @@ -55,7 +55,7 @@ create_plots <- function(gene, df) { area(2,1), area(3,1) ) - combined_plot <- plot1/plot2/plot3 + + combined_plot <- plot1/plot2/plot3 + plot_layout( design = areas ) + diff --git a/bin/quast_analyzer.py b/bin/quast_analyzer.py index e2d97a7..7fbae66 100755 --- a/bin/quast_analyzer.py +++ b/bin/quast_analyzer.py @@ -73,7 +73,7 @@ def init_parser() -> argparse.ArgumentParser: default=75, help='Thresold for minimum quast genome fraction percentage' ) - + # Version # parser.add_argument( '-v', @@ -101,7 +101,7 @@ def parse_sample_line(sample_line: str, headers: list) -> dict: """Split sample line string into key-val dict based on headers Args: - sample_line (str): Tab separated sample data line + sample_line (str): Tab separated sample data line headers (list): List of headers Returns: diff --git a/main.nf b/main.nf index 8a7a7e9..4a62727 100644 --- a/main.nf +++ b/main.nf @@ -21,7 +21,7 @@ if ( params.version ){ } // NF-Schema parts -include { validateParameters; paramsSummaryLog; samplesheetToList } from 'plugin/nf-schema' +include { validateParameters; paramsSummaryLog } from 'plugin/nf-schema' // Validate input parameters validateParameters() @@ -32,7 +32,7 @@ log.info paramsSummaryLog(workflow) if ( ! params.fastq_dir && ! params.input ){ log.error "Please provide input data with either: '--input input.csv' or '--fastq_dir '" exit 1 -} else if ( params.input && params.fastq_pass ) { +} else if ( params.fastq_dir && params.input ) { log.error "Please provide input data with either: '--input input.csv' or '--fastq_dir ' but not both" exit 1 } diff --git a/modules/local/help.nf b/modules/local/help.nf deleted file mode 100644 index 7a37936..0000000 --- a/modules/local/help.nf +++ /dev/null @@ -1,45 +0,0 @@ -// Temp help statement -def printHelp() { - log.info""" -Usage: - nextflow run phac-nml/legiovue -profile --fastq_dir - -Description: - Pipeline to generates Legionella pneumophila de novo assemblies, ST types, cgMLST calls, and QC summaries for clustering and reporting - -Nextflow arguments (single DASH): - -profile Allowed values: conda, mamba, singularity, apptainer, docker - -c Add in custom config files for resources or own cluster - -Mandatory workflow arguments: - --fastq_dir Path to directory containing paired legionella fastq data - -Optional: - ## Basic Args ## - --outdir Output directory (Default: ./results) - - ## Filtering ## - --min_abundance_percent Minimum L. pneumophila abundance required (Default: 10.0) - --min_reads Minimum reads required after trimmomatic (Default: 150000) - - ## Kraken/Bracken ## - --kraken2_db Path to standard kraken2 database - (Default: s3://genome-idx/kraken/standard_08gb_20240904) - - ## Quast ## - --quast_ref Path to reference sequence for some of the quast metrics - (Default data/C9_S.reference.fna) - - ## Chewbbaca ## - --prepped_schema Path to a prepped chewbbaca schema to save running the prep command - (Default: data/SeqSphere_1521_schema) - --schema_targets Path to schema targets to prep for chewbbaca if not using the default SeqSphere_1521 - - ## Other Generic Args ## - --help Prints this statement - --version Prints the pipeline version - --max_memory Maximum memory to allow to be allocated when running processes (Default: 128G) - --max_cpus Maximum cpus to allow to be allocated when running processes (Default: 16) - --max_time Maximum time to allow to be allocated when running processes (Default: 240.h) -""".stripIndent() -} diff --git a/subworkflows/local/format_input.nf b/subworkflows/local/format_input.nf index 8a301da..7721ced 100644 --- a/subworkflows/local/format_input.nf +++ b/subworkflows/local/format_input.nf @@ -5,6 +5,7 @@ IMPORT MODULES / SUBWORKFLOWS / FUNCTIONS ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */ +include {samplesheetToList } from 'plugin/nf-schema' /* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -19,12 +20,19 @@ */ workflow FORMAT_INPUT { main: - // Just adapting to the metamap format using fromFilePairs if ( params.fastq_dir ) { + // Just adapting to the metamap format using fromFilePairs Channel .fromFilePairs("${params.fastq_dir}/*_{R1,R2}*.fastq*", checkIfExists:true) .map { it -> [ [id: it[0]], it[1] ] } .set { ch_paired_fastqs } + } else { + // Matching the above formatting by creating a list of the fastq file pairs + // Schema requires pairs at the moment so this is ok. If we want to support ONT + // data later will need to adjust the logic + Channel.fromList(samplesheetToList(params.input, "assets/schema_input.json")) + .map { it -> [ it[0], [it[1], it[2]] ] } + .set { ch_paired_fastqs } } emit: From 9c813b35507a16fb2a4e3079494bd89fb7d838a6 Mon Sep 17 00:00:00 2001 From: Darian Hole Date: Tue, 31 Dec 2024 09:32:22 -0600 Subject: [PATCH 04/38] add in when statements to modules --- .gitignore | 1 + .nf-core.yml | 31 ++++++++++++++++++++++++++++--- modules/local/bracken.nf | 3 +++ modules/local/chewbbaca.nf | 9 +++++++++ modules/local/el_gato.nf | 12 ++++++++++++ modules/local/kraken.nf | 3 +++ modules/local/plotting.nf | 3 +++ modules/local/pysamstats.nf | 3 +++ modules/local/qc.nf | 3 +++ modules/local/quast.nf | 3 +++ modules/local/reportree.nf | 3 +++ modules/local/spades.nf | 3 +++ modules/local/trimmomatic.nf | 3 +++ modules/local/utils.nf | 9 +++++++++ 14 files changed, 86 insertions(+), 3 deletions(-) diff --git a/.gitignore b/.gitignore index 435ef17..3eb5cd8 100644 --- a/.gitignore +++ b/.gitignore @@ -6,3 +6,4 @@ testing/ testing* *.pyc null/ +slurm* diff --git a/.nf-core.yml b/.nf-core.yml index c1f760a..d772967 100644 --- a/.nf-core.yml +++ b/.nf-core.yml @@ -1,16 +1,41 @@ repository_type: pipeline -nf_core_version: 3.0.2 +nf_core_version: "3.0.2" bump_version: null lint: files_exist: - - LegioVue-WGS-Workflow.png - - CITATIONS.md + - CODE_OF_CONDUCT.md + - .github/.dockstore.yml + - .github/CONTRIBUTING.md + - .github/ISSUE_TEMPLATE/bug_report.yml + - .github/ISSUE_TEMPLATE/config.yml + - .github/ISSUE_TEMPLATE/feature_request.yml + - assets/email_template.html + - assets/email_template.txt + - assets/multiqc_config.yml + - assets/sendmail_template.txt + - assets/nf-core-LegioVue_logo_light.png + - conf/igenomes.config + - conf/igenomes_ignored.config + - docs/images/nf-core-LegioVue_logo_light.png + - docs/images/nf-core-LegioVue_logo_dark.png files_unchanged: + - .github/PULL_REQUEST_TEMPLATE.md + - docs/README.md - LICENSE - .gitignore multiqc_config: false pipeline_name_conventions: false actions_awsfulltest: false + readme: false + nextflow_config: + - custom_config + - manifest.name + - manifest.homePage + - params.quast_ref + - params.prepped_schema + - params.max_cpus + - params.max_memory + - params.max_time template: prefix: phac-nml diff --git a/modules/local/bracken.nf b/modules/local/bracken.nf index 45ed563..e76c215 100644 --- a/modules/local/bracken.nf +++ b/modules/local/bracken.nf @@ -19,6 +19,9 @@ process BRACKEN { tuple val(meta), path('*-braken-breakdown.tsv'), emit: breakdown path "versions.yml", emit: versions + when: + task.ext.when == null || task.ext.when + script: """ bracken \\ diff --git a/modules/local/chewbbaca.nf b/modules/local/chewbbaca.nf index 717cef2..44eaeb9 100644 --- a/modules/local/chewbbaca.nf +++ b/modules/local/chewbbaca.nf @@ -15,6 +15,9 @@ process CHEWBBACA_PREP_EXTERNAL_SCHEMA { path "prepped_schema", emit: schema path "versions.yml", emit: versions + when: + task.ext.when == null || task.ext.when + script: """ chewBBACA.py \\ @@ -49,6 +52,9 @@ process CHEWBBACA_ALLELE_CALL { path "allele_calls/results_statistics.tsv", emit: statistics path "versions.yml", emit: versions + when: + task.ext.when == null || task.ext.when + script: """ # Move all assemblies to a directory @@ -88,6 +94,9 @@ process CHEWBBACA_EXTRACT_CGMLST { path "cgMLST", emit: cgmlst path "versions.yml", emit: versions + when: + task.ext.when == null || task.ext.when + script: """ chewBBACA.py \\ diff --git a/modules/local/el_gato.nf b/modules/local/el_gato.nf index 15eeffc..0e8e26d 100644 --- a/modules/local/el_gato.nf +++ b/modules/local/el_gato.nf @@ -24,6 +24,9 @@ process EL_GATO_READS { tuple val(meta), path("${meta.id}_reads.json"), emit: json path "versions.yml", emit: versions + when: + task.ext.when == null || task.ext.when + script: def reads_in = "--read1 ${reads[0]} --read2 ${reads[1]}" """ @@ -80,6 +83,9 @@ process EL_GATO_ASSEMBLY { tuple val(meta), path("${meta.id}_assembly.json"), emit: json path "versions.yml", emit: versions + when: + task.ext.when == null || task.ext.when + script: """ el_gato.py \\ @@ -119,6 +125,9 @@ process EL_GATO_REPORT { path "*.pdf", emit: pdf path "versions.yml", emit: versions + when: + task.ext.when == null || task.ext.when + script: """ elgato_report.py \\ @@ -150,6 +159,9 @@ process COMBINE_EL_GATO { path "el_gato_st.tsv", emit: report path "versions.yml", emit: versions + when: + task.ext.when == null || task.ext.when + script: def reads_arg = reads_st ? "--reads_tsv $reads_st" : "" def assembly_arg = assembly_st ? "--assembly_tsv $assembly_st" : "" diff --git a/modules/local/kraken.nf b/modules/local/kraken.nf index b15a95c..04bc2b6 100644 --- a/modules/local/kraken.nf +++ b/modules/local/kraken.nf @@ -19,6 +19,9 @@ process KRAKEN2_CLASSIFY { tuple val(meta), path('*-kreport.tsv'), emit: report path "versions.yml", emit: versions + when: + task.ext.when == null || task.ext.when + script: def gz_arg = reads[0].endsWith('.gz') ? "--gzip-compressed" : "" """ diff --git a/modules/local/plotting.nf b/modules/local/plotting.nf index 7f5988f..1bf0006 100644 --- a/modules/local/plotting.nf +++ b/modules/local/plotting.nf @@ -18,6 +18,9 @@ process PLOT_PYSAMSTATS_TSV { tuple val(meta), path("${meta.id}_allele_plots.pdf"), emit: plot path "versions.yml", emit: versions + when: + task.ext.when == null || task.ext.when + script: // Special handling of using executables based on a docker micromamba image // https://stackoverflow.com/a/78027234 diff --git a/modules/local/pysamstats.nf b/modules/local/pysamstats.nf index 842d0f0..27d6b96 100644 --- a/modules/local/pysamstats.nf +++ b/modules/local/pysamstats.nf @@ -15,6 +15,9 @@ process PYSAMSTATS { tuple val(meta), path("${meta.id}.${type}.stats.tsv"), emit: tsv path "versions.yml", emit: versions + when: + task.ext.when == null || task.ext.when + script: """ pysamstats \\ diff --git a/modules/local/qc.nf b/modules/local/qc.nf index 093e459..1f4eea3 100644 --- a/modules/local/qc.nf +++ b/modules/local/qc.nf @@ -18,6 +18,9 @@ process COMBINE_SAMPLE_DATA { tuple val(meta), path("*.tsv"), emit: tsv path "versions.yml", emit: versions + when: + task.ext.when == null || task.ext.when + script: def trimmomatic_arg = trimmomatic_summary ? "-tr $trimmomatic_summary" : "" def quast_report_arg = quast_report ? "-qa $quast_report" : "" diff --git a/modules/local/quast.nf b/modules/local/quast.nf index d3f5e75..7af9334 100644 --- a/modules/local/quast.nf +++ b/modules/local/quast.nf @@ -22,6 +22,9 @@ process QUAST { path "*_stats", emit: stats_folders path "versions.yml", emit: versions + when: + task.ext.when == null || task.ext.when + script: """ quast \\ diff --git a/modules/local/reportree.nf b/modules/local/reportree.nf index e3d7e30..f980fa4 100644 --- a/modules/local/reportree.nf +++ b/modules/local/reportree.nf @@ -16,6 +16,9 @@ process REPORTREE { output: path "versions.yml", emit: versions + when: + task.ext.when == null || task.ext.when + script: def metadata_arg = metadata ? "-m $metadata" : "" """ diff --git a/modules/local/spades.nf b/modules/local/spades.nf index e251601..9a65881 100644 --- a/modules/local/spades.nf +++ b/modules/local/spades.nf @@ -20,6 +20,9 @@ process SPADES { tuple val(meta), path('*.spades.log'), emit: log path "versions.yml", emit: versions + when: + task.ext.when == null || task.ext.when + script: def reads_paired_in = "-1 ${reads_paired[0]} -2 ${reads_paired[1]}" def reads_unpaired_in = "--s1 ${reads_single[0]} --s2 ${reads_single[1]}" diff --git a/modules/local/trimmomatic.nf b/modules/local/trimmomatic.nf index 05ff1a5..2cc2aac 100644 --- a/modules/local/trimmomatic.nf +++ b/modules/local/trimmomatic.nf @@ -20,6 +20,9 @@ process TRIMMOMATIC { tuple val(meta), path("*.summary.txt"), emit: summary path "versions.yml", emit: versions + when: + task.ext.when == null || task.ext.when + script: // I've included the current args here for now, may make a modules config later """ diff --git a/modules/local/utils.nf b/modules/local/utils.nf index a926125..7994c13 100644 --- a/modules/local/utils.nf +++ b/modules/local/utils.nf @@ -14,6 +14,9 @@ process CREATE_ABUNDANCE_FILTER { tuple val(meta), path("${meta.id}.check.csv"), emit: abundance_check path "versions.yml", emit: versions + when: + task.ext.when == null || task.ext.when + script: """ filter_lpn_abundance.py \\ @@ -46,6 +49,9 @@ process CSVTK_COMBINE_STATS { tuple val(meta), path("${meta.id}.allele_stats.tsv"), emit: tsv path "versions.yml", emit: versions + when: + task.ext.when == null || task.ext.when + script: """ csvtk \\ @@ -80,6 +86,9 @@ process CSVTK_COMBINE{ path "overall.qc.tsv", emit: tsv path "versions.yml", emit: versions + when: + task.ext.when == null || task.ext.when + script: """ csvtk \\ From fa67f23ac6f740826c2d30f872f0ccaabf4556a9 Mon Sep 17 00:00:00 2001 From: Darian Hole Date: Tue, 31 Dec 2024 09:59:30 -0600 Subject: [PATCH 05/38] adjust nf-core lint tests --- .nf-core.yml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/.nf-core.yml b/.nf-core.yml index d772967..89d7a39 100644 --- a/.nf-core.yml +++ b/.nf-core.yml @@ -23,19 +23,19 @@ lint: - docs/README.md - LICENSE - .gitignore - multiqc_config: false - pipeline_name_conventions: false - actions_awsfulltest: false - readme: false + multiqc_config: False + pipeline_name_conventions: False + actions_awsfulltest: False + actions_awstest: False + readme: False nextflow_config: - custom_config - manifest.name - manifest.homePage - - params.quast_ref - - params.prepped_schema - params.max_cpus - params.max_memory - params.max_time + - config_defaults template: prefix: phac-nml From f5c9eb986e8502b283c6a5e470e1ce8eeadc9140 Mon Sep 17 00:00:00 2001 From: Darian Hole Date: Tue, 31 Dec 2024 10:25:56 -0600 Subject: [PATCH 06/38] remove trailing whitespaces from markdown files --- .nf-core.yml | 7 ++++++- README.md | 34 +++++++++++++++++----------------- docs/clustering.md | 26 +++++++++++++------------- docs/output.md | 10 +++++----- 4 files changed, 41 insertions(+), 36 deletions(-) diff --git a/.nf-core.yml b/.nf-core.yml index 89d7a39..3ed99d1 100644 --- a/.nf-core.yml +++ b/.nf-core.yml @@ -9,6 +9,8 @@ lint: - .github/ISSUE_TEMPLATE/bug_report.yml - .github/ISSUE_TEMPLATE/config.yml - .github/ISSUE_TEMPLATE/feature_request.yml + - .github/workflows/awstest.yml + - .github/workflows/awsfulltest.yml - assets/email_template.html - assets/email_template.txt - assets/multiqc_config.yml @@ -35,7 +37,10 @@ lint: - params.max_cpus - params.max_memory - params.max_time - - config_defaults + nextflow_config: + - config_defaults: + - params.quast_ref + - params.prepped_schema template: prefix: phac-nml diff --git a/README.md b/README.md index b834492..d6fb4b6 100644 --- a/README.md +++ b/README.md @@ -1,12 +1,12 @@ # legiovue -LegioVue is a nextflow pipeline for whole-genome analysis of *Legionella pneumophila*. It performs *in silico* sequence typing, genome assembly, and core-genome analysis. It also provides detailed information about the quality of *L. pneumophila* genomes. The name is an homage to the Bellevue-Stratford hotel, site of the first known outbreak of Legionnaire's Disease. +LegioVue is a nextflow pipeline for whole-genome analysis of *Legionella pneumophila*. It performs *in silico* sequence typing, genome assembly, and core-genome analysis. It also provides detailed information about the quality of *L. pneumophila* genomes. The name is an homage to the Bellevue-Stratford hotel, site of the first known outbreak of Legionnaire's Disease. -This project serves as a repository for tools, notes, and informtation regarding the LegioVue pipeline. This project is a GRDI funded research project surrounding the **assessment and implementation of a whole genome sequencing scheme for rapid resolution of _Legionella pneumophila_ outbreaks within Canada to better protect vulnerable populations**. The goal is to generate and nationally deploy a standardized pipeline that will shift _L. pneumophila_ analysis from conventional sequence based typing to whole genome sequence-based typing and clustering, for rapid detection and response to Legionnaires' Disease outbreaks in Canada. +This project serves as a repository for tools, notes, and informtation regarding the LegioVue pipeline. This project is a GRDI funded research project surrounding the **assessment and implementation of a whole genome sequencing scheme for rapid resolution of _Legionella pneumophila_ outbreaks within Canada to better protect vulnerable populations**. The goal is to generate and nationally deploy a standardized pipeline that will shift _L. pneumophila_ analysis from conventional sequence based typing to whole genome sequence-based typing and clustering, for rapid detection and response to Legionnaires' Disease outbreaks in Canada. ## Big Picture Overview **LegioVue** contains a combination of tools that are used to do *de novo* assembly, sequence typing, cgMLST, and quality control for all input samples with the end goal in having the available data to confirm cluster outbreaks. Currently, clustering is not included in the pipeline but its addition is to come soon. With this, there are additional available steps on how to use all of the outputs to do cluster analysis. -![LegioVue-WGS-Workflow.png](LegioVue-WGS-Workflow.png) +![LegioVue-WGS-Workflow.png](LegioVue-WGS-Workflow.png) --- ## Index @@ -55,7 +55,7 @@ nextflow run phac-nml/legiovue \ [Optional Args] ``` -Where: +Where: - `-profile `: The nextflow profile to use. - Specification of a dependency management system (docker, singularity, conda) - `--fastq_dir `: Path to directory containing paired Illumina `_R1` and `_R2` fastq files @@ -76,32 +76,32 @@ All of the outputs can be found in [the output docs](./docs/output.md). All outp **`Kraken2`** and **`Bracken`** -[Kraken2](https://github.com/DerrickWood/kraken2) is used to taxonomically profile the paired Illumina reads against the standard Kraken RefSeq database with a confidence level of 0.1 (`--confidence 0.1`). [Bracken](https://github.com/jenniferlu717/Bracken) is then used to estimate taxonomic abundances (including potential contaminants) from the Kraken profile. +[Kraken2](https://github.com/DerrickWood/kraken2) is used to taxonomically profile the paired Illumina reads against the standard Kraken RefSeq database with a confidence level of 0.1 (`--confidence 0.1`). [Bracken](https://github.com/jenniferlu717/Bracken) is then used to estimate taxonomic abundances (including potential contaminants) from the Kraken profile. **`Trimmomatic`** -[Trimmomatic](https://github.com/usadellab/Trimmomatic) is used to remove Illumina adapters (`ILLUMINACLIP:TruSeq3-PE.fa:2:30:10:2:True`) and trim reads according to quality (`LEADING:3`, `TRAILING:3`, `SLIDINGWINDOW:4:20`). Reads shorter than 100bp are dropped (`MINLEN:100`). +[Trimmomatic](https://github.com/usadellab/Trimmomatic) is used to remove Illumina adapters (`ILLUMINACLIP:TruSeq3-PE.fa:2:30:10:2:True`) and trim reads according to quality (`LEADING:3`, `TRAILING:3`, `SLIDINGWINDOW:4:20`). Reads shorter than 100bp are dropped (`MINLEN:100`). **`FastQC`** -[FastQC](https://www.bioinformatics.babraham.ac.uk/projects/fastqc/) provides quality information about the trimmed reads including estimates of duplication, %GC, and N content. Samples retaining fewer than 150,000 high-quality read pairs after trimming are removed unless `--min_reads ` is specified. +[FastQC](https://www.bioinformatics.babraham.ac.uk/projects/fastqc/) provides quality information about the trimmed reads including estimates of duplication, %GC, and N content. Samples retaining fewer than 150,000 high-quality read pairs after trimming are removed unless `--min_reads ` is specified. **`SPAdes`** and **`QUAST`** -High-quality reads (both paired and unpaired) are then assembled into Legionella genomes using the [SPAdes](https://github.com/ablab/spades) assembler and `--careful` option, which aims to minimize mismatches and short indels in the assembly. The quality of the resulting assemblies is evaluated with [QUAST](https://github.com/ablab/quast). At this step, genomes are compared to a _Legionella pneumophila_ [reference genome](data/C9_S.reference.fna) and an assembly quality score is calculated for each sample using a custom script. +High-quality reads (both paired and unpaired) are then assembled into Legionella genomes using the [SPAdes](https://github.com/ablab/spades) assembler and `--careful` option, which aims to minimize mismatches and short indels in the assembly. The quality of the resulting assemblies is evaluated with [QUAST](https://github.com/ablab/quast). At this step, genomes are compared to a _Legionella pneumophila_ [reference genome](data/C9_S.reference.fna) and an assembly quality score is calculated for each sample using a custom script. + +The `quast_analyzer.py` script assigns a score to each SPAdes assembly based on pre-cgMLST metrics (_e.g.,_ similarity to RefSeq complete _Lp_ genomes, N50, # contigs, %GC content) originally outlined in the supplementary appendix (Supplementary Table 2) of the following paper: -The `quast_analyzer.py` script assigns a score to each SPAdes assembly based on pre-cgMLST metrics (_e.g.,_ similarity to RefSeq complete _Lp_ genomes, N50, # contigs, %GC content) originally outlined in the supplementary appendix (Supplementary Table 2) of the following paper: - > Gorzynski, J., Wee, B., Llano, M., Alves, J., Cameron, R., McMenamin, J., et al. (2022). Epidemiological analysis of Legionnaires’ disease in Scotland: a genomic study. The Lancet Microbe 3, e835–e845. doi: 10.1016/S2666-5247(22)00231-2 - -Quality thresholds and score effects have been updated in this pipeline to better capture quality issues that are likely to affect the interpretation of the resulting cgMLST profile. Assemblies are assigned a quality score out of 6, where a score of 6/6 represents an "excellent" high-quality _Legionella pneumophila_ assembly. - + +Quality thresholds and score effects have been updated in this pipeline to better capture quality issues that are likely to affect the interpretation of the resulting cgMLST profile. Assemblies are assigned a quality score out of 6, where a score of 6/6 represents an "excellent" high-quality _Legionella pneumophila_ assembly. + **`el_gato`** [el_gato](https://github.com/appliedbinf/el_gato) performs _in silico_ Sequence-based Typing (SBT) of _Legionella pneumophila_ sequences based on the identification and comparison of 7 loci (_flaA, pilE, asd, mip, mompS, proA, neuA/neuAh_) against an allele database. In this pipeline SBT is first called on Illumina paired-end reads using a mapping/alignment approach that is recommended by the `el_gato` developers. If samples are not initially assigned a sequence type (ST = `MA?` or `MD-`), `el_gato` is run again on the assembled genome using an _in silico_ PCR-based approach. The resulting allele and ST calls are reported in `el_gato_st.tsv`. _Note: if the ST results are inconclusive after both approaches have been tried, users are encouraged to review the `possible_mlsts.txt` intermediate output for that sample in the pipeline results folder under `el_gato/reads/`_ - + **`chewBBACA`** Assembled _Legionella pneumophila_ genomes are passed to [chewBBACA](https://github.com/B-UMMI/chewBBACA), which performs Core Genome MultiLocus Sequence Typing (cgMLST) according to the published [Ridom SeqSphere](https://www.cgmlst.org/ncs/schema/Lpneumophila1410/locus/) 1521-loci cgMLST schema for _L. pneumophila_. @@ -110,12 +110,12 @@ Assembled _Legionella pneumophila_ genomes are passed to [chewBBACA](https://git **`PHYLOViZ`** and **`reporTree`** -_Note: Reportree requires an update before it can be properly incorporated into the nextflow pipeline. Users can run reportree on their pipeline output separately for now to produce the same visualizations._ +_Note: Reportree requires an update before it can be properly incorporated into the nextflow pipeline. Users can run reportree on their pipeline output separately for now to produce the same visualizations._ Visualize cgMLST profiles alongside sample metadata using one of the following two methods: -i) Either drop the cgMLST profile (e.g., `cgMLST100.tsv`) directly into [PhyloViz](https://online2.phyloviz.net/index) and upload metadata for visualization, or, -ii) Perform partitioning (clustering) with [ReporTree](https://github.com/insapathogenomics/ReporTree), which will generate outputs (MST and metadata) that can be visualized with the local version of [GrapeTree](https://achtman-lab.github.io/GrapeTree/MSTree_holder.html). +i) Either drop the cgMLST profile (e.g., `cgMLST100.tsv`) directly into [PhyloViz](https://online2.phyloviz.net/index) and upload metadata for visualization, or, +ii) Perform partitioning (clustering) with [ReporTree](https://github.com/insapathogenomics/ReporTree), which will generate outputs (MST and metadata) that can be visualized with the local version of [GrapeTree](https://achtman-lab.github.io/GrapeTree/MSTree_holder.html). Detailed instructions for clustering and visualization are provided [separately](docs/clustering.md). diff --git a/docs/clustering.md b/docs/clustering.md index 40ce1db..15577c2 100644 --- a/docs/clustering.md +++ b/docs/clustering.md @@ -1,23 +1,23 @@ # phac-nml/LegioVue : Clustering -This document provides the neccessary steps to visualize the cgMLST output from LegioVue. -At the moment these steps need to be run separately using the ouputs of the LegioVue. Pending updates, these steps will be incorporated into the nextflow workflow directly. +This document provides the neccessary steps to visualize the cgMLST output from LegioVue. +At the moment these steps need to be run separately using the ouputs of the LegioVue. Pending updates, these steps will be incorporated into the nextflow workflow directly. Visualizations of cgMLST data can be generated with or without clustering. Both options are presented below, though [partitioning and visualization with ReporTree](#partitioning-and-visualization-with-reportree) is the recommended approach if you are able to install and run [ReporTree](https://github.com/insapathogenomics/ReporTree) on the command-line. ### Visualization-only with PHYLOViZ GUI Use this option if you are unable to install ReporTree, or if you simply want to visualize relative allele differences between isolates without setting cluster/partition thresholds: 1. Navigate to https://online2.phyloviz.net/index in a browser window. -2. Scroll down and click on "Login-free upload" under **Test PHYLOViZ Online**. This will take you to a page where you can upload and visualize your cgMLST profile without storing any data in the application. Note that navigating away from this page will erase your data. -3. From the **Possible Input Formats** dropdown menu, select "Profile Data". -4. Under **Input Files**, upload your `results/chewbbaca/allele_calls/cgMLST/cgMLST100.tsv` file from LegioVue as Profile Data. Upload a `.tsv` metadata file as Auxiliary Data. **Note:** the "sample name" or similar column header (usually the first column) needs to match the cgMLST output in order to be visualized correctly. Change it to "FILE" to match the profile data or vice versa. -5. Select "Core Analysis" as the **Analysis Method**. -6. Provide a name and optional description for your dataset and click on **Launch Tree**. In a minute or two you will be redirected to a visualization of your data. -7. On the left sidebar, navigate to **Assign Colors** > **By Auxiliary Data** and select the appropriate metadata column (_E.g.,_ ST). Node and branch labels can be added by selecting the "Add Labels" checkbox under **Graphic Properties** > **Nodes** or **Links**. +2. Scroll down and click on "Login-free upload" under **Test PHYLOViZ Online**. This will take you to a page where you can upload and visualize your cgMLST profile without storing any data in the application. Note that navigating away from this page will erase your data. +3. From the **Possible Input Formats** dropdown menu, select "Profile Data". +4. Under **Input Files**, upload your `results/chewbbaca/allele_calls/cgMLST/cgMLST100.tsv` file from LegioVue as Profile Data. Upload a `.tsv` metadata file as Auxiliary Data. **Note:** the "sample name" or similar column header (usually the first column) needs to match the cgMLST output in order to be visualized correctly. Change it to "FILE" to match the profile data or vice versa. +5. Select "Core Analysis" as the **Analysis Method**. +6. Provide a name and optional description for your dataset and click on **Launch Tree**. In a minute or two you will be redirected to a visualization of your data. +7. On the left sidebar, navigate to **Assign Colors** > **By Auxiliary Data** and select the appropriate metadata column (_E.g.,_ ST). Node and branch labels can be added by selecting the "Add Labels" checkbox under **Graphic Properties** > **Nodes** or **Links**. **Important:** In this Minumum Spanning Tree (MST), branch (or "link") lengths represent the number of alleles that differ between linked isolates. The default schema that the pipeline uses for cgMLST determination has a maximum of 1521 possible alleles. These branch lengths tend to increase when there are many inferred (INF) alleles and fewer exact (EXC) alleles (which, in turn, is affected by underlying data quality) used to generate the profile data. These numbers can be found in the `overall.qc.tsv` output of the main pipeline and should be taken into consideration when interpreting the visualization of the profile data. ### Partitioning and Visualization with ReporTree -Reportree can be used to partition the MST of isolates according to different thresholds, which may be useful for epidemiological investigation. +Reportree can be used to partition the MST of isolates according to different thresholds, which may be useful for epidemiological investigation. 1. First, install [ReporTree](https://github.com/insapathogenomics/ReporTree) either with Conda or Docker according to the installation instructions in the Readme file on their GitHub page. 2. Prepare a metadata file with columns for `sample` and any other data you wish to include for downstream visualization. @@ -29,10 +29,10 @@ reportree.py -m /metadata.tsv \ ``` You may wish to modify certain values depending on your analysis: - `-thr` indicates the threshold(s) to use for cluster partitioning. Setting `-thr 0-5` will request that ReporTree assign samples to clusters at six different allele thresholds, ranging from 0 allele differences to 5. You may also select distinct threshold values, for example `-thr 5,10,15,20`, for more exploratory analysis. -- `--loci-called` should correspond to the cgMLST profile used as input, _i.e.,_ `--loci-called 0.95` should be used if the input profile is `cgMLST95.tsv`. -- `--columns_summary_report` indicates columns from the metadata file that should be described for each cluster. For example, `ST,n_ST` requests that for each cluster, the ST and number of STs included in that cluster should be reported in the output. This information can help you investigate different clustering thresholds. +- `--loci-called` should correspond to the cgMLST profile used as input, _i.e.,_ `--loci-called 0.95` should be used if the input profile is `cgMLST95.tsv`. +- `--columns_summary_report` indicates columns from the metadata file that should be described for each cluster. For example, `ST,n_ST` requests that for each cluster, the ST and number of STs included in that cluster should be reported in the output. This information can help you investigate different clustering thresholds. - `--out` can be added to the above command to specify an existing directory and prefix for the output files. Ex. `--out reportree/TD1` will append "TD1" as a prefix to all output files. -4. Once you have your output files from ReporTree, navigate to the local implementation of [GrapeTree](https://achtman-lab.github.io/GrapeTree/MSTree_holder.html) to visualize the MST data. -5. Under **Inputs/Outputs**, select "Load Files" and upload both `*.nwk` and `*_metadata_w_partitions.tsv`. +4. Once you have your output files from ReporTree, navigate to the local implementation of [GrapeTree](https://achtman-lab.github.io/GrapeTree/MSTree_holder.html) to visualize the MST data. +5. Under **Inputs/Outputs**, select "Load Files" and upload both `*.nwk` and `*_metadata_w_partitions.tsv`. 6. Under **Tree Layout**, you can customize the MST visualization including exploring different partitions by selecting `MST-###` in **Node Style** > **Colour By:** diff --git a/docs/output.md b/docs/output.md index bf5ac9e..ddd443d 100644 --- a/docs/output.md +++ b/docs/output.md @@ -16,7 +16,7 @@ The pipeline is built using [Nextflow](https://www.nextflow.io/) and processes d - [el_gato Reads](#el_gato-reads) - Sequence type (ST) input sample reads - [el_gato Assembly](#el_gato-assembly) - Sequence type input sample assemblies when reads fail to generate an ST - [el_gato Report](#el_gato-report) - Create PDF summary el_gato report - - [Pysamstats](#pysamstats) - Calculate positional depth, mapq, and baseq for each ST allele + - [Pysamstats](#pysamstats) - Calculate positional depth, mapq, and baseq for each ST allele - [Allele Reports](#allele-reports) - Create per-sample ST allele report pdf - [Assembly](#assembly) - [SPAdes](#spades) - *De novo* bacterial genome assembly @@ -70,7 +70,7 @@ Simply python program that takes in the bracken abundance report and determines - `*_paired_R2.fastq.gz`: Paired trimmed read 2 to be used in the following pipeline steps - `*_unpaired_R1.fastq.gz`: Unpaired trimmed reads 1 to assist in SPAdes assembly - `*_unpaired_R1.fastq.gz`: Unpaired trimmed reads 2 to assist in SPAdes assembly - - `*.summary.txt`: Trimmomatic output summary + - `*.summary.txt`: Trimmomatic output summary [Trimmomatic](http://www.usadellab.org/cms/uploads/supplementary/Trimmomatic/TrimmomaticManual_V0.32.pdf) removes Illumina adapters and trim reads according to quality @@ -103,7 +103,7 @@ Simply python program that takes in the bracken abundance report and determines - `*_run.log `: Program logging info - `*_ST.tsv`: Called Sequence Type - + Sequence-based Typing (SBT) of _Legionella pneumophila_ sequences using reads based on the identification and comparison of 7 loci (_flaA, pilE, asd, mip, mompS, proA, neuA/neuAh_) against an allele database. #### el_gato Assembly @@ -173,8 +173,8 @@ Custom report plotting of the seven ST alleles looking at depth, map quality, an Output files - `quast/` - - `report.html`: - - `transposed_report.tsv`: + - `report.html`: + - `transposed_report.tsv`: [QUAST](https://github.com/ablab/quast) is used to generate a single report with which to evaluate the quality of the assemblies sequence across all of the samples provided to the pipeline. Input genomes are compared to a _Legionella pneumophila_ [reference genome](../data/C9_S.reference.fna) and the transposed report is parsed downstream to report a final quality score. From af187b1998d684fba5a0448516cb70bc467834d2 Mon Sep 17 00:00:00 2001 From: Darian Hole Date: Tue, 31 Dec 2024 12:04:30 -0600 Subject: [PATCH 07/38] add in stubs for stubrun --- .gitignore | 1 + .nf-core.yml | 12 +-------- modules/local/bracken.nf | 11 ++++++++ modules/local/chewbbaca.nf | 31 ++++++++++++++++++++++ modules/local/el_gato.nf | 50 ++++++++++++++++++++++++++++++++++++ modules/local/kraken.nf | 11 ++++++++ modules/local/plotting.nf | 10 ++++++++ modules/local/pysamstats.nf | 10 ++++++++ modules/local/qc.nf | 10 ++++++++ modules/local/quast.nf | 23 +++++++++++++++++ modules/local/reportree.nf | 9 +++++++ modules/local/spades.nf | 14 ++++++++++ modules/local/trimmomatic.nf | 19 ++++++++++++++ modules/local/utils.nf | 32 +++++++++++++++++++++++ nextflow_schema.json | 2 +- 15 files changed, 233 insertions(+), 12 deletions(-) diff --git a/.gitignore b/.gitignore index 3eb5cd8..a177582 100644 --- a/.gitignore +++ b/.gitignore @@ -7,3 +7,4 @@ testing* *.pyc null/ slurm* +.nf-test.log diff --git a/.nf-core.yml b/.nf-core.yml index 3ed99d1..14b72e3 100644 --- a/.nf-core.yml +++ b/.nf-core.yml @@ -30,17 +30,7 @@ lint: actions_awsfulltest: False actions_awstest: False readme: False - nextflow_config: - - custom_config - - manifest.name - - manifest.homePage - - params.max_cpus - - params.max_memory - - params.max_time - nextflow_config: - - config_defaults: - - params.quast_ref - - params.prepped_schema + nextflow_config: False template: prefix: phac-nml diff --git a/modules/local/bracken.nf b/modules/local/bracken.nf index e76c215..1b730cd 100644 --- a/modules/local/bracken.nf +++ b/modules/local/bracken.nf @@ -35,4 +35,15 @@ process BRACKEN { bracken: \$(echo \$(bracken -v) | cut -f2 -d'v') END_VERSIONS """ + + stub: + """ + touch ${meta.id}-braken-breakdown.tsv + touch ${meta.id}-abundances.tsv + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + bracken: \$(echo \$(bracken -v) | cut -f2 -d'v') + END_VERSIONS + """ } diff --git a/modules/local/chewbbaca.nf b/modules/local/chewbbaca.nf index 44eaeb9..07f947e 100644 --- a/modules/local/chewbbaca.nf +++ b/modules/local/chewbbaca.nf @@ -31,6 +31,16 @@ process CHEWBBACA_PREP_EXTERNAL_SCHEMA { chewbbaca: \$(echo \$(chewBBACA.py --version 2>&1 | sed 's/^.*chewBBACA version: //g; s/Using.*\$//' )) END_VERSIONS """ + + stub: + """ + mkdir prepped_schema + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + chewbbaca: \$(echo \$(chewBBACA.py --version 2>&1 | sed 's/^.*chewBBACA version: //g; s/Using.*\$//' )) + END_VERSIONS + """ } process CHEWBBACA_ALLELE_CALL { @@ -75,6 +85,17 @@ process CHEWBBACA_ALLELE_CALL { chewbbaca: \$(echo \$(chewBBACA.py --version 2>&1 | sed 's/^.*chewBBACA version: //g; s/Using.*\$//' )) END_VERSIONS """ + + stub: + """ + mkdir allele_calls + touch allele_calls/results_statistics.tsv + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + chewbbaca: \$(echo \$(chewBBACA.py --version 2>&1 | sed 's/^.*chewBBACA version: //g; s/Using.*\$//' )) + END_VERSIONS + """ } process CHEWBBACA_EXTRACT_CGMLST { @@ -109,4 +130,14 @@ process CHEWBBACA_EXTRACT_CGMLST { chewbbaca: \$(echo \$(chewBBACA.py --version 2>&1 | sed 's/^.*chewBBACA version: //g; s/Using.*\$//' )) END_VERSIONS """ + + stub: + """ + mkdir cgMLST + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + chewbbaca: \$(echo \$(chewBBACA.py --version 2>&1 | sed 's/^.*chewBBACA version: //g; s/Using.*\$//' )) + END_VERSIONS + """ } diff --git a/modules/local/el_gato.nf b/modules/local/el_gato.nf index 0e8e26d..8ee052a 100644 --- a/modules/local/el_gato.nf +++ b/modules/local/el_gato.nf @@ -56,6 +56,24 @@ process EL_GATO_READS { el_gato: \$(el_gato.py --version | sed 's/^el_gato version: //') END_VERSIONS """ + + stub: + """ + # Due to splitCSV have to actually have a CSV in stub + echo "Sample ST flaA pilE asd mip mompS proA neuA_neuAH" > ${meta.id}_ST.tsv + echo "${meta.id} MD- - - - - - - -" >> ${meta.id}_ST.tsv + + touch ${meta.id}.bam + touch ${meta.id}.bam.bai + touch ${meta.id}_possible_mlsts.txt + touch ${meta.id}_run.log + touch ${meta.id}_reads.json + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + el_gato: \$(el_gato.py --version | sed 's/^el_gato version: //') + END_VERSIONS + """ } // TODO: Combine to one function at some point as @@ -105,6 +123,18 @@ process EL_GATO_ASSEMBLY { el_gato: \$(el_gato.py --version | sed 's/^el_gato version: //') END_VERSIONS """ + + stub: + """ + touch ${meta.id}_ST.tsv + touch ${meta.id}_run.log + touch ${meta.id}_assembly.json + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + el_gato: \$(el_gato.py --version | sed 's/^el_gato version: //') + END_VERSIONS + """ } process EL_GATO_REPORT { @@ -139,6 +169,16 @@ process EL_GATO_REPORT { el_gato: \$(el_gato.py --version | sed 's/^el_gato version: //') END_VERSIONS """ + + stub: + """ + touch el_gato_report.pdf + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + el_gato: \$(el_gato.py --version | sed 's/^el_gato version: //') + END_VERSIONS + """ } process COMBINE_EL_GATO { @@ -175,4 +215,14 @@ process COMBINE_EL_GATO { combine_el_gato: 0.1.0 END_VERSIONS """ + + stub: + """ + touch el_gato_st.tsv + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + combine_el_gato: 0.1.0 + END_VERSIONS + """ } diff --git a/modules/local/kraken.nf b/modules/local/kraken.nf index 04bc2b6..c450fb1 100644 --- a/modules/local/kraken.nf +++ b/modules/local/kraken.nf @@ -40,4 +40,15 @@ process KRAKEN2_CLASSIFY { kraken2: \$(echo \$(kraken2 --version 2>&1) | sed 's/^.*Kraken version //; s/ .*\$//') END_VERSIONS """ + + stub: + """ + touch ${meta.id}-classified.tsv + touch ${meta.id}-kreport.tsv + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + kraken2: \$(echo \$(kraken2 --version 2>&1) | sed 's/^.*Kraken version //; s/ .*\$//') + END_VERSIONS + """ } diff --git a/modules/local/plotting.nf b/modules/local/plotting.nf index 1bf0006..4d6be69 100644 --- a/modules/local/plotting.nf +++ b/modules/local/plotting.nf @@ -36,4 +36,14 @@ process PLOT_PYSAMSTATS_TSV { plot_genome_cov: 0.1.0 END_VERSIONS """ + + stub: + """ + touch ${meta.id}_allele_plots.pdf + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + plot_genome_cov: 0.1.0 + END_VERSIONS + """ } diff --git a/modules/local/pysamstats.nf b/modules/local/pysamstats.nf index 27d6b96..cc557f1 100644 --- a/modules/local/pysamstats.nf +++ b/modules/local/pysamstats.nf @@ -30,4 +30,14 @@ process PYSAMSTATS { pysamstats: \$(pysamstats -h | tail -n 2 | grep -Eo ": \\S+" | cut -d" " -f2) END_VERSIONS """ + + stub: + """ + touch ${meta.id}.${type}.stats.tsv + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + plot_genome_cov: 0.1.0 + END_VERSIONS + """ } diff --git a/modules/local/qc.nf b/modules/local/qc.nf index 1f4eea3..ffd5a39 100644 --- a/modules/local/qc.nf +++ b/modules/local/qc.nf @@ -44,4 +44,14 @@ process COMBINE_SAMPLE_DATA { combine_qc_data: 0.1.0 END_VERSIONS """ + + stub: + """ + touch ${meta.id}.tsv + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + combine_qc_data: 0.1.0 + END_VERSIONS + """ } diff --git a/modules/local/quast.nf b/modules/local/quast.nf index 7af9334..12ebe83 100644 --- a/modules/local/quast.nf +++ b/modules/local/quast.nf @@ -38,6 +38,19 @@ process QUAST { quast: \$(quast.py --version 2>&1 | sed 's/^.*QUAST v//; s/ .*\$//') END_VERSIONS """ + + stub: + """ + touch transposed_report.tsv + touch report.html + touch report.pdf + mkdir quast_stats + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + quast: \$(quast.py --version 2>&1 | sed 's/^.*QUAST v//; s/ .*\$//') + END_VERSIONS + """ } process SCORE_QUAST { @@ -69,4 +82,14 @@ process SCORE_QUAST { quast_analyzer: 0.1.0 END_VERSIONS """ + + stub: + """ + touch scored_quast_report.csv + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + quast_analyzer: 0.1.0 + END_VERSIONS + """ } diff --git a/modules/local/reportree.nf b/modules/local/reportree.nf index f980fa4..833ca99 100644 --- a/modules/local/reportree.nf +++ b/modules/local/reportree.nf @@ -1,3 +1,4 @@ +// TODO - Incorporate when we have a time to create a working container/setup process REPORTREE { label 'process_medium' @@ -36,4 +37,12 @@ process REPORTREE { ReporTree: \$(reportree.py -v | head -n 1 | cut -d' ' -f2) END_VERSIONS """ + + stub: + """ + cat <<-END_VERSIONS > versions.yml + "${task.process}": + ReporTree: \$(reportree.py -v | head -n 1 | cut -d' ' -f2) + END_VERSIONS + """ } diff --git a/modules/local/spades.nf b/modules/local/spades.nf index 9a65881..2c2df0c 100644 --- a/modules/local/spades.nf +++ b/modules/local/spades.nf @@ -55,4 +55,18 @@ process SPADES { spades: \$(spades.py --version 2>&1 | sed -n 's/^.*SPAdes genome assembler v//p') END_VERSION """ + + stub: + """ + # Output naming + touch ${meta.id}.spades.log + touch ${meta.id}.scaffolds.fa + touch ${meta.id}.contigs.fa + touch ${meta.id}.warnings.log + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + spades: \$(spades.py --version 2>&1 | sed -n 's/^.*SPAdes genome assembler v//p') + END_VERSION + """ } diff --git a/modules/local/trimmomatic.nf b/modules/local/trimmomatic.nf index 2cc2aac..e4738a5 100644 --- a/modules/local/trimmomatic.nf +++ b/modules/local/trimmomatic.nf @@ -46,4 +46,23 @@ process TRIMMOMATIC { trimmomatic: \$(trimmomatic -version) END_VERSIONS """ + + stub: + """ + # Due to read filtering step + read="@read1\nTTT\n+\nCCC" + echo -e \$read > ${meta.id}_paired_R1.fastq + echo -e \$read > ${meta.id}_paired_R2.fastq + gzip ${meta.id}_paired_R1.fastq + gzip ${meta.id}_paired_R2.fastq + + touch ${meta.id}.summary.txt + touch ${meta.id}_unpaired_R1.fastq.gz + touch ${meta.id}_unpaired_R2.fastq.gz + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + trimmomatic: \$(trimmomatic -version) + END_VERSIONS + """ } diff --git a/modules/local/utils.nf b/modules/local/utils.nf index 7994c13..66f0a12 100644 --- a/modules/local/utils.nf +++ b/modules/local/utils.nf @@ -29,6 +29,18 @@ process CREATE_ABUNDANCE_FILTER { filter_lpn_abundance: 0.1.0 END_VERSIONS """ + + stub: + """ + # Due to splitCSV have to actually have a CSV in stub + echo "sample,pass" > ${meta.id}.check.csv + echo "${meta.id},YES" >> ${meta.id}.check.csv + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + filter_lpn_abundance: 0.1.0 + END_VERSIONS + """ } process CSVTK_COMBINE_STATS { @@ -67,6 +79,16 @@ process CSVTK_COMBINE_STATS { csvtk: \$(echo \$( csvtk version | sed -e "s/csvtk v//g" )) END_VERSIONS """ + + stub: + """ + touch ${meta.id}.allele_stats.tsv + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + csvtk: \$(echo \$( csvtk version | sed -e "s/csvtk v//g" )) + END_VERSIONS + """ } process CSVTK_COMBINE{ @@ -102,4 +124,14 @@ process CSVTK_COMBINE{ csvtk: \$(echo \$( csvtk version | sed -e "s/csvtk v//g" )) END_VERSIONS """ + + stub: + """ + touch overall.qc.tsv + + cat <<-END_VERSIONS > versions.yml + "${task.process}": + csvtk: \$(echo \$( csvtk version | sed -e "s/csvtk v//g" )) + END_VERSIONS + """ } diff --git a/nextflow_schema.json b/nextflow_schema.json index 3f72948..171fdc9 100644 --- a/nextflow_schema.json +++ b/nextflow_schema.json @@ -54,7 +54,7 @@ "type": "integer", "default": 150000, "description": "Minimum number of paired reads to keep sample in pipeline", - "minimum": 1 + "minimum": 0 } }, "fa_icon": "fas fa-filter" From afeb9ccdefaf222b8f53c3580c06e177acb5a4e9 Mon Sep 17 00:00:00 2001 From: Darian Hole Date: Thu, 2 Jan 2025 13:33:58 -0600 Subject: [PATCH 08/38] add in ci test profile and data --- .github/workflows/ci.yml | 7 ++++++- conf/test.config | 24 ++++++++++++++++++++++-- modules/local/spades.nf | 15 ++++++++++++++- nf-test.config | 8 ++++++++ tests/nextflow.config | 5 +++++ tests/test_data/in1_R1.fastq.gz | Bin 0 -> 362397 bytes tests/test_data/in1_R2.fastq.gz | Bin 0 -> 362397 bytes tests/test_data/in2_R1.fastq.gz | Bin 0 -> 1010 bytes tests/test_data/in2_R2.fastq.gz | Bin 0 -> 1010 bytes tests/test_data/input.csv | 3 +++ 10 files changed, 58 insertions(+), 4 deletions(-) create mode 100644 nf-test.config create mode 100644 tests/nextflow.config create mode 100644 tests/test_data/in1_R1.fastq.gz create mode 100644 tests/test_data/in1_R2.fastq.gz create mode 100644 tests/test_data/in2_R1.fastq.gz create mode 100644 tests/test_data/in2_R2.fastq.gz create mode 100644 tests/test_data/input.csv diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 8099ac2..f955abb 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -27,7 +27,7 @@ jobs: strategy: matrix: NXF_VER: - - "24.04.2" + - "23.10.1" - "latest-everything" profile: - "conda" @@ -80,6 +80,11 @@ jobs: - name: Clean up Disk space uses: jlumbroso/free-disk-space@54081f138730dfa15788a46383842cd2f914a1be # v1.3.1 + - name: Install nf-test + run: | + wget -qO- https://get.nf-test.com | bash + sudo mv nf-test /usr/local/bin/ + - name: "Run pipeline with test data ${{ matrix.NXF_VER }} | ${{ matrix.test_name }} | ${{ matrix.profile }}" run: | nextflow run ${GITHUB_WORKSPACE} -profile ${{ matrix.test_name }},${{ matrix.profile }} --outdir ./results diff --git a/conf/test.config b/conf/test.config index 1a94bd9..fdec784 100644 --- a/conf/test.config +++ b/conf/test.config @@ -1,7 +1,27 @@ /* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Small Test Config + Nextflow config file for running minimal tests ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - - to be written - + Defines input files and everything required to run a fast and simple pipeline test. + + Use as follows: + nextflow run phac-nml/legiovue -profile test, ---------------------------------------------------------------------------------------- */ + +process { + resourceLimits = [ + cpus: 2, + memory: '8.GB', + time: '2.h' + ] +} + +params { + config_profile_name = 'Test profile' + config_profile_description = 'Minimal test dataset to check pipeline function' + + // Input + input = 'tests/test_data/input.csv' + min_reads = 100 +} diff --git a/modules/local/spades.nf b/modules/local/spades.nf index 2c2df0c..c0d3ab4 100644 --- a/modules/local/spades.nf +++ b/modules/local/spades.nf @@ -27,11 +27,24 @@ process SPADES { def reads_paired_in = "-1 ${reads_paired[0]} -2 ${reads_paired[1]}" def reads_unpaired_in = "--s1 ${reads_single[0]} --s2 ${reads_single[1]}" """ + # Have to check if we have data in the unpaired reads + # Doing it with bash for now as the relative nextflow file constructor path + # wasn't playing nice with File class and gzip input stream + unpaired_1_in="" + unpaired_2_in="" + if [ "\$(zcat ${reads_single[0]} | wc -c)" -gt 0 ]; then + unpaired_1_in="--s1 ${reads_single[0]}" + fi + if [ "\$(zcat ${reads_single[1]} | wc -c)" -gt 0 ]; then + unpaired_2_in="--s2 ${reads_single[1]}" + fi + # We found that using --careful works best for Legionella spades.py \\ --threads $task.cpus \\ $reads_paired_in \\ - $reads_unpaired_in \\ + \$unpaired_1_in \\ + \$unpaired_2_in \\ --careful \\ -o ./ diff --git a/nf-test.config b/nf-test.config new file mode 100644 index 0000000..870799d --- /dev/null +++ b/nf-test.config @@ -0,0 +1,8 @@ +config { + + testsDir "tests" + workDir ".nf-test" + configFile "tests/nextflow.config" + profile "" + +} diff --git a/tests/nextflow.config b/tests/nextflow.config new file mode 100644 index 0000000..c19b1ad --- /dev/null +++ b/tests/nextflow.config @@ -0,0 +1,5 @@ +/* +======================================================================================== + Nextflow config file for running tests +======================================================================================== +*/ diff --git a/tests/test_data/in1_R1.fastq.gz b/tests/test_data/in1_R1.fastq.gz new file mode 100644 index 0000000000000000000000000000000000000000..6618245e35e62c2ccd2c1cd769eb142ef3c09077 GIT binary patch literal 362397 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
    UDlg=Rd%y*h&-VUQn% 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 U*-qk@cl@9K2Xwr|03Wp(0E_KbhX4Qo literal 0 HcmV?d00001 diff --git a/tests/test_data/in1_R2.fastq.gz b/tests/test_data/in1_R2.fastq.gz new file mode 100644 index 0000000000000000000000000000000000000000..b99f084378a66405e0931585cb2bcc546b9282e3 GIT binary patch literal 362397 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
      UDlg=Rd%y*h&-VUQn% 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 U*-qk@cl@9K2Xwr|03Wp(029?#hyVZp literal 0 HcmV?d00001 diff --git a/tests/test_data/in2_R1.fastq.gz b/tests/test_data/in2_R1.fastq.gz new file mode 100644 index 0000000000000000000000000000000000000000..88f08489bbb72df03ea6ecf60d21d12a291cdc41 GIT binary patch literal 1010 zcmVATUz93FV< ziU0pCB>?JW%d(nQlgQF8mpcoBAa#BF^!EPy{q;T4%q_y~B_lnvUTiS@;)?Kku7}JF z+{z*`Qo~s2wI=GS*}4Vi-C>llz}@K*F3KIe28L>`>?~-L^lsY5G+O`VkWY?fuozwj zKXHxvxy-jcla0{>tF6Db8@H2MI$S>=0}4z62!b>az7>cBq3+z`|sY+%9T6A6G+ zk72~W;8R366T}bR>4zJXC2bMPnvQ}SVN)anE>eJwcL%+FxjFOd;JaAuz*GYZjJl2M zB|R}a9j;#v0S%x;4iPFNnn{$!+!WD>a0==At06%kehPeUVDt>E3hyLCK|r5^hHVfU zc_ZkKEl5$I9}7SC;5r2Gn18pkD+!hHqtl!tji%akzea zqMuT-Ae0m`@W_?l)YX6?(^aXdyiPL8l)I_5$tnDMFKj75a9TK1A_1S-^iFGiAaP+h z%imOXwQR|cwM$fBqG;V%w9{~?W ziU|ujR>XYz=-gK+N#wWk6!oa<7)7C8V=nXvf{Uvu^=-b2s?von<6t>enm!l@q`c+H z`hIux8`6zCPaB{f#b)ja?&vyPe;xt~kX!|akVZE$6A%;tWp$9mo>L_jP|@hXCq?nkfdxhAKA|{t%x{5A*<) zd)07XWOVOZkY1uSY3SSQv4|3w>?~&0aCPRL&OAH|Z|bxdVeidGhs`*Z7QJWJvDRT0 zEz&x=jiN|6J19wwsVikfsVdm=j-nqa(5Gqomu?HuCtpb(r`Vo8QtmTATUz93FV< ziU0pCB>?JW%d(nQlgQF8mpcoBAa#BF^!EPy{q;T4%q_y~B_lnvUTiS@;)?Kku7}JF z+{z*`Qo~s2wI=GS*}4Vi-C>llz}@K*F3KIe28L>`>?~-L^lsY5G+O`VkWY?fuozwj zKXHxvxy-jcla0{>tF6Db8@H2MI$S>=0}4z62!b>az7>cBq3+z`|sY+%9T6A6G+ zk72~W;8R366T}bR>4zJXC2bMPnvQ}SVN)anE>eJwcL%+FxjFOd;JaAuz*GYZjJl2M zB|R}a9j;#v0S%x;4iPFNnn{$!+!WD>a0==At06%kehPeUVDt>E3hyLCK|r5^hHVfU zc_ZkKEl5$I9}7SC;5r2Gn18pkD+!hHqtl!tji%akzea zqMuT-Ae0m`@W_?l)YX6?(^aXdyiPL8l)I_5$tnDMFKj75a9TK1A_1S-^iFGiAaP+h z%imOXwQR|cwM$fBqG;V%w9{~?W ziU|ujR>XYz=-gK+N#wWk6!oa<7)7C8V=nXvf{Uvu^=-b2s?von<6t>enm!l@q`c+H z`hIux8`6zCPaB{f#b)ja?&vyPe;xt~kX!|akVZE$6A%;tWp$9mo>L_jP|@hXCq?nkfdxhAKA|{t%x{5A*<) zd)07XWOVOZkY1uSY3SSQv4|3w>?~&0aCPRL&OAH|Z|bxdVeidGhs`*Z7QJWJvDRT0 zEz&x=jiN|6J19wwsVikfsVdm=j-nqa(5Gqomu?HuCtpb(r`Vo8QtmT Date: Thu, 2 Jan 2025 13:36:49 -0600 Subject: [PATCH 09/38] move to test only with docker for now --- .github/workflows/ci.yml | 43 +++------------------------------------- 1 file changed, 3 insertions(+), 40 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index f955abb..9533e11 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -20,7 +20,7 @@ concurrency: jobs: test: - name: "Run pipeline with test data (${{ matrix.NXF_VER }} | ${{ matrix.test_name }} | ${{ matrix.profile }})" + name: "Run pipeline with test data (${{ matrix.NXF_VER }} | ${{ matrix.test_name }} | docker)" # 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 == 'phac-nml/legiovue') }}" runs-on: ubuntu-latest @@ -29,20 +29,8 @@ jobs: NXF_VER: - "23.10.1" - "latest-everything" - profile: - - "conda" - - "docker" - - "singularity" test_name: - "test" - isMaster: - - ${{ github.base_ref == 'master' }} - # Exclude conda and singularity on dev - exclude: - - isMaster: false - profile: "conda" - - isMaster: false - profile: "singularity" steps: - name: Check out pipeline code uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4 @@ -52,31 +40,6 @@ jobs: with: version: "${{ matrix.NXF_VER }}" - - name: Set up Apptainer - if: matrix.profile == 'singularity' - uses: eWaterCycle/setup-apptainer@main - - - name: Set up Singularity - if: matrix.profile == 'singularity' - run: | - mkdir -p $NXF_SINGULARITY_CACHEDIR - mkdir -p $NXF_SINGULARITY_LIBRARYDIR - - - name: Set up Miniconda - if: matrix.profile == 'conda' - uses: conda-incubator/setup-miniconda@a4260408e20b96e80095f42ff7f1a15b27dd94ca # v3 - with: - miniconda-version: "latest" - auto-update-conda: true - conda-solver: libmamba - channels: conda-forge,bioconda - - - name: Set up Conda - if: matrix.profile == 'conda' - run: | - echo $(realpath $CONDA)/condabin >> $GITHUB_PATH - echo $(realpath python) >> $GITHUB_PATH - - name: Clean up Disk space uses: jlumbroso/free-disk-space@54081f138730dfa15788a46383842cd2f914a1be # v1.3.1 @@ -85,6 +48,6 @@ jobs: wget -qO- https://get.nf-test.com | bash sudo mv nf-test /usr/local/bin/ - - name: "Run pipeline with test data ${{ matrix.NXF_VER }} | ${{ matrix.test_name }} | ${{ matrix.profile }}" + - name: "Run pipeline with test data ${{ matrix.NXF_VER }} | ${{ matrix.test_name }} | docker" run: | - nextflow run ${GITHUB_WORKSPACE} -profile ${{ matrix.test_name }},${{ matrix.profile }} --outdir ./results + nextflow run ${GITHUB_WORKSPACE} -profile ${{ matrix.test_name }},docker --outdir ./results From 47890aa02ad26ada5d431eba5d572090171e8c6d Mon Sep 17 00:00:00 2001 From: Darian Hole Date: Thu, 2 Jan 2025 15:18:24 -0600 Subject: [PATCH 10/38] fix up tests --- .nf-core.yml | 2 ++ conf/test.config | 9 +++++++-- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/.nf-core.yml b/.nf-core.yml index 14b72e3..a1d9c34 100644 --- a/.nf-core.yml +++ b/.nf-core.yml @@ -15,6 +15,8 @@ lint: - assets/email_template.txt - assets/multiqc_config.yml - assets/sendmail_template.txt + - assets/adaptivecard.json + - assets/slackreport.json - assets/nf-core-LegioVue_logo_light.png - conf/igenomes.config - conf/igenomes_ignored.config diff --git a/conf/test.config b/conf/test.config index fdec784..b4c18fb 100644 --- a/conf/test.config +++ b/conf/test.config @@ -8,11 +8,11 @@ nextflow run phac-nml/legiovue -profile test, ---------------------------------------------------------------------------------------- */ - +// Resource limits are for nextflow >= 24.04.0 so also have to use the max_* params process { resourceLimits = [ cpus: 2, - memory: '8.GB', + memory: '4.GB', time: '2.h' ] } @@ -24,4 +24,9 @@ params { // Input input = 'tests/test_data/input.csv' min_reads = 100 + + // Limit resources for github actions + max_cpus = 1 + max_memory = '4.GB' + max_time = '2.h' } From 5b74feed99cee31568b614dfb7a7ac2ce361bb91 Mon Sep 17 00:00:00 2001 From: Darian Hole Date: Thu, 2 Jan 2025 15:35:04 -0600 Subject: [PATCH 11/38] adjust test resources, add in files that cant be skipped --- .nf-core.yml | 2 -- assets/adaptivecard.json | 67 ++++++++++++++++++++++++++++++++++++++++ assets/slackreport.json | 34 ++++++++++++++++++++ conf/test.config | 4 +-- 4 files changed, 103 insertions(+), 4 deletions(-) create mode 100644 assets/adaptivecard.json create mode 100644 assets/slackreport.json diff --git a/.nf-core.yml b/.nf-core.yml index a1d9c34..14b72e3 100644 --- a/.nf-core.yml +++ b/.nf-core.yml @@ -15,8 +15,6 @@ lint: - assets/email_template.txt - assets/multiqc_config.yml - assets/sendmail_template.txt - - assets/adaptivecard.json - - assets/slackreport.json - assets/nf-core-LegioVue_logo_light.png - conf/igenomes.config - conf/igenomes_ignored.config diff --git a/assets/adaptivecard.json b/assets/adaptivecard.json new file mode 100644 index 0000000..721981b --- /dev/null +++ b/assets/adaptivecard.json @@ -0,0 +1,67 @@ +{ + "type": "message", + "attachments": [ + { + "contentType": "application/vnd.microsoft.card.adaptive", + "contentUrl": null, + "content": { + "\$schema": "http://adaptivecards.io/schemas/adaptive-card.json", + "msteams": { + "width": "Full" + }, + "type": "AdaptiveCard", + "version": "1.2", + "body": [ + { + "type": "TextBlock", + "size": "Large", + "weight": "Bolder", + "color": "<% if (success) { %>Good<% } else { %>Attention<%} %>", + "text": "nf-core/testest v${version} - ${runName}", + "wrap": true + }, + { + "type": "TextBlock", + "spacing": "None", + "text": "Completed at ${dateComplete} (duration: ${duration})", + "isSubtle": true, + "wrap": true + }, + { + "type": "TextBlock", + "text": "<% if (success) { %>Pipeline completed successfully!<% } else { %>Pipeline completed with errors. The full error message was: ${errorReport}.<% } %>", + "wrap": true + }, + { + "type": "TextBlock", + "text": "The command used to launch the workflow was as follows:", + "wrap": true + }, + { + "type": "TextBlock", + "text": "${commandLine}", + "isSubtle": true, + "wrap": true + } + ], + "actions": [ + { + "type": "Action.ShowCard", + "title": "Pipeline Configuration", + "card": { + "type": "AdaptiveCard", + "\$schema": "http://adaptivecards.io/schemas/adaptive-card.json", + "body": [ + { + "type": "FactSet", + "facts": [<% out << summary.collect{ k,v -> "{\"title\": \"$k\", \"value\" : \"$v\"}"}.join(",\n") %> + ] + } + ] + } + } + ] + } + } + ] +} diff --git a/assets/slackreport.json b/assets/slackreport.json new file mode 100644 index 0000000..ea86951 --- /dev/null +++ b/assets/slackreport.json @@ -0,0 +1,34 @@ +{ + "attachments": [ + { + "fallback": "Plain-text summary of the attachment.", + "color": "<% if (success) { %>good<% } else { %>danger<%} %>", + "author_name": "nf-core/testest ${version} - ${runName}", + "author_icon": "https://www.nextflow.io/docs/latest/_static/favicon.ico", + "text": "<% if (success) { %>Pipeline completed successfully!<% } else { %>Pipeline completed with errors<% } %>", + "fields": [ + { + "title": "Command used to launch the workflow", + "value": "```${commandLine}```", + "short": false + } + <% + if (!success) { %> + , + { + "title": "Full error message", + "value": "```${errorReport}```", + "short": false + }, + { + "title": "Pipeline configuration", + "value": "<% out << summary.collect{ k,v -> k == "hook_url" ? "_${k}_: (_hidden_)" : ( ( v.class.toString().contains('Path') || ( v.class.toString().contains('String') && v.contains('/') ) ) ? "_${k}_: `${v}`" : (v.class.toString().contains('DateTime') ? ("_${k}_: " + v.format(java.time.format.DateTimeFormatter.ofLocalizedDateTime(java.time.format.FormatStyle.MEDIUM))) : "_${k}_: ${v}") ) }.join(",\n") %>", + "short": false + } + <% } + %> + ], + "footer": "Completed at <% out << dateComplete.format(java.time.format.DateTimeFormatter.ofLocalizedDateTime(java.time.format.FormatStyle.MEDIUM)) %> (duration: ${duration})" + } + ] +} diff --git a/conf/test.config b/conf/test.config index b4c18fb..308a01b 100644 --- a/conf/test.config +++ b/conf/test.config @@ -12,7 +12,7 @@ process { resourceLimits = [ cpus: 2, - memory: '4.GB', + memory: '8.GB', time: '2.h' ] } @@ -27,6 +27,6 @@ params { // Limit resources for github actions max_cpus = 1 - max_memory = '4.GB' + max_memory = '8.GB' max_time = '2.h' } From 6d0f4a5add30a56f2432bd2a1498db1b4d561fe5 Mon Sep 17 00:00:00 2001 From: Darian Hole Date: Thu, 2 Jan 2025 15:50:37 -0600 Subject: [PATCH 12/38] update prettier ignore to not fail hopefully --- .prettierignore | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.prettierignore b/.prettierignore index 676bcd1..483f90c 100644 --- a/.prettierignore +++ b/.prettierignore @@ -7,3 +7,6 @@ testing/ testing* *.pyc bin/ +adaptivecard.json +slackreport.json +tests/ From 1d0bf8cded3e68c3d68f472fd61730b798b41ccb Mon Sep 17 00:00:00 2001 From: Darian Hole Date: Fri, 3 Jan 2025 09:46:39 -0600 Subject: [PATCH 13/38] initial add in of input tests, adjust test configs --- .github/workflows/ci.yml | 7 +- conf/test_full.config | 7 -- conf/{test.config => test_input.config} | 2 + conf/test_small_dir.config | 38 +++++++++++ nextflow.config | 6 +- nf-test.config | 2 +- tests/main.nf.test | 87 +++++++++++++++++++++++++ tests/nextflow.config | 15 +++++ 8 files changed, 152 insertions(+), 12 deletions(-) delete mode 100644 conf/test_full.config rename conf/{test.config => test_input.config} (98%) create mode 100644 conf/test_small_dir.config create mode 100644 tests/main.nf.test diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 9533e11..a0b3616 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -30,7 +30,8 @@ jobs: - "23.10.1" - "latest-everything" test_name: - - "test" + - "test_input" + - "test_small_dir" steps: - name: Check out pipeline code uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4 @@ -47,6 +48,10 @@ jobs: run: | wget -qO- https://get.nf-test.com | bash sudo mv nf-test /usr/local/bin/ + + - name: Run nf-test + run: | + nf-test test - name: "Run pipeline with test data ${{ matrix.NXF_VER }} | ${{ matrix.test_name }} | docker" run: | diff --git a/conf/test_full.config b/conf/test_full.config deleted file mode 100644 index cf30ff5..0000000 --- a/conf/test_full.config +++ /dev/null @@ -1,7 +0,0 @@ -/* -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Full Test Config -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - - to be written - ----------------------------------------------------------------------------------------- -*/ diff --git a/conf/test.config b/conf/test_input.config similarity index 98% rename from conf/test.config rename to conf/test_input.config index 308a01b..b8fbb08 100644 --- a/conf/test.config +++ b/conf/test_input.config @@ -23,6 +23,8 @@ params { // Input input = 'tests/test_data/input.csv' + + // Filtering min_reads = 100 // Limit resources for github actions diff --git a/conf/test_small_dir.config b/conf/test_small_dir.config new file mode 100644 index 0000000..55223aa --- /dev/null +++ b/conf/test_small_dir.config @@ -0,0 +1,38 @@ +/* +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + 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 phac-nml/legiovue -profile test, +---------------------------------------------------------------------------------------- +*/ +// Resource limits are for nextflow >= 24.04.0 so also have to use the max_* params +process { + resourceLimits = [ + cpus: 2, + memory: '8.GB', + time: '2.h' + ] +} + +params { + config_profile_name = 'Test profile' + config_profile_description = 'Minimal test dataset to check pipeline function' + + // Input + fastq_dir = 'tests/test_data/' + + // Filtering + min_reads = 100 + + // Skip all steps we can as the test_input will do them + skip_el_gato = true + skip_plotting = true + + // Limit resources for github actions + max_cpus = 1 + max_memory = '8.GB' + max_time = '2.h' +} diff --git a/nextflow.config b/nextflow.config index e0efb03..b2ad5a6 100644 --- a/nextflow.config +++ b/nextflow.config @@ -151,9 +151,9 @@ profiles { executor.cpus = 4 executor.memory = 8.GB } - test { includeConfig 'conf/test.config' } - test_full { includeConfig 'conf/test_full.config' } - nml { includeConfig 'conf/nml.config' } + test_input { includeConfig 'conf/test_input.config' } + test_small_dir { includeConfig 'conf/test_small_dir.config' } + nml { includeConfig 'conf/nml.config' } } // Override the default Docker registry when required diff --git a/nf-test.config b/nf-test.config index 870799d..2fa82ad 100644 --- a/nf-test.config +++ b/nf-test.config @@ -3,6 +3,6 @@ config { testsDir "tests" workDir ".nf-test" configFile "tests/nextflow.config" - profile "" + profile "docker" } diff --git a/tests/main.nf.test b/tests/main.nf.test new file mode 100644 index 0000000..1c3be01 --- /dev/null +++ b/tests/main.nf.test @@ -0,0 +1,87 @@ +nextflow_pipeline { + + name "Full Pipeline NF-Tests for LegioVUE" + script "main.nf" + + //--- Test 1 + test("Conflicting Input Data Sources Specified") { + tag "conflicting_input_fail" + + when { + params { + input = "tests/test_data/input.csv" + fastq_dir = "tests/test_data/" + outdir = "results" + } + } + then { + // Status + assert workflow.failed + + // Message + assert workflow.errorReport.contains("Please provide input data with either:") + assert workflow.errorReport.contains("but not both") + } + } + + //--- Test 2 + test("No Input Data Sources Specified") { + tag "no_input_fail" + + when { + params { + outdir = "results" + } + } + then { + // Status + assert workflow.failed + + // Message + assert workflow.errorReport.contains("Please provide input data with either:") + } + } + + //--- Test 3 + test("Stub Run Test") { + tag "stub_run_success" + options "-stub-run" + + when { + params { + input = "tests/test_data/input.csv" + outdir = "results" + min_reads = 0 + } + } + then { + // Status + assert workflow.success + + // Channels and Files + assert path("$launchDir/results").exists() + assert workflow.trace.failed().size() == 0 + } + } + + //--- Test 4 + test("Full Pipeline Test") { + tag "full_success" + + when { + params { + input = "tests/test_data/input.csv" + outdir = "results" + min_reads = 100 + } + } + then { + // Status + assert workflow.success + + // Channels and Files + assert path("$launchDir/results").exists() + assert workflow.trace.failed().size() == 0 + } + } +} diff --git a/tests/nextflow.config b/tests/nextflow.config index c19b1ad..e5d08ad 100644 --- a/tests/nextflow.config +++ b/tests/nextflow.config @@ -3,3 +3,18 @@ Nextflow config file for running tests ======================================================================================== */ +// Resource limits are for nextflow >= 24.04.0 so also have to use the max_* params +process { + resourceLimits = [ + cpus: 2, + memory: '8.GB', + time: '2.h' + ] +} + +params { + // Limit resources for github actions + max_cpus = 1 + max_memory = '8.GB' + max_time = '2.h' +} From ee6a61833b99f172c63ca3c1009608d1899f009a Mon Sep 17 00:00:00 2001 From: Darian Hole Date: Fri, 3 Jan 2025 13:17:38 -0600 Subject: [PATCH 14/38] add in simple nf-tests, doc updates --- .github/workflows/ci.yml | 4 +-- .gitignore | 1 + README.md | 24 +++++++++++-- assets/samplesheet.csv | 1 - conf/{test_small_dir.config => test.config} | 0 conf/{test_input.config => test_full.config} | 4 +-- docs/roadmap.md | 27 +++++++------- docs/usage.md | 31 ++++++++++++++-- nextflow.config | 6 ++-- nf-test.config | 2 +- tests/main.nf.test | 38 ++++++++++---------- tests/test_data/input_none.csv | 1 + 12 files changed, 90 insertions(+), 49 deletions(-) rename conf/{test_small_dir.config => test.config} (100%) rename conf/{test_input.config => test_full.config} (90%) create mode 100644 tests/test_data/input_none.csv diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index a0b3616..dc1bf7c 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -30,8 +30,8 @@ jobs: - "23.10.1" - "latest-everything" test_name: - - "test_input" - - "test_small_dir" + - "test_full" + - "test" steps: - name: Check out pipeline code uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4 diff --git a/.gitignore b/.gitignore index a177582..af8e8e4 100644 --- a/.gitignore +++ b/.gitignore @@ -8,3 +8,4 @@ testing* null/ slurm* .nf-test.log +.nf-test/ diff --git a/README.md b/README.md index d6fb4b6..5264e71 100644 --- a/README.md +++ b/README.md @@ -43,11 +43,14 @@ By default, the `kraken2` and `SPAdes` steps have a minimum resource usage alloc This can be adjusted (along with the other labels) by creating and passing a [custom configuration file](https://nf-co.re/docs/usage/getting_started/configuration) with `-c ` or by adjusting the `--max_cpus` and `--max_memory` parameters. More info can be found in the [usage doc](./docs/usage.md) +The default `kraken2` database links to the 8Gb standard database on the AWS Index server so the required memory can be lowered a decent bit (16Gb) with minimal impact if resources are a limiting factor. + ## Quick Usage Detailed run and parameter instructions are found in the [usage doc here](./docs/usage.md). -To just get started and run the pipeline, the following basic command is all that is required: +To just get started and run the pipeline, one of the following basic commands is all that is required to do so. The only difference between the two being in how the input fastq data is specified/found: +Directory Input: ```bash nextflow run phac-nml/legiovue \ -profile \ @@ -62,8 +65,25 @@ Where: - Fastqs must be formatted as `_{R1,R2}\*.fastq\*` - At the moment everything before the first `_R1/_R2` is kept as the sample name +Samplesheet CSV Input: +```bash +nextflow run phac-nml/legiovue \ + -profile \ + --input \ + [Optional Args] +``` + +Where: +- `-profile `: The nextflow profile to use. + - Specification of a dependency management system (docker, singularity, conda) +- `--input `: Path to a CSV file with the header line `sample,fastq_1,fastq_2` + - `sample` is the name of the sample + - `fastq_1,fastq_2` is the path to both the fastq reads + - Note that paired end sequencing is required at this time! + - [Example file](./tests/test_data/input.csv) + > [!NOTE] -> The default kraken2 standard database is hosted on AWS. In the event the connection is interrupted the pipeline will fail out. It is recommended to use/download a database from [the kraken2 database zone](https://benlangmead.github.io/aws-indexes/k2) and include `--kraken2 ` in the command above. The 8GB standard DB is the default. +> The default `kraken2` standard database is hosted on AWS. In the event the connection is interrupted the pipeline will fail out. It is recommended to use/download a database from [the kraken2 database zone](https://benlangmead.github.io/aws-indexes/k2) and include `--kraken2 ` in the command above. The 8GB standard DB is the default. ## Quick Outputs All of the outputs can be found in [the output docs](./docs/output.md). All outputs are by default put in the `results` folder with some of the major outputs being as follows: diff --git a/assets/samplesheet.csv b/assets/samplesheet.csv index 5f653ab..3788156 100644 --- a/assets/samplesheet.csv +++ b/assets/samplesheet.csv @@ -1,3 +1,2 @@ sample,fastq_1,fastq_2 SAMPLE_PAIRED_END,/path/to/fastq/files/AEG588A1_S1_L002_R1_001.fastq.gz,/path/to/fastq/files/AEG588A1_S1_L002_R2_001.fastq.gz -SAMPLE_SINGLE_END,/path/to/fastq/files/AEG588A4_S4_L003_R1_001.fastq.gz, diff --git a/conf/test_small_dir.config b/conf/test.config similarity index 100% rename from conf/test_small_dir.config rename to conf/test.config diff --git a/conf/test_input.config b/conf/test_full.config similarity index 90% rename from conf/test_input.config rename to conf/test_full.config index b8fbb08..39ab128 100644 --- a/conf/test_input.config +++ b/conf/test_full.config @@ -2,10 +2,10 @@ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Nextflow config file for running minimal tests ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Defines input files and everything required to run a fast and simple pipeline test. + Defines input files and everything required to run a fast and simple full pipeline test. Use as follows: - nextflow run phac-nml/legiovue -profile test, + nextflow run phac-nml/legiovue -profile test_full, ---------------------------------------------------------------------------------------- */ // Resource limits are for nextflow >= 24.04.0 so also have to use the max_* params diff --git a/docs/roadmap.md b/docs/roadmap.md index 1e56a55..7f2f23c 100644 --- a/docs/roadmap.md +++ b/docs/roadmap.md @@ -1,29 +1,26 @@ # Development Roadmap What is going to be added. The order is not necessarily the priority in which they will be -1. Test Dataset available and run with profile `test` and `test_full` - - This will allow the pipeline to be checked by new users to see that it has been correctly installed +## To Do -2. Parameter validation using nf-core plugin - - Check that inputs are as expected - - Better help statement - - Better version output - -3. Investigations Document +1. Investigations Document - Downsampling testing - Tool testing -4. CI Tests - - nf-test - - linting - -5. IRIDA-Next requirements +2. IRIDA-Next requirements - Add in needed IRIDA next requirements and plugin -6. Validation dataset and report for releases +3. Validation dataset and report for releases - To make sure everything is working correctly on releases, have a validation report to go along with them -7. Requested updates (or updates we were planning) +4. Requested updates (or updates we were planning) - Filtering out non *Legionella* reads after kraken/bracken - Other tool testing - For resource/speed/output optimization + +## Done + +- CI Tests with nf-test, and nf-core linting (v0.2.0) +- Parameter validation using nf-core plugin (v0.2.0) +- Test dataset for test configs (v0.2.0) +- Ability to use a samplesheet CSV as input (v0.2.0) diff --git a/docs/usage.md b/docs/usage.md index a6f745d..34db6b1 100644 --- a/docs/usage.md +++ b/docs/usage.md @@ -7,6 +7,7 @@ This pipeline is intended to be run on *Legionella pneumophila* paired illumina - [Profiles](#profiles) - [Running the Pipeline](#running-the-pipeline) - [`--fastq_dir`](#fastq_dir) + - [`--input`](#input) - [All Parameters](#all-parameters) - [Required](#required) - [Optional](#optional) @@ -30,11 +31,12 @@ Available: > [!NOTE] > `el_gato` and the plotting currently are using custom docker containers. The `el_gato` container will be returned to the proper one upon a new release of the tool -For testing the pipeline functions correctly, you can use the `test` or `test_full` profile (TO-DO Create these) +For testing the pipeline functions correctly, you can use the `test` or `test_full` profile ## Running the Pipeline -To run the pipeline the following basic command is all that is required: +To just get started and run the pipeline, one of the following basic commands is all that is required to do so. The only difference between the two being in how the input fastq data is specified/found: +Directory Input: ```bash nextflow run phac-nml/legiovue \ -profile \ @@ -42,8 +44,16 @@ nextflow run phac-nml/legiovue \ [Optional Args] ``` +Samplesheet CSV Input: +```bash +nextflow run phac-nml/legiovue \ + -profile \ + --input \ + [Optional Args] +``` + ### `--fastq_dir` -The only required argument is needed to get data into the pipeline. Fastqs must be formatted as `_{R1,R2}\*.fastq\*` so that they can be paired based on the name. Note that at the moment everything before the first `_R1/_R2` is kept as the sample name. +Get fastq sample data into the pipeline by specifying a directory where the files are found. Fastqs must be formatted as `_{R1,R2}\*.fastq\*` so that they can be paired based on the name. Note that at the moment everything before the first `_R1/_R2` is kept as the sample name. Example directory with 3 samples: ``` @@ -56,6 +66,17 @@ Example directory with 3 samples: └── another-sample_S1_L001_R2_001.fastq.gz ``` +### `--input` +Get fastq sample data into the pipeline by creating a samplesheet CSV file with the header line `sample,fastq_1,fastq_2`. The outputs are named based on the given sample name and the data is input based on the path specified under `fastq_1` and `fastq_2`. The fastq files can end with `.fq`, `.fq.gz`, `.fastq`, or `.fastq.gz` to be valid + +Example: +| sample | fastq_1 | fastq_2 | +| - | - | - | +| sample1 | fastqs/sample1_R1.fastq.gz | fastqs/sample1_R1.fastq.gz | +| sample2 | fastqs/sample2_R1.fastq.gz | fastqs/sample2_R2.fastq.gz | +| other-sample | other_samples/other-sample_R1.fq.gz | other_samples/other-sample_R2.fq.gz | +| more_sample_data | fastqs/more_sample_data_R1.fq | fastqs/more_sample_data_R2.fq | + ## All Parameters Use `--help` to see all options formatted on the command line @@ -63,9 +84,11 @@ Use `--version` to see version information All of the required and optional parameters are defined as follows: ### Required +It is required to pick one of the following to get fastq data into the pipeline | Parameter | Description | Type | Default | Notes | | - | - | - | - | - | | --fastq_dir | Path to directory containing paired fastq files | Path | null | See [--fastq_dir](#fastq_dir) | +| --input | Path to CSV file containing information on the paired fastq files | Path | null | See [--input](#input) | ### Optional | Parameter | Description | Type | Default | Notes | @@ -75,6 +98,8 @@ All of the required and optional parameters are defined as follows: | --min_reads | Minimum reads required after trimmomatic to continue sample on | Int | 150,000 | Under 150,000 reads samples don't usually provide enough info for proper clustering / STs | | --kraken2_db | Path to standard `kraken2` database for detecting *L. pneumophila* reads | Path | s3://genome-idx/kraken/standard_08gb_20240904 | Default is AWS hosted database by developers. It is better to use your own if you have one | | --quast_ref | Path to reference sequence for some of the `quast` metrics | Path | data/C9_S.reference.fna | C9 was picked as a default reference but any good sequence will work | +| skip_el_gato | Flag to skip running el_gato sequence typing | Bool | False | | +| skip_plotting | Flag to skip running the el_gato allele plotting | Bool | False | | | --prepped_schema | Path to a prepped `chewbbaca` schema to save running the prep command | Path | data/SeqSphere_1521_schema | Provided with pipeline | | --schema_targets | Path to schema targets to prep for `chewbbaca` | Path | null | | | --max_memory | Maximum memory allowed to be given to a job | Str | 128.GB | | diff --git a/nextflow.config b/nextflow.config index b2ad5a6..4881681 100644 --- a/nextflow.config +++ b/nextflow.config @@ -151,9 +151,9 @@ profiles { executor.cpus = 4 executor.memory = 8.GB } - test_input { includeConfig 'conf/test_input.config' } - test_small_dir { includeConfig 'conf/test_small_dir.config' } - nml { includeConfig 'conf/nml.config' } + test_full { includeConfig 'conf/test_full.config' } + test { includeConfig 'conf/test.config' } + nml { includeConfig 'conf/nml.config' } } // Override the default Docker registry when required diff --git a/nf-test.config b/nf-test.config index 2fa82ad..3a5f449 100644 --- a/nf-test.config +++ b/nf-test.config @@ -3,6 +3,6 @@ config { testsDir "tests" workDir ".nf-test" configFile "tests/nextflow.config" - profile "docker" + profile "singularity" } diff --git a/tests/main.nf.test b/tests/main.nf.test index 1c3be01..6499538 100644 --- a/tests/main.nf.test +++ b/tests/main.nf.test @@ -5,12 +5,12 @@ nextflow_pipeline { //--- Test 1 test("Conflicting Input Data Sources Specified") { - tag "conflicting_input_fail" + tag "fail" when { params { - input = "tests/test_data/input.csv" - fastq_dir = "tests/test_data/" + input = "$baseDir/tests/test_data/input_none.csv" + fastq_dir = "$baseDir/tests/test_data/" outdir = "results" } } @@ -19,14 +19,13 @@ nextflow_pipeline { assert workflow.failed // Message - assert workflow.errorReport.contains("Please provide input data with either:") - assert workflow.errorReport.contains("but not both") + assert workflow.stdout.contains("ERROR ~ Please provide input data with either: '--input input.csv' or '--fastq_dir ' but not both") } } //--- Test 2 test("No Input Data Sources Specified") { - tag "no_input_fail" + tag "fail" when { params { @@ -38,41 +37,40 @@ nextflow_pipeline { assert workflow.failed // Message - assert workflow.errorReport.contains("Please provide input data with either:") + assert workflow.stdout.contains("ERROR ~ Please provide input data with either: '--input input.csv' or '--fastq_dir '") } } //--- Test 3 - test("Stub Run Test") { - tag "stub_run_success" - options "-stub-run" + test("Missing Input Fastq Test") { + tag "fail" when { params { - input = "tests/test_data/input.csv" + input = "$baseDir/tests/test_data/input.csv" outdir = "results" - min_reads = 0 + min_reads = 100 } } then { // Status - assert workflow.success + assert workflow.failed - // Channels and Files - assert path("$launchDir/results").exists() - assert workflow.trace.failed().size() == 0 + // Message + assert workflow.stdout.contains("ERROR ~ Validation of pipeline parameters failed!") } } //--- Test 4 - test("Full Pipeline Test") { - tag "full_success" + test("Stub Run Test") { + tag "success" + options "-stub-run" when { params { - input = "tests/test_data/input.csv" + fastq_dir = "$baseDir/tests/test_data/" outdir = "results" - min_reads = 100 + min_reads = 0 } } then { diff --git a/tests/test_data/input_none.csv b/tests/test_data/input_none.csv new file mode 100644 index 0000000..40f76c3 --- /dev/null +++ b/tests/test_data/input_none.csv @@ -0,0 +1 @@ +sample,fastq_1,fastq_2 From da53277d85319580a29d36deeaaba8b1a207de9a Mon Sep 17 00:00:00 2001 From: Darian Hole Date: Fri, 3 Jan 2025 13:32:27 -0600 Subject: [PATCH 15/38] run prettier, fix tests to run with docker --- .github/workflows/ci.yml | 2 +- CHANGELOG.md | 1 + CITATIONS.md | 24 +-- README.md | 395 ++++++++++++++++++++------------------- docs/README.md | 10 +- docs/clustering.md | 7 + docs/output.md | 119 +++++++----- docs/roadmap.md | 18 +- docs/usage.md | 77 +++++--- modules.json | 26 +-- nextflow_schema.json | 4 +- nf-test.config | 2 +- 12 files changed, 378 insertions(+), 307 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index dc1bf7c..cf696be 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -48,7 +48,7 @@ jobs: run: | wget -qO- https://get.nf-test.com | bash sudo mv nf-test /usr/local/bin/ - + - name: Run nf-test run: | nf-test test diff --git a/CHANGELOG.md b/CHANGELOG.md index c0ef23a..64465f1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,4 +6,5 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## v0.1.0 - [Beta-Test-2024-11-29] ### `Added` + - LegioVue pipeline created and initial beta code added diff --git a/CITATIONS.md b/CITATIONS.md index 229e01a..489f01e 100644 --- a/CITATIONS.md +++ b/CITATIONS.md @@ -8,42 +8,42 @@ [Kraken2](https://github.com/DerrickWood/kraken2) ->Wood, D.E., Lu, J. & Langmead, B. Improved metagenomic analysis with Kraken 2. Genome Biol 20, 257 (2019). https://doi.org/10.1186/s13059-019-1891-0 +> Wood, D.E., Lu, J. & Langmead, B. Improved metagenomic analysis with Kraken 2. Genome Biol 20, 257 (2019). https://doi.org/10.1186/s13059-019-1891-0 [Bracken](https://github.com/jenniferlu717/Bracken) ->Lu, J., Breitwieser, F. P., Thielen, P., and Salzberg, S. L. (2017). Bracken: estimating species abundance in metagenomics data. PeerJ Comput. Sci. 3, e104. doi: 10.7717/peerj-cs.104 +> Lu, J., Breitwieser, F. P., Thielen, P., and Salzberg, S. L. (2017). Bracken: estimating species abundance in metagenomics data. PeerJ Comput. Sci. 3, e104. doi: 10.7717/peerj-cs.104 [Trimmomatic](https://github.com/usadellab/Trimmomatic) ->Bolger, A. M., Lohse, M., and Usadel, B. (2014). Trimmomatic: a flexible trimmer for Illumina sequence data. Bioinformatics 30, 2114–2120. doi: 10.1093/bioinformatics/btu170 +> Bolger, A. M., Lohse, M., and Usadel, B. (2014). Trimmomatic: a flexible trimmer for Illumina sequence data. Bioinformatics 30, 2114–2120. doi: 10.1093/bioinformatics/btu170 [FastQC](https://www.bioinformatics.babraham.ac.uk/projects/fastqc/) ->Andrews S. (2010). FastQC: a quality control tool for high throughput sequence data. Available online at: http://www.bioinformatics.babraham.ac.uk/projects/fastqc +> Andrews S. (2010). FastQC: a quality control tool for high throughput sequence data. Available online at: http://www.bioinformatics.babraham.ac.uk/projects/fastqc [SPAdes](https://github.com/ablab/spades) ->Prjibelski, A., Antipov, D., Meleshko, D., Lapidus, A., and Korobeynikov, A. (2020). Using SPAdes De Novo Assembler. Current Protocols in Bioinformatics 70, e102. doi: 10.1002/cpbi.102 +> Prjibelski, A., Antipov, D., Meleshko, D., Lapidus, A., and Korobeynikov, A. (2020). Using SPAdes De Novo Assembler. Current Protocols in Bioinformatics 70, e102. doi: 10.1002/cpbi.102 [QUAST](https://github.com/ablab/quast) ->Alla Mikheenko, Vladislav Saveliev, Pascal Hirsch, Alexey Gurevich, -WebQUAST: online evaluation of genome assemblies, -Nucleic Acids Research (2023) 51 (W1): W601–W606. doi: 10.1093/nar/gkad406 +> Alla Mikheenko, Vladislav Saveliev, Pascal Hirsch, Alexey Gurevich, +> WebQUAST: online evaluation of genome assemblies, +> Nucleic Acids Research (2023) 51 (W1): W601–W606. doi: 10.1093/nar/gkad406 [el_gato](https://github.com/appliedbinf/el_gato) ->Alan Collins, Dev Mashruwala, Andrew Conley, Lavanya Rishishwar, Emily T. Norris, Anna Gaines, Will Overholt. Epidemiology of Legionella : Genome-bAsed Typing. Available online at: https://github.com/appliedbinf/el_gato +> Alan Collins, Dev Mashruwala, Andrew Conley, Lavanya Rishishwar, Emily T. Norris, Anna Gaines, Will Overholt. Epidemiology of Legionella : Genome-bAsed Typing. Available online at: https://github.com/appliedbinf/el_gato [chewBBACA](https://github.com/B-UMMI/chewBBACA) ->Silva M, Machado MP, Silva DN, Rossi M, Moran-Gilad J, Santos S, Ramirez M, Carriço JA. 2018. chewBBACA: A complete suite for gene-by-gene schema creation and strain identification. Microb Genom 4:000166. doi:10.1099/mgen.0.000166 +> Silva M, Machado MP, Silva DN, Rossi M, Moran-Gilad J, Santos S, Ramirez M, Carriço JA. 2018. chewBBACA: A complete suite for gene-by-gene schema creation and strain identification. Microb Genom 4:000166. doi:10.1099/mgen.0.000166 [ReporTree](https://github.com/insapathogenomics/ReporTree) ->Mixão V, Pinto M, Sobral D, Di Pasquale A, Gomes JP, Borges V (2023) ReporTree: a surveillance-oriented tool to strengthen the linkage between pathogen genetic clusters and epidemiological data. Genome Medicine. doi: 10.1186/s13073-023-01196-1 +> Mixão V, Pinto M, Sobral D, Di Pasquale A, Gomes JP, Borges V (2023) ReporTree: a surveillance-oriented tool to strengthen the linkage between pathogen genetic clusters and epidemiological data. Genome Medicine. doi: 10.1186/s13073-023-01196-1 [GrapeTree](https://github.com/achtman-lab/GrapeTree) ->Zhou, Z., Alikhan, N.-F., Sergeant, M. J., Luhmann, N., Vaz, C., Francisco, A. P., et al. (2018). GrapeTree: visualization of core genomic relationships among 100,000 bacterial pathogens. Genome Res. 28, 1395–1404. doi: 10.1101/gr.232397.117 \ No newline at end of file +> Zhou, Z., Alikhan, N.-F., Sergeant, M. J., Luhmann, N., Vaz, C., Francisco, A. P., et al. (2018). GrapeTree: visualization of core genomic relationships among 100,000 bacterial pathogens. Genome Res. 28, 1395–1404. doi: 10.1101/gr.232397.117 diff --git a/README.md b/README.md index 5264e71..15b3574 100644 --- a/README.md +++ b/README.md @@ -1,188 +1,207 @@ -# legiovue -LegioVue is a nextflow pipeline for whole-genome analysis of *Legionella pneumophila*. It performs *in silico* sequence typing, genome assembly, and core-genome analysis. It also provides detailed information about the quality of *L. pneumophila* genomes. The name is an homage to the Bellevue-Stratford hotel, site of the first known outbreak of Legionnaire's Disease. - -This project serves as a repository for tools, notes, and informtation regarding the LegioVue pipeline. This project is a GRDI funded research project surrounding the **assessment and implementation of a whole genome sequencing scheme for rapid resolution of _Legionella pneumophila_ outbreaks within Canada to better protect vulnerable populations**. The goal is to generate and nationally deploy a standardized pipeline that will shift _L. pneumophila_ analysis from conventional sequence based typing to whole genome sequence-based typing and clustering, for rapid detection and response to Legionnaires' Disease outbreaks in Canada. - -## Big Picture Overview -**LegioVue** contains a combination of tools that are used to do *de novo* assembly, sequence typing, cgMLST, and quality control for all input samples with the end goal in having the available data to confirm cluster outbreaks. Currently, clustering is not included in the pipeline but its addition is to come soon. With this, there are additional available steps on how to use all of the outputs to do cluster analysis. - -![LegioVue-WGS-Workflow.png](LegioVue-WGS-Workflow.png) ---- - -## Index -- [Installation](#installation) -- [Resource Requirements](#resources-requirements) -- [Quick Usage](#quick-usage) -- [Quick Outputs](#quick-outputs) -- [Pipeline Components and Settings](#pipeline-components-and-settings) -- [Limitations](#limitations) -- [Citations](#citations) -- [Contributing](#contributing) -- [Legal](#legal) - -## Installation -Installation requires both [nextflow](https://www.nextflow.io/) (minimum version tested `23.10.1`) and a dependency management system to run. - -Steps: -1. Download and install nextflow - 1. Download and install with [conda](https://docs.conda.io/en/latest/miniconda.html) - - Conda command: `conda create on nextflow -c conda-forge -c bioconda nextflow` - 2. Install with the instructions at https://www.nextflow.io/ - -2. Determine which dependency management system works best for you - - *Note*: Currently the plotting process is using a custom docker container - -3. Run the pipeline with one of the following profiles to handle dependencies (or use your [own profile](https://nf-co.re/docs/usage/getting_started/configuration) if you have one for your institution! The NML one is included as an example): - - `conda` - - `mamba` - - `singularity` - - `docker` - -## Resources Requirements -By default, the `kraken2` and `SPAdes` steps have a minimum resource usage allocation set to `8 cpus` and `48GB memory` using the nf-core `process_high` label. - -This can be adjusted (along with the other labels) by creating and passing a [custom configuration file](https://nf-co.re/docs/usage/getting_started/configuration) with `-c ` or by adjusting the `--max_cpus` and `--max_memory` parameters. More info can be found in the [usage doc](./docs/usage.md) - -The default `kraken2` database links to the 8Gb standard database on the AWS Index server so the required memory can be lowered a decent bit (16Gb) with minimal impact if resources are a limiting factor. - -## Quick Usage -Detailed run and parameter instructions are found in the [usage doc here](./docs/usage.md). - -To just get started and run the pipeline, one of the following basic commands is all that is required to do so. The only difference between the two being in how the input fastq data is specified/found: - -Directory Input: -```bash -nextflow run phac-nml/legiovue \ - -profile \ - --fastq_dir \ - [Optional Args] -``` - -Where: -- `-profile `: The nextflow profile to use. - - Specification of a dependency management system (docker, singularity, conda) -- `--fastq_dir `: Path to directory containing paired Illumina `_R1` and `_R2` fastq files - - Fastqs must be formatted as `_{R1,R2}\*.fastq\*` - - At the moment everything before the first `_R1/_R2` is kept as the sample name - -Samplesheet CSV Input: -```bash -nextflow run phac-nml/legiovue \ - -profile \ - --input \ - [Optional Args] -``` - -Where: -- `-profile `: The nextflow profile to use. - - Specification of a dependency management system (docker, singularity, conda) -- `--input `: Path to a CSV file with the header line `sample,fastq_1,fastq_2` - - `sample` is the name of the sample - - `fastq_1,fastq_2` is the path to both the fastq reads - - Note that paired end sequencing is required at this time! - - [Example file](./tests/test_data/input.csv) - -> [!NOTE] -> The default `kraken2` standard database is hosted on AWS. In the event the connection is interrupted the pipeline will fail out. It is recommended to use/download a database from [the kraken2 database zone](https://benlangmead.github.io/aws-indexes/k2) and include `--kraken2 ` in the command above. The 8GB standard DB is the default. - -## Quick Outputs -All of the outputs can be found in [the output docs](./docs/output.md). All outputs are by default put in the `results` folder with some of the major outputs being as follows: -- `spades/`: Contains the SPAdes assemblies (contigs as .fasta files) for each sample. -- `el_gato/el_gato_st.tsv`: Summarized el_gato ST calls for all samples. -- `chewbbaca/allele_calls/cgMLST/`: cgMLST profiles that can be used for downstream visualization. -- `overall.qc.tsv`: Final quality summary report for each sample throughout the different pipeline steps. Important quality flags can be found in this file. - -## Pipeline Components and Settings - -**`Kraken2`** and **`Bracken`** - -[Kraken2](https://github.com/DerrickWood/kraken2) is used to taxonomically profile the paired Illumina reads against the standard Kraken RefSeq database with a confidence level of 0.1 (`--confidence 0.1`). [Bracken](https://github.com/jenniferlu717/Bracken) is then used to estimate taxonomic abundances (including potential contaminants) from the Kraken profile. - -**`Trimmomatic`** - -[Trimmomatic](https://github.com/usadellab/Trimmomatic) is used to remove Illumina adapters (`ILLUMINACLIP:TruSeq3-PE.fa:2:30:10:2:True`) and trim reads according to quality (`LEADING:3`, `TRAILING:3`, `SLIDINGWINDOW:4:20`). Reads shorter than 100bp are dropped (`MINLEN:100`). - -**`FastQC`** - -[FastQC](https://www.bioinformatics.babraham.ac.uk/projects/fastqc/) provides quality information about the trimmed reads including estimates of duplication, %GC, and N content. Samples retaining fewer than 150,000 high-quality read pairs after trimming are removed unless `--min_reads ` is specified. - -**`SPAdes`** and **`QUAST`** - -High-quality reads (both paired and unpaired) are then assembled into Legionella genomes using the [SPAdes](https://github.com/ablab/spades) assembler and `--careful` option, which aims to minimize mismatches and short indels in the assembly. The quality of the resulting assemblies is evaluated with [QUAST](https://github.com/ablab/quast). At this step, genomes are compared to a _Legionella pneumophila_ [reference genome](data/C9_S.reference.fna) and an assembly quality score is calculated for each sample using a custom script. - -The `quast_analyzer.py` script assigns a score to each SPAdes assembly based on pre-cgMLST metrics (_e.g.,_ similarity to RefSeq complete _Lp_ genomes, N50, # contigs, %GC content) originally outlined in the supplementary appendix (Supplementary Table 2) of the following paper: - -> Gorzynski, J., Wee, B., Llano, M., Alves, J., Cameron, R., McMenamin, J., et al. (2022). Epidemiological analysis of Legionnaires’ disease in Scotland: a genomic study. The Lancet Microbe 3, e835–e845. doi: 10.1016/S2666-5247(22)00231-2 - -Quality thresholds and score effects have been updated in this pipeline to better capture quality issues that are likely to affect the interpretation of the resulting cgMLST profile. Assemblies are assigned a quality score out of 6, where a score of 6/6 represents an "excellent" high-quality _Legionella pneumophila_ assembly. - -**`el_gato`** - -[el_gato](https://github.com/appliedbinf/el_gato) performs _in silico_ Sequence-based Typing (SBT) of _Legionella pneumophila_ sequences based on the identification and comparison of 7 loci (_flaA, pilE, asd, mip, mompS, proA, neuA/neuAh_) against an allele database. In this pipeline SBT is first called on Illumina paired-end reads using a mapping/alignment approach that is recommended by the `el_gato` developers. If samples are not initially assigned a sequence type (ST = `MA?` or `MD-`), `el_gato` is run again on the assembled genome using an _in silico_ PCR-based approach. The resulting allele and ST calls are reported in `el_gato_st.tsv`. - -_Note: if the ST results are inconclusive after both approaches have been tried, users are encouraged to review the `possible_mlsts.txt` intermediate output for that sample in the pipeline results folder under `el_gato/reads/`_ - -**`chewBBACA`** - -Assembled _Legionella pneumophila_ genomes are passed to [chewBBACA](https://github.com/B-UMMI/chewBBACA), which performs Core Genome MultiLocus Sequence Typing (cgMLST) according to the published [Ridom SeqSphere](https://www.cgmlst.org/ncs/schema/Lpneumophila1410/locus/) 1521-loci cgMLST schema for _L. pneumophila_. - -**cgMLST Visualization and Clustering** - -**`PHYLOViZ`** and **`reporTree`** - -_Note: Reportree requires an update before it can be properly incorporated into the nextflow pipeline. Users can run reportree on their pipeline output separately for now to produce the same visualizations._ - -Visualize cgMLST profiles alongside sample metadata using one of the following two methods: - -i) Either drop the cgMLST profile (e.g., `cgMLST100.tsv`) directly into [PhyloViz](https://online2.phyloviz.net/index) and upload metadata for visualization, or, -ii) Perform partitioning (clustering) with [ReporTree](https://github.com/insapathogenomics/ReporTree), which will generate outputs (MST and metadata) that can be visualized with the local version of [GrapeTree](https://achtman-lab.github.io/GrapeTree/MSTree_holder.html). - -Detailed instructions for clustering and visualization are provided [separately](docs/clustering.md). - -**Quality Summary** - -LegioVue outputs a summary of quality metrics and warnings for each step of the workflow in the `overall.qc.tsv` file - -The final quality summary has two columns: `qc_status` and `qc_message` that can be used to quickly determine if a sample is good or may have an issue. The `qc_status` column will be any of the following statuses: -- Pass: The sample passes all checks! -- Warn: The sample was flagged for a specific warning -- Fail: The sample has failed out of the pipeline and may not be included in the final cgMLST profile. - -The `qc_message` column contains the reason for the `qc_status` and includes: - -| Message | Associated Status | Flag Reason | -| - | - | - | -| low_lpn_abundance | WARN | Low (< 75%) *L. pneumophila* abundance is not expected with isolate sequencing and may indicate contamination. | -| low_read_count | WARN | Low read count (< 300,000 reads default) has been shown to lead to poor, uninformative assemblies. | -| low_n50 | WARN | Low N50 scores (< 100,000) have been shown to negatively affect clustering outputs by inflating observed allele differences. | -| low_exact_allele_calls | WARN | Low chewBBACA exact allele calls (< 90%) indicate that there may be issues in the assembly, possibly affecting the cgMLST profile. | -| low_qc_score | WARN | Low QUAST-Analyzer QC score (< 4) indicates that there may be issues in the assembly, possibly affecting the cgMLST profile. | -| no_lpn_detected | FAIL | Very low (< 10% default) *L.pneumophila* abundance flags that the sample may not be *L.pneumophila* and sample is removed from the remainder of the pipeline | -| failing_read_count | FAIL | Post-trimming read count below failing threshold (< 150,000 reads default) has been shown to lead to poor, uninformative assemblies and sample is removed. | - -## Limitations -This pipeline is intended to be run on *Legionella pneumophila* paired illumina isolate sequencing data. In the future Nanopore long-read sequencing data will also be supported. - -## Citations -This pipeline uses code and infrastructure developed and maintained by the [nf-core](https://nf-co.re) community, reused here under the [MIT license](https://github.com/nf-core/tools/blob/master/LICENSE). - -> The nf-core framework for community-curated bioinformatics pipelines. -> -> Philip Ewels, Alexander Peltzer, Sven Fillinger, Harshil Patel, Johannes Alneberg, Andreas Wilm, Maxime Ulysse Garcia, Paolo Di Tommaso & Sven Nahnsen. -> -> Nat Biotechnol. 2020 Feb 13. doi: 10.1038/s41587-020-0439-x. -> In addition, references of tools and data used in this pipeline are as follows: - -Detailed citations for utilized tools are found in [CITATIONS.md](./CITATIONS.md) - -## Contributing -Contributions are welcome through creating PRs or Issues - -## Legal -Copyright 2024 Government of Canada - -Licensed under the MIT License (the "License"); you may not use this work except in compliance with the License. You may obtain a copy of the License at: - -https://opensource.org/license/mit/ - -Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. +# legiovue + +LegioVue is a nextflow pipeline for whole-genome analysis of _Legionella pneumophila_. It performs _in silico_ sequence typing, genome assembly, and core-genome analysis. It also provides detailed information about the quality of _L. pneumophila_ genomes. The name is an homage to the Bellevue-Stratford hotel, site of the first known outbreak of Legionnaire's Disease. + +This project serves as a repository for tools, notes, and informtation regarding the LegioVue pipeline. This project is a GRDI funded research project surrounding the **assessment and implementation of a whole genome sequencing scheme for rapid resolution of _Legionella pneumophila_ outbreaks within Canada to better protect vulnerable populations**. The goal is to generate and nationally deploy a standardized pipeline that will shift _L. pneumophila_ analysis from conventional sequence based typing to whole genome sequence-based typing and clustering, for rapid detection and response to Legionnaires' Disease outbreaks in Canada. + +## Big Picture Overview + +**LegioVue** contains a combination of tools that are used to do _de novo_ assembly, sequence typing, cgMLST, and quality control for all input samples with the end goal in having the available data to confirm cluster outbreaks. Currently, clustering is not included in the pipeline but its addition is to come soon. With this, there are additional available steps on how to use all of the outputs to do cluster analysis. + +## ![LegioVue-WGS-Workflow.png](LegioVue-WGS-Workflow.png) + +## Index + +- [Installation](#installation) +- [Resource Requirements](#resources-requirements) +- [Quick Usage](#quick-usage) +- [Quick Outputs](#quick-outputs) +- [Pipeline Components and Settings](#pipeline-components-and-settings) +- [Limitations](#limitations) +- [Citations](#citations) +- [Contributing](#contributing) +- [Legal](#legal) + +## Installation + +Installation requires both [nextflow](https://www.nextflow.io/) (minimum version tested `23.10.1`) and a dependency management system to run. + +Steps: + +1. Download and install nextflow + + 1. Download and install with [conda](https://docs.conda.io/en/latest/miniconda.html) + - Conda command: `conda create on nextflow -c conda-forge -c bioconda nextflow` + 2. Install with the instructions at https://www.nextflow.io/ + +2. Determine which dependency management system works best for you + + - _Note_: Currently the plotting process is using a custom docker container + +3. Run the pipeline with one of the following profiles to handle dependencies (or use your [own profile](https://nf-co.re/docs/usage/getting_started/configuration) if you have one for your institution! The NML one is included as an example): + - `conda` + - `mamba` + - `singularity` + - `docker` + +## Resources Requirements + +By default, the `kraken2` and `SPAdes` steps have a minimum resource usage allocation set to `8 cpus` and `48GB memory` using the nf-core `process_high` label. + +This can be adjusted (along with the other labels) by creating and passing a [custom configuration file](https://nf-co.re/docs/usage/getting_started/configuration) with `-c ` or by adjusting the `--max_cpus` and `--max_memory` parameters. More info can be found in the [usage doc](./docs/usage.md) + +The default `kraken2` database links to the 8Gb standard database on the AWS Index server so the required memory can be lowered a decent bit (16Gb) with minimal impact if resources are a limiting factor. + +## Quick Usage + +Detailed run and parameter instructions are found in the [usage doc here](./docs/usage.md). + +To just get started and run the pipeline, one of the following basic commands is all that is required to do so. The only difference between the two being in how the input fastq data is specified/found: + +Directory Input: + +```bash +nextflow run phac-nml/legiovue \ + -profile \ + --fastq_dir \ + [Optional Args] +``` + +Where: + +- `-profile `: The nextflow profile to use. + - Specification of a dependency management system (docker, singularity, conda) +- `--fastq_dir `: Path to directory containing paired Illumina `_R1` and `_R2` fastq files + - Fastqs must be formatted as `_{R1,R2}\*.fastq\*` + - At the moment everything before the first `_R1/_R2` is kept as the sample name + +Samplesheet CSV Input: + +```bash +nextflow run phac-nml/legiovue \ + -profile \ + --input \ + [Optional Args] +``` + +Where: + +- `-profile `: The nextflow profile to use. + - Specification of a dependency management system (docker, singularity, conda) +- `--input `: Path to a CSV file with the header line `sample,fastq_1,fastq_2` + - `sample` is the name of the sample + - `fastq_1,fastq_2` is the path to both the fastq reads + - Note that paired end sequencing is required at this time! + - [Example file](./tests/test_data/input.csv) + +> [!NOTE] +> The default `kraken2` standard database is hosted on AWS. In the event the connection is interrupted the pipeline will fail out. It is recommended to use/download a database from [the kraken2 database zone](https://benlangmead.github.io/aws-indexes/k2) and include `--kraken2 ` in the command above. The 8GB standard DB is the default. + +## Quick Outputs + +All of the outputs can be found in [the output docs](./docs/output.md). All outputs are by default put in the `results` folder with some of the major outputs being as follows: + +- `spades/`: Contains the SPAdes assemblies (contigs as .fasta files) for each sample. +- `el_gato/el_gato_st.tsv`: Summarized el_gato ST calls for all samples. +- `chewbbaca/allele_calls/cgMLST/`: cgMLST profiles that can be used for downstream visualization. +- `overall.qc.tsv`: Final quality summary report for each sample throughout the different pipeline steps. Important quality flags can be found in this file. + +## Pipeline Components and Settings + +**`Kraken2`** and **`Bracken`** + +[Kraken2](https://github.com/DerrickWood/kraken2) is used to taxonomically profile the paired Illumina reads against the standard Kraken RefSeq database with a confidence level of 0.1 (`--confidence 0.1`). [Bracken](https://github.com/jenniferlu717/Bracken) is then used to estimate taxonomic abundances (including potential contaminants) from the Kraken profile. + +**`Trimmomatic`** + +[Trimmomatic](https://github.com/usadellab/Trimmomatic) is used to remove Illumina adapters (`ILLUMINACLIP:TruSeq3-PE.fa:2:30:10:2:True`) and trim reads according to quality (`LEADING:3`, `TRAILING:3`, `SLIDINGWINDOW:4:20`). Reads shorter than 100bp are dropped (`MINLEN:100`). + +**`FastQC`** + +[FastQC](https://www.bioinformatics.babraham.ac.uk/projects/fastqc/) provides quality information about the trimmed reads including estimates of duplication, %GC, and N content. Samples retaining fewer than 150,000 high-quality read pairs after trimming are removed unless `--min_reads ` is specified. + +**`SPAdes`** and **`QUAST`** + +High-quality reads (both paired and unpaired) are then assembled into Legionella genomes using the [SPAdes](https://github.com/ablab/spades) assembler and `--careful` option, which aims to minimize mismatches and short indels in the assembly. The quality of the resulting assemblies is evaluated with [QUAST](https://github.com/ablab/quast). At this step, genomes are compared to a _Legionella pneumophila_ [reference genome](data/C9_S.reference.fna) and an assembly quality score is calculated for each sample using a custom script. + +The `quast_analyzer.py` script assigns a score to each SPAdes assembly based on pre-cgMLST metrics (_e.g.,_ similarity to RefSeq complete _Lp_ genomes, N50, # contigs, %GC content) originally outlined in the supplementary appendix (Supplementary Table 2) of the following paper: + +> Gorzynski, J., Wee, B., Llano, M., Alves, J., Cameron, R., McMenamin, J., et al. (2022). Epidemiological analysis of Legionnaires’ disease in Scotland: a genomic study. The Lancet Microbe 3, e835–e845. doi: 10.1016/S2666-5247(22)00231-2 + +Quality thresholds and score effects have been updated in this pipeline to better capture quality issues that are likely to affect the interpretation of the resulting cgMLST profile. Assemblies are assigned a quality score out of 6, where a score of 6/6 represents an "excellent" high-quality _Legionella pneumophila_ assembly. + +**`el_gato`** + +[el_gato](https://github.com/appliedbinf/el_gato) performs _in silico_ Sequence-based Typing (SBT) of _Legionella pneumophila_ sequences based on the identification and comparison of 7 loci (_flaA, pilE, asd, mip, mompS, proA, neuA/neuAh_) against an allele database. In this pipeline SBT is first called on Illumina paired-end reads using a mapping/alignment approach that is recommended by the `el_gato` developers. If samples are not initially assigned a sequence type (ST = `MA?` or `MD-`), `el_gato` is run again on the assembled genome using an _in silico_ PCR-based approach. The resulting allele and ST calls are reported in `el_gato_st.tsv`. + +_Note: if the ST results are inconclusive after both approaches have been tried, users are encouraged to review the `possible_mlsts.txt` intermediate output for that sample in the pipeline results folder under `el_gato/reads/`_ + +**`chewBBACA`** + +Assembled _Legionella pneumophila_ genomes are passed to [chewBBACA](https://github.com/B-UMMI/chewBBACA), which performs Core Genome MultiLocus Sequence Typing (cgMLST) according to the published [Ridom SeqSphere](https://www.cgmlst.org/ncs/schema/Lpneumophila1410/locus/) 1521-loci cgMLST schema for _L. pneumophila_. + +**cgMLST Visualization and Clustering** + +**`PHYLOViZ`** and **`reporTree`** + +_Note: Reportree requires an update before it can be properly incorporated into the nextflow pipeline. Users can run reportree on their pipeline output separately for now to produce the same visualizations._ + +Visualize cgMLST profiles alongside sample metadata using one of the following two methods: + +i) Either drop the cgMLST profile (e.g., `cgMLST100.tsv`) directly into [PhyloViz](https://online2.phyloviz.net/index) and upload metadata for visualization, or, +ii) Perform partitioning (clustering) with [ReporTree](https://github.com/insapathogenomics/ReporTree), which will generate outputs (MST and metadata) that can be visualized with the local version of [GrapeTree](https://achtman-lab.github.io/GrapeTree/MSTree_holder.html). + +Detailed instructions for clustering and visualization are provided [separately](docs/clustering.md). + +**Quality Summary** + +LegioVue outputs a summary of quality metrics and warnings for each step of the workflow in the `overall.qc.tsv` file + +The final quality summary has two columns: `qc_status` and `qc_message` that can be used to quickly determine if a sample is good or may have an issue. The `qc_status` column will be any of the following statuses: + +- Pass: The sample passes all checks! +- Warn: The sample was flagged for a specific warning +- Fail: The sample has failed out of the pipeline and may not be included in the final cgMLST profile. + +The `qc_message` column contains the reason for the `qc_status` and includes: + +| Message | Associated Status | Flag Reason | +| ---------------------- | ----------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| low_lpn_abundance | WARN | Low (< 75%) _L. pneumophila_ abundance is not expected with isolate sequencing and may indicate contamination. | +| low_read_count | WARN | Low read count (< 300,000 reads default) has been shown to lead to poor, uninformative assemblies. | +| low_n50 | WARN | Low N50 scores (< 100,000) have been shown to negatively affect clustering outputs by inflating observed allele differences. | +| low_exact_allele_calls | WARN | Low chewBBACA exact allele calls (< 90%) indicate that there may be issues in the assembly, possibly affecting the cgMLST profile. | +| low_qc_score | WARN | Low QUAST-Analyzer QC score (< 4) indicates that there may be issues in the assembly, possibly affecting the cgMLST profile. | +| no_lpn_detected | FAIL | Very low (< 10% default) _L.pneumophila_ abundance flags that the sample may not be _L.pneumophila_ and sample is removed from the remainder of the pipeline | +| failing_read_count | FAIL | Post-trimming read count below failing threshold (< 150,000 reads default) has been shown to lead to poor, uninformative assemblies and sample is removed. | + +## Limitations + +This pipeline is intended to be run on _Legionella pneumophila_ paired illumina isolate sequencing data. In the future Nanopore long-read sequencing data will also be supported. + +## Citations + +This pipeline uses code and infrastructure developed and maintained by the [nf-core](https://nf-co.re) community, reused here under the [MIT license](https://github.com/nf-core/tools/blob/master/LICENSE). + +> The nf-core framework for community-curated bioinformatics pipelines. +> +> Philip Ewels, Alexander Peltzer, Sven Fillinger, Harshil Patel, Johannes Alneberg, Andreas Wilm, Maxime Ulysse Garcia, Paolo Di Tommaso & Sven Nahnsen. +> +> Nat Biotechnol. 2020 Feb 13. doi: 10.1038/s41587-020-0439-x. +> In addition, references of tools and data used in this pipeline are as follows: + +Detailed citations for utilized tools are found in [CITATIONS.md](./CITATIONS.md) + +## Contributing + +Contributions are welcome through creating PRs or Issues + +## Legal + +Copyright 2024 Government of Canada + +Licensed under the MIT License (the "License"); you may not use this work except in compliance with the License. You may obtain a copy of the License at: + +https://opensource.org/license/mit/ + +Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. diff --git a/docs/README.md b/docs/README.md index a6968dd..8e8c3e5 100644 --- a/docs/README.md +++ b/docs/README.md @@ -3,11 +3,11 @@ The phac-nml/LegioVue documentation is split up into the following pages: - [Usage](./usage.md) - - An overview of how the pipeline works, how to run it and a description of all of the different command-line flags. + - An overview of how the pipeline works, how to run it and a description of all of the different command-line flags. - [Output](./output.md) - - An overview of the different results produced by the pipeline and how to interpret them. + - An overview of the different results produced by the pipeline and how to interpret them. - [Clustering](./clustering.md) - - Some recommended follow-up clustering steps until they are in incorporated into the pipeline + - Some recommended follow-up clustering steps until they are in incorporated into the pipeline - [Investigations](./investigations.md) - - An overview of the different investigations done to determine key pipeline values - - TODO write this out + - An overview of the different investigations done to determine key pipeline values + - TODO write this out diff --git a/docs/clustering.md b/docs/clustering.md index 15577c2..3e0e342 100644 --- a/docs/clustering.md +++ b/docs/clustering.md @@ -1,11 +1,14 @@ # phac-nml/LegioVue : Clustering + This document provides the neccessary steps to visualize the cgMLST output from LegioVue. At the moment these steps need to be run separately using the ouputs of the LegioVue. Pending updates, these steps will be incorporated into the nextflow workflow directly. Visualizations of cgMLST data can be generated with or without clustering. Both options are presented below, though [partitioning and visualization with ReporTree](#partitioning-and-visualization-with-reportree) is the recommended approach if you are able to install and run [ReporTree](https://github.com/insapathogenomics/ReporTree) on the command-line. ### Visualization-only with PHYLOViZ GUI + Use this option if you are unable to install ReporTree, or if you simply want to visualize relative allele differences between isolates without setting cluster/partition thresholds: + 1. Navigate to https://online2.phyloviz.net/index in a browser window. 2. Scroll down and click on "Login-free upload" under **Test PHYLOViZ Online**. This will take you to a page where you can upload and visualize your cgMLST profile without storing any data in the application. Note that navigating away from this page will erase your data. 3. From the **Possible Input Formats** dropdown menu, select "Profile Data". @@ -17,17 +20,21 @@ Use this option if you are unable to install ReporTree, or if you simply want to **Important:** In this Minumum Spanning Tree (MST), branch (or "link") lengths represent the number of alleles that differ between linked isolates. The default schema that the pipeline uses for cgMLST determination has a maximum of 1521 possible alleles. These branch lengths tend to increase when there are many inferred (INF) alleles and fewer exact (EXC) alleles (which, in turn, is affected by underlying data quality) used to generate the profile data. These numbers can be found in the `overall.qc.tsv` output of the main pipeline and should be taken into consideration when interpreting the visualization of the profile data. ### Partitioning and Visualization with ReporTree + Reportree can be used to partition the MST of isolates according to different thresholds, which may be useful for epidemiological investigation. 1. First, install [ReporTree](https://github.com/insapathogenomics/ReporTree) either with Conda or Docker according to the installation instructions in the Readme file on their GitHub page. 2. Prepare a metadata file with columns for `sample` and any other data you wish to include for downstream visualization. 3. Activate ReporTree and run `grapetree` analysis, using as input the cgMLST profile data and prepared metadata from Step 2. An example command is below to use with the test dataset: + ``` reportree.py -m /metadata.tsv \ -a /results/chewbbaca/allele_calls/cgMLST/cgMLST100.tsv -thr 0-5 --columns_summary_report ST,n_ST \ --method MSTreeV2 --loci-called 1.0 --matrix-4-grapetree --analysis grapetree ``` + You may wish to modify certain values depending on your analysis: + - `-thr` indicates the threshold(s) to use for cluster partitioning. Setting `-thr 0-5` will request that ReporTree assign samples to clusters at six different allele thresholds, ranging from 0 allele differences to 5. You may also select distinct threshold values, for example `-thr 5,10,15,20`, for more exploratory analysis. - `--loci-called` should correspond to the cgMLST profile used as input, _i.e.,_ `--loci-called 0.95` should be used if the input profile is `cgMLST95.tsv`. - `--columns_summary_report` indicates columns from the metadata file that should be described for each cluster. For example, `ST,n_ST` requests that for each cluster, the ST and number of STs included in that cluster should be reported in the output. This information can help you investigate different clustering thresholds. diff --git a/docs/output.md b/docs/output.md index ddd443d..e83138c 100644 --- a/docs/output.md +++ b/docs/output.md @@ -1,67 +1,74 @@ # phac-nml/LegioVue: Outputs + This document describes the output produced by the pipeline. The directories listed below will be created in the results directory (by default) after the pipeline has finished. All paths are relative to the top-level results directory. ## Pipeline overview + The pipeline is built using [Nextflow](https://www.nextflow.io/) and processes data using the following steps: - [Preprocessing](#preprocessing) - - [Kraken2](#kraken2) - Taxonomic read classification - - [Bracken](#bracken) - Species abundance estimation from kraken2 output - - [Custom Abundance Check](#custom-abundance-check) - Filter samples with `< X%` *Legionella pneumophila* reads - - [Trimmomatic](#trimmomatic) - Trim and crop Illumina reads - - [FastQC](#fastqc) - Trimmed read QC plots + - [Kraken2](#kraken2) - Taxonomic read classification + - [Bracken](#bracken) - Species abundance estimation from kraken2 output + - [Custom Abundance Check](#custom-abundance-check) - Filter samples with `< X%` _Legionella pneumophila_ reads + - [Trimmomatic](#trimmomatic) - Trim and crop Illumina reads + - [FastQC](#fastqc) - Trimmed read QC plots - [Sequence Typing](#sequence-typing) - - [el_gato Reads](#el_gato-reads) - Sequence type (ST) input sample reads - - [el_gato Assembly](#el_gato-assembly) - Sequence type input sample assemblies when reads fail to generate an ST - - [el_gato Report](#el_gato-report) - Create PDF summary el_gato report - - [Pysamstats](#pysamstats) - Calculate positional depth, mapq, and baseq for each ST allele - - [Allele Reports](#allele-reports) - Create per-sample ST allele report pdf + - [el_gato Reads](#el_gato-reads) - Sequence type (ST) input sample reads + - [el_gato Assembly](#el_gato-assembly) - Sequence type input sample assemblies when reads fail to generate an ST + - [el_gato Report](#el_gato-report) - Create PDF summary el_gato report + - [Pysamstats](#pysamstats) - Calculate positional depth, mapq, and baseq for each ST allele + - [Allele Reports](#allele-reports) - Create per-sample ST allele report pdf - [Assembly](#assembly) - - [SPAdes](#spades) - *De novo* bacterial genome assembly - - [QUAST](#quast) - Assembly statistic report + - [SPAdes](#spades) - _De novo_ bacterial genome assembly + - [QUAST](#quast) - Assembly statistic report - [cgMLST and Clustering](#cgmlst-and-clustering) - - [chewBBACA](#chewbbaca) - cgMLST results + - [chewBBACA](#chewbbaca) - cgMLST results - [Final Quality Control](#final-quality-control) - - [QUAST Scoring Script](#quast-scoring-script) - Simple assembly score of quast output based on established criteria - - [Final QC Checks](#final-qc-checks) - Summary of pipeline QC metrics + - [QUAST Scoring Script](#quast-scoring-script) - Simple assembly score of quast output based on established criteria + - [Final QC Checks](#final-qc-checks) - Summary of pipeline QC metrics Additionally [Pipeline information](#pipeline-information) which includes report metrics generated during the workflow execution can also be found ### Preprocessing + Initial processing steps and statistic gathering #### Kraken2 +
      Output files - `kraken_bracken/` - `*-kreport.tsv`: Kraken2 taxonomic report - `*-classified.tsv`: Kraken2 standard output -
      + [Kraken2](https://github.com/DerrickWood/kraken2/wiki/Manual#classification) classifies input sequences based on a taxonomic k-mer database where the input sequences are mapped to the lowest common ancestor of all genomes known to contain the given k-mer. -In the pipeline, kraken2 along with bracken are used to determine if there is any/enough *L.pneumophila* data to run through the pipeline +In the pipeline, kraken2 along with bracken are used to determine if there is any/enough _L.pneumophila_ data to run through the pipeline #### Bracken +
      Output files - `kraken_bracken/` - `*-abundances.tsv`: Bracken abundance report - `*-braken-breakdown.tsv`: Bracken taxonomic report that matches kraken2 report -
      + [Bracken](https://github.com/jenniferlu717/Bracken/blob/v3.0/README.md) reestimates species abundance from kraken2 output. -In the pipeline, kraken2 along with bracken are used to determine if there is any/enough *L.pneumophila* data to run through the pipeline +In the pipeline, kraken2 along with bracken are used to determine if there is any/enough _L.pneumophila_ data to run through the pipeline #### Custom Abundance Check + Simply python program that takes in the bracken abundance report and determines if a sample is above the given threshold required to keep in the pipeline (default 10.0%) #### Trimmomatic +
      Output files @@ -71,28 +78,31 @@ Simply python program that takes in the bracken abundance report and determines - `*_unpaired_R1.fastq.gz`: Unpaired trimmed reads 1 to assist in SPAdes assembly - `*_unpaired_R1.fastq.gz`: Unpaired trimmed reads 2 to assist in SPAdes assembly - `*.summary.txt`: Trimmomatic output summary -
      + [Trimmomatic](http://www.usadellab.org/cms/uploads/supplementary/Trimmomatic/TrimmomaticManual_V0.32.pdf) removes Illumina adapters and trim reads according to quality #### FastQC +
      Output files - `fastqc/` - `*_fastqc.html`: FastQC per read quality summary report -
      + [FastQC](https://www.bioinformatics.babraham.ac.uk/projects/fastqc/) gives general quality metrics and plots for the input reads. ![FastQC Report Image](images/fastqc.png) ----------- +--- ### Sequence Typing -*In silico* sequence typing and allele reporting using [el_gato](https://github.com/appliedbinf/el_gato) + +_In silico_ sequence typing and allele reporting using [el_gato](https://github.com/appliedbinf/el_gato) #### el_gato Reads +
      Output files @@ -102,11 +112,12 @@ Simply python program that takes in the bracken abundance report and determines - `*_reads_vs_all_ref_filt_sorted.bam `: Pileup of reads for each ST allele used for building [allele report](#allele-reports) - `*_run.log `: Program logging info - `*_ST.tsv`: Called Sequence Type -
      + Sequence-based Typing (SBT) of _Legionella pneumophila_ sequences using reads based on the identification and comparison of 7 loci (_flaA, pilE, asd, mip, mompS, proA, neuA/neuAh_) against an allele database. #### el_gato Assembly +
      Output files @@ -114,77 +125,85 @@ Sequence-based Typing (SBT) of _Legionella pneumophila_ sequences using reads ba - `*_assembly.json`: Machine-readable summary for building [el_gato pdf report](#el_gato-report) - `*_run.log `: Program logging info - `*_ST.tsv`: Called Sequence Type -
      + Sequence-based Typing (SBT) of _Legionella pneumophila_ sequences using output assemblies based on the identification and comparison of 7 loci (_flaA, pilE, asd, mip, mompS, proA, neuA/neuAh_) against an allele database. The assemblies are only run when there is an inconclusive ST call as this was found to sometimes recover the ST. _Note: if the ST results are inconclusive after both approaches have been tried, users are encouraged to review the `possible_mlsts.txt` intermediate output for that sample in the pipeline results folder under `el_gato/reads/`_ #### el_gato Report +
      Output files - `el_gato/` - `el_gato_report.pdf`: Final el_gato summary report including reads and assembly approaches -
      + Tabular summaries of locus information for all samples run through [el_gato](https://github.com/appliedbinf/el_gato) ![el_gato report](images/el_gato_report.png) #### Pysamstats +
      Output files - `el_gato/allele_stats/` - `*.allele_stats.tsv`: Per-sample summary of depth, map quality, and base quality -
      + [Pysamstats](https://github.com/alimanfoo/pysamstats) combined output containing summary of depth, map quality, and base quality for each allele #### Allele Reports + Output files - `el_gato/plots/` - `*_allele_plots.pdf`: Per-sample plots of allele depth, map quality, and base quality - + Custom report plotting of the seven ST alleles looking at depth, map quality, and base quality for each sample. ![Allele Report](images/allele_report.png) ----------- +--- ### Assembly -*De novo* assembly and quality assessment + +_De novo_ assembly and quality assessment #### SPAdes + Output files - `spades/` - `*.contigs.fa`: SPAdes assembly contigs. - `*.scaffolds.fa`: SPAdes scaffold assembly - `*.spades.log`: SPAdes logging information - + -[SPAdes](https://github.com/ablab/spades) is an *de novo* de Bruijn graph-based assembly toolkit containing various assembly pipelines. In this pipeline we are using the `--careful` assembly flag to do the assembly and using the `contigs` to do subsequent analysis steps +[SPAdes](https://github.com/ablab/spades) is an _de novo_ de Bruijn graph-based assembly toolkit containing various assembly pipelines. In this pipeline we are using the `--careful` assembly flag to do the assembly and using the `contigs` to do subsequent analysis steps #### QUAST + Output files - `quast/` - `report.html`: - `transposed_report.tsv`: - + [QUAST](https://github.com/ablab/quast) is used to generate a single report with which to evaluate the quality of the assemblies sequence across all of the samples provided to the pipeline. Input genomes are compared to a _Legionella pneumophila_ [reference genome](../data/C9_S.reference.fna) and the transposed report is parsed downstream to report a final quality score. ----------- +--- ### cgMLST and Clustering + Core Genome MultiLocus Sequence Typing (cgMLST) using chewBACCA and the [Ridom SeqSphere](https://www.cgmlst.org/ncs/schema/Lpneumophila1410/locus/) 1521-loci cgMLST schema and how it can be used for follow-up clustering. #### ChewBBACA + Output files - `chewbbaca/allele_calls/` @@ -192,26 +211,29 @@ Core Genome MultiLocus Sequence Typing (cgMLST) using chewBACCA and the [Ridom S - `results_statistics.tsv`: Per-sample summary of classification type counts - `cgMLST/cgMLST.html`: Interactive line plot that displays number of loci in the cgMLST per threshold value (95/99,100) - `cgMLST/cgMLST###.tsv`: Allele calling results that masks all non-integer classifications that can be used for downstream visualization - + [ChewBBACA](https://chewbbaca.readthedocs.io/en/latest/index.html) cgMLST according to the published [Ridom SeqSphere](https://www.cgmlst.org/ncs/schema/Lpneumophila1410/locus/) 1521-loci cgMLST schema for _L. pneumophila_. The cgMLST allele calling results can be used downstream for clustering and visualization along with the STs. ----------- +--- ### Final Quality Control + Finally summary scoring and metrics #### QUAST Scoring Script + Output files - `scored_quast_report.csv`: Scored quast report based on determined thresholds -Scored quast report based on adapted thresholds from [Gorzynski et al.](10.1016/S2666-5247(22)00231-2) to determine if the sample has any metrics that significantly deviate from the expected results +Scored quast report based on adapted thresholds from [Gorzynski et al.](<10.1016/S2666-5247(22)00231-2>) to determine if the sample has any metrics that significantly deviate from the expected results #### Final QC Checks + Output files - `overall.qc.tsv`: Final collated overall summary report @@ -220,20 +242,21 @@ Scored quast report based on adapted thresholds from [Gorzynski et al.](10.1016/ The final collated summary report that is created using the outputs from the other pipeline steps and checks some final quality criteria. The `qc_status` column will be any of the following statuses: + - Pass: The sample passes all checks! - Warn: The sample was flagged for a specific warning - Fail: The sample has failed out of the pipeline The `qc_message` column contains the reason for the `qc_status` and includes: -| Message | Associated Status | Flag Reason | -| - | - | - | -| low_lpn_abundance | WARN | Low (< 75% abundance) *L.pneumophila* abundance is not expected with isolate sequencing and may signify a problem sample | -| low_read_count | WARN | Low read count (< 300,000 reads default) has been shown to lead to poor, uninformative assemblies and sample is kicked out | -| low_n50 | WARN | Low N50 (< 100,000) scores have been shown to very negatively affect clustering outputs | -| low_exact_allele_calls | WARN | Low chewBBACA exact allele calls (< 90% called) show that there may be issues in the assembly | -| low_qc_score | WARN | Low QUAST-Analyzer QC score (< 4) shows that there may be issues in the assembly | -| no_lpn_detected | FAIL | Very little (< 10% default) *L.pneumophila* abundance flags that the sample may not be *L.pneumophila* and sample is kicked from pipeline | -| failing_read_count | FAIL | Read count below failing threshold (< 150,000 reads default) has been shown to lead to poor, uninformative assemblies and sample is kicked out | - ----------- +| Message | Associated Status | Flag Reason | +| ---------------------- | ----------------- | ---------------------------------------------------------------------------------------------------------------------------------------------- | +| low_lpn_abundance | WARN | Low (< 75% abundance) _L.pneumophila_ abundance is not expected with isolate sequencing and may signify a problem sample | +| low_read_count | WARN | Low read count (< 300,000 reads default) has been shown to lead to poor, uninformative assemblies and sample is kicked out | +| low_n50 | WARN | Low N50 (< 100,000) scores have been shown to very negatively affect clustering outputs | +| low_exact_allele_calls | WARN | Low chewBBACA exact allele calls (< 90% called) show that there may be issues in the assembly | +| low_qc_score | WARN | Low QUAST-Analyzer QC score (< 4) shows that there may be issues in the assembly | +| no_lpn_detected | FAIL | Very little (< 10% default) _L.pneumophila_ abundance flags that the sample may not be _L.pneumophila_ and sample is kicked from pipeline | +| failing_read_count | FAIL | Read count below failing threshold (< 150,000 reads default) has been shown to lead to poor, uninformative assemblies and sample is kicked out | + +--- diff --git a/docs/roadmap.md b/docs/roadmap.md index 7f2f23c..dfb124c 100644 --- a/docs/roadmap.md +++ b/docs/roadmap.md @@ -1,22 +1,26 @@ # Development Roadmap + What is going to be added. The order is not necessarily the priority in which they will be ## To Do 1. Investigations Document - - Downsampling testing - - Tool testing + + - Downsampling testing + - Tool testing 2. IRIDA-Next requirements - - Add in needed IRIDA next requirements and plugin + + - Add in needed IRIDA next requirements and plugin 3. Validation dataset and report for releases - - To make sure everything is working correctly on releases, have a validation report to go along with them + + - To make sure everything is working correctly on releases, have a validation report to go along with them 4. Requested updates (or updates we were planning) - - Filtering out non *Legionella* reads after kraken/bracken - - Other tool testing - - For resource/speed/output optimization + - Filtering out non _Legionella_ reads after kraken/bracken + - Other tool testing + - For resource/speed/output optimization ## Done diff --git a/docs/usage.md b/docs/usage.md index 34db6b1..6e0818d 100644 --- a/docs/usage.md +++ b/docs/usage.md @@ -1,42 +1,47 @@ # phac-nml/LegioVue: Usage ## Introduction -This pipeline is intended to be run on *Legionella pneumophila* paired illumina isolate sequencing data. It generates *de novo* assemblies using [`SPAdes`](https://github.com/ablab/spades), ST types using [`el_gato`](https://github.com/appliedbinf/el_gato), cgMLST calls with [`chewbbaca`](https://chewbbaca.readthedocs.io/en/latest/index.html), and a summary QC report. The outputs of the pipeline can be used for other downstream applications. All parameters have been determined based on outbreak dataset testing. + +This pipeline is intended to be run on _Legionella pneumophila_ paired illumina isolate sequencing data. It generates _de novo_ assemblies using [`SPAdes`](https://github.com/ablab/spades), ST types using [`el_gato`](https://github.com/appliedbinf/el_gato), cgMLST calls with [`chewbbaca`](https://chewbbaca.readthedocs.io/en/latest/index.html), and a summary QC report. The outputs of the pipeline can be used for other downstream applications. All parameters have been determined based on outbreak dataset testing. ## Index + - [Profiles](#profiles) - [Running the Pipeline](#running-the-pipeline) - - [`--fastq_dir`](#fastq_dir) - - [`--input`](#input) + - [`--fastq_dir`](#fastq_dir) + - [`--input`](#input) - [All Parameters](#all-parameters) - - [Required](#required) - - [Optional](#optional) + - [Required](#required) + - [Optional](#optional) - [Core Nextflow Arguments](#core-nextflow-arguments) - - [`-resume`](#resume) - - [`-c`](#c) - - [Resource Labels](#resource-labels) + - [`-resume`](#resume) + - [`-c`](#c) + - [Resource Labels](#resource-labels) - [Other Run Notes](#other-run-notes) - - [Updating the pipeline](#updating-the-pipeline) - - [Reproducibility](#reproducibility) + - [Updating the pipeline](#updating-the-pipeline) + - [Reproducibility](#reproducibility) ## Profiles -Profiles are used to specify dependency installation, resources, and how to handle pipeline jobs. You can specify more than one profile but *avoid* passing in more than one dependency managment profile (Ex. Do not use both `singularity` and `mamba`). They can be passed with `-profile ` + +Profiles are used to specify dependency installation, resources, and how to handle pipeline jobs. You can specify more than one profile but _avoid_ passing in more than one dependency managment profile (Ex. Do not use both `singularity` and `mamba`). They can be passed with `-profile ` Available: + - `conda`: Utilize conda to install dependencies and environment management - `mamba`: Utilize mamba to install dependencies and environment management - `singularity`: Utilize singularity for dependencies and environment management - `docker`: Utilize docker to for dependencies and environment management -> [!NOTE] -> `el_gato` and the plotting currently are using custom docker containers. The `el_gato` container will be returned to the proper one upon a new release of the tool +> [!NOTE] > `el_gato` and the plotting currently are using custom docker containers. The `el_gato` container will be returned to the proper one upon a new release of the tool For testing the pipeline functions correctly, you can use the `test` or `test_full` profile ## Running the Pipeline + To just get started and run the pipeline, one of the following basic commands is all that is required to do so. The only difference between the two being in how the input fastq data is specified/found: Directory Input: + ```bash nextflow run phac-nml/legiovue \ -profile \ @@ -45,6 +50,7 @@ nextflow run phac-nml/legiovue \ ``` Samplesheet CSV Input: + ```bash nextflow run phac-nml/legiovue \ -profile \ @@ -53,9 +59,11 @@ nextflow run phac-nml/legiovue \ ``` ### `--fastq_dir` + Get fastq sample data into the pipeline by specifying a directory where the files are found. Fastqs must be formatted as `_{R1,R2}\*.fastq\*` so that they can be paired based on the name. Note that at the moment everything before the first `_R1/_R2` is kept as the sample name. Example directory with 3 samples: + ``` ├── TDS-01_R1.fastq.gz @@ -67,6 +75,7 @@ Example directory with 3 samples: ``` ### `--input` + Get fastq sample data into the pipeline by creating a samplesheet CSV file with the header line `sample,fastq_1,fastq_2`. The outputs are named based on the given sample name and the data is input based on the path specified under `fastq_1` and `fastq_2`. The fastq files can end with `.fq`, `.fq.gz`, `.fastq`, or `.fastq.gz` to be valid Example: @@ -78,12 +87,14 @@ Example: | more_sample_data | fastqs/more_sample_data_R1.fq | fastqs/more_sample_data_R2.fq | ## All Parameters + Use `--help` to see all options formatted on the command line Use `--version` to see version information All of the required and optional parameters are defined as follows: ### Required + It is required to pick one of the following to get fastq data into the pipeline | Parameter | Description | Type | Default | Notes | | - | - | - | - | - | @@ -91,20 +102,21 @@ It is required to pick one of the following to get fastq data into the pipeline | --input | Path to CSV file containing information on the paired fastq files | Path | null | See [--input](#input) | ### Optional -| Parameter | Description | Type | Default | Notes | -| - | - | - | - | - | -| --outdir | Directory name to output results to | Str | 'results' | | -| --min_abundance_percent | Minimum *L. pneumophila* abundance required after bracken to continue sample on | Float | 10.0 | Very permissive for now | -| --min_reads | Minimum reads required after trimmomatic to continue sample on | Int | 150,000 | Under 150,000 reads samples don't usually provide enough info for proper clustering / STs | -| --kraken2_db | Path to standard `kraken2` database for detecting *L. pneumophila* reads | Path | s3://genome-idx/kraken/standard_08gb_20240904 | Default is AWS hosted database by developers. It is better to use your own if you have one | -| --quast_ref | Path to reference sequence for some of the `quast` metrics | Path | data/C9_S.reference.fna | C9 was picked as a default reference but any good sequence will work | -| skip_el_gato | Flag to skip running el_gato sequence typing | Bool | False | | -| skip_plotting | Flag to skip running the el_gato allele plotting | Bool | False | | -| --prepped_schema | Path to a prepped `chewbbaca` schema to save running the prep command | Path | data/SeqSphere_1521_schema | Provided with pipeline | -| --schema_targets | Path to schema targets to prep for `chewbbaca` | Path | null | | -| --max_memory | Maximum memory allowed to be given to a job | Str | 128.GB | | -| --max_cpus | Maximum cpus allowed to be given to a job | Int | 16 | | -| --max_time | Maximum time allowed to be given to a job | Str | 240.h' | | + +| Parameter | Description | Type | Default | Notes | +| ----------------------- | ------------------------------------------------------------------------------- | ----- | --------------------------------------------- | ------------------------------------------------------------------------------------------ | +| --outdir | Directory name to output results to | Str | 'results' | | +| --min_abundance_percent | Minimum _L. pneumophila_ abundance required after bracken to continue sample on | Float | 10.0 | Very permissive for now | +| --min_reads | Minimum reads required after trimmomatic to continue sample on | Int | 150,000 | Under 150,000 reads samples don't usually provide enough info for proper clustering / STs | +| --kraken2_db | Path to standard `kraken2` database for detecting _L. pneumophila_ reads | Path | s3://genome-idx/kraken/standard_08gb_20240904 | Default is AWS hosted database by developers. It is better to use your own if you have one | +| --quast_ref | Path to reference sequence for some of the `quast` metrics | Path | data/C9_S.reference.fna | C9 was picked as a default reference but any good sequence will work | +| skip_el_gato | Flag to skip running el_gato sequence typing | Bool | False | | +| skip_plotting | Flag to skip running the el_gato allele plotting | Bool | False | | +| --prepped_schema | Path to a prepped `chewbbaca` schema to save running the prep command | Path | data/SeqSphere_1521_schema | Provided with pipeline | +| --schema_targets | Path to schema targets to prep for `chewbbaca` | Path | null | | +| --max_memory | Maximum memory allowed to be given to a job | Str | 128.GB | | +| --max_cpus | Maximum cpus allowed to be given to a job | Int | 16 | | +| --max_time | Maximum time allowed to be given to a job | Str | 240.h' | | ## Core Nextflow Arguments @@ -112,21 +124,26 @@ It is required to pick one of the following to get fastq data into the pipeline > These options are part of Nextflow and use a _single_ hyphen (pipeline parameters use a double-hyphen). ### `-resume` + Specify this when restarting a pipeline. Nextflow will use cached results from any pipeline steps where the inputs are the same, continuing from where it got to previously. For input to be considered the same, not only the names must be identical but the files' contents as well. For more info about this parameter, see [this blog post](https://www.nextflow.io/blog/2019/demystifying-nextflow-resume.html). You can also supply a run name to resume a specific run: `-resume [run-name]`. Use the `nextflow log` command to show previous run names. ### `-c` + Specify the path to a specific config file (this is a core Nextflow command). See the [nf-core website documentation](https://nf-co.re/usage/configuration) for more information. #### Resource Labels + The following resource labels can be adjusted in a custom config file: + - `process_single` - Default: 1cpus, 4GB memory - `process_low` - Default: 2cpus, 8GB memory - `process_medium` - Default: 4cpus, 24GB memory - `process_high` - Default: 8cpus, 48GB memory ## Other Run Notes + If you wish to repeatedly use the same parameters for multiple runs, rather than specifying each flag in the command, you can specify these in a params file. Pipeline settings can be provided in a `yaml` or `json` file via `-params-file `. @@ -143,11 +160,12 @@ nextflow run phac-nml/legiovue -profile docker -params-file params.yaml with `params.yaml` containing: ```yaml -fastq_dir: './fastqs' -outdir: './results/' +fastq_dir: "./fastqs" +outdir: "./results/" ``` ### Updating the pipeline + When you run the above command, Nextflow automatically pulls the pipeline code from GitHub and stores it as a cached version. When running the pipeline after this, it will always use the cached version if available - even if the pipeline has been updated since. To make sure that you're running the latest version of the pipeline, make sure that you regularly update the cached version of the pipeline: ```bash @@ -155,4 +173,5 @@ nextflow pull phac-nml/legiovue ``` ### Reproducibility + It is a good idea to specify a pipeline version when running the pipeline on your data. This ensures that a specific version of the pipeline code and software are used when you run your pipeline. If you keep using the same tag, you'll be running the same version of the pipeline, even if there have been changes to the code since. diff --git a/modules.json b/modules.json index ae2e1f7..b2ee032 100644 --- a/modules.json +++ b/modules.json @@ -1,17 +1,17 @@ { - "name": "phac-nml/LegioVue", - "homePage": "", - "repos": { - "https://github.com/nf-core/modules.git": { - "modules": { - "nf-core": { - "fastqc": { - "branch": "master", - "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": ["modules"] - } + "name": "phac-nml/LegioVue", + "homePage": "", + "repos": { + "https://github.com/nf-core/modules.git": { + "modules": { + "nf-core": { + "fastqc": { + "branch": "master", + "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", + "installed_by": ["modules"] + } + } + } } - } } - } } diff --git a/nextflow_schema.json b/nextflow_schema.json index 171fdc9..262786a 100644 --- a/nextflow_schema.json +++ b/nextflow_schema.json @@ -157,9 +157,7 @@ "hidden": true } }, - "required": [ - "outdir" - ] + "required": ["outdir"] } }, "allOf": [ diff --git a/nf-test.config b/nf-test.config index 3a5f449..2fa82ad 100644 --- a/nf-test.config +++ b/nf-test.config @@ -3,6 +3,6 @@ config { testsDir "tests" workDir ".nf-test" configFile "tests/nextflow.config" - profile "singularity" + profile "docker" } From f30c373f50aa2cd6585d3d537da6760db682a81a Mon Sep 17 00:00:00 2001 From: Darian Hole Date: Fri, 3 Jan 2025 14:11:51 -0600 Subject: [PATCH 16/38] finalize stub test, update version --- CHANGELOG.md | 25 +++++++++++++++++++++++++ nextflow.config | 2 +- tests/main.nf.test | 1 + tests/nextflow.config | 12 +++++------- 4 files changed, 32 insertions(+), 8 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 64465f1..179aaad 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,31 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## v0.2.0 - [2025-01-03] + +### `Added` + +- `nf-schema` plugin and associated functions + - Schemas + - Param summary, param help, version + - samplesheetToList +- `params.input ` to allow input samplesheets +- `iridanext` plugin + - The associated data will come out in 0.3.0 +- Most of the required nf-core files +- CI tests and linting + +### `Changed` + +- Logic for input data +- Logic for skipping specific modules + - Allowed to skip el_gato ST + - Allowed to skip el_gato allele plotting + +### `Updated` + +- Usage and README docs for the input adjustments + ## v0.1.0 - [Beta-Test-2024-11-29] ### `Added` diff --git a/nextflow.config b/nextflow.config index 4881681..c5be56d 100644 --- a/nextflow.config +++ b/nextflow.config @@ -222,7 +222,7 @@ manifest { description = """Legionella pneumophila WGS analysis""" mainScript = "main.nf" nextflowVersion = "!>=23.10.1" - version = "0.1.0" + version = "0.2.0" doi = "" defaultBranch = "main" } diff --git a/tests/main.nf.test b/tests/main.nf.test index 6499538..422ddaa 100644 --- a/tests/main.nf.test +++ b/tests/main.nf.test @@ -71,6 +71,7 @@ nextflow_pipeline { fastq_dir = "$baseDir/tests/test_data/" outdir = "results" min_reads = 0 + kraken2_db = "./" } } then { diff --git a/tests/nextflow.config b/tests/nextflow.config index e5d08ad..1120912 100644 --- a/tests/nextflow.config +++ b/tests/nextflow.config @@ -7,14 +7,12 @@ process { resourceLimits = [ cpus: 2, - memory: '8.GB', + memory: '4.GB', time: '2.h' ] } -params { - // Limit resources for github actions - max_cpus = 1 - max_memory = '8.GB' - max_time = '2.h' -} +// Limit resources for github actions +params.max_cpus = 2 +params.max_memory = '4.GB' +params.max_time = '2.h' From 4353b81b1bc0789964277d346037d10585d250b3 Mon Sep 17 00:00:00 2001 From: Darian Hole Date: Fri, 3 Jan 2025 15:11:43 -0600 Subject: [PATCH 17/38] see if nf-tests work now --- conf/test.config | 2 +- conf/test_full.config | 2 +- tests/nextflow.config | 19 ++++++++++++++----- 3 files changed, 16 insertions(+), 7 deletions(-) diff --git a/conf/test.config b/conf/test.config index 55223aa..2690d22 100644 --- a/conf/test.config +++ b/conf/test.config @@ -32,7 +32,7 @@ params { skip_plotting = true // Limit resources for github actions - max_cpus = 1 + max_cpus = 2 max_memory = '8.GB' max_time = '2.h' } diff --git a/conf/test_full.config b/conf/test_full.config index 39ab128..c89ca04 100644 --- a/conf/test_full.config +++ b/conf/test_full.config @@ -28,7 +28,7 @@ params { min_reads = 100 // Limit resources for github actions - max_cpus = 1 + max_cpus = 2 max_memory = '8.GB' max_time = '2.h' } diff --git a/tests/nextflow.config b/tests/nextflow.config index 1120912..dd0ce5a 100644 --- a/tests/nextflow.config +++ b/tests/nextflow.config @@ -5,14 +5,23 @@ */ // Resource limits are for nextflow >= 24.04.0 so also have to use the max_* params process { + cpus = 2 + memory = '4.GB' + time = '2.h' + resourceLimits = [ cpus: 2, memory: '4.GB', - time: '2.h' + time: '1.h' ] } -// Limit resources for github actions -params.max_cpus = 2 -params.max_memory = '4.GB' -params.max_time = '2.h' +params { + config_profile_name = 'Test profile' + config_profile_description = 'Minimal test dataset to check pipeline function' + + // Limit resources for github actions + max_cpus = 2 + max_memory = '4.GB' + max_time = '2.h' +} From 2fc0a3f9c7dd22ae9699dbf48ed6287f4bc493f0 Mon Sep 17 00:00:00 2001 From: Darian Hole Date: Mon, 6 Jan 2025 12:44:20 -0600 Subject: [PATCH 18/38] add in irida-next config and outputs --- CHANGELOG.md | 1 + README.md | 2 +- bin/combine_qc_data.py | 2 +- conf/iridanext.config | 31 +++++++++++++++++++++++++++++++ docs/output.md | 2 +- modules/local/qc.nf | 8 ++++---- modules/local/utils.nf | 13 ++++++------- nextflow.config | 3 +++ tests/main.nf.test | 1 + tests/nextflow.config | 16 +++------------- workflows/legiovue.nf | 2 +- 11 files changed, 53 insertions(+), 28 deletions(-) create mode 100644 conf/iridanext.config diff --git a/CHANGELOG.md b/CHANGELOG.md index 179aaad..b91dad7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -19,6 +19,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### `Changed` +- Final quality metrics output is a CSV now to work with IRIDA next - Logic for input data - Logic for skipping specific modules - Allowed to skip el_gato ST diff --git a/README.md b/README.md index 15b3574..10b7e31 100644 --- a/README.md +++ b/README.md @@ -104,7 +104,7 @@ All of the outputs can be found in [the output docs](./docs/output.md). All outp - `spades/`: Contains the SPAdes assemblies (contigs as .fasta files) for each sample. - `el_gato/el_gato_st.tsv`: Summarized el_gato ST calls for all samples. - `chewbbaca/allele_calls/cgMLST/`: cgMLST profiles that can be used for downstream visualization. -- `overall.qc.tsv`: Final quality summary report for each sample throughout the different pipeline steps. Important quality flags can be found in this file. +- `overall.qc.csv`: Final quality summary report for each sample throughout the different pipeline steps. Important quality flags can be found in this file. ## Pipeline Components and Settings diff --git a/bin/combine_qc_data.py b/bin/combine_qc_data.py index 6654bfc..b3a6c1b 100755 --- a/bin/combine_qc_data.py +++ b/bin/combine_qc_data.py @@ -278,7 +278,7 @@ def main() -> None: outdict['qc_message'] = ';'.join(warn_qual_criteria) df = pd.DataFrame([outdict]) - df.to_csv(f'{sample}.qc.tsv', sep='\t', index=False) + df.to_csv(f'{sample}.qc.csv', sep=',', index=False) if __name__ == "__main__": diff --git a/conf/iridanext.config b/conf/iridanext.config new file mode 100644 index 0000000..2225fda --- /dev/null +++ b/conf/iridanext.config @@ -0,0 +1,31 @@ +/* +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Config for IRIDA-Next Plugin +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Set how to find wanted files +---------------------------------------------------------------------------------------- +*/ +iridanext { + enabled = true + output { + path = "${params.outdir}/iridanext.output.json.gz" + overwrite = true + files { + global = [ + "**/el_gato/el_gato_st.tsv", + "**/chewbbaca/allele_calls/results_statistics.tsv", + "**/chewbbaca/allele_calls/cgMLST/cgMLST100.tsv", + "**/chewbbaca/allele_calls/cgMLST/cgMLST99.tsv" + ] + samples = ["**/spades/*.contigs.fa"] + } + metadata { + samples { + csv { + path = "**/overall.qc.csv" + idcol = "sample" + } + } + } + } +} diff --git a/docs/output.md b/docs/output.md index e83138c..80dfbe0 100644 --- a/docs/output.md +++ b/docs/output.md @@ -236,7 +236,7 @@ Scored quast report based on adapted thresholds from [Gorzynski et al.](<10.1016 Output files -- `overall.qc.tsv`: Final collated overall summary report +- `overall.qc.csv`: Final collated overall summary report The final collated summary report that is created using the outputs from the other pipeline steps and checks some final quality criteria. diff --git a/modules/local/qc.nf b/modules/local/qc.nf index ffd5a39..e70b9a1 100644 --- a/modules/local/qc.nf +++ b/modules/local/qc.nf @@ -15,7 +15,7 @@ process COMBINE_SAMPLE_DATA { path(chewbbaca_stats) output: - tuple val(meta), path("*.tsv"), emit: tsv + tuple val(meta), path("*.csv"), emit: csv path "versions.yml", emit: versions when: @@ -41,17 +41,17 @@ process COMBINE_SAMPLE_DATA { cat <<-END_VERSIONS > versions.yml "${task.process}": - combine_qc_data: 0.1.0 + combine_qc_data: 0.2.0 END_VERSIONS """ stub: """ - touch ${meta.id}.tsv + touch ${meta.id}.csv cat <<-END_VERSIONS > versions.yml "${task.process}": - combine_qc_data: 0.1.0 + combine_qc_data: 0.2.0 END_VERSIONS """ } diff --git a/modules/local/utils.nf b/modules/local/utils.nf index 66f0a12..deb45ad 100644 --- a/modules/local/utils.nf +++ b/modules/local/utils.nf @@ -94,7 +94,7 @@ process CSVTK_COMBINE_STATS { process CSVTK_COMBINE{ label 'process_single' - publishDir "${params.outdir}", pattern: "*.tsv", mode: 'copy' + publishDir "${params.outdir}", pattern: "*.csv", mode: 'copy' conda "bioconda::csvtk=0.30.0" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? @@ -102,10 +102,10 @@ process CSVTK_COMBINE{ 'biocontainers/csvtk:0.30.0--h9ee0642_0' }" input: - path tsvs + path csvs output: - path "overall.qc.tsv", emit: tsv + path "overall.qc.csv", emit: csv path "versions.yml", emit: versions when: @@ -115,9 +115,8 @@ process CSVTK_COMBINE{ """ csvtk \\ concat \\ - -tT \\ - $tsvs \\ - > overall.qc.tsv + $csvs \\ + > overall.qc.csv cat <<-END_VERSIONS > versions.yml "${task.process}": @@ -127,7 +126,7 @@ process CSVTK_COMBINE{ stub: """ - touch overall.qc.tsv + touch overall.qc.csv cat <<-END_VERSIONS > versions.yml "${task.process}": diff --git a/nextflow.config b/nextflow.config index c5be56d..45916de 100644 --- a/nextflow.config +++ b/nextflow.config @@ -55,6 +55,9 @@ includeConfig 'conf/base.config' // ToDoMaybeEventually - Convert more process args to the modules config includeConfig 'conf/modules.config' +// IRIDA-Next config +includeConfig 'conf/iridanext.config' + // Profiles profiles { debug { diff --git a/tests/main.nf.test b/tests/main.nf.test index 422ddaa..0566b19 100644 --- a/tests/main.nf.test +++ b/tests/main.nf.test @@ -62,6 +62,7 @@ nextflow_pipeline { } //--- Test 4 + // Kraken dir just set to nothing as its not needed for stub run test("Stub Run Test") { tag "success" options "-stub-run" diff --git a/tests/nextflow.config b/tests/nextflow.config index dd0ce5a..20dac0b 100644 --- a/tests/nextflow.config +++ b/tests/nextflow.config @@ -5,10 +5,6 @@ */ // Resource limits are for nextflow >= 24.04.0 so also have to use the max_* params process { - cpus = 2 - memory = '4.GB' - time = '2.h' - resourceLimits = [ cpus: 2, memory: '4.GB', @@ -16,12 +12,6 @@ process { ] } -params { - config_profile_name = 'Test profile' - config_profile_description = 'Minimal test dataset to check pipeline function' - - // Limit resources for github actions - max_cpus = 2 - max_memory = '4.GB' - max_time = '2.h' -} +params.max_memory = "4.GB" +params.max_cpus = 2 +params.max_time = "1.h" diff --git a/workflows/legiovue.nf b/workflows/legiovue.nf index ce572b6..9597c61 100644 --- a/workflows/legiovue.nf +++ b/workflows/legiovue.nf @@ -231,7 +231,7 @@ workflow LEGIOVUE { ) CSVTK_COMBINE( - COMBINE_SAMPLE_DATA.out.tsv + COMBINE_SAMPLE_DATA.out.csv .collect{ it[1] } ) From 830cecf59885cdb9cb5416cbb77c21ea966b8363 Mon Sep 17 00:00:00 2001 From: Darian Hole Date: Mon, 6 Jan 2025 13:39:53 -0600 Subject: [PATCH 19/38] testing if adding params works for github ci --- tests/main.nf.test | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/tests/main.nf.test b/tests/main.nf.test index 0566b19..2228e31 100644 --- a/tests/main.nf.test +++ b/tests/main.nf.test @@ -62,7 +62,6 @@ nextflow_pipeline { } //--- Test 4 - // Kraken dir just set to nothing as its not needed for stub run test("Stub Run Test") { tag "success" options "-stub-run" @@ -72,7 +71,9 @@ nextflow_pipeline { fastq_dir = "$baseDir/tests/test_data/" outdir = "results" min_reads = 0 - kraken2_db = "./" + params.max_memory = "4.GB" + params.max_cpus = 2 + params.max_time = "1.h" } } then { From e5aa75bf019aa4e063cf06c25ad28bf5ed8d45be Mon Sep 17 00:00:00 2001 From: Darian Hole Date: Mon, 6 Jan 2025 14:35:39 -0600 Subject: [PATCH 20/38] test resource updates --- .github/workflows/ci.yml | 2 +- tests/main.nf.test | 7 +++---- tests/nextflow.config | 4 ++-- 3 files changed, 6 insertions(+), 7 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index cf696be..f1bfa83 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -51,7 +51,7 @@ jobs: - name: Run nf-test run: | - nf-test test + nf-test test --verbose - name: "Run pipeline with test data ${{ matrix.NXF_VER }} | ${{ matrix.test_name }} | docker" run: | diff --git a/tests/main.nf.test b/tests/main.nf.test index 2228e31..e74e91c 100644 --- a/tests/main.nf.test +++ b/tests/main.nf.test @@ -71,9 +71,9 @@ nextflow_pipeline { fastq_dir = "$baseDir/tests/test_data/" outdir = "results" min_reads = 0 - params.max_memory = "4.GB" - params.max_cpus = 2 - params.max_time = "1.h" + max_memory = "8.GB" + max_cpus = 2 + max_time = "1.h" } } then { @@ -82,7 +82,6 @@ nextflow_pipeline { // Channels and Files assert path("$launchDir/results").exists() - assert workflow.trace.failed().size() == 0 } } } diff --git a/tests/nextflow.config b/tests/nextflow.config index 20dac0b..6eb18a4 100644 --- a/tests/nextflow.config +++ b/tests/nextflow.config @@ -7,11 +7,11 @@ process { resourceLimits = [ cpus: 2, - memory: '4.GB', + memory: '8.GB', time: '1.h' ] } -params.max_memory = "4.GB" +params.max_memory = "8.GB" params.max_cpus = 2 params.max_time = "1.h" From 2c795403fc3e68854d3888d983a528068fedd77b Mon Sep 17 00:00:00 2001 From: Darian Hole Date: Thu, 9 Jan 2025 15:49:24 -0600 Subject: [PATCH 21/38] fix up test issues --- tests/main.nf.test | 1 + workflows/legiovue.nf | 3 ++- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/tests/main.nf.test b/tests/main.nf.test index e74e91c..f9d229b 100644 --- a/tests/main.nf.test +++ b/tests/main.nf.test @@ -82,6 +82,7 @@ nextflow_pipeline { // Channels and Files assert path("$launchDir/results").exists() + assert workflow.trace.failed().size() == 0 } } } diff --git a/workflows/legiovue.nf b/workflows/legiovue.nf index 9597c61..2738dd8 100644 --- a/workflows/legiovue.nf +++ b/workflows/legiovue.nf @@ -123,6 +123,7 @@ workflow LEGIOVUE { // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // // 6. El_Gato - Second round with assemblies for failing samples only // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // + ch_el_gato_report = Channel.value([]) if ( ! params.skip_el_gato ){ EL_GATO_READS( ch_filtered_paired_fastqs.pass @@ -153,6 +154,7 @@ workflow LEGIOVUE { .collectFile(name: 'assembly_st.tsv', keepHeader: true) .ifEmpty([]) ) + ch_el_gato_report = COMBINE_EL_GATO.out.report.collect().ifEmpty([]) // PDF Report // Have to rejoin the el_gato reads output as its hard to remake a csv @@ -216,7 +218,6 @@ workflow LEGIOVUE { // Create some value channels using `.collect()` ch_quast_report = QUAST.out.report.collect().ifEmpty([]) ch_quast_score = SCORE_QUAST.out.report.collect().ifEmpty([]) - ch_el_gato_report = COMBINE_EL_GATO.out.report.collect().ifEmpty([]) ch_quast_report = QUAST.out.report.collect().ifEmpty([]) ch_allele_stats = CHEWBBACA_ALLELE_CALL.out.statistics.collect().ifEmpty([]) From 848736d22aa53ccf38e443461d97e4bbb9f68f54 Mon Sep 17 00:00:00 2001 From: Darian Hole Date: Thu, 9 Jan 2025 16:15:29 -0600 Subject: [PATCH 22/38] adjust plotting to be optparse and using mulled container --- bin/plot_genome_cov.R | 19 ++++++++++++------- envs/plotting-env.yml | 2 +- modules/local/plotting.nf | 14 ++++++-------- modules/local/spades.nf | 1 - 4 files changed, 19 insertions(+), 17 deletions(-) diff --git a/bin/plot_genome_cov.R b/bin/plot_genome_cov.R index 6716240..1aae933 100755 --- a/bin/plot_genome_cov.R +++ b/bin/plot_genome_cov.R @@ -4,7 +4,7 @@ ## Legionella ST allele to help investigations on ## missing or non-called STs ## ------------------------------------------------ ## -library(argparse) +library(optparse) library(data.table) library(ggplot2) library(patchwork) @@ -70,12 +70,17 @@ create_plots <- function(gene, df) { ## Main Script ## ## ----------- ## # Args -parser <- ArgumentParser() -parser$add_argument("-i", "--input_tsv", - help="Path to pysamstats TSV file with mapQ and baseQ annotated") -parser$add_argument("-o", "--outfile", default="el_gato_allele_plots.pdf", - help="Output plot filename") -args <- parser$parse_args() +option_list <- list( + make_option( + c("-i", "--input_tsv"), + help="Path to pysamstats TSV file with mapQ and baseQ annotated" + ), + make_option( + c("-o", "--outfile"), default="el_gato_allele_plots.pdf", + help="Output plot filename") + ) +opt_parser <- OptionParser(option_list = option_list) +args <- parse_args(opt_parser) # Split based on chrom df <- read.table(args$input_tsv, sep = '\t', header = TRUE) diff --git a/envs/plotting-env.yml b/envs/plotting-env.yml index fe5fade..9b9521a 100644 --- a/envs/plotting-env.yml +++ b/envs/plotting-env.yml @@ -4,7 +4,7 @@ channels: - bioconda dependencies: - r-base - - r-argparse + - r-optparse - r-tidyverse - r-patchwork - samtools diff --git a/modules/local/plotting.nf b/modules/local/plotting.nf index 4d6be69..70d0196 100644 --- a/modules/local/plotting.nf +++ b/modules/local/plotting.nf @@ -1,15 +1,17 @@ process PLOT_PYSAMSTATS_TSV { tag "$meta.id" label 'process_low' - // Apptainer v1.3.4-1.el9 (not sure if other versions) issue that I have to resolve - // As its just affects a plot output better to ignore the error for now + // As its just a plot output better to ignore errors for now label 'error_ignore' publishDir "${params.outdir}/el_gato/plots", pattern: "*_allele_plots.pdf", mode: 'copy' conda "$projectDir/envs/plotting-env.yml" // Custom built for this... - container "docker://darianhole/legio-plotting:0.1.0" + // container "docker://docker.io/darianhole/legio-plotting:0.1.0" + container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? + 'https://depot.galaxyproject.org/singularity/mulled-v2-b2ec1fea5791d428eebb8c8ea7409c350d31dada:a447f6b7a6afde38352b24c30ae9cd6e39df95c4-1' : + 'biocontainers/mulled-v2-b2ec1fea5791d428eebb8c8ea7409c350d31dada:a447f6b7a6afde38352b24c30ae9cd6e39df95c4-1' }" input: tuple val(meta), path(tsv) @@ -22,12 +24,8 @@ process PLOT_PYSAMSTATS_TSV { task.ext.when == null || task.ext.when script: - // Special handling of using executables based on a docker micromamba image - // https://stackoverflow.com/a/78027234 - // https://micromamba-docker.readthedocs.io/en/latest/faq.html#how-can-i-use-a-mambaorg-micromamba-based-image-with-apptainer - def run_cmd = workflow.containerEngine == 'singularity' || workflow.containerEngine == 'apptainer' ? '/usr/local/bin/_entrypoint.sh plot_genome_cov.R' : 'plot_genome_cov.R' """ - $run_cmd \\ + plot_genome_cov.R \\ --input_tsv $tsv \\ --outfile ${meta.id}_allele_plots.pdf diff --git a/modules/local/spades.nf b/modules/local/spades.nf index c0d3ab4..0811920 100644 --- a/modules/local/spades.nf +++ b/modules/local/spades.nf @@ -25,7 +25,6 @@ process SPADES { script: def reads_paired_in = "-1 ${reads_paired[0]} -2 ${reads_paired[1]}" - def reads_unpaired_in = "--s1 ${reads_single[0]} --s2 ${reads_single[1]}" """ # Have to check if we have data in the unpaired reads # Doing it with bash for now as the relative nextflow file constructor path From cf6f9696ab7bb8b297a598cb0f4c9938c5414b8c Mon Sep 17 00:00:00 2001 From: Darian Hole Date: Mon, 13 Jan 2025 10:05:14 -0600 Subject: [PATCH 23/38] adjust chewbbaca to be found by iridanext --- conf/iridanext.config | 1 + modules/local/chewbbaca.nf | 5 +++++ 2 files changed, 6 insertions(+) diff --git a/conf/iridanext.config b/conf/iridanext.config index 2225fda..7f3f36e 100644 --- a/conf/iridanext.config +++ b/conf/iridanext.config @@ -11,6 +11,7 @@ iridanext { path = "${params.outdir}/iridanext.output.json.gz" overwrite = true files { + idkey = "id" global = [ "**/el_gato/el_gato_st.tsv", "**/chewbbaca/allele_calls/results_statistics.tsv", diff --git a/modules/local/chewbbaca.nf b/modules/local/chewbbaca.nf index 07f947e..8506ee3 100644 --- a/modules/local/chewbbaca.nf +++ b/modules/local/chewbbaca.nf @@ -47,6 +47,7 @@ process CHEWBBACA_ALLELE_CALL { label 'process_medium' publishDir "${params.outdir}/chewbbaca", pattern: "allele_calls", mode: 'copy' + publishDir "${params.outdir}/chewbbaca", pattern: "allele_calls/results_statistics.tsv", mode: 'copy' conda "bioconda::chewbbaca=3.3.5" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? @@ -102,6 +103,8 @@ process CHEWBBACA_EXTRACT_CGMLST { label 'process_low' publishDir "${params.outdir}/chewbbaca/$allele_calls", pattern: "cgMLST", mode: 'copy' + publishDir "${params.outdir}/chewbbaca/$allele_calls", pattern: "cgMLST/cgMLST100.tsv", mode: 'copy' + publishDir "${params.outdir}/chewbbaca/$allele_calls", pattern: "cgMLST/cgMLST99.tsv", mode: 'copy' conda "bioconda::chewbbaca=3.3.5" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? @@ -113,6 +116,8 @@ process CHEWBBACA_EXTRACT_CGMLST { output: path "cgMLST", emit: cgmlst + path "cgMLST/cgMLST100.tsv", emit: cgmlst100 + path "cgMLST/cgMLST99.tsv", emit: cgmlst99 path "versions.yml", emit: versions when: From b2569a1cb096a1f9d76ab1ef7bc61be7769fe529 Mon Sep 17 00:00:00 2001 From: Darian Hole Date: Tue, 14 Jan 2025 10:17:40 -0600 Subject: [PATCH 24/38] move publishDir to modules.conf, add in nf-prov --- conf/modules.config | 131 ++++++++++++++++++++++++++++++++++- modules/local/bracken.nf | 3 - modules/local/chewbbaca.nf | 34 +++++---- modules/local/el_gato.nf | 14 ---- modules/local/kraken.nf | 3 - modules/local/plotting.nf | 2 - modules/local/quast.nf | 5 -- modules/local/spades.nf | 3 - modules/local/trimmomatic.nf | 3 - modules/local/utils.nf | 4 -- nextflow.config | 13 +++- nextflow_schema.json | 9 +++ workflows/legiovue.nf | 2 +- 13 files changed, 171 insertions(+), 55 deletions(-) diff --git a/conf/modules.config b/conf/modules.config index 21be542..b09885e 100644 --- a/conf/modules.config +++ b/conf/modules.config @@ -10,11 +10,140 @@ ---------------------------------------------------------------------------------------- */ process { + + withName: KRAKEN2_CLASSIFY { + publishDir = [ + path: { "${params.outdir}/kraken_bracken" }, + mode: params.publish_dir_mode, + saveAs: { filename -> filename.equals('versions.yml') ? null : filename } + ] + } + + withName: BRACKEN { + publishDir = [ + path: { "${params.outdir}/kraken_bracken" }, + mode: params.publish_dir_mode, + saveAs: { filename -> filename.equals('versions.yml') ? null : filename } + ] + } + + withName: TRIMMOMATIC { + publishDir = [ + path: { "${params.outdir}/trimmomatic" }, + mode: params.publish_dir_mode, + saveAs: { filename -> filename.equals('versions.yml') ? null : filename } + ] + } + withName: FASTQC { publishDir = [ path: { "${params.outdir}/fastqc" }, - mode: 'copy', + mode: params.publish_dir_mode, pattern: '*.html' ] } + + withName: SPADES { + publishDir = [ + path: { "${params.outdir}/spades" }, + mode: params.publish_dir_mode, + saveAs: { filename -> filename.equals('versions.yml') ? null : filename } + ] + } + + withName: QUAST { + publishDir = [ + path: { "${params.outdir}/quast" }, + mode: params.publish_dir_mode, + saveAs: { filename -> filename.equals('versions.yml') ? null : filename } + ] + } + + withName: SCORE_QUAST { + publishDir = [ + path: { "${params.outdir}/quast" }, + mode: params.publish_dir_mode, + saveAs: { filename -> filename.equals('versions.yml') ? null : filename } + ] + } + + withName: EL_GATO_READS { + publishDir = [ + path: { "${params.outdir}/el_gato/reads" }, + mode: params.publish_dir_mode, + saveAs: { filename -> filename.equals('versions.yml') ? null : filename } + ] + } + + withName: EL_GATO_ASSEMBLY { + publishDir = [ + path: { "${params.outdir}/el_gato/assembly" }, + mode: params.publish_dir_mode, + saveAs: { filename -> filename.equals('versions.yml') ? null : filename } + ] + } + + withName: EL_GATO_REPORT { + publishDir = [ + path: { "${params.outdir}/el_gato" }, + mode: params.publish_dir_mode, + saveAs: { filename -> filename.equals('versions.yml') ? null : filename } + ] + } + + withName: COMBINE_EL_GATO { + publishDir = [ + path: { "${params.outdir}/el_gato" }, + mode: params.publish_dir_mode, + saveAs: { filename -> filename.equals('versions.yml') ? null : filename } + ] + } + + withName: CSVTK_COMBINE_STATS { + publishDir = [ + path: { "${params.outdir}/el_gato/allele_stats" }, + mode: params.publish_dir_mode, + saveAs: { filename -> filename.equals('versions.yml') ? null : filename } + ] + } + + withName: PLOT_PYSAMSTATS_TSV { + publishDir = [ + path: { "${params.outdir}/el_gato/plots" }, + mode: params.publish_dir_mode, + saveAs: { filename -> filename.equals('versions.yml') ? null : filename } + ] + } + + withName: CHEWBBACA_PREP_EXTERNAL_SCHEMA { + publishDir = [ + path: { "${params.outdir}/chewbbaca" }, + mode: params.publish_dir_mode, + saveAs: { filename -> filename.equals('versions.yml') ? null : filename } + ] + } + + withName: CHEWBBACA_ALLELE_CALL { + publishDir = [ + path: { "${params.outdir}/chewbbaca" }, + mode: params.publish_dir_mode, + saveAs: { filename -> filename.equals('versions.yml') ? null : filename } + ] + } + + withName: CHEWBBACA_EXTRACT_CGMLST { + publishDir = [ + path: { "${params.outdir}/chewbbaca/allele_calls" }, + mode: params.publish_dir_mode, + saveAs: { filename -> filename.equals('versions.yml') ? null : filename } + ] + } + + withName: CSVTK_COMBINE { + publishDir = [ + path: { "${params.outdir}" }, + mode: params.publish_dir_mode, + saveAs: { filename -> filename.equals('versions.yml') ? null : filename } + ] + } } diff --git a/modules/local/bracken.nf b/modules/local/bracken.nf index 1b730cd..e87431e 100644 --- a/modules/local/bracken.nf +++ b/modules/local/bracken.nf @@ -2,9 +2,6 @@ process BRACKEN { tag "$meta.id" label 'process_low' - publishDir "${params.outdir}/kraken_bracken", pattern: "*-abundances.tsv", mode: 'copy' - publishDir "${params.outdir}/kraken_bracken", pattern: "*-braken-breakdown.tsv", mode: 'copy' - conda "bioconda::bracken=2.9" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? 'https://depot.galaxyproject.org/singularity/bracken:2.9--py38h2494328_0': diff --git a/modules/local/chewbbaca.nf b/modules/local/chewbbaca.nf index 8506ee3..177a54a 100644 --- a/modules/local/chewbbaca.nf +++ b/modules/local/chewbbaca.nf @@ -1,8 +1,6 @@ process CHEWBBACA_PREP_EXTERNAL_SCHEMA { label 'process_low' - publishDir "${params.outdir}/chewbbaca", pattern: "prepped_schema", mode: 'copy' - conda "bioconda::chewbbaca=3.3.5" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? 'https://depot.galaxyproject.org/singularity/chewbbaca:3.3.5--pyhdfd78af_0': @@ -46,9 +44,6 @@ process CHEWBBACA_PREP_EXTERNAL_SCHEMA { process CHEWBBACA_ALLELE_CALL { label 'process_medium' - publishDir "${params.outdir}/chewbbaca", pattern: "allele_calls", mode: 'copy' - publishDir "${params.outdir}/chewbbaca", pattern: "allele_calls/results_statistics.tsv", mode: 'copy' - conda "bioconda::chewbbaca=3.3.5" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? 'https://depot.galaxyproject.org/singularity/chewbbaca:3.3.5--pyhdfd78af_0': @@ -59,8 +54,14 @@ process CHEWBBACA_ALLELE_CALL { path schema output: - path "allele_calls", emit: allele_calls + path "allele_calls/results_alleles.tsv", emit: results_alleles path "allele_calls/results_statistics.tsv", emit: statistics + path "allele_calls/cds_coordinates.tsv", emit: cds_coords + path "allele_calls/loci_summary_stats.tsv", emit: loci_summary + path "allele_calls/paralogous_counts.tsv", emit: paralogous_counts + path "allele_calls/paralogous_loci.tsv", emit: paralogous_loci + path "allele_calls/results_contigsInfo.tsv", emit: contig_info + path "allele_calls/*.txt", emit: allele_call_txt path "versions.yml", emit: versions when: @@ -91,6 +92,13 @@ process CHEWBBACA_ALLELE_CALL { """ mkdir allele_calls touch allele_calls/results_statistics.tsv + touch allele_calls/results_alleles.tsv + touch allele_calls/cds_coordinates.tsv + touch allele_calls/loci_summary_stats.tsv + touch allele_calls/paralogous_counts.tsv + touch allele_calls/paralogous_loci.tsv + touch allele_calls/results_contigsInfo.tsv + touch allele_calls/invalid_cds.txt cat <<-END_VERSIONS > versions.yml "${task.process}": @@ -102,22 +110,16 @@ process CHEWBBACA_ALLELE_CALL { process CHEWBBACA_EXTRACT_CGMLST { label 'process_low' - publishDir "${params.outdir}/chewbbaca/$allele_calls", pattern: "cgMLST", mode: 'copy' - publishDir "${params.outdir}/chewbbaca/$allele_calls", pattern: "cgMLST/cgMLST100.tsv", mode: 'copy' - publishDir "${params.outdir}/chewbbaca/$allele_calls", pattern: "cgMLST/cgMLST99.tsv", mode: 'copy' - conda "bioconda::chewbbaca=3.3.5" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? 'https://depot.galaxyproject.org/singularity/chewbbaca:3.3.5--pyhdfd78af_0': 'biocontainers/chewbbaca:3.3.5--pyhdfd78af_0' }" input: - path allele_calls + path results_alleles output: - path "cgMLST", emit: cgmlst - path "cgMLST/cgMLST100.tsv", emit: cgmlst100 - path "cgMLST/cgMLST99.tsv", emit: cgmlst99 + path "cgMLST/*", emit: cgmlst path "versions.yml", emit: versions when: @@ -127,7 +129,7 @@ process CHEWBBACA_EXTRACT_CGMLST { """ chewBBACA.py \\ ExtractCgMLST \\ - -i $allele_calls/results_alleles.tsv \\ + -i $results_alleles \\ -o cgMLST cat <<-END_VERSIONS > versions.yml @@ -139,6 +141,8 @@ process CHEWBBACA_EXTRACT_CGMLST { stub: """ mkdir cgMLST + touch cgMLST/cgMLST99.tsv + touch cgMLST/cgMLST100.tsv cat <<-END_VERSIONS > versions.yml "${task.process}": diff --git a/modules/local/el_gato.nf b/modules/local/el_gato.nf index 8ee052a..4248f93 100644 --- a/modules/local/el_gato.nf +++ b/modules/local/el_gato.nf @@ -2,12 +2,6 @@ process EL_GATO_READS { tag "$meta.id" label 'process_medium' - publishDir "${params.outdir}/el_gato/reads", pattern: "*.tsv", mode: 'copy' - publishDir "${params.outdir}/el_gato/reads", pattern: "*.bam*", mode: 'copy' - publishDir "${params.outdir}/el_gato/reads", pattern: "*.log", mode: 'copy' - publishDir "${params.outdir}/el_gato/reads", pattern: "*.json", mode: 'copy' - publishDir "${params.outdir}/el_gato/reads", pattern: "*_possible_mlsts.txt", mode: 'copy' - conda "bioconda::el_gato=1.20.2" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? 'https://depot.galaxyproject.org/singularity/el_gato:1.20.2--py311h7e72e81_0' : @@ -83,10 +77,6 @@ process EL_GATO_ASSEMBLY { label 'process_low' label 'error_ignore' // Non-legion samples explode here otherwise - publishDir "${params.outdir}/el_gato/assembly", pattern: "*.tsv", mode: 'copy' - publishDir "${params.outdir}/el_gato/assembly", pattern: "*.log", mode: 'copy' - publishDir "${params.outdir}/el_gato/assembly", pattern: "*.json", mode: 'copy' - conda "bioconda::el_gato=1.20.2" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? 'https://depot.galaxyproject.org/singularity/el_gato:1.20.2--py311h7e72e81_0' : @@ -140,8 +130,6 @@ process EL_GATO_ASSEMBLY { process EL_GATO_REPORT { label 'process_low' - publishDir "${params.outdir}/el_gato", pattern: "*.pdf", mode: 'copy' - conda "bioconda::el_gato=1.20.2" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? 'https://depot.galaxyproject.org/singularity/el_gato:1.20.2--py311h7e72e81_0' : @@ -184,8 +172,6 @@ process EL_GATO_REPORT { process COMBINE_EL_GATO { label 'process_low' - publishDir "${params.outdir}/el_gato", pattern: "el_gato_st.tsv", mode: 'copy' - conda "conda-forge::pandas=2.2.1" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? 'https://depot.galaxyproject.org/singularity/pandas:2.2.1' : diff --git a/modules/local/kraken.nf b/modules/local/kraken.nf index c450fb1..f78a269 100644 --- a/modules/local/kraken.nf +++ b/modules/local/kraken.nf @@ -2,9 +2,6 @@ process KRAKEN2_CLASSIFY { tag "$meta.id" label 'process_high' - publishDir "${params.outdir}/kraken_bracken", pattern: "*-classified.tsv", mode: 'copy' - publishDir "${params.outdir}/kraken_bracken", pattern: "*-kreport.tsv", mode: 'copy' - conda "bioconda::kraken2=2.1.3" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? 'https://depot.galaxyproject.org/singularity/mulled-v2-8706a1dd73c6cc426e12dd4dd33a5e917b3989ae:c8cbdc8ff4101e6745f8ede6eb5261ef98bdaff4-0' : diff --git a/modules/local/plotting.nf b/modules/local/plotting.nf index 70d0196..ad880ce 100644 --- a/modules/local/plotting.nf +++ b/modules/local/plotting.nf @@ -4,8 +4,6 @@ process PLOT_PYSAMSTATS_TSV { // As its just a plot output better to ignore errors for now label 'error_ignore' - publishDir "${params.outdir}/el_gato/plots", pattern: "*_allele_plots.pdf", mode: 'copy' - conda "$projectDir/envs/plotting-env.yml" // Custom built for this... // container "docker://docker.io/darianhole/legio-plotting:0.1.0" diff --git a/modules/local/quast.nf b/modules/local/quast.nf index 12ebe83..dc9eb78 100644 --- a/modules/local/quast.nf +++ b/modules/local/quast.nf @@ -1,11 +1,6 @@ process QUAST { label 'process_medium' - publishDir "${params.outdir}/quast", pattern: "transposed_report.tsv", mode: 'copy' - publishDir "${params.outdir}/quast", pattern: "report.html", mode: 'copy' - publishDir "${params.outdir}/quast", pattern: "report.pdf", mode: 'copy' - publishDir "${params.outdir}/quast", pattern: "*_stats", mode: 'copy' - conda "bioconda::quast=5.2.0" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? 'https://depot.galaxyproject.org/singularity/quast:5.2.0--py39pl5321h2add14b_1' : diff --git a/modules/local/spades.nf b/modules/local/spades.nf index 0811920..af2f5b7 100644 --- a/modules/local/spades.nf +++ b/modules/local/spades.nf @@ -2,9 +2,6 @@ process SPADES { tag "$meta.id" label 'process_high' - publishDir "${params.outdir}/spades", pattern: "*.fa", mode: 'copy' - publishDir "${params.outdir}/spades", pattern: "*.log", mode: 'copy' - conda "bioconda::spades=4.0.0" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? 'https://depot.galaxyproject.org/singularity/spades:4.0.0--h5fb382e_1' : diff --git a/modules/local/trimmomatic.nf b/modules/local/trimmomatic.nf index e4738a5..58b88a5 100644 --- a/modules/local/trimmomatic.nf +++ b/modules/local/trimmomatic.nf @@ -2,9 +2,6 @@ process TRIMMOMATIC { tag "$meta.id" label 'process_medium' - publishDir "${params.outdir}/trimmomatic", pattern: "*.fastq.gz", mode: 'copy' - publishDir "${params.outdir}/trimmomatic", pattern: "*.summary.txt", mode: 'copy' - conda "bioconda::trimmomatic=0.39" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? 'https://depot.galaxyproject.org/singularity/trimmomatic:0.39--hdfd78af_2': diff --git a/modules/local/utils.nf b/modules/local/utils.nf index deb45ad..2afdfda 100644 --- a/modules/local/utils.nf +++ b/modules/local/utils.nf @@ -47,8 +47,6 @@ process CSVTK_COMBINE_STATS { tag "$meta.id" label 'process_single' - publishDir "${params.outdir}/el_gato/allele_stats", pattern: "*.tsv", mode: 'copy' - conda "bioconda::csvtk=0.30.0" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? 'https://depot.galaxyproject.org/singularity/csvtk:0.30.0--h9ee0642_0': @@ -94,8 +92,6 @@ process CSVTK_COMBINE_STATS { process CSVTK_COMBINE{ label 'process_single' - publishDir "${params.outdir}", pattern: "*.csv", mode: 'copy' - conda "bioconda::csvtk=0.30.0" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? 'https://depot.galaxyproject.org/singularity/csvtk:0.30.0--h9ee0642_0': diff --git a/nextflow.config b/nextflow.config index 45916de..4b8d123 100644 --- a/nextflow.config +++ b/nextflow.config @@ -38,6 +38,7 @@ params { // Generic useful options outdir = 'results' + publish_dir_mode = 'copy' help = false version = false @@ -171,16 +172,26 @@ podman.registry = 'quay.io' singularity.registry = 'quay.io' charliecloud.registry = 'quay.io' -// Nextflow plugins +// Nextflow plugins and settings plugins { id 'nf-schema@2.2.1' id 'nf-iridanext@0.2.0' + id 'nf-prov@1.2.4' } validation { help { enabled = true } } +prov { + enabled = true + formats { + legacy { + file = "${params.outdir}/pipeline_info/manifest.json" + overwrite = true + } + } +} // 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. diff --git a/nextflow_schema.json b/nextflow_schema.json index 262786a..1d68728 100644 --- a/nextflow_schema.json +++ b/nextflow_schema.json @@ -126,6 +126,15 @@ "fa_icon": "fas fa-folder-open", "default": "results" }, + "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 + }, "max_memory": { "type": "string", "default": "128.GB", diff --git a/workflows/legiovue.nf b/workflows/legiovue.nf index 2738dd8..012cec8 100644 --- a/workflows/legiovue.nf +++ b/workflows/legiovue.nf @@ -204,7 +204,7 @@ workflow LEGIOVUE { ch_prepped_schema ) CHEWBBACA_EXTRACT_CGMLST( - CHEWBBACA_ALLELE_CALL.out.allele_calls + CHEWBBACA_ALLELE_CALL.out.results_alleles ) // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // From f8ba970e87d146502c50ed4d82a849ccbbc20c24 Mon Sep 17 00:00:00 2001 From: Darian Hole Date: Tue, 14 Jan 2025 11:54:41 -0600 Subject: [PATCH 25/38] add in verion tracking --- conf/modules.config | 8 ++ modules.json | 13 ++- modules/local/spades.nf | 4 +- .../dumpsoftwareversions/environment.yml | 5 + .../custom/dumpsoftwareversions/main.nf | 24 +++++ .../custom/dumpsoftwareversions/meta.yml | 43 ++++++++ .../templates/dumpsoftwareversions.py | 101 ++++++++++++++++++ .../dumpsoftwareversions/tests/main.nf.test | 43 ++++++++ .../tests/main.nf.test.snap | 33 ++++++ .../dumpsoftwareversions/tests/tags.yml | 2 + workflows/legiovue.nf | 41 ++++++- 11 files changed, 312 insertions(+), 5 deletions(-) create mode 100644 modules/nf-core/custom/dumpsoftwareversions/environment.yml create mode 100644 modules/nf-core/custom/dumpsoftwareversions/main.nf create mode 100644 modules/nf-core/custom/dumpsoftwareversions/meta.yml create mode 100644 modules/nf-core/custom/dumpsoftwareversions/templates/dumpsoftwareversions.py create mode 100644 modules/nf-core/custom/dumpsoftwareversions/tests/main.nf.test create mode 100644 modules/nf-core/custom/dumpsoftwareversions/tests/main.nf.test.snap create mode 100644 modules/nf-core/custom/dumpsoftwareversions/tests/tags.yml diff --git a/conf/modules.config b/conf/modules.config index b09885e..d477be8 100644 --- a/conf/modules.config +++ b/conf/modules.config @@ -146,4 +146,12 @@ process { saveAs: { filename -> filename.equals('versions.yml') ? null : filename } ] } + + withName: CUSTOM_DUMPSOFTWAREVERSIONS { + publishDir = [ + path: { "${params.outdir}/pipeline_info" }, + mode: params.publish_dir_mode, + pattern: '*_versions.yml' + ] + } } diff --git a/modules.json b/modules.json index b2ee032..d129a1a 100644 --- a/modules.json +++ b/modules.json @@ -5,13 +5,22 @@ "https://github.com/nf-core/modules.git": { "modules": { "nf-core": { + "custom/dumpsoftwareversions": { + "branch": "master", + "git_sha": "666652151335353eef2fcd58880bcef5bc2928e1", + "installed_by": [ + "modules" + ] + }, "fastqc": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": ["modules"] + "installed_by": [ + "modules" + ] } } } } } -} +} \ No newline at end of file diff --git a/modules/local/spades.nf b/modules/local/spades.nf index af2f5b7..38b221b 100644 --- a/modules/local/spades.nf +++ b/modules/local/spades.nf @@ -62,7 +62,7 @@ process SPADES { cat <<-END_VERSIONS > versions.yml "${task.process}": spades: \$(spades.py --version 2>&1 | sed -n 's/^.*SPAdes genome assembler v//p') - END_VERSION + END_VERSIONS """ stub: @@ -76,6 +76,6 @@ process SPADES { cat <<-END_VERSIONS > versions.yml "${task.process}": spades: \$(spades.py --version 2>&1 | sed -n 's/^.*SPAdes genome assembler v//p') - END_VERSION + END_VERSIONS """ } diff --git a/modules/nf-core/custom/dumpsoftwareversions/environment.yml b/modules/nf-core/custom/dumpsoftwareversions/environment.yml new file mode 100644 index 0000000..9d79af9 --- /dev/null +++ b/modules/nf-core/custom/dumpsoftwareversions/environment.yml @@ -0,0 +1,5 @@ +channels: + - conda-forge + - bioconda +dependencies: + - bioconda::multiqc=1.20 diff --git a/modules/nf-core/custom/dumpsoftwareversions/main.nf b/modules/nf-core/custom/dumpsoftwareversions/main.nf new file mode 100644 index 0000000..105f926 --- /dev/null +++ b/modules/nf-core/custom/dumpsoftwareversions/main.nf @@ -0,0 +1,24 @@ +process CUSTOM_DUMPSOFTWAREVERSIONS { + label 'process_single' + + // Requires `pyyaml` which does not have a dedicated container but is in the MultiQC container + conda "${moduleDir}/environment.yml" + container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? + 'https://depot.galaxyproject.org/singularity/multiqc:1.20--pyhdfd78af_0' : + 'biocontainers/multiqc:1.20--pyhdfd78af_0' }" + + input: + path versions + + output: + path "software_versions.yml" , emit: yml + path "software_versions_mqc.yml", emit: mqc_yml + path "versions.yml" , emit: versions + + when: + task.ext.when == null || task.ext.when + + script: + def args = task.ext.args ?: '' + template 'dumpsoftwareversions.py' +} diff --git a/modules/nf-core/custom/dumpsoftwareversions/meta.yml b/modules/nf-core/custom/dumpsoftwareversions/meta.yml new file mode 100644 index 0000000..dc1e412 --- /dev/null +++ b/modules/nf-core/custom/dumpsoftwareversions/meta.yml @@ -0,0 +1,43 @@ +# yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/modules/meta-schema.json +name: custom_dumpsoftwareversions +description: Custom module used to dump software versions within the nf-core pipeline + template +keywords: + - custom + - dump + - version +tools: + - custom: + description: Custom module used to dump software versions within the nf-core pipeline + template + homepage: https://github.com/nf-core/tools + documentation: https://github.com/nf-core/tools + licence: ["MIT"] + identifier: "" +input: + - - versions: + type: file + description: YML file containing software versions + pattern: "*.yml" +output: + - yml: + - software_versions.yml: + type: file + description: Standard YML file containing software versions + pattern: "software_versions.yml" + - mqc_yml: + - software_versions_mqc.yml: + type: file + description: MultiQC custom content YML file containing software versions + pattern: "software_versions_mqc.yml" + - versions: + - versions.yml: + type: file + description: File containing software versions + pattern: "versions.yml" +authors: + - "@drpatelh" + - "@grst" +maintainers: + - "@drpatelh" + - "@grst" diff --git a/modules/nf-core/custom/dumpsoftwareversions/templates/dumpsoftwareversions.py b/modules/nf-core/custom/dumpsoftwareversions/templates/dumpsoftwareversions.py new file mode 100644 index 0000000..b83b32c --- /dev/null +++ b/modules/nf-core/custom/dumpsoftwareversions/templates/dumpsoftwareversions.py @@ -0,0 +1,101 @@ +#!/usr/bin/env python + + +"""Provide functions to merge multiple versions.yml files.""" + +import platform +from textwrap import dedent + +import yaml + + +def _make_versions_html(versions): + """Generate a tabular HTML output of all versions for MultiQC.""" + html = [ + dedent( + """\\ + + + + + + + + + + """ + ) + ] + for process, tmp_versions in sorted(versions.items()): + html.append("") + for i, (tool, version) in enumerate(sorted(tmp_versions.items())): + html.append( + dedent( + f"""\\ + + + + + + """ + ) + ) + html.append("") + html.append("
      Process Name Software Version
      {process if (i == 0) else ''}{tool}{version}
      ") + return "\\n".join(html) + + +def main(): + """Load all version files and generate merged output.""" + versions_this_module = {} + versions_this_module["${task.process}"] = { + "python": platform.python_version(), + "yaml": yaml.__version__, + } + + with open("$versions") as f: + versions_by_process = yaml.load(f, Loader=yaml.BaseLoader) | versions_this_module + + # aggregate versions by the module name (derived from fully-qualified process name) + versions_by_module = {} + for process, process_versions in versions_by_process.items(): + module = process.split(":")[-1] + try: + if versions_by_module[module] != process_versions: + raise AssertionError( + "We assume that software versions are the same between all modules. " + "If you see this error-message it means you discovered an edge-case " + "and should open an issue in nf-core/tools. " + ) + except KeyError: + versions_by_module[module] = process_versions + + versions_by_module["Workflow"] = { + "Nextflow": "$workflow.nextflow.version", + "$workflow.manifest.name": "$workflow.manifest.version", + } + + versions_mqc = { + "id": "software_versions", + "section_name": "${workflow.manifest.name} Software Versions", + "section_href": "https://github.com/${workflow.manifest.name}", + "plot_type": "html", + "description": "are collected at run time from the software output.", + "data": _make_versions_html(versions_by_module), + } + + with open("software_versions.yml", "w") as f: + yaml.dump(versions_by_module, f, default_flow_style=False) + with open("software_versions_mqc.yml", "w") as f: + yaml.dump(versions_mqc, f, default_flow_style=False) + + with open("versions.yml", "w") as f: + yaml.dump(versions_this_module, f, default_flow_style=False) + + +if __name__ == "__main__": + main() diff --git a/modules/nf-core/custom/dumpsoftwareversions/tests/main.nf.test b/modules/nf-core/custom/dumpsoftwareversions/tests/main.nf.test new file mode 100644 index 0000000..b1e1630 --- /dev/null +++ b/modules/nf-core/custom/dumpsoftwareversions/tests/main.nf.test @@ -0,0 +1,43 @@ +nextflow_process { + + name "Test Process CUSTOM_DUMPSOFTWAREVERSIONS" + script "../main.nf" + process "CUSTOM_DUMPSOFTWAREVERSIONS" + tag "modules" + tag "modules_nfcore" + tag "custom" + tag "dumpsoftwareversions" + tag "custom/dumpsoftwareversions" + + test("Should run without failures") { + when { + process { + """ + def tool1_version = ''' + TOOL1: + tool1: 0.11.9 + '''.stripIndent() + + def tool2_version = ''' + TOOL2: + tool2: 1.9 + '''.stripIndent() + + input[0] = Channel.of(tool1_version, tool2_version).collectFile() + """ + } + } + + then { + assertAll( + { assert process.success }, + { assert snapshot( + process.out.versions, + file(process.out.mqc_yml[0]).readLines()[0..10], + file(process.out.yml[0]).readLines()[0..7] + ).match() + } + ) + } + } +} diff --git a/modules/nf-core/custom/dumpsoftwareversions/tests/main.nf.test.snap b/modules/nf-core/custom/dumpsoftwareversions/tests/main.nf.test.snap new file mode 100644 index 0000000..5f59a93 --- /dev/null +++ b/modules/nf-core/custom/dumpsoftwareversions/tests/main.nf.test.snap @@ -0,0 +1,33 @@ +{ + "Should run without failures": { + "content": [ + [ + "versions.yml:md5,76d454d92244589d32455833f7c1ba6d" + ], + [ + "data: \"\\n\\n \\n \\n \\n \\n \\n \\n \\n\\", + " \\n\\n\\n \\n \\n\\", + " \\ \\n\\n\\n\\n \\n \\", + " \\ \\n \\n\\n\\n\\n\\", + " \\n\\n \\n \\n\\", + " \\ \\n\\n\\n\\n\\n\\n \\n\\", + " \\ \\n \\n\\n\\n\\n\\", + " \\n\\n \\n \\n\\" + ], + [ + "CUSTOM_DUMPSOFTWAREVERSIONS:", + " python: 3.11.7", + " yaml: 5.4.1", + "TOOL1:", + " tool1: 0.11.9", + "TOOL2:", + " tool2: '1.9'", + "Workflow:" + ] + ], + "timestamp": "2024-01-09T23:01:18.710682" + } +} \ No newline at end of file diff --git a/modules/nf-core/custom/dumpsoftwareversions/tests/tags.yml b/modules/nf-core/custom/dumpsoftwareversions/tests/tags.yml new file mode 100644 index 0000000..405aa24 --- /dev/null +++ b/modules/nf-core/custom/dumpsoftwareversions/tests/tags.yml @@ -0,0 +1,2 @@ +custom/dumpsoftwareversions: + - modules/nf-core/custom/dumpsoftwareversions/** diff --git a/workflows/legiovue.nf b/workflows/legiovue.nf index 012cec8..bbbeea3 100644 --- a/workflows/legiovue.nf +++ b/workflows/legiovue.nf @@ -24,6 +24,7 @@ include { CSVTK_COMBINE_STATS } from '../modules/local/utils.nf' include { PLOT_PYSAMSTATS_TSV } from '../modules/local/plotting.nf' include { COMBINE_SAMPLE_DATA } from '../modules/local/qc.nf' include { CSVTK_COMBINE } from '../modules/local/utils.nf' +include { CUSTOM_DUMPSOFTWAREVERSIONS } from '../modules/nf-core/custom/dumpsoftwareversions/main' /* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -46,6 +47,9 @@ workflow LEGIOVUE { ch_paired_fastqs // channel: [ val(meta), [ file(fastq_1), file(fastq_2) ] ] main: + // 0. Make version channel + ch_versions = Channel.empty() + // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // // 1. Kraken and Bracken Check with maybe(?) Host Removal (TODO) // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // @@ -54,10 +58,13 @@ workflow LEGIOVUE { ch_paired_fastqs, ch_kraken2_db ) + ch_versions = ch_versions.mix(KRAKEN2_CLASSIFY.out.versions) + BRACKEN( KRAKEN2_CLASSIFY.out.report, ch_kraken2_db ) + ch_versions = ch_versions.mix(BRACKEN.out.versions) // Remove NON L.pn samples to allow good clustering // This is a temp python/process solution until we @@ -66,6 +73,8 @@ workflow LEGIOVUE { CREATE_ABUNDANCE_FILTER( BRACKEN.out.abundance ) + ch_versions = ch_versions.mix(CREATE_ABUNDANCE_FILTER.out.versions) + CREATE_ABUNDANCE_FILTER.out.abundance_check .splitCsv(header:true, sep:',') .branch{ meta, row -> @@ -85,6 +94,7 @@ workflow LEGIOVUE { ch_abundance_filter.pass .join(ch_paired_fastqs, by: [0]) ) + ch_versions = ch_versions.mix(TRIMMOMATIC.out.versions) // Filter by min count TRIMMOMATIC.out.trimmed_reads @@ -99,6 +109,7 @@ workflow LEGIOVUE { FASTQC( ch_filtered_paired_fastqs.pass ) + ch_versions = ch_versions.mix(FASTQC.out.versions) // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // // 4. SPAdes @@ -107,6 +118,7 @@ workflow LEGIOVUE { ch_filtered_paired_fastqs.pass .join(TRIMMOMATIC.out.unpaired_reads, by: [0]) ) + ch_versions = ch_versions.mix(SPADES.out.versions) // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // // 5. Quast @@ -116,9 +128,12 @@ workflow LEGIOVUE { .collect{ it[1] }, ch_quast_ref ) + ch_versions = ch_versions.mix(QUAST.out.versions) + SCORE_QUAST( QUAST.out.report ) + ch_versions = ch_versions.mix(SCORE_QUAST.out.versions) // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // // 6. El_Gato - Second round with assemblies for failing samples only @@ -128,6 +143,7 @@ workflow LEGIOVUE { EL_GATO_READS( ch_filtered_paired_fastqs.pass ) + ch_versions = ch_versions.mix(EL_GATO_READS.out.versions) // El_gato consensus is only for samples where the reads output an // inconclusive ST as it has been found to potentially call one @@ -143,6 +159,7 @@ workflow LEGIOVUE { .map{ it -> it[0] } .join(SPADES.out.contigs, by:[0]) ) + ch_versions = ch_versions.mix(EL_GATO_ASSEMBLY.out.versions) // Combine and add in the approach used COMBINE_EL_GATO( @@ -154,6 +171,7 @@ workflow LEGIOVUE { .collectFile(name: 'assembly_st.tsv', keepHeader: true) .ifEmpty([]) ) + ch_versions = ch_versions.mix(COMBINE_EL_GATO.out.versions) ch_el_gato_report = COMBINE_EL_GATO.out.report.collect().ifEmpty([]) // PDF Report @@ -166,6 +184,7 @@ workflow LEGIOVUE { .collect{ it[1] } .ifEmpty([]) ) + ch_versions = ch_versions.mix(EL_GATO_REPORT.out.versions) // Alleles Stats with pysamstats and plots // Visualize the called alleles to help @@ -175,17 +194,24 @@ workflow LEGIOVUE { EL_GATO_READS.out.bam_bai, "mapq" ) + ch_versions = ch_versions.mix(PYSAMSTATS_MAPQ.out.versions) + PYSAMSTATS_BASEQ( EL_GATO_READS.out.bam_bai, "baseq" ) + ch_versions = ch_versions.mix(PYSAMSTATS_BASEQ.out.versions) + CSVTK_COMBINE_STATS( PYSAMSTATS_MAPQ.out.tsv .join(PYSAMSTATS_BASEQ.out.tsv, by:[0]) ) + ch_versions = ch_versions.mix(CSVTK_COMBINE_STATS.out.versions) + PLOT_PYSAMSTATS_TSV( CSVTK_COMBINE_STATS.out.tsv ) + ch_versions = ch_versions.mix(PLOT_PYSAMSTATS_TSV.out.versions) } } @@ -197,15 +223,19 @@ workflow LEGIOVUE { ch_schema_targets ) ch_prepped_schema = CHEWBBACA_PREP_EXTERNAL_SCHEMA.out.schema + ch_versions = ch_versions.mix(CHEWBBACA_PREP_EXTERNAL_SCHEMA.out.versions) } CHEWBBACA_ALLELE_CALL( SPADES.out.contigs .collect{ it[1] }, ch_prepped_schema ) + ch_versions = ch_versions.mix(CHEWBBACA_ALLELE_CALL.out.versions) + CHEWBBACA_EXTRACT_CGMLST( CHEWBBACA_ALLELE_CALL.out.results_alleles ) + ch_versions = ch_versions.mix(CHEWBBACA_EXTRACT_CGMLST.out.versions) // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // // 8. QC + Summaries @@ -230,14 +260,16 @@ workflow LEGIOVUE { ch_el_gato_report, ch_allele_stats ) + ch_versions = ch_versions.mix(COMBINE_SAMPLE_DATA.out.versions) CSVTK_COMBINE( COMBINE_SAMPLE_DATA.out.csv .collect{ it[1] } ) + ch_versions = ch_versions.mix(CSVTK_COMBINE.out.versions) // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // - // 9. Clustering (TO-DO) + // 9. Clustering (TO-DO when environments available) // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // // chewbacca -> reportree -> manual vis (right now) // As reportree isn't easy to get installed in pipeline @@ -248,4 +280,11 @@ workflow LEGIOVUE { // CHEWBBACA_EXTRACT_CGMLST.out.cgmlst, // ch_metadata // ) + + // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // + // 10. Version Output + // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // + CUSTOM_DUMPSOFTWAREVERSIONS ( + ch_versions.unique().collectFile(name: 'collated_versions.yml') + ) } From 72c8c3bbb9546cbccb23225089c62530536157b2 Mon Sep 17 00:00:00 2001 From: Darian Hole Date: Tue, 14 Jan 2025 15:38:25 -0600 Subject: [PATCH 26/38] fix trimmomatic stub test yml --- modules.json | 10 +++------- modules/local/quast.nf | 3 +++ modules/local/trimmomatic.nf | 13 +++++++++++-- 3 files changed, 17 insertions(+), 9 deletions(-) diff --git a/modules.json b/modules.json index d129a1a..b153a73 100644 --- a/modules.json +++ b/modules.json @@ -8,19 +8,15 @@ "custom/dumpsoftwareversions": { "branch": "master", "git_sha": "666652151335353eef2fcd58880bcef5bc2928e1", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] }, "fastqc": { "branch": "master", "git_sha": "c8e35eb2055c099720a75538d1b8adb3fb5a464c", - "installed_by": [ - "modules" - ] + "installed_by": ["modules"] } } } } } -} \ No newline at end of file +} diff --git a/modules/local/quast.nf b/modules/local/quast.nf index dc9eb78..19241e9 100644 --- a/modules/local/quast.nf +++ b/modules/local/quast.nf @@ -65,6 +65,9 @@ process SCORE_QUAST { path "scored_quast_report.csv", emit: report path "versions.yml", emit: versions + when: + task.ext.when == null || task.ext.when + script: """ quast_analyzer.py \\ diff --git a/modules/local/trimmomatic.nf b/modules/local/trimmomatic.nf index 58b88a5..7b64b73 100644 --- a/modules/local/trimmomatic.nf +++ b/modules/local/trimmomatic.nf @@ -46,17 +46,26 @@ process TRIMMOMATIC { stub: """ - # Due to read filtering step - read="@read1\nTTT\n+\nCCC" + # Due to read filtering need a read to continue pipeline + # Note no using newlines as it breaks the versions + read="@read1 + TTT + + + CCC + " + + # Create read files echo -e \$read > ${meta.id}_paired_R1.fastq echo -e \$read > ${meta.id}_paired_R2.fastq gzip ${meta.id}_paired_R1.fastq gzip ${meta.id}_paired_R2.fastq + # Summary files and unpaired reads touch ${meta.id}.summary.txt touch ${meta.id}_unpaired_R1.fastq.gz touch ${meta.id}_unpaired_R2.fastq.gz + # Versions cat <<-END_VERSIONS > versions.yml "${task.process}": trimmomatic: \$(trimmomatic -version) From 6d208150369c63b90bf1ca03fe110ce48dae5cce Mon Sep 17 00:00:00 2001 From: Darian Hole Date: Wed, 15 Jan 2025 08:37:45 -0600 Subject: [PATCH 27/38] adjust qc thresholds based on testing --- CHANGELOG.md | 10 +++++++--- README.md | 6 +++--- bin/combine_qc_data.py | 4 ++-- bin/quast_analyzer.py | 4 ++-- docs/usage.md | 3 ++- nextflow.config | 2 +- 6 files changed, 17 insertions(+), 12 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index b91dad7..f9f198e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,7 +3,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). -## v0.2.0 - [2025-01-03] +## v0.2.0 - [2025-01-15] ### `Added` @@ -13,8 +13,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - samplesheetToList - `params.input ` to allow input samplesheets - `iridanext` plugin - - The associated data will come out in 0.3.0 -- Most of the required nf-core files +- `nf-prov` plugin +- Required nf-core files - CI tests and linting ### `Changed` @@ -24,6 +24,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Logic for skipping specific modules - Allowed to skip el_gato ST - Allowed to skip el_gato allele plotting +- All process publishDir now in the `modules.conf` file +- Container for allele plotting +- Adjusted default warn and fail parameters for quality module based on testing + - `min_reads` to 60,000 from 150,000 ### `Updated` diff --git a/README.md b/README.md index 10b7e31..8941284 100644 --- a/README.md +++ b/README.md @@ -155,7 +155,7 @@ Detailed instructions for clustering and visualization are provided [separately] **Quality Summary** -LegioVue outputs a summary of quality metrics and warnings for each step of the workflow in the `overall.qc.tsv` file +LegioVue outputs a summary of quality metrics and warnings for each step of the workflow in the `overall.qc.csv` file The final quality summary has two columns: `qc_status` and `qc_message` that can be used to quickly determine if a sample is good or may have an issue. The `qc_status` column will be any of the following statuses: @@ -168,12 +168,12 @@ The `qc_message` column contains the reason for the `qc_status` and includes: | Message | Associated Status | Flag Reason | | ---------------------- | ----------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------ | | low_lpn_abundance | WARN | Low (< 75%) _L. pneumophila_ abundance is not expected with isolate sequencing and may indicate contamination. | -| low_read_count | WARN | Low read count (< 300,000 reads default) has been shown to lead to poor, uninformative assemblies. | +| low_read_count | WARN | Low read count (< 150,000 reads default) has been shown to lead to poor, uninformative assemblies. | | low_n50 | WARN | Low N50 scores (< 100,000) have been shown to negatively affect clustering outputs by inflating observed allele differences. | | low_exact_allele_calls | WARN | Low chewBBACA exact allele calls (< 90%) indicate that there may be issues in the assembly, possibly affecting the cgMLST profile. | | low_qc_score | WARN | Low QUAST-Analyzer QC score (< 4) indicates that there may be issues in the assembly, possibly affecting the cgMLST profile. | | no_lpn_detected | FAIL | Very low (< 10% default) _L.pneumophila_ abundance flags that the sample may not be _L.pneumophila_ and sample is removed from the remainder of the pipeline | -| failing_read_count | FAIL | Post-trimming read count below failing threshold (< 150,000 reads default) has been shown to lead to poor, uninformative assemblies and sample is removed. | +| failing_read_count | FAIL | Post-trimming read count below failing threshold (< 60,000 reads default) has been shown to lead to poor, uninformative assemblies and sample is removed. | ## Limitations diff --git a/bin/combine_qc_data.py b/bin/combine_qc_data.py index b3a6c1b..2cd5a49 100755 --- a/bin/combine_qc_data.py +++ b/bin/combine_qc_data.py @@ -69,7 +69,7 @@ def parse_args() -> argparse.ArgumentParser: '--min_reads', type=int, required=False, - default=150000, + default=60000, help="Minimum number of reads required to be passed through the pipeline" ) parser.add_argument( @@ -183,7 +183,7 @@ def main() -> None: if outdict['num_paired_trimmed_reads'] < args.min_reads and not failed: failed = True failed_reason = ['failing_read_count'] - elif outdict['num_paired_trimmed_reads'] < 300000: + elif outdict['num_paired_trimmed_reads'] < 150000: warn_qual_criteria.append('low_read_count') # Quast diff --git a/bin/quast_analyzer.py b/bin/quast_analyzer.py index 7fbae66..a056a22 100755 --- a/bin/quast_analyzer.py +++ b/bin/quast_analyzer.py @@ -111,8 +111,8 @@ def parse_sample_line(sample_line: str, headers: list) -> dict: return dict(zip(headers, fields)) -def calculate_score(metric: int, bottom=100000, top=300000): - """Calculate variable score based on a bottom and top range +def calculate_score(metric: int, bottom=80000, top=220000): + """Calculate variable score based on a bottom and top range determined from testing Args: metric (int): Metric to score diff --git a/docs/usage.md b/docs/usage.md index 6e0818d..5f75af1 100644 --- a/docs/usage.md +++ b/docs/usage.md @@ -107,13 +107,14 @@ It is required to pick one of the following to get fastq data into the pipeline | ----------------------- | ------------------------------------------------------------------------------- | ----- | --------------------------------------------- | ------------------------------------------------------------------------------------------ | | --outdir | Directory name to output results to | Str | 'results' | | | --min_abundance_percent | Minimum _L. pneumophila_ abundance required after bracken to continue sample on | Float | 10.0 | Very permissive for now | -| --min_reads | Minimum reads required after trimmomatic to continue sample on | Int | 150,000 | Under 150,000 reads samples don't usually provide enough info for proper clustering / STs | +| --min_reads | Minimum reads required after trimmomatic to continue sample on | Int | 60,000 | Under 150,000 reads samples don't usually provide enough info for proper clustering / STs | | --kraken2_db | Path to standard `kraken2` database for detecting _L. pneumophila_ reads | Path | s3://genome-idx/kraken/standard_08gb_20240904 | Default is AWS hosted database by developers. It is better to use your own if you have one | | --quast_ref | Path to reference sequence for some of the `quast` metrics | Path | data/C9_S.reference.fna | C9 was picked as a default reference but any good sequence will work | | skip_el_gato | Flag to skip running el_gato sequence typing | Bool | False | | | skip_plotting | Flag to skip running the el_gato allele plotting | Bool | False | | | --prepped_schema | Path to a prepped `chewbbaca` schema to save running the prep command | Path | data/SeqSphere_1521_schema | Provided with pipeline | | --schema_targets | Path to schema targets to prep for `chewbbaca` | Path | null | | +| --publish_dir_mode | Specifies how intermediate files should be saved to the output directory | Str | copy | | | --max_memory | Maximum memory allowed to be given to a job | Str | 128.GB | | | --max_cpus | Maximum cpus allowed to be given to a job | Int | 16 | | | --max_time | Maximum time allowed to be given to a job | Str | 240.h' | | diff --git a/nextflow.config b/nextflow.config index 4b8d123..cd77ee4 100644 --- a/nextflow.config +++ b/nextflow.config @@ -14,7 +14,7 @@ params { // Input data filtering based on testing min_abundance_percent = 10 - min_reads = 150000 + min_reads = 60000 // Kraken + Braken // Link to AWS, if connection is lost or not available user needs to pass From d5d1c1fd910121676befa53a9fe19cd9066fccd6 Mon Sep 17 00:00:00 2001 From: Darian Hole Date: Wed, 15 Jan 2025 08:58:58 -0600 Subject: [PATCH 28/38] add more to nf-test stub test --- tests/main.nf.test | 26 ++++++++++++++++++++++++-- 1 file changed, 24 insertions(+), 2 deletions(-) diff --git a/tests/main.nf.test b/tests/main.nf.test index f9d229b..61c853b 100644 --- a/tests/main.nf.test +++ b/tests/main.nf.test @@ -79,10 +79,32 @@ nextflow_pipeline { then { // Status assert workflow.success + assert workflow.trace.failed().size() == 0 - // Channels and Files + // Channels and Files Exist + // Stub run so they are all blank so just make sure all output steps exist assert path("$launchDir/results").exists() - assert workflow.trace.failed().size() == 0 + assert path("$launchDir/results/overall.qc.csv").exists() + + assert path("$launchDir/results/chewbbaca/allele_calls").exists() + assert path("$launchDir/results/chewbbaca/allele_calls/cgMLST").exists() + + assert path("$launchDir/results/el_gato/el_gato_st.tsv").exists() + assert path("$launchDir/results/el_gato/el_gato_report.pdf").exists() + assert path("$launchDir/results/el_gato/allele_stats").exists() + assert path("$launchDir/results/el_gato/assembly").exists() + assert path("$launchDir/results/el_gato/plots").exists() + assert path("$launchDir/results/el_gato/reads").exists() + + assert path("$launchDir/results/pipeline_info").exists() + assert path("$launchDir/results/pipeline_info/software_versions.yml").exists() + assert path("$launchDir/results/pipeline_info/manifest.json").exists() + + assert path("$launchDir/results/fastqc").exists() + assert path("$launchDir/results/kraken_bracken").exists() + assert path("$launchDir/results/quast").exists() + assert path("$launchDir/results/spades").exists() + assert path("$launchDir/results/trimmomatic").exists() } } } From 7f6eaaf3d10eda1b81523cd98a2a0f4b98a8389d Mon Sep 17 00:00:00 2001 From: Darian Hole Date: Wed, 15 Jan 2025 09:00:42 -0600 Subject: [PATCH 29/38] run prettier --- README.md | 2 +- docs/usage.md | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 8941284..a68b51f 100644 --- a/README.md +++ b/README.md @@ -173,7 +173,7 @@ The `qc_message` column contains the reason for the `qc_status` and includes: | low_exact_allele_calls | WARN | Low chewBBACA exact allele calls (< 90%) indicate that there may be issues in the assembly, possibly affecting the cgMLST profile. | | low_qc_score | WARN | Low QUAST-Analyzer QC score (< 4) indicates that there may be issues in the assembly, possibly affecting the cgMLST profile. | | no_lpn_detected | FAIL | Very low (< 10% default) _L.pneumophila_ abundance flags that the sample may not be _L.pneumophila_ and sample is removed from the remainder of the pipeline | -| failing_read_count | FAIL | Post-trimming read count below failing threshold (< 60,000 reads default) has been shown to lead to poor, uninformative assemblies and sample is removed. | +| failing_read_count | FAIL | Post-trimming read count below failing threshold (< 60,000 reads default) has been shown to lead to poor, uninformative assemblies and sample is removed. | ## Limitations diff --git a/docs/usage.md b/docs/usage.md index 5f75af1..d5f28e1 100644 --- a/docs/usage.md +++ b/docs/usage.md @@ -107,14 +107,14 @@ It is required to pick one of the following to get fastq data into the pipeline | ----------------------- | ------------------------------------------------------------------------------- | ----- | --------------------------------------------- | ------------------------------------------------------------------------------------------ | | --outdir | Directory name to output results to | Str | 'results' | | | --min_abundance_percent | Minimum _L. pneumophila_ abundance required after bracken to continue sample on | Float | 10.0 | Very permissive for now | -| --min_reads | Minimum reads required after trimmomatic to continue sample on | Int | 60,000 | Under 150,000 reads samples don't usually provide enough info for proper clustering / STs | +| --min_reads | Minimum reads required after trimmomatic to continue sample on | Int | 60,000 | Under 150,000 reads samples don't usually provide enough info for proper clustering / STs | | --kraken2_db | Path to standard `kraken2` database for detecting _L. pneumophila_ reads | Path | s3://genome-idx/kraken/standard_08gb_20240904 | Default is AWS hosted database by developers. It is better to use your own if you have one | | --quast_ref | Path to reference sequence for some of the `quast` metrics | Path | data/C9_S.reference.fna | C9 was picked as a default reference but any good sequence will work | | skip_el_gato | Flag to skip running el_gato sequence typing | Bool | False | | | skip_plotting | Flag to skip running the el_gato allele plotting | Bool | False | | | --prepped_schema | Path to a prepped `chewbbaca` schema to save running the prep command | Path | data/SeqSphere_1521_schema | Provided with pipeline | | --schema_targets | Path to schema targets to prep for `chewbbaca` | Path | null | | -| --publish_dir_mode | Specifies how intermediate files should be saved to the output directory | Str | copy | | +| --publish_dir_mode | Specifies how intermediate files should be saved to the output directory | Str | copy | | | --max_memory | Maximum memory allowed to be given to a job | Str | 128.GB | | | --max_cpus | Maximum cpus allowed to be given to a job | Int | 16 | | | --max_time | Maximum time allowed to be given to a job | Str | 240.h' | | From 76830c11c1d928c4ec00c53c3f523cbff973c454 Mon Sep 17 00:00:00 2001 From: Darian Hole Date: Wed, 15 Jan 2025 14:31:28 -0600 Subject: [PATCH 30/38] fix slight readme typos --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index a68b51f..0122eea 100644 --- a/README.md +++ b/README.md @@ -31,7 +31,7 @@ Steps: 1. Download and install nextflow 1. Download and install with [conda](https://docs.conda.io/en/latest/miniconda.html) - - Conda command: `conda create on nextflow -c conda-forge -c bioconda nextflow` + - Conda command: `conda create -n nextflow -c conda-forge -c bioconda nextflow` 2. Install with the instructions at https://www.nextflow.io/ 2. Determine which dependency management system works best for you @@ -95,7 +95,7 @@ Where: - [Example file](./tests/test_data/input.csv) > [!NOTE] -> The default `kraken2` standard database is hosted on AWS. In the event the connection is interrupted the pipeline will fail out. It is recommended to use/download a database from [the kraken2 database zone](https://benlangmead.github.io/aws-indexes/k2) and include `--kraken2 ` in the command above. The 8GB standard DB is the default. +> The default `kraken2` standard database is hosted on AWS. In the event the connection is interrupted the pipeline will fail out. It is recommended to use/download a database from [the kraken2 database zone](https://benlangmead.github.io/aws-indexes/k2) and include `--kraken2_db ` in the command above. The 8GB standard DB is the default. ## Quick Outputs From aa58ba1cf4afba5e6debee85f1ef771b24b69c20 Mon Sep 17 00:00:00 2001 From: Darian Hole Date: Thu, 16 Jan 2025 15:00:32 -0600 Subject: [PATCH 31/38] address comments, hide and add parameters for more user freedom --- .github/workflows/branch.yml | 16 +++---- .github/workflows/linting.yml | 4 +- .nf-core.yml | 2 + CHANGELOG.md | 13 +++++- README.md | 14 ++++-- assets/samplesheet.csv | 3 +- assets/schema_input.json | 2 +- bin/combine_qc_data.py | 21 ++++++--- bin/quast_analyzer.py | 38 ++++++++++----- conf/modules.config | 2 +- conf/test.config | 9 ++-- conf/test_full.config | 9 ++-- docs/README.md | 1 - docs/output.md | 22 ++++----- docs/roadmap.md | 30 ------------ docs/usage.md | 47 ++++++++++--------- modules/local/plotting.nf | 6 +-- modules/local/qc.nf | 3 +- modules/local/quast.nf | 4 ++ modules/local/reportree.nf | 48 ------------------- nextflow.config | 10 +++- nextflow_schema.json | 87 ++++++++++++++++++++++++++--------- tests/main.nf.test | 9 ++-- tests/test_data/input.csv | 3 -- workflows/legiovue.nf | 21 ++------- 25 files changed, 213 insertions(+), 211 deletions(-) delete mode 100644 docs/roadmap.md delete mode 100644 modules/local/reportree.nf delete mode 100644 tests/test_data/input.csv diff --git a/.github/workflows/branch.yml b/.github/workflows/branch.yml index 68c8b85..9677924 100644 --- a/.github/workflows/branch.yml +++ b/.github/workflows/branch.yml @@ -1,15 +1,15 @@ name: nf-core branch protection -# This workflow is triggered on PRs to master branch on the repository -# It fails when someone tries to make a PR against the nf-core `master` branch instead of `dev` +# This workflow is triggered on PRs to main branch on the repository +# It fails when someone tries to make a PR against the nf-core `main` branch instead of `dev` on: pull_request_target: - branches: [master] + branches: [main] jobs: test: runs-on: ubuntu-latest steps: - # PRs to the nf-core repo master branch are only ok if coming from the nf-core repo `dev` or any `patch` branches + # PRs to the nf-core repo main branch are only ok if coming from the nf-core repo `dev` or any `patch` branches - name: Check PRs if: github.repository == 'phac-nml/legiovue' run: | @@ -22,7 +22,7 @@ jobs: uses: mshick/add-pr-comment@b8f338c590a895d50bcbfa6c5859251edc8952fc # v2 with: message: | - ## This PR is against the `master` branch :x: + ## This PR is against the `main` branch :x: * Do not close this PR * Click _Edit_ and change the `base` to `dev` @@ -32,9 +32,9 @@ jobs: Hi @${{ github.event.pull_request.user.login }}, - It looks like this pull-request is has been made against the [${{github.event.pull_request.head.repo.full_name }}](https://github.com/${{github.event.pull_request.head.repo.full_name }}) `master` branch. - The `master` branch on nf-core repositories should always contain code from the latest release. - Because of this, PRs to `master` are only allowed if they come from the [${{github.event.pull_request.head.repo.full_name }}](https://github.com/${{github.event.pull_request.head.repo.full_name }}) `dev` branch. + It looks like this pull-request is has been made against the [${{github.event.pull_request.head.repo.full_name }}](https://github.com/${{github.event.pull_request.head.repo.full_name }}) `main` branch. + The `main` branch on nf-core repositories should always contain code from the latest release. + Because of this, PRs to `main` are only allowed if they come from the [${{github.event.pull_request.head.repo.full_name }}](https://github.com/${{github.event.pull_request.head.repo.full_name }}) `dev` branch. You do not need to close this PR, you can change the target branch to `dev` by clicking the _"Edit"_ button at the top of this page. Note that even after this, the test will continue to show as failing until you push a new commit. diff --git a/.github/workflows/linting.yml b/.github/workflows/linting.yml index a502573..6bfe937 100644 --- a/.github/workflows/linting.yml +++ b/.github/workflows/linting.yml @@ -53,7 +53,7 @@ jobs: pip install nf-core==${{ steps.read_yml.outputs['nf_core_version'] }} - name: Run nf-core pipelines lint - if: ${{ github.base_ref != 'master' }} + if: ${{ github.base_ref != 'main' }} env: GITHUB_COMMENTS_URL: ${{ github.event.pull_request.comments_url }} GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} @@ -61,7 +61,7 @@ jobs: run: nf-core -l lint_log.txt pipelines lint --dir ${GITHUB_WORKSPACE} --markdown lint_results.md - name: Run nf-core pipelines lint --release - if: ${{ github.base_ref == 'master' }} + if: ${{ github.base_ref == 'main' }} env: GITHUB_COMMENTS_URL: ${{ github.event.pull_request.comments_url }} GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/.nf-core.yml b/.nf-core.yml index 14b72e3..6387237 100644 --- a/.nf-core.yml +++ b/.nf-core.yml @@ -9,6 +9,8 @@ lint: - .github/ISSUE_TEMPLATE/bug_report.yml - .github/ISSUE_TEMPLATE/config.yml - .github/ISSUE_TEMPLATE/feature_request.yml + - .github/workflows/branch.yml + - .github/workflows/linting.yml - .github/workflows/awstest.yml - .github/workflows/awsfulltest.yml - assets/email_template.html diff --git a/CHANGELOG.md b/CHANGELOG.md index f9f198e..2704757 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,7 +3,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). -## v0.2.0 - [2025-01-15] +## [0.2.0] - 2025-01-16 ### `Added` @@ -16,6 +16,12 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - `nf-prov` plugin - Required nf-core files - CI tests and linting +- Added in quality parameters to allow more user freedom: + - max_contigs + - min_align_percent + - min_reads_warn + - min_n50_score + - max_n50_score ### `Changed` @@ -33,8 +39,11 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Usage and README docs for the input adjustments -## v0.1.0 - [Beta-Test-2024-11-29] +## [0.1.0] - Beta-Test-2024-11-29 ### `Added` - LegioVue pipeline created and initial beta code added + +[0.1.0]: https://github.com/phac-nml/legiovue/releases/tag/0.1.0 +[0.2.0]: https://github.com/phac-nml/legiovue/releases/tag/0.2.0 diff --git a/README.md b/README.md index 0122eea..d7a2a89 100644 --- a/README.md +++ b/README.md @@ -1,12 +1,12 @@ -# legiovue +# LegioVue LegioVue is a nextflow pipeline for whole-genome analysis of _Legionella pneumophila_. It performs _in silico_ sequence typing, genome assembly, and core-genome analysis. It also provides detailed information about the quality of _L. pneumophila_ genomes. The name is an homage to the Bellevue-Stratford hotel, site of the first known outbreak of Legionnaire's Disease. -This project serves as a repository for tools, notes, and informtation regarding the LegioVue pipeline. This project is a GRDI funded research project surrounding the **assessment and implementation of a whole genome sequencing scheme for rapid resolution of _Legionella pneumophila_ outbreaks within Canada to better protect vulnerable populations**. The goal is to generate and nationally deploy a standardized pipeline that will shift _L. pneumophila_ analysis from conventional sequence based typing to whole genome sequence-based typing and clustering, for rapid detection and response to Legionnaires' Disease outbreaks in Canada. +This project serves as a repository for the LegioVue analysis pipeline along with validation notes, and information on it. This project is a GRDI-funded research project surrounding the **assessment and implementation of a whole genome sequencing scheme for rapid resolution of _Legionella pneumophila_ outbreaks within Canada to better protect vulnerable populations**. The goal is to generate and nationally deploy a standardized pipeline that will shift _L. pneumophila_ analysis from conventional sequence based typing to whole genome sequence-based typing and clustering, for rapid detection and response to Legionnaires' Disease outbreaks in Canada. ## Big Picture Overview -**LegioVue** contains a combination of tools that are used to do _de novo_ assembly, sequence typing, cgMLST, and quality control for all input samples with the end goal in having the available data to confirm cluster outbreaks. Currently, clustering is not included in the pipeline but its addition is to come soon. With this, there are additional available steps on how to use all of the outputs to do cluster analysis. +**LegioVue** contains a combination of tools that are used to do _de novo_ assembly, sequence typing, cgMLST, and quality control for all input samples with the end goal in having the available data to confirm cluster outbreaks. Currently, clustering is not included in the pipeline but its addition is to come soon. However, we include additional instructions on how to perform cluster analysis on generated outputs. ## ![LegioVue-WGS-Workflow.png](LegioVue-WGS-Workflow.png) @@ -50,7 +50,7 @@ By default, the `kraken2` and `SPAdes` steps have a minimum resource usage alloc This can be adjusted (along with the other labels) by creating and passing a [custom configuration file](https://nf-co.re/docs/usage/getting_started/configuration) with `-c ` or by adjusting the `--max_cpus` and `--max_memory` parameters. More info can be found in the [usage doc](./docs/usage.md) -The default `kraken2` database links to the 8Gb standard database on the AWS Index server so the required memory can be lowered a decent bit (16Gb) with minimal impact if resources are a limiting factor. +The recommended `kraken2` database is the 8Gb standard database that can be found on the [AWS Index server](s3://genome-idx/kraken/standard_08gb_20240904) or the [the kraken2 database zone](https://benlangmead.github.io/aws-indexes/k2) so the required memory can be lowered a decent bit (16Gb) with minimal impact if resources are a limiting factor. ## Quick Usage @@ -64,6 +64,7 @@ Directory Input: nextflow run phac-nml/legiovue \ -profile \ --fastq_dir \ + --kraken2_db \ [Optional Args] ``` @@ -74,6 +75,7 @@ Where: - `--fastq_dir `: Path to directory containing paired Illumina `_R1` and `_R2` fastq files - Fastqs must be formatted as `_{R1,R2}\*.fastq\*` - At the moment everything before the first `_R1/_R2` is kept as the sample name +- `--kraken2_db `: Path to a kraken2 database Samplesheet CSV Input: @@ -81,6 +83,7 @@ Samplesheet CSV Input: nextflow run phac-nml/legiovue \ -profile \ --input \ + --kraken2_db \ [Optional Args] ``` @@ -93,9 +96,10 @@ Where: - `fastq_1,fastq_2` is the path to both the fastq reads - Note that paired end sequencing is required at this time! - [Example file](./tests/test_data/input.csv) +- `--kraken2_db `: Path to a kraken2 database > [!NOTE] -> The default `kraken2` standard database is hosted on AWS. In the event the connection is interrupted the pipeline will fail out. It is recommended to use/download a database from [the kraken2 database zone](https://benlangmead.github.io/aws-indexes/k2) and include `--kraken2_db ` in the command above. The 8GB standard DB is the default. +> The recommended 8GB `kraken2` standard database can be found on the [AWS Index server](s3://genome-idx/kraken/standard_08gb_20240904) or the [the kraken2 database zone](https://benlangmead.github.io/aws-indexes/k2). Download this before running the pipeline! ## Quick Outputs diff --git a/assets/samplesheet.csv b/assets/samplesheet.csv index 3788156..00d6ba9 100644 --- a/assets/samplesheet.csv +++ b/assets/samplesheet.csv @@ -1,2 +1,3 @@ sample,fastq_1,fastq_2 -SAMPLE_PAIRED_END,/path/to/fastq/files/AEG588A1_S1_L002_R1_001.fastq.gz,/path/to/fastq/files/AEG588A1_S1_L002_R2_001.fastq.gz +sample1,https://github.com/phac-nml/legiovue/raw/add/iridanext-updates/tests/test_data/in1_R1.fastq.gz,https://github.com/phac-nml/legiovue/raw/add/iridanext-updates/tests/test_data/in1_R2.fastq.gz +sample2,https://github.com/phac-nml/legiovue/raw/add/iridanext-updates/tests/test_data/in2_R1.fastq.gz,https://github.com/phac-nml/legiovue/raw/add/iridanext-updates/tests/test_data/in2_R2.fastq.gz diff --git a/assets/schema_input.json b/assets/schema_input.json index aa086ab..b659c43 100644 --- a/assets/schema_input.json +++ b/assets/schema_input.json @@ -1,6 +1,6 @@ { "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://raw.githubusercontent.com/phac-nml/legiovue/master/assets/schema_input.json", + "$id": "https://raw.githubusercontent.com/phac-nml/legiovue/main/assets/schema_input.json", "title": "phac-nml/legiovue pipeline - params.input schema", "description": "Schema for the file provided with params.input", "type": "array", diff --git a/bin/combine_qc_data.py b/bin/combine_qc_data.py index 2cd5a49..fe80b5c 100755 --- a/bin/combine_qc_data.py +++ b/bin/combine_qc_data.py @@ -42,7 +42,7 @@ def parse_args() -> argparse.ArgumentParser: '--quast_tsv', type=Path, required=False, - help="Quast summary TSV output" + help="QUAST summary TSV output" ) parser.add_argument( '-st', @@ -63,14 +63,21 @@ def parse_args() -> argparse.ArgumentParser: '--final_score_csv', type=Path, required=False, - help="Quast final score CSV output" + help="QUAST final score CSV output" ) parser.add_argument( - '--min_reads', + '--min_reads_fail', type=int, required=False, default=60000, - help="Minimum number of reads required to be passed through the pipeline" + help="Threshold for minimum number of reads required to allow sample to be passed through the pipeline" + ) + parser.add_argument( + '--min_reads_warn', + type=int, + required=False, + default=150000, + help="Threshold for minimum number of reads that will be given a QC warning" ) parser.add_argument( '--min_abundance_percent', @@ -180,13 +187,13 @@ def main() -> None: # Don't overwrite the failed reason as if it fails at abundance that should # be reported - if outdict['num_paired_trimmed_reads'] < args.min_reads and not failed: + if outdict['num_paired_trimmed_reads'] < args.min_reads_fail and not failed: failed = True failed_reason = ['failing_read_count'] - elif outdict['num_paired_trimmed_reads'] < 150000: + elif outdict['num_paired_trimmed_reads'] < args.min_reads_warn: warn_qual_criteria.append('low_read_count') - # Quast + # QUAST outdict['n50'] = 0 outdict['num_contigs'] = 0 outdict['pct_gc'] = 0 diff --git a/bin/quast_analyzer.py b/bin/quast_analyzer.py index a056a22..f036d9f 100755 --- a/bin/quast_analyzer.py +++ b/bin/quast_analyzer.py @@ -1,6 +1,6 @@ #!/usr/bin/env python3 """ -Analyze quast transposed results TSV file +Analyze QUAST transposed results TSV file according to provided specifications """ import argparse @@ -37,7 +37,7 @@ def init_parser() -> argparse.ArgumentParser: Returns: argparse.ArgumentParser: Parser """ - parser = argparse.ArgumentParser(prog='quast_analyzer', description='Analyze quast results and output the comparison.') + parser = argparse.ArgumentParser(prog='quast_analyzer', description='Analyze QUAST results and output the comparison.') # Input/Output Options parser.add_argument( 'input_file', @@ -65,13 +65,25 @@ def init_parser() -> argparse.ArgumentParser: '--max_contigs', type=int, default=100, - help='Threshold for the number of contigs > 500bp assembled by SPAdes' + help='Threshold for the number of contigs > 500bp assembled by SPAdes to get scoring points' ) parser.add_argument( '--min_align_percent', type=int, default=75, - help='Thresold for minimum quast genome fraction percentage' + help='Thresold for minimum QUAST genome fraction percentage to get scoring points' + ) + parser.add_argument( + '--min_n50_score', + type=int, + default=80000, + help='Thresold for minimum QUAST N50 value to obtain scoring points' + ) + parser.add_argument( + '--max_n50_score', + type=int, + default=220000, + help='Thresold for maximum QUAST N50 score to get max scoring points' ) # Version # @@ -111,13 +123,11 @@ def parse_sample_line(sample_line: str, headers: list) -> dict: return dict(zip(headers, fields)) -def calculate_score(metric: int, bottom=80000, top=220000): - """Calculate variable score based on a bottom and top range determined from testing +def calculate_n50_score(metric: int, bottom: int, top: int) -> float: + """Calculate N50 variable score based on a bottom and top range determined from testing Args: metric (int): Metric to score - bottom (int, optional): Bottom of the score range. Defaults to 100000. - top (int, optional): Top of the score range. Defaults to 300000. Returns: float: 2-digit calculated score between 0-1 @@ -131,7 +141,10 @@ def calculate_score(metric: int, bottom=80000, top=220000): return round((metric - bottom) / (top - bottom), 2) -def analyze_sample(sample: dict, max_contigs: int, min_align_percent: int) -> dict: +def analyze_sample( + sample: dict, max_contigs: int, min_align_percent: int, + min_n50_score: int, max_n50_score: int +) -> dict: """Extract and values from the sample dictionary Args: @@ -166,7 +179,7 @@ def analyze_sample(sample: dict, max_contigs: int, min_align_percent: int) -> di num_contigs_score = 1 # Evaluate "N50" - n50_score = calculate_score(n50) + n50_score = calculate_n50_score(n50, min_n50_score, max_n50_score) score += n50_score # Evaluate "Duplication ratio" @@ -261,7 +274,10 @@ def main() -> None: sample_data = parse_sample_line(line.strip(), headers) # Analyze the sample and append the result - result = analyze_sample(sample_data, args.max_contigs, args.min_align_percent) + result = analyze_sample( + sample_data, args.max_contigs, args.min_align_percent, + args.min_n50_score, args.max_n50_score + ) if result: results_list.append(result) diff --git a/conf/modules.config b/conf/modules.config index d477be8..22ef289 100644 --- a/conf/modules.config +++ b/conf/modules.config @@ -107,7 +107,7 @@ process { ] } - withName: PLOT_PYSAMSTATS_TSV { + withName: PLOT_EL_GATO_ALLELES { publishDir = [ path: { "${params.outdir}/el_gato/plots" }, mode: params.publish_dir_mode, diff --git a/conf/test.config b/conf/test.config index 2690d22..111ae2d 100644 --- a/conf/test.config +++ b/conf/test.config @@ -2,7 +2,8 @@ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Nextflow config file for running minimal tests ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Defines input files and everything required to run a fast and simple pipeline test. + Defines input files and everything required to run a fast and simple pipeline test + using the directory input and with skipping over some of the non-required steps. Use as follows: nextflow run phac-nml/legiovue -profile test, @@ -18,11 +19,11 @@ process { } params { - config_profile_name = 'Test profile' - config_profile_description = 'Minimal test dataset to check pipeline function' + config_profile_name = "Test profile" + config_profile_description = "Minimal test dataset to check pipeline function" // Input - fastq_dir = 'tests/test_data/' + fastq_dir = "${projectDir}/tests/test_data/" // Filtering min_reads = 100 diff --git a/conf/test_full.config b/conf/test_full.config index c89ca04..5f0f159 100644 --- a/conf/test_full.config +++ b/conf/test_full.config @@ -2,7 +2,8 @@ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Nextflow config file for running minimal tests ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Defines input files and everything required to run a fast and simple full pipeline test. + Defines input files and everything required to run a simple pipeline test that + uses the input parameter and all steps. Use as follows: nextflow run phac-nml/legiovue -profile test_full, @@ -18,11 +19,11 @@ process { } params { - config_profile_name = 'Test profile' - config_profile_description = 'Minimal test dataset to check pipeline function' + config_profile_name = "Full test profile" + config_profile_description = "Full test dataset to check pipeline function" // Input - input = 'tests/test_data/input.csv' + input = "${projectDir}/assets/samplesheet.csv" // Filtering min_reads = 100 diff --git a/docs/README.md b/docs/README.md index 8e8c3e5..79640ee 100644 --- a/docs/README.md +++ b/docs/README.md @@ -10,4 +10,3 @@ The phac-nml/LegioVue documentation is split up into the following pages: - Some recommended follow-up clustering steps until they are in incorporated into the pipeline - [Investigations](./investigations.md) - An overview of the different investigations done to determine key pipeline values - - TODO write this out diff --git a/docs/output.md b/docs/output.md index 80dfbe0..b8d28ff 100644 --- a/docs/output.md +++ b/docs/output.md @@ -26,7 +26,7 @@ The pipeline is built using [Nextflow](https://www.nextflow.io/) and processes d - [cgMLST and Clustering](#cgmlst-and-clustering) - [chewBBACA](#chewbbaca) - cgMLST results - [Final Quality Control](#final-quality-control) - - [QUAST Scoring Script](#quast-scoring-script) - Simple assembly score of quast output based on established criteria + - [QUAST Scoring Script](#quast-scoring-script) - Simple assembly score of QUAST output based on established criteria - [Final QC Checks](#final-qc-checks) - Summary of pipeline QC metrics Additionally [Pipeline information](#pipeline-information) which includes report metrics generated during the workflow execution can also be found @@ -230,7 +230,7 @@ Finally summary scoring and metrics - `scored_quast_report.csv`: Scored quast report based on determined thresholds -Scored quast report based on adapted thresholds from [Gorzynski et al.](<10.1016/S2666-5247(22)00231-2>) to determine if the sample has any metrics that significantly deviate from the expected results +Scored QUAST report based on adapted thresholds from [Gorzynski et al.](<10.1016/S2666-5247(22)00231-2>) to determine if the sample has any metrics that significantly deviate from the expected results #### Final QC Checks @@ -249,14 +249,14 @@ The `qc_status` column will be any of the following statuses: The `qc_message` column contains the reason for the `qc_status` and includes: -| Message | Associated Status | Flag Reason | -| ---------------------- | ----------------- | ---------------------------------------------------------------------------------------------------------------------------------------------- | -| low_lpn_abundance | WARN | Low (< 75% abundance) _L.pneumophila_ abundance is not expected with isolate sequencing and may signify a problem sample | -| low_read_count | WARN | Low read count (< 300,000 reads default) has been shown to lead to poor, uninformative assemblies and sample is kicked out | -| low_n50 | WARN | Low N50 (< 100,000) scores have been shown to very negatively affect clustering outputs | -| low_exact_allele_calls | WARN | Low chewBBACA exact allele calls (< 90% called) show that there may be issues in the assembly | -| low_qc_score | WARN | Low QUAST-Analyzer QC score (< 4) shows that there may be issues in the assembly | -| no_lpn_detected | FAIL | Very little (< 10% default) _L.pneumophila_ abundance flags that the sample may not be _L.pneumophila_ and sample is kicked from pipeline | -| failing_read_count | FAIL | Read count below failing threshold (< 150,000 reads default) has been shown to lead to poor, uninformative assemblies and sample is kicked out | +| Message | Associated Status | Flag Reason | +| ---------------------- | ----------------- | --------------------------------------------------------------------------------------------------------------------------------------------- | +| low_lpn_abundance | WARN | Low (< 75% abundance) _L.pneumophila_ abundance is not expected with isolate sequencing and may signify a problem sample | +| low_read_count | WARN | Low read count (< 150,000 reads default) has been shown to lead to poor, uninformative assemblies and sample is kicked out | +| low_n50 | WARN | Low N50 (< 80,000) scores have been shown to very negatively affect clustering outputs | +| low_exact_allele_calls | WARN | Low chewBBACA exact allele calls (< 90% called) show that there may be issues in the assembly | +| low_qc_score | WARN | Low QUAST-Analyzer QC score (< 4) shows that there may be issues in the assembly | +| no_lpn_detected | FAIL | Very little (< 10% default) _L.pneumophila_ abundance flags that the sample may not be _L.pneumophila_ and sample is kicked from pipeline | +| failing_read_count | FAIL | Read count below failing threshold (< 60,000 reads default) has been shown to lead to poor, uninformative assemblies and sample is kicked out | --- diff --git a/docs/roadmap.md b/docs/roadmap.md deleted file mode 100644 index dfb124c..0000000 --- a/docs/roadmap.md +++ /dev/null @@ -1,30 +0,0 @@ -# Development Roadmap - -What is going to be added. The order is not necessarily the priority in which they will be - -## To Do - -1. Investigations Document - - - Downsampling testing - - Tool testing - -2. IRIDA-Next requirements - - - Add in needed IRIDA next requirements and plugin - -3. Validation dataset and report for releases - - - To make sure everything is working correctly on releases, have a validation report to go along with them - -4. Requested updates (or updates we were planning) - - Filtering out non _Legionella_ reads after kraken/bracken - - Other tool testing - - For resource/speed/output optimization - -## Done - -- CI Tests with nf-test, and nf-core linting (v0.2.0) -- Parameter validation using nf-core plugin (v0.2.0) -- Test dataset for test configs (v0.2.0) -- Ability to use a samplesheet CSV as input (v0.2.0) diff --git a/docs/usage.md b/docs/usage.md index d5f28e1..1f43299 100644 --- a/docs/usage.md +++ b/docs/usage.md @@ -2,7 +2,7 @@ ## Introduction -This pipeline is intended to be run on _Legionella pneumophila_ paired illumina isolate sequencing data. It generates _de novo_ assemblies using [`SPAdes`](https://github.com/ablab/spades), ST types using [`el_gato`](https://github.com/appliedbinf/el_gato), cgMLST calls with [`chewbbaca`](https://chewbbaca.readthedocs.io/en/latest/index.html), and a summary QC report. The outputs of the pipeline can be used for other downstream applications. All parameters have been determined based on outbreak dataset testing. +This pipeline is intended to be run on _Legionella pneumophila_ paired illumina isolate sequencing data. It generates _de novo_ assemblies using [`SPAdes`](https://github.com/ablab/spades), sequence types (ST) using [`el_gato`](https://github.com/appliedbinf/el_gato), cgMLST calls with [`chewBBACA`](https://chewbbaca.readthedocs.io/en/latest/index.html), and a summary QC report. The outputs of the pipeline can be used for other downstream applications. All parameters have been determined based on outbreak dataset testing. ## Index @@ -32,13 +32,11 @@ Available: - `singularity`: Utilize singularity for dependencies and environment management - `docker`: Utilize docker to for dependencies and environment management -> [!NOTE] > `el_gato` and the plotting currently are using custom docker containers. The `el_gato` container will be returned to the proper one upon a new release of the tool - For testing the pipeline functions correctly, you can use the `test` or `test_full` profile ## Running the Pipeline -To just get started and run the pipeline, one of the following basic commands is all that is required to do so. The only difference between the two being in how the input fastq data is specified/found: +To get started, one of the following commands may be used to run the pipeline: Directory Input: @@ -60,7 +58,7 @@ nextflow run phac-nml/legiovue \ ### `--fastq_dir` -Get fastq sample data into the pipeline by specifying a directory where the files are found. Fastqs must be formatted as `_{R1,R2}\*.fastq\*` so that they can be paired based on the name. Note that at the moment everything before the first `_R1/_R2` is kept as the sample name. +Specify a directory to where paired FASTQ-formatted files are found. FASTQs must be formatted as `_{R1,R2}\*.fastq\*` so that they can be paired up correctly based on the file name. Note that at the moment everything before the first `_R1/_R2` is kept as the sample name. Example directory with 3 samples: @@ -76,7 +74,9 @@ Example directory with 3 samples: ### `--input` -Get fastq sample data into the pipeline by creating a samplesheet CSV file with the header line `sample,fastq_1,fastq_2`. The outputs are named based on the given sample name and the data is input based on the path specified under `fastq_1` and `fastq_2`. The fastq files can end with `.fq`, `.fq.gz`, `.fastq`, or `.fastq.gz` to be valid +Specify a CSV samplesheet containing information about each sample including the sample name and the FASTQ-formatted reads associated with the sample. + +The outputs are named based on the given sample name and the FASTQ data is input based on the path specified under `fastq_1` and `fastq_2`. The input FASTQ files can end with `.fq`, `.fq.gz`, `.fastq`, or `.fastq.gz` to be valid inputs. Example: | sample | fastq_1 | fastq_2 | @@ -103,21 +103,26 @@ It is required to pick one of the following to get fastq data into the pipeline ### Optional -| Parameter | Description | Type | Default | Notes | -| ----------------------- | ------------------------------------------------------------------------------- | ----- | --------------------------------------------- | ------------------------------------------------------------------------------------------ | -| --outdir | Directory name to output results to | Str | 'results' | | -| --min_abundance_percent | Minimum _L. pneumophila_ abundance required after bracken to continue sample on | Float | 10.0 | Very permissive for now | -| --min_reads | Minimum reads required after trimmomatic to continue sample on | Int | 60,000 | Under 150,000 reads samples don't usually provide enough info for proper clustering / STs | -| --kraken2_db | Path to standard `kraken2` database for detecting _L. pneumophila_ reads | Path | s3://genome-idx/kraken/standard_08gb_20240904 | Default is AWS hosted database by developers. It is better to use your own if you have one | -| --quast_ref | Path to reference sequence for some of the `quast` metrics | Path | data/C9_S.reference.fna | C9 was picked as a default reference but any good sequence will work | -| skip_el_gato | Flag to skip running el_gato sequence typing | Bool | False | | -| skip_plotting | Flag to skip running the el_gato allele plotting | Bool | False | | -| --prepped_schema | Path to a prepped `chewbbaca` schema to save running the prep command | Path | data/SeqSphere_1521_schema | Provided with pipeline | -| --schema_targets | Path to schema targets to prep for `chewbbaca` | Path | null | | -| --publish_dir_mode | Specifies how intermediate files should be saved to the output directory | Str | copy | | -| --max_memory | Maximum memory allowed to be given to a job | Str | 128.GB | | -| --max_cpus | Maximum cpus allowed to be given to a job | Int | 16 | | -| --max_time | Maximum time allowed to be given to a job | Str | 240.h' | | +| Parameter | Description | Type | Default | Notes | +| ----------------------- | ------------------------------------------------------------------------------------- | ------ | -------------------------- | ---------------------------------------------------------------------------------------------------------------------- | +| --outdir | Directory name to output results to | Str | 'results' | | +| --min_abundance_percent | Minimum _L. pneumophila_ abundance required after bracken to continue sample on | Float | 10.0 | Very permissive for now | +| --min_reads | Minimum reads required after trimmomatic to continue sample on | Int | 60,000 | Under 150,000 reads samples don't usually provide enough info for proper clustering / STs | +| --kraken2_db | Path to standard `kraken2` database for detecting _L. pneumophila_ reads | Path | | You will need to get your own database. The 8GB database from s3://genome-idx/kraken/standard_08gb_20240904 works well | +| --quast_ref | Path to reference sequence for some of the `QUAST` metrics | Path | data/C9_S.reference.fna | C9 was picked as a default reference but any good sequence will work | +| --max_contigs | Threshold for the number of contigs > 500bp assembled by SPAdes to get scoring points | 100 | Int | | +| --min_align_percent | Thresold for minimum QUAST genome fraction percentage to get scoring points | 75 | Float | | +| --min_reads_warn | Threshold for minimum number of reads that will be given a QC warning | 150000 | Int | | +| --min_n50_score | Thresold for minimum QUAST N50 value to obtain scoring points | 80000 | Int | | +| --max_n50_score | Thresold for maximum QUAST N50 score to get max scoring points | 220000 | Int | | +| skip_el_gato | Flag to skip running el_gato sequence typing | Bool | False | | +| skip_plotting | Flag to skip running the el_gato allele plotting | Bool | False | | +| --prepped_schema | Path to a prepped `chewBBACA` schema to save running the prep command | Path | data/SeqSphere_1521_schema | Provided with pipeline | +| --schema_targets | Path to schema targets to prep for `chewBBACA` | Path | null | | +| --publish_dir_mode | Specifies how intermediate files should be saved to the output directory | Str | copy | | +| --max_memory | Maximum memory allowed to be given to a job | Str | 128.GB | | +| --max_cpus | Maximum cpus allowed to be given to a job | Int | 16 | | +| --max_time | Maximum time allowed to be given to a job | Str | 240.h' | | ## Core Nextflow Arguments diff --git a/modules/local/plotting.nf b/modules/local/plotting.nf index ad880ce..9ea55f2 100644 --- a/modules/local/plotting.nf +++ b/modules/local/plotting.nf @@ -1,12 +1,8 @@ -process PLOT_PYSAMSTATS_TSV { +process PLOT_EL_GATO_ALLELES { tag "$meta.id" label 'process_low' - // As its just a plot output better to ignore errors for now - label 'error_ignore' conda "$projectDir/envs/plotting-env.yml" - // Custom built for this... - // container "docker://docker.io/darianhole/legio-plotting:0.1.0" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? 'https://depot.galaxyproject.org/singularity/mulled-v2-b2ec1fea5791d428eebb8c8ea7409c350d31dada:a447f6b7a6afde38352b24c30ae9cd6e39df95c4-1' : 'biocontainers/mulled-v2-b2ec1fea5791d428eebb8c8ea7409c350d31dada:a447f6b7a6afde38352b24c30ae9cd6e39df95c4-1' }" diff --git a/modules/local/qc.nf b/modules/local/qc.nf index e70b9a1..90c3e78 100644 --- a/modules/local/qc.nf +++ b/modules/local/qc.nf @@ -37,7 +37,8 @@ process COMBINE_SAMPLE_DATA { $st_report_arg \\ $chewbbaca_stats_arg \\ --min_abundance_percent ${params.min_abundance_percent} \\ - --min_reads ${params.min_reads} + --min_reads_fail ${params.min_reads} \\ + --min_reads_warn ${params.min_reads_warn} cat <<-END_VERSIONS > versions.yml "${task.process}": diff --git a/modules/local/quast.nf b/modules/local/quast.nf index 19241e9..aaf77fd 100644 --- a/modules/local/quast.nf +++ b/modules/local/quast.nf @@ -71,6 +71,10 @@ process SCORE_QUAST { script: """ quast_analyzer.py \\ + --max_contigs ${params.max_contigs} \\ + --min_align_percent ${params.min_align_percent} \\ + --min_n50_score ${params.min_n50_score} \\ + --max_n50_score ${params.max_n50_score} \\ $transposed_report \\ --outfile scored_quast_report.csv diff --git a/modules/local/reportree.nf b/modules/local/reportree.nf deleted file mode 100644 index 833ca99..0000000 --- a/modules/local/reportree.nf +++ /dev/null @@ -1,48 +0,0 @@ -// TODO - Incorporate when we have a time to create a working container/setup -process REPORTREE { - label 'process_medium' - - publishDir "${params.outdir}/reportree", pattern: "", mode: 'copy' - - // No conda at the moment as the install for the env is a pain - // conda "$projectDir/envs/" - // Only a docker container that they host at the moment - // Container also missing ps so won't work - container "insapathogenomics/reportree" - - input: - path cgmlst - path metadata - - output: - path "versions.yml", emit: versions - - when: - task.ext.when == null || task.ext.when - - script: - def metadata_arg = metadata ? "-m $metadata" : "" - """ - reportree.py \\ - $metadata_arg \\ - -a $cgmlst/cgMLST100.tsv \\ - -thr 0-5 \\ - --method MSTreeV2 \\ - --loci-called 1.0 \\ - --matrix-4-grapetree \\ - --analysis grapetree - - cat <<-END_VERSIONS > versions.yml - "${task.process}": - ReporTree: \$(reportree.py -v | head -n 1 | cut -d' ' -f2) - END_VERSIONS - """ - - stub: - """ - cat <<-END_VERSIONS > versions.yml - "${task.process}": - ReporTree: \$(reportree.py -v | head -n 1 | cut -d' ' -f2) - END_VERSIONS - """ -} diff --git a/nextflow.config b/nextflow.config index cd77ee4..a1a9fc5 100644 --- a/nextflow.config +++ b/nextflow.config @@ -16,13 +16,19 @@ params { min_abundance_percent = 10 min_reads = 60000 + // Kraken + Braken // Link to AWS, if connection is lost or not available user needs to pass // own database path - kraken2_db = "s3://genome-idx/kraken/standard_08gb_20240904" + kraken2_db = null - // Quast ref for scoring + // Quast and quality scoring based on testing quast_ref = "$projectDir/data/C9_S.reference.fna" + max_contigs = 100 + min_align_percent = 75 + min_reads_warn = 150000 + min_n50_score = 80000 + max_n50_score = 220000 // El_Gato skip_el_gato = false diff --git a/nextflow_schema.json b/nextflow_schema.json index 1d68728..f805e0a 100644 --- a/nextflow_schema.json +++ b/nextflow_schema.json @@ -1,6 +1,6 @@ { "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://raw.githubusercontent.com/phac-nml/LegioVue/master/nextflow_schema.json", + "$id": "https://raw.githubusercontent.com/phac-nml/legiovue/main/nextflow_schema.json", "title": "phac-nml/LegioVue pipeline parameters", "description": "Legionella pneumophila WGS analysis", "type": "object", @@ -26,7 +26,8 @@ "type": "string", "fa_icon": "fas fa-folder-open", "description": "Path to directory containing paired (_R1/_R2) gzipped fastq files", - "format": "directory-path" + "format": "directory-path", + "hidden": true } } }, @@ -38,21 +39,22 @@ "properties": { "kraken2_db": { "type": "string", - "default": "s3://genome-idx/kraken/standard_08gb_20240904", + "exists": true, + "format": "directory-path", "fa_icon": "fas fa-server", - "description": "Kraken2 database to use for abundance checks" + "description": "Path to kraken2 database to use for abundance checks" }, "min_abundance_percent": { "type": "number", "default": 10, "description": "Minimum L.pn abundance to keep sample in pipeline", "fa_icon": "fas fa-percentage", - "minimum": 1, - "maximum": 99 + "minimum": 0, + "maximum": 100 }, "min_reads": { "type": "integer", - "default": 150000, + "default": 60000, "description": "Minimum number of paired reads to keep sample in pipeline", "minimum": 0 } @@ -60,14 +62,14 @@ "fa_icon": "fas fa-filter" }, "skipping_options": { - "title": "Skipping options", + "title": "Step skipping options", "type": "object", - "description": "Processes that can be skipped through parameters", + "description": "Processes that can be skipped through specifying the following parameters", "default": "", "properties": { "skip_el_gato": { "type": "boolean", - "description": "Skip running all el_gato Sequence Typing aspects", + "description": "Skip running all el_gato sequence typing aspects", "fa_icon": "fas fa-forward" }, "skip_plotting": { @@ -78,10 +80,10 @@ }, "fa_icon": "fas fa-forward" }, - "quast_options": { - "title": "Quast options", + "quast_and_quality_options": { + "title": "QUAST and Quality options", "type": "object", - "description": "Options for quast", + "description": "Options for adjusting running QUAST", "default": "", "properties": { "quast_ref": { @@ -89,25 +91,61 @@ "default": "data/C9_S.reference.fna", "format": "file-path", "fa_icon": "fas fa-file-alt", - "description": "Path to reference fasta file to base quast metrics off of" + "description": "Path to reference fasta file to base QUAST alignment metrics off of", + "hidden": true + }, + "max_contigs": { + "type": "integer", + "default": 100, + "description": "Threshold for the number of contigs > 500bp assembled by SPAdes to get scoring points", + "minimum": 0 + }, + "min_align_percent": { + "type": "number", + "default": 75, + "description": "Thresold for minimum QUAST genome fraction percentage to get scoring points", + "fa_icon": "fas fa-percentage", + "minimum": 0, + "maximum": 100 + }, + "min_reads_warn": { + "type": "integer", + "default": 150000, + "description": "Threshold for minimum number of reads that will be given a QC warning", + "minimum": 0 + }, + "min_n50_score": { + "type": "integer", + "default": 80000, + "description": "Thresold for minimum QUAST N50 value to obtain scoring points", + "minimum": 0 + }, + "max_n50_score": { + "type": "integer", + "default": 220000, + "description": "Thresold for maximum QUAST N50 score to get max scoring points", + "minimum": 0 } } }, "chewbbaca_options": { - "title": "Chewbbaca options", + "title": "ChewBBACA options", "type": "object", - "description": "Options to specify the chewbbaca schema to use", + "description": "Specifies the input for the chewBBACA schema to utilize for cgMLST", "default": "", "properties": { "schema_targets": { "type": "string", - "description": "Schema targets" + "description": "ChewBBACA schema targets directory", + "format": "directory-path", + "hidden": true }, "prepped_schema": { "type": "string", "default": "data/SeqSphere_1521_schema", - "description": "Chewbbaca prepped schema", - "format": "directory-path" + "description": "ChewBBACA prepped schema directory", + "format": "directory-path", + "hidden": true } }, "fa_icon": "fab fa-cc-diners-club" @@ -139,19 +177,22 @@ "type": "string", "default": "128.GB", "fa_icon": "fas fa-database", - "description": "Maximum memory to allow for a process to assign" + "description": "Maximum memory to allow for a process to assign", + "hidden": true }, "max_cpus": { "type": "integer", "default": 16, "fa_icon": "fas fa-microchip", - "description": "Maximum CPUs to allow for a process to assign" + "description": "Maximum CPUs to allow for a process to assign", + "hidden": true }, "max_time": { "type": "string", "default": "240.h", "fa_icon": "fas fa-clock", - "description": "Maximum time to allow for a process to assign" + "description": "Maximum time to allow for a process to assign", + "hidden": true }, "help": { "type": "boolean", @@ -180,7 +221,7 @@ "$ref": "#/$defs/skipping_options" }, { - "$ref": "#/$defs/quast_options" + "$ref": "#/$defs/quast_and_quality_options" }, { "$ref": "#/$defs/chewbbaca_options" diff --git a/tests/main.nf.test b/tests/main.nf.test index 61c853b..d8a0a31 100644 --- a/tests/main.nf.test +++ b/tests/main.nf.test @@ -12,6 +12,7 @@ nextflow_pipeline { input = "$baseDir/tests/test_data/input_none.csv" fastq_dir = "$baseDir/tests/test_data/" outdir = "results" + kraken2_db = "s3://genome-idx/kraken/standard_08gb_20240904" } } then { @@ -30,6 +31,7 @@ nextflow_pipeline { when { params { outdir = "results" + kraken2_db = "s3://genome-idx/kraken/standard_08gb_20240904" } } then { @@ -47,8 +49,9 @@ nextflow_pipeline { when { params { - input = "$baseDir/tests/test_data/input.csv" + input = "$baseDir/tests/test_data/input_none.csv" outdir = "results" + kraken2_db = "s3://genome-idx/kraken/standard_08gb_20240904" min_reads = 100 } } @@ -64,11 +67,11 @@ nextflow_pipeline { //--- Test 4 test("Stub Run Test") { tag "success" - options "-stub-run" when { params { - fastq_dir = "$baseDir/tests/test_data/" + fastq_dir = "${projectDir}/tests/test_data/" + kraken2_db = "s3://genome-idx/kraken/standard_08gb_20240904" outdir = "results" min_reads = 0 max_memory = "8.GB" diff --git a/tests/test_data/input.csv b/tests/test_data/input.csv deleted file mode 100644 index 176c9ca..0000000 --- a/tests/test_data/input.csv +++ /dev/null @@ -1,3 +0,0 @@ -sample,fastq_1,fastq_2 -in1,tests/test_data/in1_R1.fastq.gz,tests/test_data/in1_R2.fastq.gz -in2,tests/test_data/in2_R1.fastq.gz,tests/test_data/in2_R2.fastq.gz diff --git a/workflows/legiovue.nf b/workflows/legiovue.nf index bbbeea3..4bdb870 100644 --- a/workflows/legiovue.nf +++ b/workflows/legiovue.nf @@ -21,7 +21,7 @@ include { CHEWBBACA_EXTRACT_CGMLST } from '../modules/local/chewbbaca.n include { PYSAMSTATS as PYSAMSTATS_MAPQ } from '../modules/local/pysamstats.nf' include { PYSAMSTATS as PYSAMSTATS_BASEQ } from '../modules/local/pysamstats.nf' include { CSVTK_COMBINE_STATS } from '../modules/local/utils.nf' -include { PLOT_PYSAMSTATS_TSV } from '../modules/local/plotting.nf' +include { PLOT_EL_GATO_ALLELES } from '../modules/local/plotting.nf' include { COMBINE_SAMPLE_DATA } from '../modules/local/qc.nf' include { CSVTK_COMBINE } from '../modules/local/utils.nf' include { CUSTOM_DUMPSOFTWAREVERSIONS } from '../modules/nf-core/custom/dumpsoftwareversions/main' @@ -208,10 +208,10 @@ workflow LEGIOVUE { ) ch_versions = ch_versions.mix(CSVTK_COMBINE_STATS.out.versions) - PLOT_PYSAMSTATS_TSV( + PLOT_EL_GATO_ALLELES( CSVTK_COMBINE_STATS.out.tsv ) - ch_versions = ch_versions.mix(PLOT_PYSAMSTATS_TSV.out.versions) + ch_versions = ch_versions.mix(PLOT_EL_GATO_ALLELES.out.versions) } } @@ -269,20 +269,7 @@ workflow LEGIOVUE { ch_versions = ch_versions.mix(CSVTK_COMBINE.out.versions) // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // - // 9. Clustering (TO-DO when environments available) - // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // - // chewbacca -> reportree -> manual vis (right now) - // As reportree isn't easy to get installed in pipeline - // Its current container is missing PS which nextflow needs - - // ReporTree container and conda env are not going to play nice - // REPORTREE( - // CHEWBBACA_EXTRACT_CGMLST.out.cgmlst, - // ch_metadata - // ) - - // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // - // 10. Version Output + // 9. Version Output // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // CUSTOM_DUMPSOFTWAREVERSIONS ( ch_versions.unique().collectFile(name: 'collated_versions.yml') From 5279594491dbb26c0c3242cd6ceca4312f299702 Mon Sep 17 00:00:00 2001 From: Darian Hole Date: Thu, 16 Jan 2025 15:06:44 -0600 Subject: [PATCH 32/38] add in kraken2 database to tests --- conf/test.config | 1 + conf/test_full.config | 1 + 2 files changed, 2 insertions(+) diff --git a/conf/test.config b/conf/test.config index 111ae2d..fbb656c 100644 --- a/conf/test.config +++ b/conf/test.config @@ -24,6 +24,7 @@ params { // Input fastq_dir = "${projectDir}/tests/test_data/" + kraken2_db = "s3://genome-idx/kraken/standard_08gb_20240904" // Filtering min_reads = 100 diff --git a/conf/test_full.config b/conf/test_full.config index 5f0f159..131ae4c 100644 --- a/conf/test_full.config +++ b/conf/test_full.config @@ -24,6 +24,7 @@ params { // Input input = "${projectDir}/assets/samplesheet.csv" + kraken2_db = "s3://genome-idx/kraken/standard_08gb_20240904" // Filtering min_reads = 100 From 3128e72292badd496a6d0852583d684e7e14375c Mon Sep 17 00:00:00 2001 From: Darian Hole Date: Thu, 16 Jan 2025 15:11:13 -0600 Subject: [PATCH 33/38] place skip lint tests into right spot --- .nf-core.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.nf-core.yml b/.nf-core.yml index 6387237..ad3fecf 100644 --- a/.nf-core.yml +++ b/.nf-core.yml @@ -9,8 +9,6 @@ lint: - .github/ISSUE_TEMPLATE/bug_report.yml - .github/ISSUE_TEMPLATE/config.yml - .github/ISSUE_TEMPLATE/feature_request.yml - - .github/workflows/branch.yml - - .github/workflows/linting.yml - .github/workflows/awstest.yml - .github/workflows/awsfulltest.yml - assets/email_template.html @@ -24,6 +22,8 @@ lint: - docs/images/nf-core-LegioVue_logo_dark.png files_unchanged: - .github/PULL_REQUEST_TEMPLATE.md + - .github/workflows/branch.yml + - .github/workflows/linting.yml - docs/README.md - LICENSE - .gitignore From 2bac2da80c63acb77475463c06befbf0703dbf5c Mon Sep 17 00:00:00 2001 From: Darian Hole Date: Fri, 17 Jan 2025 15:12:52 -0600 Subject: [PATCH 34/38] fix up test --- modules/local/el_gato.nf | 6 +++--- tests/main.nf.test | 12 ++++++------ tests/test_data/input_none.csv | 1 + 3 files changed, 10 insertions(+), 9 deletions(-) diff --git a/modules/local/el_gato.nf b/modules/local/el_gato.nf index 4248f93..b385e22 100644 --- a/modules/local/el_gato.nf +++ b/modules/local/el_gato.nf @@ -70,12 +70,12 @@ process EL_GATO_READS { """ } -// TODO: Combine to one function at some point as -// maintaining 2 is a pain process EL_GATO_ASSEMBLY { tag "$meta.id" label 'process_low' - label 'error_ignore' // Non-legion samples explode here otherwise + // Non-legionella or really low cov assemblies explode here otherwise + // Due to an issue in el_gato with samples that can't find any loci + label 'error_ignore' conda "bioconda::el_gato=1.20.2" container "${ workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container ? diff --git a/tests/main.nf.test b/tests/main.nf.test index d8a0a31..284d59e 100644 --- a/tests/main.nf.test +++ b/tests/main.nf.test @@ -9,8 +9,8 @@ nextflow_pipeline { when { params { - input = "$baseDir/tests/test_data/input_none.csv" - fastq_dir = "$baseDir/tests/test_data/" + input = "${projectDir}/assets/samplesheet.csv" + fastq_dir = "${baseDir}/tests/test_data/" outdir = "results" kraken2_db = "s3://genome-idx/kraken/standard_08gb_20240904" } @@ -65,7 +65,7 @@ nextflow_pipeline { } //--- Test 4 - test("Stub Run Test") { + test("Data Run Test") { tag "success" when { @@ -73,7 +73,7 @@ nextflow_pipeline { fastq_dir = "${projectDir}/tests/test_data/" kraken2_db = "s3://genome-idx/kraken/standard_08gb_20240904" outdir = "results" - min_reads = 0 + min_reads = 100 max_memory = "8.GB" max_cpus = 2 max_time = "1.h" @@ -82,7 +82,8 @@ nextflow_pipeline { then { // Status assert workflow.success - assert workflow.trace.failed().size() == 0 + // One fail which is from el_gato assemblies on low data + assert workflow.trace.failed().size() == 1 // Channels and Files Exist // Stub run so they are all blank so just make sure all output steps exist @@ -95,7 +96,6 @@ nextflow_pipeline { assert path("$launchDir/results/el_gato/el_gato_st.tsv").exists() assert path("$launchDir/results/el_gato/el_gato_report.pdf").exists() assert path("$launchDir/results/el_gato/allele_stats").exists() - assert path("$launchDir/results/el_gato/assembly").exists() assert path("$launchDir/results/el_gato/plots").exists() assert path("$launchDir/results/el_gato/reads").exists() diff --git a/tests/test_data/input_none.csv b/tests/test_data/input_none.csv index 40f76c3..a0fcc93 100644 --- a/tests/test_data/input_none.csv +++ b/tests/test_data/input_none.csv @@ -1 +1,2 @@ sample,fastq_1,fastq_2 +missing,none_R1.fastq,none_R2.fastq From 7be362765437636555c545f6053cdf2b9d91a7a4 Mon Sep 17 00:00:00 2001 From: Darian Hole Date: Mon, 20 Jan 2025 13:07:59 -0600 Subject: [PATCH 35/38] adjust some module names, adjust tests --- README.md | 4 +- conf/modules.config | 4 +- modules/local/utils.nf | 4 +- nextflow_schema.json | 1 + tests/main.nf.test | 87 +++++++++++++++++++++++++++++++++++++----- tests/nextflow.config | 3 ++ workflows/legiovue.nf | 14 +++---- 7 files changed, 95 insertions(+), 22 deletions(-) diff --git a/README.md b/README.md index d7a2a89..79f035a 100644 --- a/README.md +++ b/README.md @@ -2,11 +2,11 @@ LegioVue is a nextflow pipeline for whole-genome analysis of _Legionella pneumophila_. It performs _in silico_ sequence typing, genome assembly, and core-genome analysis. It also provides detailed information about the quality of _L. pneumophila_ genomes. The name is an homage to the Bellevue-Stratford hotel, site of the first known outbreak of Legionnaire's Disease. -This project serves as a repository for the LegioVue analysis pipeline along with validation notes, and information on it. This project is a GRDI-funded research project surrounding the **assessment and implementation of a whole genome sequencing scheme for rapid resolution of _Legionella pneumophila_ outbreaks within Canada to better protect vulnerable populations**. The goal is to generate and nationally deploy a standardized pipeline that will shift _L. pneumophila_ analysis from conventional sequence based typing to whole genome sequence-based typing and clustering, for rapid detection and response to Legionnaires' Disease outbreaks in Canada. +This project serves as a repository for the LegioVue analysis pipeline along with validation notes and information on follow-up data analysis steps like clustering. This project is a GRDI-funded research project surrounding the **assessment and implementation of a whole genome sequencing scheme for rapid resolution of _Legionella pneumophila_ outbreaks within Canada to better protect vulnerable populations**. The goal is to generate and nationally deploy a standardized pipeline that will shift _L. pneumophila_ analysis from conventional sequence based typing to whole genome sequence-based typing and clustering, for rapid detection and response to Legionnaires' Disease outbreaks in Canada. ## Big Picture Overview -**LegioVue** contains a combination of tools that are used to do _de novo_ assembly, sequence typing, cgMLST, and quality control for all input samples with the end goal in having the available data to confirm cluster outbreaks. Currently, clustering is not included in the pipeline but its addition is to come soon. However, we include additional instructions on how to perform cluster analysis on generated outputs. +**LegioVue** contains a combination of tools that are used to do _de novo_ assembly, sequence typing, cgMLST, and quality control for all input samples with the end goal in having analyzed and formatted data to confirm cluster outbreaks. Currently, clustering is not included in the pipeline but its addition is to come soon. However, we include [additional instructions](./docs/clustering.md) on how to perform cluster analysis on generated outputs. ## ![LegioVue-WGS-Workflow.png](LegioVue-WGS-Workflow.png) diff --git a/conf/modules.config b/conf/modules.config index 22ef289..444e37b 100644 --- a/conf/modules.config +++ b/conf/modules.config @@ -99,7 +99,7 @@ process { ] } - withName: CSVTK_COMBINE_STATS { + withName: CSVTK_JOIN_ALLELE_STATS { publishDir = [ path: { "${params.outdir}/el_gato/allele_stats" }, mode: params.publish_dir_mode, @@ -139,7 +139,7 @@ process { ] } - withName: CSVTK_COMBINE { + withName: CSVTK_CONCAT_QC_DATA { publishDir = [ path: { "${params.outdir}" }, mode: params.publish_dir_mode, diff --git a/modules/local/utils.nf b/modules/local/utils.nf index 2afdfda..6f08a50 100644 --- a/modules/local/utils.nf +++ b/modules/local/utils.nf @@ -43,7 +43,7 @@ process CREATE_ABUNDANCE_FILTER { """ } -process CSVTK_COMBINE_STATS { +process CSVTK_JOIN_ALLELE_STATS { tag "$meta.id" label 'process_single' @@ -89,7 +89,7 @@ process CSVTK_COMBINE_STATS { """ } -process CSVTK_COMBINE{ +process CSVTK_CONCAT_QC_DATA { label 'process_single' conda "bioconda::csvtk=0.30.0" diff --git a/nextflow_schema.json b/nextflow_schema.json index f805e0a..afa7a3f 100644 --- a/nextflow_schema.json +++ b/nextflow_schema.json @@ -59,6 +59,7 @@ "minimum": 0 } }, + "required": ["kraken2_db"], "fa_icon": "fas fa-filter" }, "skipping_options": { diff --git a/tests/main.nf.test b/tests/main.nf.test index 284d59e..35631dc 100644 --- a/tests/main.nf.test +++ b/tests/main.nf.test @@ -80,34 +80,103 @@ nextflow_pipeline { } } then { + // // Status + // assert workflow.success // One fail which is from el_gato assemblies on low data assert workflow.trace.failed().size() == 1 + // // Channels and Files Exist - // Stub run so they are all blank so just make sure all output steps exist + // + def lines = [] assert path("$launchDir/results").exists() + + // Final QC File assert path("$launchDir/results/overall.qc.csv").exists() - assert path("$launchDir/results/chewbbaca/allele_calls").exists() - assert path("$launchDir/results/chewbbaca/allele_calls/cgMLST").exists() + lines = path("$launchDir/results/overall.qc.csv").text + assert lines.contains("sample,lpn_abundance,num_paired_trimmed_reads,pct_paired_reads_passing_qc,n50,num_contigs,pct_gc,assembly_len,largest_contig,st,st_approach,chewbbaca_exc,chewbbaca_inf,chewbbaca_pct_exc,final_qc_score,qc_status,qc_message") + assert lines.contains("in1,100.0,4662,93.24,716,19,43.59,95953,1810,MD-,reads,0,0,0.0,2.0,WARN,low_read_count;low_n50;low_exact_allele_calls;low_qc_score") + assert lines.contains("in2,100.0,12,100.0,0,0,0,0,0,NA,NA,0,0,0.0,0,FAIL,failing_read_count") + + // ChewBBACA Allele Call data + assert path("$launchDir/results/chewbbaca/allele_calls/results_statistics.tsv").exists() + + lines = path("$launchDir/results/chewbbaca/allele_calls/results_statistics.tsv").text + assert lines.contains("FILE\tEXC\tINF\tPLOT3\tPLOT5\tLOTSC\tNIPH\tNIPHEM\tALM\tASM\tPAMA\tLNF\tInvalid CDSs\tClassified_CDSs\tTotal_CDSs") + assert lines.contains("in1\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0\t1521\t0\t0\t40") + assert path("$launchDir/results/chewbbaca/allele_calls/cgMLST/missing_loci_stats.tsv").exists() + + lines = path("$launchDir/results/chewbbaca/allele_calls/cgMLST/missing_loci_stats.tsv").text + assert lines.contains("FILE\tmissing\tpercentage") + assert lines.contains("in1\t1521\t1.0") + + // el_gato final allele data assert path("$launchDir/results/el_gato/el_gato_st.tsv").exists() + + lines = path("$launchDir/results/el_gato/el_gato_st.tsv").text + assert lines.contains("Sample\tST\tflaA\tpilE\tasd\tmip\tmompS\tproA\tneuA_neuAH\tapproach") + assert lines.contains("in1\tMD-\t-\t-\t-\t-\t-\t-\t-\treads") + + // el_gato expected subdirectories and files assert path("$launchDir/results/el_gato/el_gato_report.pdf").exists() assert path("$launchDir/results/el_gato/allele_stats").exists() assert path("$launchDir/results/el_gato/plots").exists() assert path("$launchDir/results/el_gato/reads").exists() - assert path("$launchDir/results/pipeline_info").exists() - assert path("$launchDir/results/pipeline_info/software_versions.yml").exists() - assert path("$launchDir/results/pipeline_info/manifest.json").exists() + // IRIDA Next output + def iridanext_json = path("$launchDir/results/iridanext.output.json").json + def iridanext_global = iridanext_json.files.global + def iridanext_samples = iridanext_json.files.samples + def iridanext_metadata = iridanext_json.metadata.samples + + assert iridanext_global.findAll { it.path == "chewbbaca/allele_calls/cgMLST/cgMLST99.tsv" }.size() == 1 + assert iridanext_global.findAll { it.path == "chewbbaca/allele_calls/cgMLST/cgMLST100.tsv" }.size() == 1 + assert iridanext_global.findAll { it.path == "chewbbaca/allele_calls/results_statistics.tsv" }.size() == 1 + assert iridanext_global.findAll { it.path == "el_gato/el_gato_st.tsv" }.size() == 1 + + assert iridanext_samples.in1.findAll { it.path == "spades/in1.contigs.fa" }.size() == 1 + assert iridanext_metadata.in1.num_paired_trimmed_reads == "4662" + assert iridanext_metadata.in1.st_approach == "reads" + assert iridanext_metadata.in1.qc_status == "WARN" + assert iridanext_metadata.in1.qc_message == "low_read_count;low_n50;low_exact_allele_calls;low_qc_score" + + // Bracken final output (depends on kraken output) + assert path("$launchDir/results/kraken_bracken/in1-abundances.tsv").exists() + + lines = path("$launchDir/results/kraken_bracken/in1-abundances.tsv").text + assert lines.contains("name\ttaxonomy_id\ttaxonomy_lvl\tkraken_assigned_reads\tadded_reads\tnew_est_reads\tfraction_total_reads") + assert lines.contains("Legionella pneumophila\t446\tS\t1443\t407\t1850\t1.00000") + + // Trimmomatic + assert path("$launchDir/results/trimmomatic/in1_paired_R1.fastq.gz").exists() + assert path("$launchDir/results/trimmomatic/in1_paired_R2.fastq.gz").exists() + + assert path("$launchDir/results/trimmomatic/in1.summary.txt").exists() + + lines = path("$launchDir/results/trimmomatic/in1.summary.txt").text + assert lines.contains("Input Read Pairs: 5000") + assert lines.contains("Both Surviving Reads: 4662") + + // QUAST scored report (final step for quast) + assert path("$launchDir/results/quast/scored_quast_report.csv").exists() + + lines = path("$launchDir/results/quast/scored_quast_report.csv").text + assert lines.contains("sample,num_contigs,N50,duplication_ratio,percent_alignment,assembly_length,GC_content,final_score,score_rating") + assert lines.contains("in1.contigs,1,0.0,1,0,0,0,2.0,unideal") + + // Just checking that outdirs exist assert path("$launchDir/results/fastqc").exists() - assert path("$launchDir/results/kraken_bracken").exists() - assert path("$launchDir/results/quast").exists() assert path("$launchDir/results/spades").exists() - assert path("$launchDir/results/trimmomatic").exists() + + // Pipeline info and tracking + assert path("$launchDir/results/pipeline_info").exists() + assert path("$launchDir/results/pipeline_info/software_versions.yml").exists() + assert path("$launchDir/results/pipeline_info/manifest.json").exists() } } } diff --git a/tests/nextflow.config b/tests/nextflow.config index 6eb18a4..4de138f 100644 --- a/tests/nextflow.config +++ b/tests/nextflow.config @@ -15,3 +15,6 @@ process { params.max_memory = "8.GB" params.max_cpus = 2 params.max_time = "1.h" + +/* Remove gzipping on JSON output for testing/asserts on file contents */ +iridanext.output.path = "${params.outdir}/iridanext.output.json" diff --git a/workflows/legiovue.nf b/workflows/legiovue.nf index 4bdb870..004701a 100644 --- a/workflows/legiovue.nf +++ b/workflows/legiovue.nf @@ -20,10 +20,10 @@ include { CHEWBBACA_ALLELE_CALL } from '../modules/local/chewbbaca.n include { CHEWBBACA_EXTRACT_CGMLST } from '../modules/local/chewbbaca.nf' include { PYSAMSTATS as PYSAMSTATS_MAPQ } from '../modules/local/pysamstats.nf' include { PYSAMSTATS as PYSAMSTATS_BASEQ } from '../modules/local/pysamstats.nf' -include { CSVTK_COMBINE_STATS } from '../modules/local/utils.nf' +include { CSVTK_JOIN_ALLELE_STATS } from '../modules/local/utils.nf' include { PLOT_EL_GATO_ALLELES } from '../modules/local/plotting.nf' include { COMBINE_SAMPLE_DATA } from '../modules/local/qc.nf' -include { CSVTK_COMBINE } from '../modules/local/utils.nf' +include { CSVTK_CONCAT_QC_DATA } from '../modules/local/utils.nf' include { CUSTOM_DUMPSOFTWAREVERSIONS } from '../modules/nf-core/custom/dumpsoftwareversions/main' /* @@ -202,14 +202,14 @@ workflow LEGIOVUE { ) ch_versions = ch_versions.mix(PYSAMSTATS_BASEQ.out.versions) - CSVTK_COMBINE_STATS( + CSVTK_JOIN_ALLELE_STATS( PYSAMSTATS_MAPQ.out.tsv .join(PYSAMSTATS_BASEQ.out.tsv, by:[0]) ) - ch_versions = ch_versions.mix(CSVTK_COMBINE_STATS.out.versions) + ch_versions = ch_versions.mix(CSVTK_JOIN_ALLELE_STATS.out.versions) PLOT_EL_GATO_ALLELES( - CSVTK_COMBINE_STATS.out.tsv + CSVTK_JOIN_ALLELE_STATS.out.tsv ) ch_versions = ch_versions.mix(PLOT_EL_GATO_ALLELES.out.versions) } @@ -262,11 +262,11 @@ workflow LEGIOVUE { ) ch_versions = ch_versions.mix(COMBINE_SAMPLE_DATA.out.versions) - CSVTK_COMBINE( + CSVTK_CONCAT_QC_DATA( COMBINE_SAMPLE_DATA.out.csv .collect{ it[1] } ) - ch_versions = ch_versions.mix(CSVTK_COMBINE.out.versions) + ch_versions = ch_versions.mix(CSVTK_CONCAT_QC_DATA.out.versions) // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // // 9. Version Output From cc23da59f44da1fba6e41e1d0b0996fe3559d6e1 Mon Sep 17 00:00:00 2001 From: Darian Hole Date: Mon, 20 Jan 2025 13:20:53 -0600 Subject: [PATCH 36/38] fix trailing whitespace issue --- .editorconfig | 5 +++++ tests/main.nf.test | 4 ++-- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/.editorconfig b/.editorconfig index 72dda28..cc6bf3b 100644 --- a/.editorconfig +++ b/.editorconfig @@ -31,3 +31,8 @@ indent_size = unset # ignore python and markdown [*.{py,md}] indent_style = unset + +# ignore tests +[*.test] +indent_style = unset +end_of_line = unset diff --git a/tests/main.nf.test b/tests/main.nf.test index 35631dc..4d25155 100644 --- a/tests/main.nf.test +++ b/tests/main.nf.test @@ -93,7 +93,7 @@ nextflow_pipeline { def lines = [] assert path("$launchDir/results").exists() - // Final QC File + // Final QC File assert path("$launchDir/results/overall.qc.csv").exists() lines = path("$launchDir/results/overall.qc.csv").text @@ -164,7 +164,7 @@ nextflow_pipeline { // QUAST scored report (final step for quast) assert path("$launchDir/results/quast/scored_quast_report.csv").exists() - + lines = path("$launchDir/results/quast/scored_quast_report.csv").text assert lines.contains("sample,num_contigs,N50,duplication_ratio,percent_alignment,assembly_length,GC_content,final_score,score_rating") assert lines.contains("in1.contigs,1,0.0,1,0,0,0,2.0,unideal") From b36358d06f1535b12eb2ffdbb9c38337ed36bbb6 Mon Sep 17 00:00:00 2001 From: Darian Hole Date: Fri, 24 Jan 2025 08:22:16 -0600 Subject: [PATCH 37/38] adjust test location to point to dev --- assets/samplesheet.csv | 4 ++-- workflows/legiovue.nf | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/assets/samplesheet.csv b/assets/samplesheet.csv index 00d6ba9..8c11054 100644 --- a/assets/samplesheet.csv +++ b/assets/samplesheet.csv @@ -1,3 +1,3 @@ sample,fastq_1,fastq_2 -sample1,https://github.com/phac-nml/legiovue/raw/add/iridanext-updates/tests/test_data/in1_R1.fastq.gz,https://github.com/phac-nml/legiovue/raw/add/iridanext-updates/tests/test_data/in1_R2.fastq.gz -sample2,https://github.com/phac-nml/legiovue/raw/add/iridanext-updates/tests/test_data/in2_R1.fastq.gz,https://github.com/phac-nml/legiovue/raw/add/iridanext-updates/tests/test_data/in2_R2.fastq.gz +sample1,https://github.com/phac-nml/legiovue/raw/dev/tests/test_data/in1_R1.fastq.gz,https://github.com/phac-nml/legiovue/raw/dev/tests/test_data/in1_R2.fastq.gz +sample2,https://github.com/phac-nml/legiovue/raw/dev/tests/test_data/in2_R1.fastq.gz,https://github.com/phac-nml/legiovue/raw/dev/tests/test_data/in2_R2.fastq.gz diff --git a/workflows/legiovue.nf b/workflows/legiovue.nf index 004701a..3672df2 100644 --- a/workflows/legiovue.nf +++ b/workflows/legiovue.nf @@ -20,10 +20,10 @@ include { CHEWBBACA_ALLELE_CALL } from '../modules/local/chewbbaca.n include { CHEWBBACA_EXTRACT_CGMLST } from '../modules/local/chewbbaca.nf' include { PYSAMSTATS as PYSAMSTATS_MAPQ } from '../modules/local/pysamstats.nf' include { PYSAMSTATS as PYSAMSTATS_BASEQ } from '../modules/local/pysamstats.nf' -include { CSVTK_JOIN_ALLELE_STATS } from '../modules/local/utils.nf' +include { CSVTK_JOIN_ALLELE_STATS } from '../modules/local/utils.nf' include { PLOT_EL_GATO_ALLELES } from '../modules/local/plotting.nf' include { COMBINE_SAMPLE_DATA } from '../modules/local/qc.nf' -include { CSVTK_CONCAT_QC_DATA } from '../modules/local/utils.nf' +include { CSVTK_CONCAT_QC_DATA } from '../modules/local/utils.nf' include { CUSTOM_DUMPSOFTWAREVERSIONS } from '../modules/nf-core/custom/dumpsoftwareversions/main' /* From d86e28a7eced44bf3cbb7f5f02b2dd2b7b9a734e Mon Sep 17 00:00:00 2001 From: Darian Date: Fri, 24 Jan 2025 08:26:36 -0600 Subject: [PATCH 38/38] Update CHANGELOG.md date --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 2704757..5d5877a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,7 +3,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). -## [0.2.0] - 2025-01-16 +## [0.2.0] - 2025-01-24 ### `Added`
      Process Name \\", + " \\ Software Version
      CUSTOM_DUMPSOFTWAREVERSIONSpython3.11.7
      yaml5.4.1
      TOOL1tool10.11.9
      TOOL2tool21.9
      WorkflowNextflow