diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md index a16dcd60..40b91d2c 100755 --- a/.github/CONTRIBUTING.md +++ b/.github/CONTRIBUTING.md @@ -19,7 +19,7 @@ If you'd like to write some code for nf-core/demultiplex, the standard workflow 1. Check that there isn't already an issue about your idea in the [nf-core/demultiplex issues](https://github.com/nf-core/demultiplex/issues) to avoid duplicating work. If there isn't one already, please create one so that others know you're working on this 2. [Fork](https://help.github.com/en/github/getting-started-with-github/fork-a-repo) the [nf-core/demultiplex repository](https://github.com/nf-core/demultiplex) to your GitHub account 3. Make the necessary changes / additions within your forked repository following [Pipeline conventions](#pipeline-contribution-conventions) -4. Use `nf-core schema build` and add any new parameters to the pipeline JSON schema (requires [nf-core tools](https://github.com/nf-core/tools) >= 1.10). +4. Use `nf-core pipelines schema build` and add any new parameters to the pipeline JSON schema (requires [nf-core tools](https://github.com/nf-core/tools) >= 1.10). 5. Submit a Pull Request against the `dev` branch and wait for the code to be reviewed and merged If you're not used to this workflow with git, you can start with some [docs from GitHub](https://help.github.com/en/github/collaborating-with-issues-and-pull-requests) or even their [excellent `git` resources](https://try.github.io/). @@ -40,7 +40,7 @@ There are typically two types of tests that run: ### Lint tests `nf-core` has a [set of guidelines](https://nf-co.re/developers/guidelines) which all pipelines must adhere to. -To enforce these and ensure that all pipelines stay in sync, we have developed a helper tool which runs checks on the pipeline code. This is in the [nf-core/tools repository](https://github.com/nf-core/tools) and once installed can be run locally with the `nf-core lint ` command. +To enforce these and ensure that all pipelines stay in sync, we have developed a helper tool which runs checks on the pipeline code. This is in the [nf-core/tools repository](https://github.com/nf-core/tools) and once installed can be run locally with the `nf-core pipelines lint ` command. If any failures or warnings are encountered, please follow the listed URL for more documentation. @@ -75,7 +75,7 @@ If you wish to contribute a new step, please use the following coding standards: 2. Write the process block (see below). 3. Define the output channel if needed (see below). 4. Add any new parameters to `nextflow.config` with a default (see below). -5. Add any new parameters to `nextflow_schema.json` with help text (via the `nf-core schema build` tool). +5. Add any new parameters to `nextflow_schema.json` with help text (via the `nf-core pipelines schema build` tool). 6. Add sanity checks and validation for all relevant parameters. 7. Perform local tests to validate that the new code works as expected. 8. If applicable, add a new test command in `.github/workflow/ci.yml`. @@ -86,11 +86,11 @@ If you wish to contribute a new step, please use the following coding standards: Parameters should be initialised / defined with default values in `nextflow.config` under the `params` scope. -Once there, use `nf-core schema build` to add to `nextflow_schema.json`. +Once there, use `nf-core pipelines schema build` to add to `nextflow_schema.json`. ### Default processes resource requirements -Sensible defaults for process resource requirements (CPUs / memory / time) for a process should be defined in `conf/base.config`. These should generally be specified generic with `withLabel:` selectors so they can be shared across multiple processes/steps of the pipeline. A nf-core standard set of labels that should be followed where possible can be seen in the [nf-core pipeline template](https://github.com/nf-core/tools/blob/master/nf_core/pipeline-template/conf/base.config), which has the default process as a single core-process, and then different levels of multi-core configurations for increasingly large memory requirements defined with standardised labels. +Sensible defaults for process resource requirements (CPUs / memory / time) for a process should be defined in `conf/base.config`. These should generally be specified generic with `withLabel:` selectors so they can be shared across multiple processes/steps of the pipeline. A nf-core standard set of labels that should be followed where possible can be seen in the [nf-core pipeline template](https://github.com/nf-core/tools/blob/main/nf_core/pipeline-template/conf/base.config), which has the default process as a single core-process, and then different levels of multi-core configurations for increasingly large memory requirements defined with standardised labels. The process resources can be passed on to the tool dynamically within the process with the `${task.cpus}` and `${task.memory}` variables in the `script:` block. @@ -103,7 +103,7 @@ Please use the following naming schemes, to make it easy to understand what is g ### Nextflow version bumping -If you are using a new feature from core Nextflow, you may bump the minimum required version of nextflow in the pipeline with: `nf-core bump-version --nextflow . [min-nf-version]` +If you are using a new feature from core Nextflow, you may bump the minimum required version of nextflow in the pipeline with: `nf-core pipelines bump-version --nextflow . [min-nf-version]` ### Images and figures diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md index d7bbf615..b47515e4 100644 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -17,7 +17,7 @@ Learn more about contributing: [CONTRIBUTING.md](https://github.com/nf-core/demu - [ ] If you've fixed a bug or added code that should be tested, add tests! - [ ] If you've added a new tool - have you followed the pipeline conventions in the [contribution docs](https://github.com/nf-core/demultiplex/tree/master/.github/CONTRIBUTING.md) - [ ] If necessary, also make a PR on the nf-core/demultiplex _branch_ on the [nf-core/test-datasets](https://github.com/nf-core/test-datasets) repository. -- [ ] Make sure your code lints (`nf-core lint`). +- [ ] 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. diff --git a/.github/workflows/awsfulltest.yml b/.github/workflows/awsfulltest.yml index f5d63182..8e4df67f 100644 --- a/.github/workflows/awsfulltest.yml +++ b/.github/workflows/awsfulltest.yml @@ -1,18 +1,35 @@ name: nf-core AWS full size tests -# This workflow is triggered on published releases. +# This workflow is triggered on PRs opened against the master branch. # It can be additionally triggered manually with GitHub actions workflow dispatch button. # It runs the -profile 'test_full' on AWS batch on: - release: - types: [published] + pull_request: + branches: + - master workflow_dispatch: + pull_request_review: + types: [submitted] + jobs: run-platform: name: Run AWS full tests - if: github.repository == 'nf-core/demultiplex' + # run only if the PR is approved by at least 2 reviewers and against the master branch or manually triggered + if: github.repository == 'nf-core/demultiplex' && github.event.review.state == 'approved' && github.event.pull_request.base.ref == 'master' || github.event_name == 'workflow_dispatch' runs-on: ubuntu-latest steps: + - uses: octokit/request-action@v2.x + id: check_approvals + with: + route: GET /repos/${{ github.repository }}/pulls/${{ github.event.pull_request.number }}/reviews + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + - id: test_variables + if: github.event_name != 'workflow_dispatch' + run: | + JSON_RESPONSE='${{ steps.check_approvals.outputs.data }}' + CURRENT_APPROVALS_COUNT=$(echo $JSON_RESPONSE | jq -c '[.[] | select(.state | contains("APPROVED")) ] | length') + test $CURRENT_APPROVALS_COUNT -ge 2 || exit 1 # At least 2 approvals are required - name: Launch workflow via Seqera Platform uses: seqeralabs/action-tower-launch@v2 # TODO nf-core: You can customise AWS full pipeline tests as required diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 1ffa9360..6fef5f23 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -7,51 +7,84 @@ on: - master release: types: [published] + workflow_dispatch: env: - NXF_ANSI_LOG: false - NFT_VER: "0.9.0" - NFT_WORKDIR: "~" NFT_DIFF: "pdiff" NFT_DIFF_ARGS: "--line-numbers --expand-tabs=2" + NFT_VER: "0.9.0" + NFT_WORKDIR: "~" + 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: - define_nxf_versions: - name: Choose nextflow versions to test against depending on target branch - runs-on: ubuntu-latest - outputs: - matrix: ${{ steps.nxf_versions.outputs.matrix }} - steps: - - id: nxf_versions - run: | - if [[ "${{ github.event_name }}" == "pull_request" && "${{ github.base_ref }}" == "dev" && "${{ matrix.NXF_VER }}" != "latest-everything" ]]; then - echo matrix='["latest-stable"]' | tee -a $GITHUB_OUTPUT - else - echo matrix='["latest-stable", "23.04.0"]' | tee -a $GITHUB_OUTPUT - fi - test: - name: Run pipeline with test data - needs: define_nxf_versions + name: "${{ matrix.NXF_VER }} | ${{ matrix.profile }} | ${{ matrix.shard }}/6" + # Only run on push if this is the nf-core dev branch (merged PRs) + if: "${{ github.event_name != 'push' || (github.event_name == 'push' && github.repository == 'nf-core/demultiplex') }}" runs-on: ubuntu-latest strategy: fail-fast: false matrix: + NXF_VER: + - "24.04.2" + - "latest-everything" + profile: + - "docker" + - "singularity" + isMaster: + - ${{ github.base_ref == 'master' }} + # Exclude conda and singularity on dev + exclude: + - isMaster: false + profile: "conda" + - isMaster: false + profile: "singularity" shard: [1, 2, 3, 4, 5, 6] - NXF_VER: ${{ fromJson(needs.define_nxf_versions.outputs.matrix) }} - profile: ["docker"] - env: - SHARDS: "6" steps: - name: Check out pipeline code uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4 with: fetch-depth: 0 + - 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 + - uses: actions/setup-python@v4 with: python-version: "3.11" @@ -62,19 +95,17 @@ jobs: python -m pip install --upgrade pip pip install pdiff - - uses: nf-core/setup-nextflow@v2 - with: - version: "${{ matrix.NXF_VER }}" - - uses: nf-core/setup-nf-test@v1 with: version: ${{ env.NFT_VER }} - - name: Run Tests (Shard ${{ matrix.shard }}/${{ env.SHARDS }}) + - name: Run Tests (Shard ${{ matrix.shard }}/6) run: | nf-test test \ + --debug \ + --verbose \ --ci \ - --shard ${{ matrix.shard }}/${{ env.SHARDS }} \ + --shard ${{ matrix.shard }}/6 \ --changed-since HEAD^ \ --profile "+${{ matrix.profile }}" \ --filter pipeline \ diff --git a/.github/workflows/download_pipeline.yml b/.github/workflows/download_pipeline.yml index f24cc9ff..d3c9c2fb 100644 --- a/.github/workflows/download_pipeline.yml +++ b/.github/workflows/download_pipeline.yml @@ -1,4 +1,4 @@ -name: Test successful pipeline download with 'nf-core download' +name: Test successful pipeline download with 'nf-core pipelines download' # Run the workflow when: # - dispatched manually @@ -8,7 +8,7 @@ on: workflow_dispatch: inputs: testbranch: - description: "The specific branch you wish to utilize for the test execution of nf-core download." + description: "The specific branch you wish to utilize for the test execution of nf-core pipelines download." required: true default: "dev" pull_request: @@ -39,9 +39,11 @@ jobs: with: python-version: "3.12" architecture: "x64" - - uses: eWaterCycle/setup-singularity@931d4e31109e875b13309ae1d07c70ca8fbc8537 # v7 + + - name: Setup Apptainer + uses: eWaterCycle/setup-apptainer@4bb22c52d4f63406c49e94c804632975787312b3 # v2.0.0 with: - singularity-version: 3.8.3 + apptainer-version: 1.3.4 - name: Install dependencies run: | @@ -54,26 +56,64 @@ jobs: echo "REPOTITLE_LOWERCASE=$(basename ${GITHUB_REPOSITORY,,})" >> ${GITHUB_ENV} echo "REPO_BRANCH=${{ github.event.inputs.testbranch || 'dev' }}" >> ${GITHUB_ENV} + - name: Make a cache directory for the container images + run: | + mkdir -p ./singularity_container_images + - name: Download the pipeline env: - NXF_SINGULARITY_CACHEDIR: ./ + NXF_SINGULARITY_CACHEDIR: ./singularity_container_images run: | - nf-core download ${{ env.REPO_LOWERCASE }} \ + nf-core pipelines download ${{ env.REPO_LOWERCASE }} \ --revision ${{ env.REPO_BRANCH }} \ --outdir ./${{ env.REPOTITLE_LOWERCASE }} \ --compress "none" \ --container-system 'singularity' \ - --container-library "quay.io" -l "docker.io" -l "ghcr.io" \ + --container-library "quay.io" -l "docker.io" -l "community.wave.seqera.io" -l "ghcr.io" \ --container-cache-utilisation 'amend' \ - --download-configuration + --download-configuration 'yes' - name: Inspect download run: tree ./${{ env.REPOTITLE_LOWERCASE }} + - name: Count the downloaded number of container images + id: count_initial + run: | + image_count=$(ls -1 ./singularity_container_images | wc -l | xargs) + echo "Initial container image count: $image_count" + echo "IMAGE_COUNT_INITIAL=$image_count" >> ${GITHUB_ENV} + - name: Run the downloaded pipeline (stub) id: stub_run_pipeline continue-on-error: true env: - NXF_SINGULARITY_CACHEDIR: ./ + NXF_SINGULARITY_CACHEDIR: ./singularity_container_images NXF_SINGULARITY_HOME_MOUNT: true run: nextflow run ./${{ env.REPOTITLE_LOWERCASE }}/$( sed 's/\W/_/g' <<< ${{ env.REPO_BRANCH }}) -stub -profile test,singularity --outdir ./results + - name: Run the downloaded pipeline (stub run not supported) + id: run_pipeline + if: ${{ job.steps.stub_run_pipeline.status == failure() }} + env: + NXF_SINGULARITY_CACHEDIR: ./singularity_container_images + NXF_SINGULARITY_HOME_MOUNT: true + run: nextflow run ./${{ env.REPOTITLE_LOWERCASE }}/$( sed 's/\W/_/g' <<< ${{ env.REPO_BRANCH }}) -profile test,singularity --outdir ./results + + - name: Count the downloaded number of container images + id: count_afterwards + run: | + image_count=$(ls -1 ./singularity_container_images | wc -l | xargs) + echo "Post-pipeline run container image count: $image_count" + echo "IMAGE_COUNT_AFTER=$image_count" >> ${GITHUB_ENV} + + - name: Compare container image counts + run: | + if [ "${{ env.IMAGE_COUNT_INITIAL }}" -ne "${{ env.IMAGE_COUNT_AFTER }}" ]; then + initial_count=${{ env.IMAGE_COUNT_INITIAL }} + final_count=${{ env.IMAGE_COUNT_AFTER }} + difference=$((final_count - initial_count)) + echo "$difference additional container images were \n downloaded at runtime . The pipeline has no support for offline runs!" + tree ./singularity_container_images + exit 1 + else + echo "The pipeline can be downloaded successfully!" + fi diff --git a/.github/workflows/linting.yml b/.github/workflows/linting.yml index 1fcafe88..a502573c 100644 --- a/.github/workflows/linting.yml +++ b/.github/workflows/linting.yml @@ -1,6 +1,6 @@ name: nf-core linting # This workflow is triggered on pushes and PRs to the repository. -# It runs the `nf-core lint` and markdown lint tests to ensure +# It runs the `nf-core pipelines lint` and markdown lint tests to ensure # that the code meets the nf-core guidelines. on: push: @@ -41,17 +41,32 @@ jobs: 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 + 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 lint + - 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 lint --dir ${GITHUB_WORKSPACE} --markdown lint_results.md + run: nf-core -l lint_log.txt pipelines lint --release --dir ${GITHUB_WORKSPACE} --markdown lint_results.md - name: Save PR number if: ${{ always() }} diff --git a/.github/workflows/linting_comment.yml b/.github/workflows/linting_comment.yml index 40acc23f..42e519bf 100644 --- a/.github/workflows/linting_comment.yml +++ b/.github/workflows/linting_comment.yml @@ -11,7 +11,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Download lint results - uses: dawidd6/action-download-artifact@09f2f74827fd3a8607589e5ad7f9398816f540fe # v3 + uses: dawidd6/action-download-artifact@bf251b5aa9c2f7eeb574a96ee720e24f801b7c11 # v6 with: workflow: linting.yml workflow_conclusion: completed diff --git a/.github/workflows/release-announcements.yml b/.github/workflows/release-announcements.yml index 03ecfcf7..c6ba35df 100644 --- a/.github/workflows/release-announcements.yml +++ b/.github/workflows/release-announcements.yml @@ -12,7 +12,7 @@ jobs: - name: get topics and convert to hashtags id: get_topics run: | - echo "topics=$(curl -s https://nf-co.re/pipelines.json | jq -r '.remote_workflows[] | select(.full_name == "${{ github.repository }}") | .topics[]' | awk '{print "#"$0}' | tr '\n' ' ')" >> $GITHUB_OUTPUT + echo "topics=$(curl -s https://nf-co.re/pipelines.json | jq -r '.remote_workflows[] | select(.full_name == "${{ github.repository }}") | .topics[]' | awk '{print "#"$0}' | tr '\n' ' ')" | sed 's/-//g' >> $GITHUB_OUTPUT - uses: rzr/fediverse-action@master with: diff --git a/.github/workflows/template_version_comment.yml b/.github/workflows/template_version_comment.yml new file mode 100644 index 00000000..e8aafe44 --- /dev/null +++ b/.github/workflows/template_version_comment.yml @@ -0,0 +1,46 @@ +name: nf-core template version comment +# This workflow is triggered on PRs to check if the pipeline template version matches the latest nf-core version. +# It posts a comment to the PR, even if it comes from a fork. + +on: pull_request_target + +jobs: + template_version: + runs-on: ubuntu-latest + steps: + - name: Check out pipeline code + uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4 + with: + ref: ${{ github.event.pull_request.head.sha }} + + - name: Read template version from .nf-core.yml + uses: nichmor/minimal-read-yaml@v0.0.2 + id: read_yml + with: + config: ${{ github.workspace }}/.nf-core.yml + + - name: Install nf-core + run: | + python -m pip install --upgrade pip + pip install nf-core==${{ steps.read_yml.outputs['nf_core_version'] }} + + - name: Check nf-core outdated + id: nf_core_outdated + run: echo "OUTPUT=$(pip list --outdated | grep nf-core)" >> ${GITHUB_ENV} + + - name: Post nf-core template version comment + uses: mshick/add-pr-comment@b8f338c590a895d50bcbfa6c5859251edc8952fc # v2 + if: | + contains(env.OUTPUT, 'nf-core') + with: + repo-token: ${{ secrets.NF_CORE_BOT_AUTH_TOKEN }} + allow-repeats: false + message: | + > [!WARNING] + > Newer version of the nf-core template is available. + > + > Your pipeline is using an old version of the nf-core template: ${{ steps.read_yml.outputs['nf_core_version'] }}. + > Please update your pipeline to the latest version. + > + > For more documentation on how to update your pipeline, please see the [nf-core documentation](https://github.com/nf-core/tools?tab=readme-ov-file#sync-a-pipeline-with-the-template) and [Synchronisation documentation](https://nf-co.re/docs/contributing/sync). + # diff --git a/.gitignore b/.gitignore index 44777a0f..23b0c7de 100755 --- a/.gitignore +++ b/.gitignore @@ -6,5 +6,5 @@ results/ testing/ testing* *.pyc -.nf-test/ -.nf-test.log +null/ +.nf-test* diff --git a/.gitpod.yml b/.gitpod.yml index 105a1821..46118637 100644 --- a/.gitpod.yml +++ b/.gitpod.yml @@ -4,17 +4,14 @@ tasks: command: | pre-commit install --install-hooks nextflow self-update - - name: unset JAVA_TOOL_OPTIONS - command: | - unset JAVA_TOOL_OPTIONS vscode: extensions: # based on nf-core.nf-core-extensionpack - - esbenp.prettier-vscode # Markdown/CommonMark linting and style checking for Visual Studio Code + #- esbenp.prettier-vscode # Markdown/CommonMark linting and style checking for Visual Studio Code - EditorConfig.EditorConfig # override user/workspace settings with settings found in .editorconfig files - Gruntfuggly.todo-tree # Display TODO and FIXME in a tree view in the activity bar - mechatroner.rainbow-csv # Highlight columns in csv files in different colors - # - nextflow.nextflow # Nextflow syntax highlighting + - nextflow.nextflow # Nextflow syntax highlighting - oderwat.indent-rainbow # Highlight indentation level - streetsidesoftware.code-spell-checker # Spelling checker for source code - charliermarsh.ruff # Code linter Ruff diff --git a/.nf-core.yml b/.nf-core.yml index 932a0097..561994da 100644 --- a/.nf-core.yml +++ b/.nf-core.yml @@ -1,7 +1,21 @@ -repository_type: pipeline -nf_core_version: "2.14.1" +bump_version: null lint: - actions_ci: False + actions_ci: false files_unchanged: - .github/ISSUE_TEMPLATE/bug_report.yml - .github/workflows/linting.yml +nf_core_version: 3.0.2 +org_path: null +repository_type: pipeline +template: + author: Chelsea Sawyer, Edmund Miller, Matthias De Smet + description: Demultiplexing pipeline for Illumina sequencing data + force: false + is_nfcore: true + name: demultiplex + org: nf-core + outdir: . + skip_features: + - igenomes + version: 1.5.2 +update: null diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 4dc0f1dc..9e9f0e1c 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -7,7 +7,7 @@ repos: - prettier@3.2.5 - repo: https://github.com/editorconfig-checker/editorconfig-checker.python - rev: "2.7.3" + rev: "3.0.3" hooks: - id: editorconfig-checker alias: ec diff --git a/CHANGELOG.md b/CHANGELOG.md index 537a33f5..184a9c34 100755 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,8 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## dev + ## 1.5.2 - 2024-10-07 ### `Changed` diff --git a/README.md b/README.md index 483a98b7..44ead372 100755 --- a/README.md +++ b/README.md @@ -9,7 +9,7 @@ [![GitHub Actions Linting Status](https://github.com/nf-core/demultiplex/actions/workflows/linting.yml/badge.svg)](https://github.com/nf-core/demultiplex/actions/workflows/linting.yml)[![AWS CI](https://img.shields.io/badge/CI%20tests-full%20size-FF9900?labelColor=000000&logo=Amazon%20AWS)](https://nf-co.re/demultiplex/results)[![Cite with Zenodo](http://img.shields.io/badge/DOI-10.5281/zenodo.7153103-1073c8?labelColor=000000)](https://doi.org/10.5281/zenodo.7153103) [![nf-test](https://img.shields.io/badge/unit_tests-nf--test-337ab7.svg)](https://www.nf-test.com) -[![Nextflow](https://img.shields.io/badge/nextflow%20DSL2-%E2%89%A523.04.0-23aa62.svg)](https://www.nextflow.io/) +[![Nextflow](https://img.shields.io/badge/nextflow%20DSL2-%E2%89%A524.04.2-23aa62.svg)](https://www.nextflow.io/) [![run with conda](http://img.shields.io/badge/run%20with-conda-3EB049?labelColor=000000&logo=anaconda)](https://docs.conda.io/en/latest/) [![run with docker](https://img.shields.io/badge/run%20with-docker-0db7ed?labelColor=000000&logo=docker)](https://www.docker.com/) [![run with singularity](https://img.shields.io/badge/run%20with-singularity-1d355c.svg?labelColor=000000)](https://sylabs.io/docs/) @@ -84,8 +84,7 @@ nextflow run nf-core/demultiplex \ ``` > [!WARNING] -> Please provide pipeline parameters via the CLI or Nextflow `-params-file` option. Custom config files including those provided by the `-c` Nextflow option can be used to provide any configuration _**except for parameters**_; -> see [docs](https://nf-co.re/usage/configuration#custom-configuration-files). +> Please provide pipeline parameters via the CLI or Nextflow `-params-file` option. Custom config files including those provided by the `-c` Nextflow option can be used to provide any configuration _**except for parameters**_; see [docs](https://nf-co.re/docs/usage/getting_started/configuration#custom-configuration-files). For more details and further functionality, please refer to the [usage documentation](https://nf-co.re/demultiplex/usage) and the [parameter documentation](https://nf-co.re/demultiplex/parameters). diff --git a/assets/multiqc_config.yml b/assets/multiqc_config.yml index e3d548a2..06ddb573 100644 --- a/assets/multiqc_config.yml +++ b/assets/multiqc_config.yml @@ -1,5 +1,4 @@ report_comment: > - This report has been generated by the nf-core/demultiplex analysis pipeline. For information about how to interpret these results, please see the documentation. diff --git a/assets/schema_input.json b/assets/schema_input.json index d8c139a6..9c8ae453 100644 --- a/assets/schema_input.json +++ b/assets/schema_input.json @@ -1,5 +1,5 @@ { - "$schema": "http://json-schema.org/draft-07/schema", + "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "https://raw.githubusercontent.com/nf-core/demultiplex/master/assets/schema_input.json", "title": "nf-core/demultiplex pipeline - params.input schema", "description": "Schema for the file provided with params.input", @@ -25,6 +25,7 @@ "type": "integer", "description": "Lane number", "minimum": 1, + "default": null, "maximum": 8, "meta": ["lane"] }, diff --git a/conf/base.config b/conf/base.config index c60f851e..6f1752f4 100755 --- a/conf/base.config +++ b/conf/base.config @@ -10,9 +10,9 @@ process { - cpus = { check_max( 1 * task.attempt, 'cpus' ) } - memory = { check_max( 6.GB * task.attempt, 'memory' ) } - time = { check_max( 4.h * task.attempt, 'time' ) } + cpus = { 1 * task.attempt } + memory = { 6.GB * task.attempt } + time = { 4.h * task.attempt } errorStrategy = { task.exitStatus in ((130..145) + 104) ? 'retry' : 'finish' } maxRetries = 1 @@ -20,30 +20,30 @@ process { // Process-specific resource requirements withLabel:process_single { - cpus = { check_max( 1 , 'cpus' ) } - memory = { check_max( 6.GB * task.attempt, 'memory' ) } - time = { check_max( 4.h * task.attempt, 'time' ) } + cpus = { 1 } + memory = { 6.GB * task.attempt } + time = { 4.h * task.attempt } } withLabel:process_low { - cpus = { check_max( 2 * task.attempt, 'cpus' ) } - memory = { check_max( 12.GB * task.attempt, 'memory' ) } - time = { check_max( 4.h * task.attempt, 'time' ) } + cpus = { 2 * task.attempt } + memory = { 12.GB * task.attempt } + time = { 4.h * task.attempt } } withLabel:process_medium { - cpus = { check_max( 6 * task.attempt, 'cpus' ) } - memory = { check_max( 36.GB * task.attempt, 'memory' ) } - time = { check_max( 8.h * task.attempt, 'time' ) } + cpus = { 6 * task.attempt } + memory = { 36.GB * task.attempt } + time = { 8.h * task.attempt } } withLabel:process_high { - cpus = { check_max( 12 * task.attempt, 'cpus' ) } - memory = { check_max( 72.GB * task.attempt, 'memory' ) } - time = { check_max( 16.h * task.attempt, 'time' ) } + cpus = { 12 * task.attempt } + memory = { 72.GB * task.attempt } + time = { 16.h * task.attempt } } withLabel:process_long { - time = { check_max( 20.h * task.attempt, 'time' ) } + time = { 20.h * task.attempt } } withLabel:process_high_memory { - memory = { check_max( 200.GB * task.attempt, 'memory' ) } + memory = { 200.GB * task.attempt } } withLabel:error_ignore { errorStrategy = 'ignore' diff --git a/conf/igenomes_ignored.config b/conf/igenomes_ignored.config new file mode 100644 index 00000000..b4034d82 --- /dev/null +++ b/conf/igenomes_ignored.config @@ -0,0 +1,9 @@ +/* +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Nextflow config file for iGenomes paths +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Empty genomes dictionary to use when igenomes is ignored. +---------------------------------------------------------------------------------------- +*/ + +params.genomes = [:] diff --git a/conf/modules.config b/conf/modules.config index 6d635d07..883a9590 100644 --- a/conf/modules.config +++ b/conf/modules.config @@ -215,7 +215,6 @@ process { ] ] } - withName: 'MULTIQC' { cache = false ext.args = { params.multiqc_title ? "--title \"$params.multiqc_title\"" : '' } @@ -232,10 +231,9 @@ process { mode: params.publish_dir_mode ] } -// Samshee should fail the entire pipeline immediately as it validated the illumina samplesheet to be valid before the pipeline runs. As such, it should not be running more than once & if it fails should stop the pipeline + // Samshee should fail the entire pipeline immediately as it validated the illumina samplesheet to be valid before the pipeline runs. As such, it should not be running more than once & if it fails should stop the pipeline withName: SAMSHEE { errorStrategy = "terminate" } - } diff --git a/conf/test.config b/conf/test.config index 2a1366b5..680c6cfd 100755 --- a/conf/test.config +++ b/conf/test.config @@ -10,20 +10,22 @@ ---------------------------------------------------------------------------------------- */ +process { + resourceLimits = [ + cpus: 4, + memory: '13.GB', + time: '4.h' + ] +} + params { config_profile_name = 'Test profile' config_profile_description = 'Minimal test dataset to check pipeline function' - // Limit resources so that this can run on GitHub Actions - max_cpus = 2 - max_memory = '6.GB' - max_time = '6.h' - // Input data input = 'https://raw.githubusercontent.com/nf-core/test-datasets/demultiplex/samplesheet/1.3.0/flowcell_input.csv' demultiplexer = 'bclconvert' skip_tools = 'samshee' - } process { diff --git a/conf/test_bases2fastq.config b/conf/test_bases2fastq.config index f87261ea..7b3764d8 100644 --- a/conf/test_bases2fastq.config +++ b/conf/test_bases2fastq.config @@ -10,15 +10,19 @@ ---------------------------------------------------------------------------------------- */ +// Limit resources so that this can run on GitHub Actions +process { + resourceLimits = [ + cpus: 4, + memory: '13.GB', + time: '4.h' + ] +} + params { config_profile_name = 'Test bases2fastq profile' config_profile_description = 'Minimal test dataset to check pipeline function' - // Limit resources so that this can run on GitHub Actions - max_cpus = 2 - max_memory = '6.GB' - max_time = '6.h' - // Input data input = 'https://raw.githubusercontent.com/nf-core/test-datasets/demultiplex/samplesheet/1.3.0/b2fq-samplesheet.csv' demultiplexer = 'bases2fastq' diff --git a/conf/test_bcl2fastq.config b/conf/test_bcl2fastq.config old mode 100755 new mode 100644 index eed995fc..d94b53e8 --- a/conf/test_bcl2fastq.config +++ b/conf/test_bcl2fastq.config @@ -10,20 +10,23 @@ ---------------------------------------------------------------------------------------- */ +// Limit resources so that this can run on GitHub Actions +process { + resourceLimits = [ + cpus: 4, + memory: '13.GB', + time: '4.h' + ] +} + params { config_profile_name = 'Test bcl2fastq profile' config_profile_description = 'Minimal test dataset to check pipeline function with bcl2fastq' - // Limit resources so that this can run on GitHub Actions - max_cpus = 2 - max_memory = '6.GB' - max_time = '6.h' - // Input data input = 'https://raw.githubusercontent.com/nf-core/test-datasets/demultiplex/samplesheet/1.3.0/flowcell_input.csv' demultiplexer = 'bcl2fastq' skip_tools = "checkqc,samshee" - } process { diff --git a/conf/test_bclconvert.config b/conf/test_bclconvert.config index d9b91ed1..2510ba6d 100755 --- a/conf/test_bclconvert.config +++ b/conf/test_bclconvert.config @@ -10,18 +10,21 @@ ---------------------------------------------------------------------------------------- */ +// Limit resources so that this can run on GitHub Actions +process { + resourceLimits = [ + cpus: 4, + memory: '13.GB', + time: '4.h' + ] +} + params { config_profile_name = 'Test bclconvert profile' config_profile_description = 'Minimal test dataset to check bclconvert pipeline function' - // Limit resources so that this can run on GitHub Actions - max_cpus = 2 - max_memory = '6.GB' - max_time = '6.h' - // Input data input = 'https://huggingface.co/datasets/nf-core/demultiplex/resolve/main/testdata/Miniseq_truseq_smrna/input_samplesheet.csv' demultiplexer = 'bclconvert' skip_tools = 'samshee' - } diff --git a/conf/test_checkqc.config b/conf/test_checkqc.config index 7dc7fbb5..b6b971e0 100644 --- a/conf/test_checkqc.config +++ b/conf/test_checkqc.config @@ -10,6 +10,15 @@ ---------------------------------------------------------------------------------------- */ +// Limit resources so that this can run on GitHub Actions +process { + resourceLimits = [ + cpus: 4, + memory: '13.GB', + time: '4.h' + ] +} + params { config_profile_name = 'Test checkqc profile' config_profile_description = 'Minimal test dataset to check pipeline function with bcl2fastq and checkqc' @@ -20,7 +29,6 @@ params { demultiplexer = 'bcl2fastq' skip_tools = "fastp,falco,md5sum,multiqc,samshee" checkqc_config = "${projectDir}/assets/checkqc_config.yaml" - } process { diff --git a/conf/test_fqtk.config b/conf/test_fqtk.config index f097b8b2..ceac2c83 100644 --- a/conf/test_fqtk.config +++ b/conf/test_fqtk.config @@ -10,15 +10,19 @@ ---------------------------------------------------------------------------------------- */ +// Limit resources so that this can run on GitHub Actions +process { + resourceLimits = [ + cpus: 4, + memory: '13.GB', + time: '4.h' + ] +} + params { config_profile_name = 'Test fqtk profile' config_profile_description = 'Minimal test dataset to check pipeline function' - // Limit resources so that this can run on GitHub Actions - max_cpus = 2 - max_memory = '6.GB' - max_time = '1.h' - // Input data input = 'https://raw.githubusercontent.com/nf-core/test-datasets/demultiplex/samplesheet/1.3.0/fqtk-samplesheet.csv' demultiplexer = 'fqtk' diff --git a/conf/test_kraken.config b/conf/test_kraken.config index 6dfe1b2d..f4c0b609 100644 --- a/conf/test_kraken.config +++ b/conf/test_kraken.config @@ -10,6 +10,15 @@ ---------------------------------------------------------------------------------------- */ +// Limit resources so that this can run on GitHub Actions +process { + resourceLimits = [ + cpus: 4, + memory: '13.GB', + time: '4.h' + ] +} + params { config_profile_name = 'Test full kraken profile' config_profile_description = 'Full test dataset to check pipeline function with kraken' @@ -19,10 +28,5 @@ params { demultiplexer = 'bcl2fastq' skip_tools = "checkqc,samshee" kraken_db = 'https://raw.githubusercontent.com/nf-core/test-datasets/modules/data/genomics/sarscov2/genome/db/kraken2.tar.gz' - - // Limit resources so that this can run on GitHub Actions - max_cpus = 2 - max_memory = '6.GB' - max_time = '1.h' } diff --git a/conf/test_mkfastq.config b/conf/test_mkfastq.config index 7940f14d..070ebab5 100644 --- a/conf/test_mkfastq.config +++ b/conf/test_mkfastq.config @@ -10,15 +10,19 @@ ---------------------------------------------------------------------------------------- */ +// Limit resources so that this can run on GitHub Actions +process { + resourceLimits = [ + cpus: 4, + memory: '13.GB', + time: '4.h' + ] +} + params { config_profile_name = 'Test mkfastq profile' config_profile_description = 'Minimal test dataset to check pipeline function' - // Limit resources so that this can run on GitHub Actions - max_cpus = 2 - max_memory = '6.GB' - max_time = '1.h' - // Input data input = 'https://raw.githubusercontent.com/nf-core/test-datasets/demultiplex/samplesheet/cellranger_tiny/mkfastq_tiny_samplesheet.csv' demultiplexer = 'mkfastq' diff --git a/conf/test_pe.config b/conf/test_pe.config index a0bf2b3a..cfcf0422 100644 --- a/conf/test_pe.config +++ b/conf/test_pe.config @@ -10,6 +10,15 @@ ---------------------------------------------------------------------------------------- */ +// Limit resources so that this can run on GitHub Actions +process { + resourceLimits = [ + cpus: 4, + memory: '13.GB', + time: '4.h' + ] +} + params { config_profile_name = 'Paired end test profile' config_profile_description = 'Paired end test dataset to check pipeline function' @@ -17,12 +26,5 @@ params { // Input data input = 'https://raw.githubusercontent.com/nf-core/test-datasets/demultiplex/samplesheet/1.3.0/pe_samplesheet.csv' demultiplexer = 'bcl2fastq' - - // Limit resources so that this can run on GitHub Actions - max_cpus = 2 - max_memory = '6.GB' - max_time = '1.h' - skip_tools = "checkqc,samshee" - } diff --git a/conf/test_sgdemux.config b/conf/test_sgdemux.config index 00ed472e..db34a65b 100644 --- a/conf/test_sgdemux.config +++ b/conf/test_sgdemux.config @@ -10,15 +10,19 @@ ---------------------------------------------------------------------------------------- */ +// Limit resources so that this can run on GitHub Actions +process { + resourceLimits = [ + cpus: 4, + memory: '13.GB', + time: '4.h' + ] +} + params { config_profile_name = 'Test sgdemux profile' config_profile_description = 'Minimal test dataset to check pipeline function' - // Limit resources so that this can run on GitHub Actions - max_cpus = 2 - max_memory = '6.GB' - max_time = '1.h' - // Input data input = 'https://raw.githubusercontent.com/nf-core/test-datasets/demultiplex/samplesheet/1.3.0/sgdemux-samplesheet.csv' demultiplexer = 'sgdemux' diff --git a/conf/test_two_lanes.config b/conf/test_two_lanes.config index 6dff2efc..d6f04923 100644 --- a/conf/test_two_lanes.config +++ b/conf/test_two_lanes.config @@ -10,6 +10,15 @@ ---------------------------------------------------------------------------------------- */ +// Limit resources so that this can run on GitHub Actions +process { + resourceLimits = [ + cpus: 4, + memory: '13.GB', + time: '4.h' + ] +} + params { config_profile_name = 'Test two lanes profile' config_profile_description = 'Minimal test dataset to check pipeline function with multiple lanes' diff --git a/conf/test_uncompressed.config b/conf/test_uncompressed.config index 3d0c2ab7..a33378c2 100644 --- a/conf/test_uncompressed.config +++ b/conf/test_uncompressed.config @@ -10,20 +10,23 @@ ---------------------------------------------------------------------------------------- */ +// Limit resources so that this can run on GitHub Actions +process { + resourceLimits = [ + cpus: 4, + memory: '13.GB', + time: '4.h' + ] +} + params { config_profile_name = 'Test profile' config_profile_description = 'Minimal test dataset to check pipeline function' - // Limit resources so that this can run on GitHub Actions - max_cpus = 2 - max_memory = '6.GB' - max_time = '6.h' - // Input data input = 'https://github.com/nf-core/test-datasets/raw/demultiplex/samplesheet/1.3.0/uncompressed-samplesheet.csv' demultiplexer = 'bclconvert' skip_tools = 'samshee' - } process { diff --git a/docs/images/mqc_fastqc_adapter.png b/docs/images/mqc_fastqc_adapter.png deleted file mode 100755 index 361d0e47..00000000 Binary files a/docs/images/mqc_fastqc_adapter.png and /dev/null differ diff --git a/docs/images/mqc_fastqc_counts.png b/docs/images/mqc_fastqc_counts.png deleted file mode 100755 index cb39ebb8..00000000 Binary files a/docs/images/mqc_fastqc_counts.png and /dev/null differ diff --git a/docs/images/mqc_fastqc_quality.png b/docs/images/mqc_fastqc_quality.png deleted file mode 100755 index a4b89bf5..00000000 Binary files a/docs/images/mqc_fastqc_quality.png and /dev/null differ diff --git a/docs/usage.md b/docs/usage.md index c3efd5b8..3753857e 100755 --- a/docs/usage.md +++ b/docs/usage.md @@ -107,9 +107,9 @@ The above pipeline run specified with a params file in yaml format: nextflow run nf-core/demultiplex -profile docker -params-file params.yaml ``` -with `params.yaml` containing: +with: -```yaml +```yaml title="params.yaml" input: './samplesheet.csv' outdir: './results/' genome: 'GRCh37' @@ -235,14 +235,6 @@ See the main [Nextflow documentation](https://www.nextflow.io/docs/latest/config If you have any questions or issues please send us a message on [Slack](https://nf-co.re/join/slack) on the [`#configs` channel](https://nfcore.slack.com/channels/configs). -## Azure Resource Requests - -To be used with the `azurebatch` profile by specifying the `-profile azurebatch`. -We recommend providing a compute `params.vm_type` of `Standard_D16_v3` VMs by default but these options can be changed if required. - -Note that the choice of VM size depends on your quota and the overall workload during the analysis. -For a thorough list, please refer the [Azure Sizes for virtual machines in Azure](https://docs.microsoft.com/en-us/azure/virtual-machines/sizes). - ## Running in the background Nextflow handles job submissions and supervises the running jobs. The Nextflow process must run until the pipeline is finished. diff --git a/main.nf b/main.nf index 2355a0fb..d7dcc41e 100755 --- a/main.nf +++ b/main.nf @@ -9,27 +9,15 @@ ---------------------------------------------------------------------------------------- */ -nextflow.enable.dsl = 2 - /* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ IMPORT FUNCTIONS / MODULES / SUBWORKFLOWS / WORKFLOWS ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */ -include { DEMULTIPLEX } from './workflows/demultiplex' -include { PIPELINE_INITIALISATION } from './subworkflows/local/utils_nfcore_demultiplex_pipeline' +include { DEMULTIPLEX } from './workflows/demultiplex' include { PIPELINE_COMPLETION } from './subworkflows/local/utils_nfcore_demultiplex_pipeline' - -include { getGenomeAttribute } from './subworkflows/local/utils_nfcore_demultiplex_pipeline' - -/* -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - IMPORT FUNCTIONS / MODULES / SUBWORKFLOWS / WORKFLOWS -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -*/ - - +include { PIPELINE_INITIALISATION } from './subworkflows/local/utils_nfcore_demultiplex_pipeline' /* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -56,7 +44,6 @@ workflow NFCORE_DEMULTIPLEX { emit: multiqc_report = DEMULTIPLEX.out.multiqc_report // channel: /path/to/multiqc_report.html - } /* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -67,13 +54,11 @@ workflow NFCORE_DEMULTIPLEX { workflow { main: - // // SUBWORKFLOW: Run initialisation tasks // PIPELINE_INITIALISATION ( params.version, - params.help, params.validate_params, params.monochrome_logs, args, diff --git a/modules.json b/modules.json index 91bf80bf..3711c3a6 100644 --- a/modules.json +++ b/modules.json @@ -62,7 +62,7 @@ }, "multiqc": { "branch": "master", - "git_sha": "b8d36829fa84b6e404364abff787e8b07f6d058c", + "git_sha": "cf17ca47590cc578dfb47db1c2a44ef86f89976d", "installed_by": ["modules"] }, "seqtk/sample": { @@ -96,17 +96,17 @@ }, "utils_nextflow_pipeline": { "branch": "master", - "git_sha": "d20fb2a9cc3e2835e9d067d1046a63252eb17352", + "git_sha": "3aa0aec1d52d492fe241919f0c6100ebf0074082", "installed_by": ["subworkflows"] }, "utils_nfcore_pipeline": { "branch": "master", - "git_sha": "2fdce49d30c0254f76bc0f13c55c17455c1251ab", + "git_sha": "1b6b9a3338d011367137808b49b923515080e3ba", "installed_by": ["subworkflows"] }, - "utils_nfvalidation_plugin": { + "utils_nfschema_plugin": { "branch": "master", - "git_sha": "5caf7640a9ef1d18d765d55339be751bb0969dfa", + "git_sha": "bbd5a41f4535a8defafe6080e00ea74c45f4f96c", "installed_by": ["subworkflows"] } } diff --git a/modules/nf-core/multiqc/main.nf b/modules/nf-core/multiqc/main.nf index 9724d2f3..cc0643e1 100644 --- a/modules/nf-core/multiqc/main.nf +++ b/modules/nf-core/multiqc/main.nf @@ -52,7 +52,7 @@ process MULTIQC { stub: """ mkdir multiqc_data - touch multiqc_plots + mkdir multiqc_plots touch multiqc_report.html cat <<-END_VERSIONS > versions.yml diff --git a/nextflow.config b/nextflow.config index 7d764432..df00afee 100755 --- a/nextflow.config +++ b/nextflow.config @@ -51,49 +51,27 @@ params { monochrome_logs = false hook_url = null help = false + help_full = false + show_hidden = false version = false pipelines_testdata_base_path = 'https://raw.githubusercontent.com/nf-core/test-datasets/' // Config options config_profile_name = null config_profile_description = null + custom_config_version = 'master' custom_config_base = "https://raw.githubusercontent.com/nf-core/configs/${params.custom_config_version}" config_profile_contact = null config_profile_url = null - // Max resource options - // Defaults only, expecting to be overwritten - max_memory = '128.GB' - max_cpus = 16 - max_time = '240.h' - // Schema validation default options - validationFailUnrecognisedParams = false - validationLenientMode = false - validationSchemaIgnoreParams = 'genomes,igenomes_base' - validationShowHiddenParams = false - validate_params = true - + validate_params = true } // Load base.config by default for all pipelines includeConfig 'conf/base.config' -// Load nf-core custom profiles from different Institutions -try { - includeConfig "${params.custom_config_base}/nfcore_custom.config" -} catch (Exception e) { - System.err.println("WARNING: Could not load nf-core/config profiles: ${params.custom_config_base}/nfcore_custom.config") -} - -// Load nf-core/demultiplex custom profiles from different institutions. -// Warning: Uncomment only if a pipeline-specific instititutional config already exists on nf-core/configs! -try { - includeConfig "${params.custom_config_base}/pipeline/demultiplex.config" -} catch (Exception e) { - System.err.println("WARNING: Could not load nf-core/config/demultiplex profiles: ${params.custom_config_base}/pipeline/demultiplex.config") -} // Load modules.config for DSL2 module specific options includeConfig 'conf/modules.config' @@ -111,7 +89,7 @@ profiles { podman.enabled = false shifter.enabled = false charliecloud.enabled = false - conda.channels = ['conda-forge', 'bioconda', 'defaults'] + conda.channels = ['conda-forge', 'bioconda'] apptainer.enabled = false } mamba { @@ -212,18 +190,20 @@ profiles { } -// Set default registry for Apptainer, Docker, Podman and Singularity independent of -profile -// Will not be used unless Apptainer / Docker / Podman / Singularity are enabled -// Set to your registry if you have a mirror of containers -apptainer.registry = 'quay.io' -docker.registry = 'quay.io' -podman.registry = 'quay.io' -singularity.registry = 'quay.io' +// Load nf-core custom profiles from different Institutions +includeConfig !System.getenv('NXF_OFFLINE') && params.custom_config_base ? "${params.custom_config_base}/nfcore_custom.config" : "/dev/null" -// Nextflow plugins -plugins { - id 'nf-validation@1.1.3' // Validation of pipeline parameters and creation of an input channel from a sample sheet -} +// Load nf-core/demultiplex custom profiles from different institutions. +includeConfig !System.getenv('NXF_OFFLINE') && params.custom_config_base ? "${params.custom_config_base}/pipeline/demultiplex.config" : "/dev/null" + +// 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 +apptainer.registry = 'quay.io' +docker.registry = 'quay.io' +podman.registry = 'quay.io' +singularity.registry = 'quay.io' +charliecloud.registry = 'quay.io' // 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. @@ -236,8 +216,15 @@ env { JULIA_DEPOT_PATH = "/usr/local/share/julia" } -// Capture exit codes from upstream processes when piping -process.shell = ['/bin/bash', '-euo', 'pipefail'] +// Set bash options +process.shell = """\ +bash + +set -e # Exit if a tool returns a non-zero status/exit code +set -u # Treat unset variables and parameters as an error +set -o pipefail # Returns the status of the last command to exit with a non-zero status or zero if all successfully execute +set -C # No clobber - prevent output redirection from overwriting files. +""" // Disable process selector warnings by default. Use debug profile to enable warnings. nextflow.enable.configProcessNamesValidation = false @@ -274,40 +261,43 @@ manifest { homePage = 'https://github.com/nf-core/demultiplex' description = """Demultiplexing pipeline for Illumina sequencing data""" mainScript = 'main.nf' - nextflowVersion = '!>=23.04.0' + nextflowVersion = '!>=24.04.2' version = '1.5.2' doi = '10.5281/zenodo.7153103' } -// Function to ensure that resource requirements don't go beyond -// a maximum limit -def check_max(obj, type) { - if (type == 'memory') { - try { - if (obj.compareTo(params.max_memory as nextflow.util.MemoryUnit) == 1) - return params.max_memory as nextflow.util.MemoryUnit - else - return obj - } catch (all) { - println " ### ERROR ### Max memory '${params.max_memory}' is not valid! Using default value: $obj" - return obj - } - } else if (type == 'time') { - try { - if (obj.compareTo(params.max_time as nextflow.util.Duration) == 1) - return params.max_time as nextflow.util.Duration - else - return obj - } catch (all) { - println " ### ERROR ### Max time '${params.max_time}' is not valid! Using default value: $obj" - return obj - } - } else if (type == 'cpus') { - try { - return Math.min( obj, params.max_cpus as int ) - } catch (all) { - println " ### ERROR ### Max cpus '${params.max_cpus}' is not valid! Using default value: $obj" - return obj - } +// Nextflow plugins +plugins { + id 'nf-schema@2.1.1' // Validation of pipeline parameters and creation of an input channel from a sample sheet +} + +validation { + defaultIgnoreParams = ["genomes"] + help { + enabled = true + command = "nextflow run $manifest.name -profile --input samplesheet.csv --outdir " + fullParameter = "help_full" + showHiddenParameter = "show_hidden" + beforeText = """ +-\033[2m----------------------------------------------------\033[0m- + \033[0;32m,--.\033[0;30m/\033[0;32m,-.\033[0m +\033[0;34m ___ __ __ __ ___ \033[0;32m/,-._.--~\'\033[0m +\033[0;34m |\\ | |__ __ / ` / \\ |__) |__ \033[0;33m} {\033[0m +\033[0;34m | \\| | \\__, \\__/ | \\ |___ \033[0;32m\\`-._,-`-,\033[0m + \033[0;32m`._,._,\'\033[0m +\033[0;35m ${manifest.name} ${manifest.version}\033[0m +-\033[2m----------------------------------------------------\033[0m- +""" + afterText = """${manifest.doi ? "\n* The pipeline\n" : ""}${manifest.doi.tokenize(",").collect { " https://doi.org/${it.trim().replace('https://doi.org/','')}"}.join("\n")}${manifest.doi ? "\n" : ""} +* The nf-core framework + https://doi.org/10.1038/s41587-020-0439-x + +* Software dependencies + https://github.com/${manifest.name}/blob/master/CITATIONS.md +""" + } + summary { + beforeText = validation.help.beforeText + afterText = validation.help.afterText } } diff --git a/nextflow_schema.json b/nextflow_schema.json index 7ab8d009..9857da5d 100644 --- a/nextflow_schema.json +++ b/nextflow_schema.json @@ -1,10 +1,10 @@ { - "$schema": "http://json-schema.org/draft-07/schema", + "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "https://raw.githubusercontent.com/nf-core/demultiplex/master/nextflow_schema.json", "title": "nf-core/demultiplex pipeline parameters", "description": "Demultiplexing pipeline for Illumina sequencing data", "type": "object", - "definitions": { + "$defs": { "workflow_options": { "title": "Workflow options", "type": "object", @@ -160,41 +160,6 @@ } } }, - "max_job_request_options": { - "title": "Max job request options", - "type": "object", - "fa_icon": "fab fa-acquisitions-incorporated", - "description": "Set the top limit for requested resources for any single job.", - "help_text": "If you are running on a smaller system, a pipeline step requesting more resources than are available may cause the Nextflow to stop the run with an error. These options allow you to cap the maximum resources requested by any single job so that the pipeline will run on your system.\n\nNote that you can not _increase_ the resources requested by any job using these options. For that you will need your own configuration file. See [the nf-core website](https://nf-co.re/usage/configuration) for details.", - "properties": { - "max_cpus": { - "type": "integer", - "description": "Maximum number of CPUs that can be requested for any single job.", - "default": 16, - "fa_icon": "fas fa-microchip", - "hidden": true, - "help_text": "Use to set an upper-limit for the CPU requirement for each process. Should be an integer e.g. `--max_cpus 1`" - }, - "max_memory": { - "type": "string", - "description": "Maximum amount of memory that can be requested for any single job.", - "default": "128.GB", - "fa_icon": "fas fa-memory", - "pattern": "^\\d+(\\.\\d+)?\\.?\\s*(K|M|G|T)?B$", - "hidden": true, - "help_text": "Use to set an upper-limit for the memory requirement for each process. Should be a string in the format integer-unit e.g. `--max_memory '8.GB'`" - }, - "max_time": { - "type": "string", - "description": "Maximum amount of time that can be requested for any single job.", - "default": "240.h", - "fa_icon": "far fa-clock", - "pattern": "^(\\d+\\.?\\s*(s|m|h|d|day)\\s*)+$", - "hidden": true, - "help_text": "Use to set an upper-limit for the time requirement for each process. Should be a string in the format integer-unit e.g. `--max_time '2.h'`" - } - } - }, "generic_options": { "title": "Generic options", "type": "object", @@ -202,12 +167,6 @@ "description": "Less common options for the pipeline, typically set in a config file.", "help_text": "These options are common to all nf-core pipelines and allow you to customise some of the core preferences for how the pipeline runs.\n\nTypically these options would be set in a Nextflow config file loaded for all pipeline runs, such as `~/.nextflow/config`.", "properties": { - "help": { - "type": "boolean", - "description": "Display help text.", - "fa_icon": "fas fa-question-circle", - "hidden": true - }, "version": { "type": "boolean", "description": "Display version and exit.", @@ -288,27 +247,6 @@ "fa_icon": "fas fa-check-square", "hidden": true }, - "validationShowHiddenParams": { - "type": "boolean", - "fa_icon": "far fa-eye-slash", - "description": "Show all params when using `--help`", - "hidden": true, - "help_text": "By default, parameters set as _hidden_ in the schema are not shown on the command line when a user runs with `--help`. Specifying this option will tell the pipeline to show all parameters." - }, - "validationFailUnrecognisedParams": { - "type": "boolean", - "fa_icon": "far fa-check-circle", - "description": "Validation of parameters fails when an unrecognised parameter is found.", - "hidden": true, - "help_text": "By default, when an unrecognised parameter is found, it returns a warinig." - }, - "validationLenientMode": { - "type": "boolean", - "fa_icon": "far fa-check-circle", - "description": "Validation of parameters in lenient more.", - "hidden": true, - "help_text": "Allows string values that are parseable as numbers or booleans. For further information see [JSONSchema docs](https://github.com/everit-org/json-schema#lenient-mode)." - }, "pipelines_testdata_base_path": { "type": "string", "fa_icon": "far fa-check-circle", @@ -321,25 +259,22 @@ }, "allOf": [ { - "$ref": "#/definitions/workflow_options" - }, - { - "$ref": "#/definitions/input_output_options" + "$ref": "#/$defs/workflow_options" }, { - "$ref": "#/definitions/demultiplex_options" + "$ref": "#/$defs/input_output_options" }, { - "$ref": "#/definitions/institutional_config_options" + "$ref": "#/$defs/demultiplex_options" }, { - "$ref": "#/definitions/checkqc_options" + "$ref": "#/$defs/institutional_config_options" }, { - "$ref": "#/definitions/max_job_request_options" + "$ref": "#/$defs/checkqc_options" }, { - "$ref": "#/definitions/generic_options" + "$ref": "#/$defs/generic_options" } ] } diff --git a/nf-test.config b/nf-test.config index a3837c71..d441a08a 100644 --- a/nf-test.config +++ b/nf-test.config @@ -13,5 +13,9 @@ config { // run all test with the defined docker profile from the main nextflow.config profile "docker,test" + + plugins { + load "nft-utils@0.0.3" + } } diff --git a/subworkflows/local/.gitkeep b/subworkflows/local/.gitkeep deleted file mode 100644 index e69de29b..00000000 diff --git a/subworkflows/local/utils_nfcore_demultiplex_pipeline/main.nf b/subworkflows/local/utils_nfcore_demultiplex_pipeline/main.nf index e92ab987..35008413 100644 --- a/subworkflows/local/utils_nfcore_demultiplex_pipeline/main.nf +++ b/subworkflows/local/utils_nfcore_demultiplex_pipeline/main.nf @@ -8,29 +8,25 @@ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */ -include { UTILS_NFVALIDATION_PLUGIN } from '../../nf-core/utils_nfvalidation_plugin' -include { paramsSummaryMap } from 'plugin/nf-validation' -include { fromSamplesheet } from 'plugin/nf-validation' -include { UTILS_NEXTFLOW_PIPELINE } from '../../nf-core/utils_nextflow_pipeline' +include { UTILS_NFSCHEMA_PLUGIN } from '../../nf-core/utils_nfschema_plugin' +include { paramsSummaryMap } from 'plugin/nf-schema' +include { samplesheetToList } from 'plugin/nf-schema' include { completionEmail } from '../../nf-core/utils_nfcore_pipeline' include { completionSummary } from '../../nf-core/utils_nfcore_pipeline' -include { dashedLine } from '../../nf-core/utils_nfcore_pipeline' -include { nfCoreLogo } from '../../nf-core/utils_nfcore_pipeline' include { imNotification } from '../../nf-core/utils_nfcore_pipeline' include { UTILS_NFCORE_PIPELINE } from '../../nf-core/utils_nfcore_pipeline' -include { workflowCitation } from '../../nf-core/utils_nfcore_pipeline' +include { UTILS_NEXTFLOW_PIPELINE } from '../../nf-core/utils_nextflow_pipeline' /* -======================================================================================== +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ SUBWORKFLOW TO INITIALISE PIPELINE -======================================================================================== +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */ workflow PIPELINE_INITIALISATION { take: version // boolean: Display version and exit - help // boolean: Display help text validate_params // boolean: Boolean whether to validate parameters against the schema at runtime monochrome_logs // boolean: Do not use coloured log outputs nextflow_cli_args // array: List of positional nextflow CLI args @@ -54,16 +50,10 @@ workflow PIPELINE_INITIALISATION { // // Validate parameters and generate parameter summary to stdout // - pre_help_text = nfCoreLogo(monochrome_logs) - post_help_text = '\n' + workflowCitation() + '\n' + dashedLine(monochrome_logs) - def String workflow_command = "nextflow run ${workflow.manifest.name} -profile --input samplesheet.csv --outdir " - UTILS_NFVALIDATION_PLUGIN ( - help, - workflow_command, - pre_help_text, - post_help_text, + UTILS_NFSCHEMA_PLUGIN ( + workflow, validate_params, - "nextflow_schema.json" + null ) // @@ -72,12 +62,12 @@ workflow PIPELINE_INITIALISATION { UTILS_NFCORE_PIPELINE ( nextflow_cli_args ) + // // Custom validation for pipeline parameters // validateInputParameters() - // // Create channel from input file provided through params.input // @@ -89,12 +79,12 @@ workflow PIPELINE_INITIALISATION { // https://raw.githubusercontent.com/nf-core/test-datasets/demultiplex/samplesheet/1.3.0/sgdemux-samplesheet.csv if( params.demultiplexer == 'fqtk' ) { - ch_samplesheet = Channel.fromSamplesheet("input") + ch_samplesheet = Channel.fromList(samplesheetToList(params.input, "${projectDir}/assets/schema_input.json")) .map { meta, samplesheet, flowcell, per_flowcell_manifest -> if ( !file(per_flowcell_manifest).exists() ){ error "[Samplesheet Error] The per flowcell manifest file does not exist: ${per_flowcell_manifest}" } - [meta, samplesheet, flowcell, per_flowcell_manifest] + [ meta, samplesheet, flowcell, per_flowcell_manifest ] } ch_flowcell_manifest = ch_samplesheet.map{ meta, samplesheet, flowcell, per_flowcell_manifest -> per_flowcell_manifest } @@ -106,10 +96,8 @@ workflow PIPELINE_INITIALISATION { } } else { - ch_samplesheet = Channel.fromSamplesheet("input") - .map { - validateInputSamplesheet(it) - } + ch_samplesheet = Channel + .fromList(samplesheetToList(params.input, "${projectDir}/assets/schema_input.json")) } emit: @@ -118,9 +106,9 @@ workflow PIPELINE_INITIALISATION { } /* -======================================================================================== +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ SUBWORKFLOW FOR PIPELINE COMPLETION -======================================================================================== +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */ workflow PIPELINE_COMPLETION { @@ -135,7 +123,6 @@ workflow PIPELINE_COMPLETION { multiqc_report // string: Path to MultiQC report main: - summary_params = paramsSummaryMap(workflow, parameters_schema: "nextflow_schema.json") // @@ -143,11 +130,18 @@ workflow PIPELINE_COMPLETION { // workflow.onComplete { if (email || email_on_fail) { - completionEmail(summary_params, email, email_on_fail, plaintext_email, outdir, monochrome_logs, multiqc_report.toList()) + completionEmail( + summary_params, + email, + email_on_fail, + plaintext_email, + outdir, + monochrome_logs, + multiqc_report.toList() + ) } completionSummary(monochrome_logs) - if (hook_url) { imNotification(summary_params, hook_url) } @@ -159,9 +153,9 @@ workflow PIPELINE_COMPLETION { } /* -======================================================================================== +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ FUNCTIONS -======================================================================================== +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */ // // Check and validate pipeline parameters @@ -170,13 +164,6 @@ def validateInputParameters() { genomeExistsError() } -// -// Validate channels from input samplesheet -// -def validateInputSamplesheet(input) { - return input -} - // // Get attribute from genome config file e.g. fasta // @@ -202,7 +189,6 @@ def genomeExistsError() { error(error_string) } } - // // Generate methods description for MultiQC // @@ -244,8 +230,10 @@ def methodsDescriptionText(mqc_methods_yaml) { // Removing `https://doi.org/` to handle pipelines using DOIs vs DOI resolvers // Removing ` ` since the manifest.doi is a string and not a proper list def temp_doi_ref = "" - String[] manifest_doi = meta.manifest_map.doi.tokenize(",") - for (String doi_ref: manifest_doi) temp_doi_ref += "(doi: ${doi_ref.replace("https://doi.org/", "").replace(" ", "")}), " + def manifest_doi = meta.manifest_map.doi.tokenize(",") + manifest_doi.each { doi_ref -> + temp_doi_ref += "(doi: ${doi_ref.replace("https://doi.org/", "").replace(" ", "")}), " + } meta["doi_text"] = temp_doi_ref.substring(0, temp_doi_ref.length() - 2) } else meta["doi_text"] = "" meta["nodoi_text"] = meta.manifest_map.doi ? "" : "
  • If available, make sure to update the text to include the Zenodo DOI of version of the pipeline used.
  • " @@ -266,3 +254,4 @@ def methodsDescriptionText(mqc_methods_yaml) { return description_html.toString() } + diff --git a/subworkflows/nf-core/utils_nextflow_pipeline/main.nf b/subworkflows/nf-core/utils_nextflow_pipeline/main.nf index 28e32b20..0fcbf7b3 100644 --- a/subworkflows/nf-core/utils_nextflow_pipeline/main.nf +++ b/subworkflows/nf-core/utils_nextflow_pipeline/main.nf @@ -3,13 +3,12 @@ // /* -======================================================================================== +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ SUBWORKFLOW DEFINITION -======================================================================================== +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */ workflow UTILS_NEXTFLOW_PIPELINE { - take: print_version // boolean: print version dump_parameters // boolean: dump parameters @@ -22,7 +21,7 @@ workflow UTILS_NEXTFLOW_PIPELINE { // Print workflow version and exit on --version // if (print_version) { - log.info "${workflow.manifest.name} ${getWorkflowVersion()}" + log.info("${workflow.manifest.name} ${getWorkflowVersion()}") System.exit(0) } @@ -45,9 +44,9 @@ workflow UTILS_NEXTFLOW_PIPELINE { } /* -======================================================================================== +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ FUNCTIONS -======================================================================================== +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */ // @@ -72,11 +71,11 @@ def getWorkflowVersion() { // Dump pipeline parameters to a JSON file // def dumpParametersToJSON(outdir) { - def timestamp = new java.util.Date().format( 'yyyy-MM-dd_HH-mm-ss') - def filename = "params_${timestamp}.json" - def temp_pf = new File(workflow.launchDir.toString(), ".${filename}") - def jsonStr = groovy.json.JsonOutput.toJson(params) - temp_pf.text = groovy.json.JsonOutput.prettyPrint(jsonStr) + def timestamp = new java.util.Date().format('yyyy-MM-dd_HH-mm-ss') + def filename = "params_${timestamp}.json" + def temp_pf = new File(workflow.launchDir.toString(), ".${filename}") + def jsonStr = groovy.json.JsonOutput.toJson(params) + temp_pf.text = groovy.json.JsonOutput.prettyPrint(jsonStr) nextflow.extension.FilesEx.copyTo(temp_pf.toPath(), "${outdir}/pipeline_info/params_${timestamp}.json") temp_pf.delete() @@ -91,9 +90,14 @@ def checkCondaChannels() { try { def config = parser.load("conda config --show channels".execute().text) channels = config.channels - } catch(NullPointerException | IOException e) { - log.warn "Could not verify conda channel configuration." - return + } + catch (NullPointerException e) { + log.warn("Could not verify conda channel configuration.") + return null + } + catch (IOException e) { + log.warn("Could not verify conda channel configuration.") + return null } // Check that all channels are present @@ -102,23 +106,19 @@ def checkCondaChannels() { def channels_missing = ((required_channels_in_order as Set) - (channels as Set)) as Boolean // Check that they are in the right order - def channel_priority_violation = false - - required_channels_in_order.eachWithIndex { channel, index -> - if (index < required_channels_in_order.size() - 1) { - channel_priority_violation |= !(channels.indexOf(channel) < channels.indexOf(required_channels_in_order[index+1])) - } - } + def channel_priority_violation = required_channels_in_order != channels.findAll { ch -> ch in required_channels_in_order } if (channels_missing | channel_priority_violation) { - log.warn "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n" + - " There is a problem with your Conda configuration!\n\n" + - " You will need to set-up the conda-forge and bioconda channels correctly.\n" + - " Please refer to https://bioconda.github.io/\n" + - " The observed channel order is \n" + - " ${channels}\n" + - " but the following channel order is required:\n" + - " ${required_channels_in_order}\n" + - "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~" + log.warn """\ + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + There is a problem with your Conda configuration! + You will need to set-up the conda-forge and bioconda channels correctly. + Please refer to https://bioconda.github.io/ + The observed channel order is + ${channels} + but the following channel order is required: + ${required_channels_in_order} + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~" + """.stripIndent(true) } } diff --git a/subworkflows/nf-core/utils_nfcore_pipeline/main.nf b/subworkflows/nf-core/utils_nfcore_pipeline/main.nf index cbd8495b..5cb7bafe 100644 --- a/subworkflows/nf-core/utils_nfcore_pipeline/main.nf +++ b/subworkflows/nf-core/utils_nfcore_pipeline/main.nf @@ -3,13 +3,12 @@ // /* -======================================================================================== +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ SUBWORKFLOW DEFINITION -======================================================================================== +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */ workflow UTILS_NFCORE_PIPELINE { - take: nextflow_cli_args @@ -22,9 +21,9 @@ workflow UTILS_NFCORE_PIPELINE { } /* -======================================================================================== +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ FUNCTIONS -======================================================================================== +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */ // @@ -33,12 +32,9 @@ workflow UTILS_NFCORE_PIPELINE { def checkConfigProvided() { def valid_config = true as Boolean if (workflow.profile == 'standard' && workflow.configFiles.size() <= 1) { - log.warn "[$workflow.manifest.name] You are attempting to run the pipeline without any custom configuration!\n\n" + - "This will be dependent on your local compute environment but can be achieved via one or more of the following:\n" + - " (1) Using an existing pipeline profile e.g. `-profile docker` or `-profile singularity`\n" + - " (2) Using an existing nf-core/configs for your Institution e.g. `-profile crick` or `-profile uppmax`\n" + - " (3) Using your own local custom config e.g. `-c /path/to/your/custom.config`\n\n" + - "Please refer to the quick start section and usage docs for the pipeline.\n " + log.warn( + "[${workflow.manifest.name}] You are attempting to run the pipeline without any custom configuration!\n\n" + "This will be dependent on your local compute environment but can be achieved via one or more of the following:\n" + " (1) Using an existing pipeline profile e.g. `-profile docker` or `-profile singularity`\n" + " (2) Using an existing nf-core/configs for your Institution e.g. `-profile crick` or `-profile uppmax`\n" + " (3) Using your own local custom config e.g. `-c /path/to/your/custom.config`\n\n" + "Please refer to the quick start section and usage docs for the pipeline.\n " + ) valid_config = false } return valid_config @@ -49,12 +45,14 @@ def checkConfigProvided() { // def checkProfileProvided(nextflow_cli_args) { if (workflow.profile.endsWith(',')) { - error "The `-profile` option cannot end with a trailing comma, please remove it and re-run the pipeline!\n" + - "HINT: A common mistake is to provide multiple values separated by spaces e.g. `-profile test, docker`.\n" + error( + "The `-profile` option cannot end with a trailing comma, please remove it and re-run the pipeline!\n" + "HINT: A common mistake is to provide multiple values separated by spaces e.g. `-profile test, docker`.\n" + ) } if (nextflow_cli_args[0]) { - log.warn "nf-core pipelines do not accept positional arguments. The positional argument `${nextflow_cli_args[0]}` has been detected.\n" + - "HINT: A common mistake is to provide multiple values separated by spaces e.g. `-profile test, docker`.\n" + log.warn( + "nf-core pipelines do not accept positional arguments. The positional argument `${nextflow_cli_args[0]}` has been detected.\n" + "HINT: A common mistake is to provide multiple values separated by spaces e.g. `-profile test, docker`.\n" + ) } } @@ -64,19 +62,13 @@ def checkProfileProvided(nextflow_cli_args) { def workflowCitation() { def temp_doi_ref = "" def manifest_doi = workflow.manifest.doi.tokenize(",") - // Using a loop to handle multiple DOIs + // Handling multiple DOIs // Removing `https://doi.org/` to handle pipelines using DOIs vs DOI resolvers // Removing ` ` since the manifest.doi is a string and not a proper list manifest_doi.each { doi_ref -> temp_doi_ref += " https://doi.org/${doi_ref.replace('https://doi.org/', '').replace(' ', '')}\n" } - return "If you use ${workflow.manifest.name} for your analysis please cite:\n\n" + - "* The pipeline\n" + - temp_doi_ref + "\n" + - "* The nf-core framework\n" + - " https://doi.org/10.1038/s41587-020-0439-x\n\n" + - "* Software dependencies\n" + - " https://github.com/${workflow.manifest.name}/blob/master/CITATIONS.md" + return "If you use ${workflow.manifest.name} for your analysis please cite:\n\n" + "* The pipeline\n" + temp_doi_ref + "\n" + "* The nf-core framework\n" + " https://doi.org/10.1038/s41587-020-0439-x\n\n" + "* Software dependencies\n" + " https://github.com/${workflow.manifest.name}/blob/master/CITATIONS.md" } // @@ -102,7 +94,7 @@ def getWorkflowVersion() { // def processVersionsFromYAML(yaml_file) { def yaml = new org.yaml.snakeyaml.Yaml() - def versions = yaml.load(yaml_file).collectEntries { k, v -> [ k.tokenize(':')[-1], v ] } + def versions = yaml.load(yaml_file).collectEntries { k, v -> [k.tokenize(':')[-1], v] } return yaml.dumpAsMap(versions).trim() } @@ -112,8 +104,8 @@ def processVersionsFromYAML(yaml_file) { def workflowVersionToYAML() { return """ Workflow: - $workflow.manifest.name: ${getWorkflowVersion()} - Nextflow: $workflow.nextflow.version + ${workflow.manifest.name}: ${getWorkflowVersion()} + Nextflow: ${workflow.nextflow.version} """.stripIndent().trim() } @@ -121,11 +113,7 @@ def workflowVersionToYAML() { // Get channel of software versions used in pipeline in YAML format // def softwareVersionsToYAML(ch_versions) { - return ch_versions - .unique() - .map { version -> processVersionsFromYAML(version) } - .unique() - .mix(Channel.of(workflowVersionToYAML())) + return ch_versions.unique().map { version -> processVersionsFromYAML(version) }.unique().mix(Channel.of(workflowVersionToYAML())) } // @@ -133,25 +121,31 @@ def softwareVersionsToYAML(ch_versions) { // def paramsSummaryMultiqc(summary_params) { def summary_section = '' - summary_params.keySet().each { group -> - def group_params = summary_params.get(group) // This gets the parameters of that particular group - if (group_params) { - summary_section += "

    $group

    \n" - summary_section += "
    \n" - group_params.keySet().sort().each { param -> - summary_section += "
    $param
    ${group_params.get(param) ?: 'N/A'}
    \n" + summary_params + .keySet() + .each { group -> + def group_params = summary_params.get(group) + // This gets the parameters of that particular group + if (group_params) { + summary_section += "

    ${group}

    \n" + summary_section += "
    \n" + group_params + .keySet() + .sort() + .each { param -> + summary_section += "
    ${param}
    ${group_params.get(param) ?: 'N/A'}
    \n" + } + summary_section += "
    \n" } - summary_section += "
    \n" } - } - def yaml_file_text = "id: '${workflow.manifest.name.replace('/','-')}-summary'\n" as String - yaml_file_text += "description: ' - this information is collected when the pipeline is started.'\n" - yaml_file_text += "section_name: '${workflow.manifest.name} Workflow Summary'\n" - yaml_file_text += "section_href: 'https://github.com/${workflow.manifest.name}'\n" - yaml_file_text += "plot_type: 'html'\n" - yaml_file_text += "data: |\n" - yaml_file_text += "${summary_section}" + def yaml_file_text = "id: '${workflow.manifest.name.replace('/', '-')}-summary'\n" as String + yaml_file_text += "description: ' - this information is collected when the pipeline is started.'\n" + yaml_file_text += "section_name: '${workflow.manifest.name} Workflow Summary'\n" + yaml_file_text += "section_href: 'https://github.com/${workflow.manifest.name}'\n" + yaml_file_text += "plot_type: 'html'\n" + yaml_file_text += "data: |\n" + yaml_file_text += "${summary_section}" return yaml_file_text } @@ -199,54 +193,54 @@ def logColours(monochrome_logs=true) { colorcodes['hidden'] = monochrome_logs ? '' : "\033[8m" // Regular Colors - colorcodes['black'] = monochrome_logs ? '' : "\033[0;30m" - colorcodes['red'] = monochrome_logs ? '' : "\033[0;31m" - colorcodes['green'] = monochrome_logs ? '' : "\033[0;32m" - colorcodes['yellow'] = monochrome_logs ? '' : "\033[0;33m" - colorcodes['blue'] = monochrome_logs ? '' : "\033[0;34m" - colorcodes['purple'] = monochrome_logs ? '' : "\033[0;35m" - colorcodes['cyan'] = monochrome_logs ? '' : "\033[0;36m" - colorcodes['white'] = monochrome_logs ? '' : "\033[0;37m" + colorcodes['black'] = monochrome_logs ? '' : "\033[0;30m" + colorcodes['red'] = monochrome_logs ? '' : "\033[0;31m" + colorcodes['green'] = monochrome_logs ? '' : "\033[0;32m" + colorcodes['yellow'] = monochrome_logs ? '' : "\033[0;33m" + colorcodes['blue'] = monochrome_logs ? '' : "\033[0;34m" + colorcodes['purple'] = monochrome_logs ? '' : "\033[0;35m" + colorcodes['cyan'] = monochrome_logs ? '' : "\033[0;36m" + colorcodes['white'] = monochrome_logs ? '' : "\033[0;37m" // Bold - colorcodes['bblack'] = monochrome_logs ? '' : "\033[1;30m" - colorcodes['bred'] = monochrome_logs ? '' : "\033[1;31m" - colorcodes['bgreen'] = monochrome_logs ? '' : "\033[1;32m" - colorcodes['byellow'] = monochrome_logs ? '' : "\033[1;33m" - colorcodes['bblue'] = monochrome_logs ? '' : "\033[1;34m" - colorcodes['bpurple'] = monochrome_logs ? '' : "\033[1;35m" - colorcodes['bcyan'] = monochrome_logs ? '' : "\033[1;36m" - colorcodes['bwhite'] = monochrome_logs ? '' : "\033[1;37m" + colorcodes['bblack'] = monochrome_logs ? '' : "\033[1;30m" + colorcodes['bred'] = monochrome_logs ? '' : "\033[1;31m" + colorcodes['bgreen'] = monochrome_logs ? '' : "\033[1;32m" + colorcodes['byellow'] = monochrome_logs ? '' : "\033[1;33m" + colorcodes['bblue'] = monochrome_logs ? '' : "\033[1;34m" + colorcodes['bpurple'] = monochrome_logs ? '' : "\033[1;35m" + colorcodes['bcyan'] = monochrome_logs ? '' : "\033[1;36m" + colorcodes['bwhite'] = monochrome_logs ? '' : "\033[1;37m" // Underline - colorcodes['ublack'] = monochrome_logs ? '' : "\033[4;30m" - colorcodes['ured'] = monochrome_logs ? '' : "\033[4;31m" - colorcodes['ugreen'] = monochrome_logs ? '' : "\033[4;32m" - colorcodes['uyellow'] = monochrome_logs ? '' : "\033[4;33m" - colorcodes['ublue'] = monochrome_logs ? '' : "\033[4;34m" - colorcodes['upurple'] = monochrome_logs ? '' : "\033[4;35m" - colorcodes['ucyan'] = monochrome_logs ? '' : "\033[4;36m" - colorcodes['uwhite'] = monochrome_logs ? '' : "\033[4;37m" + colorcodes['ublack'] = monochrome_logs ? '' : "\033[4;30m" + colorcodes['ured'] = monochrome_logs ? '' : "\033[4;31m" + colorcodes['ugreen'] = monochrome_logs ? '' : "\033[4;32m" + colorcodes['uyellow'] = monochrome_logs ? '' : "\033[4;33m" + colorcodes['ublue'] = monochrome_logs ? '' : "\033[4;34m" + colorcodes['upurple'] = monochrome_logs ? '' : "\033[4;35m" + colorcodes['ucyan'] = monochrome_logs ? '' : "\033[4;36m" + colorcodes['uwhite'] = monochrome_logs ? '' : "\033[4;37m" // High Intensity - colorcodes['iblack'] = monochrome_logs ? '' : "\033[0;90m" - colorcodes['ired'] = monochrome_logs ? '' : "\033[0;91m" - colorcodes['igreen'] = monochrome_logs ? '' : "\033[0;92m" - colorcodes['iyellow'] = monochrome_logs ? '' : "\033[0;93m" - colorcodes['iblue'] = monochrome_logs ? '' : "\033[0;94m" - colorcodes['ipurple'] = monochrome_logs ? '' : "\033[0;95m" - colorcodes['icyan'] = monochrome_logs ? '' : "\033[0;96m" - colorcodes['iwhite'] = monochrome_logs ? '' : "\033[0;97m" + colorcodes['iblack'] = monochrome_logs ? '' : "\033[0;90m" + colorcodes['ired'] = monochrome_logs ? '' : "\033[0;91m" + colorcodes['igreen'] = monochrome_logs ? '' : "\033[0;92m" + colorcodes['iyellow'] = monochrome_logs ? '' : "\033[0;93m" + colorcodes['iblue'] = monochrome_logs ? '' : "\033[0;94m" + colorcodes['ipurple'] = monochrome_logs ? '' : "\033[0;95m" + colorcodes['icyan'] = monochrome_logs ? '' : "\033[0;96m" + colorcodes['iwhite'] = monochrome_logs ? '' : "\033[0;97m" // Bold High Intensity - colorcodes['biblack'] = monochrome_logs ? '' : "\033[1;90m" - colorcodes['bired'] = monochrome_logs ? '' : "\033[1;91m" - colorcodes['bigreen'] = monochrome_logs ? '' : "\033[1;92m" - colorcodes['biyellow'] = monochrome_logs ? '' : "\033[1;93m" - colorcodes['biblue'] = monochrome_logs ? '' : "\033[1;94m" - colorcodes['bipurple'] = monochrome_logs ? '' : "\033[1;95m" - colorcodes['bicyan'] = monochrome_logs ? '' : "\033[1;96m" - colorcodes['biwhite'] = monochrome_logs ? '' : "\033[1;97m" + colorcodes['biblack'] = monochrome_logs ? '' : "\033[1;90m" + colorcodes['bired'] = monochrome_logs ? '' : "\033[1;91m" + colorcodes['bigreen'] = monochrome_logs ? '' : "\033[1;92m" + colorcodes['biyellow'] = monochrome_logs ? '' : "\033[1;93m" + colorcodes['biblue'] = monochrome_logs ? '' : "\033[1;94m" + colorcodes['bipurple'] = monochrome_logs ? '' : "\033[1;95m" + colorcodes['bicyan'] = monochrome_logs ? '' : "\033[1;96m" + colorcodes['biwhite'] = monochrome_logs ? '' : "\033[1;97m" return colorcodes } @@ -261,14 +255,15 @@ def attachMultiqcReport(multiqc_report) { mqc_report = multiqc_report.getVal() if (mqc_report.getClass() == ArrayList && mqc_report.size() >= 1) { if (mqc_report.size() > 1) { - log.warn "[$workflow.manifest.name] Found multiple reports from process 'MULTIQC', will use only one" + log.warn("[${workflow.manifest.name}] Found multiple reports from process 'MULTIQC', will use only one") } mqc_report = mqc_report[0] } } - } catch (all) { + } + catch (Exception all) { if (multiqc_report) { - log.warn "[$workflow.manifest.name] Could not attach MultiQC report to summary email" + log.warn("[${workflow.manifest.name}] Could not attach MultiQC report to summary email") } } return mqc_report @@ -280,26 +275,35 @@ def attachMultiqcReport(multiqc_report) { def completionEmail(summary_params, email, email_on_fail, plaintext_email, outdir, monochrome_logs=true, multiqc_report=null) { // Set up the e-mail variables - def subject = "[$workflow.manifest.name] Successful: $workflow.runName" + def subject = "[${workflow.manifest.name}] Successful: ${workflow.runName}" if (!workflow.success) { - subject = "[$workflow.manifest.name] FAILED: $workflow.runName" + subject = "[${workflow.manifest.name}] FAILED: ${workflow.runName}" } def summary = [:] - summary_params.keySet().sort().each { group -> - summary << summary_params[group] - } + summary_params + .keySet() + .sort() + .each { group -> + summary << summary_params[group] + } def misc_fields = [:] misc_fields['Date Started'] = workflow.start misc_fields['Date Completed'] = workflow.complete misc_fields['Pipeline script file path'] = workflow.scriptFile misc_fields['Pipeline script hash ID'] = workflow.scriptId - if (workflow.repository) misc_fields['Pipeline repository Git URL'] = workflow.repository - if (workflow.commitId) misc_fields['Pipeline repository Git Commit'] = workflow.commitId - if (workflow.revision) misc_fields['Pipeline Git branch/tag'] = workflow.revision - misc_fields['Nextflow Version'] = workflow.nextflow.version - misc_fields['Nextflow Build'] = workflow.nextflow.build + if (workflow.repository) { + misc_fields['Pipeline repository Git URL'] = workflow.repository + } + if (workflow.commitId) { + misc_fields['Pipeline repository Git Commit'] = workflow.commitId + } + if (workflow.revision) { + misc_fields['Pipeline Git branch/tag'] = workflow.revision + } + misc_fields['Nextflow Version'] = workflow.nextflow.version + misc_fields['Nextflow Build'] = workflow.nextflow.build misc_fields['Nextflow Compile Timestamp'] = workflow.nextflow.timestamp def email_fields = [:] @@ -337,7 +341,7 @@ def completionEmail(summary_params, email, email_on_fail, plaintext_email, outdi // Render the sendmail template def max_multiqc_email_size = (params.containsKey('max_multiqc_email_size') ? params.max_multiqc_email_size : 0) as nextflow.util.MemoryUnit - def smail_fields = [ email: email_address, subject: subject, email_txt: email_txt, email_html: email_html, projectDir: "${workflow.projectDir}", mqcFile: mqc_report, mqcMaxSize: max_multiqc_email_size.toBytes() ] + def smail_fields = [email: email_address, subject: subject, email_txt: email_txt, email_html: email_html, projectDir: "${workflow.projectDir}", mqcFile: mqc_report, mqcMaxSize: max_multiqc_email_size.toBytes()] def sf = new File("${workflow.projectDir}/assets/sendmail_template.txt") def sendmail_template = engine.createTemplate(sf).make(smail_fields) def sendmail_html = sendmail_template.toString() @@ -346,30 +350,32 @@ def completionEmail(summary_params, email, email_on_fail, plaintext_email, outdi def colors = logColours(monochrome_logs) as Map if (email_address) { try { - if (plaintext_email) { throw new org.codehaus.groovy.GroovyException('Send plaintext e-mail, not HTML') } + if (plaintext_email) { +new org.codehaus.groovy.GroovyException('Send plaintext e-mail, not HTML') } // Try to send HTML e-mail using sendmail def sendmail_tf = new File(workflow.launchDir.toString(), ".sendmail_tmp.html") sendmail_tf.withWriter { w -> w << sendmail_html } - [ 'sendmail', '-t' ].execute() << sendmail_html - log.info "-${colors.purple}[$workflow.manifest.name]${colors.green} Sent summary e-mail to $email_address (sendmail)-" - } catch (all) { + ['sendmail', '-t'].execute() << sendmail_html + log.info("-${colors.purple}[${workflow.manifest.name}]${colors.green} Sent summary e-mail to ${email_address} (sendmail)-") + } + catch (Exception all) { // Catch failures and try with plaintext - def mail_cmd = [ 'mail', '-s', subject, '--content-type=text/html', email_address ] + def mail_cmd = ['mail', '-s', subject, '--content-type=text/html', email_address] mail_cmd.execute() << email_html - log.info "-${colors.purple}[$workflow.manifest.name]${colors.green} Sent summary e-mail to $email_address (mail)-" + log.info("-${colors.purple}[${workflow.manifest.name}]${colors.green} Sent summary e-mail to ${email_address} (mail)-") } } // Write summary e-mail HTML to a file def output_hf = new File(workflow.launchDir.toString(), ".pipeline_report.html") output_hf.withWriter { w -> w << email_html } - nextflow.extension.FilesEx.copyTo(output_hf.toPath(), "${outdir}/pipeline_info/pipeline_report.html"); + nextflow.extension.FilesEx.copyTo(output_hf.toPath(), "${outdir}/pipeline_info/pipeline_report.html") output_hf.delete() // Write summary e-mail TXT to a file def output_tf = new File(workflow.launchDir.toString(), ".pipeline_report.txt") output_tf.withWriter { w -> w << email_txt } - nextflow.extension.FilesEx.copyTo(output_tf.toPath(), "${outdir}/pipeline_info/pipeline_report.txt"); + nextflow.extension.FilesEx.copyTo(output_tf.toPath(), "${outdir}/pipeline_info/pipeline_report.txt") output_tf.delete() } @@ -380,12 +386,14 @@ def completionSummary(monochrome_logs=true) { def colors = logColours(monochrome_logs) as Map if (workflow.success) { if (workflow.stats.ignoredCount == 0) { - log.info "-${colors.purple}[$workflow.manifest.name]${colors.green} Pipeline completed successfully${colors.reset}-" - } else { - log.info "-${colors.purple}[$workflow.manifest.name]${colors.yellow} Pipeline completed successfully, but with errored process(es) ${colors.reset}-" + log.info("-${colors.purple}[${workflow.manifest.name}]${colors.green} Pipeline completed successfully${colors.reset}-") + } + else { + log.info("-${colors.purple}[${workflow.manifest.name}]${colors.yellow} Pipeline completed successfully, but with errored process(es) ${colors.reset}-") } - } else { - log.info "-${colors.purple}[$workflow.manifest.name]${colors.red} Pipeline completed with errors${colors.reset}-" + } + else { + log.info("-${colors.purple}[${workflow.manifest.name}]${colors.red} Pipeline completed with errors${colors.reset}-") } } @@ -394,21 +402,30 @@ def completionSummary(monochrome_logs=true) { // def imNotification(summary_params, hook_url) { def summary = [:] - summary_params.keySet().sort().each { group -> - summary << summary_params[group] - } + summary_params + .keySet() + .sort() + .each { group -> + summary << summary_params[group] + } def misc_fields = [:] - misc_fields['start'] = workflow.start - misc_fields['complete'] = workflow.complete - misc_fields['scriptfile'] = workflow.scriptFile - misc_fields['scriptid'] = workflow.scriptId - if (workflow.repository) misc_fields['repository'] = workflow.repository - if (workflow.commitId) misc_fields['commitid'] = workflow.commitId - if (workflow.revision) misc_fields['revision'] = workflow.revision - misc_fields['nxf_version'] = workflow.nextflow.version - misc_fields['nxf_build'] = workflow.nextflow.build - misc_fields['nxf_timestamp'] = workflow.nextflow.timestamp + misc_fields['start'] = workflow.start + misc_fields['complete'] = workflow.complete + misc_fields['scriptfile'] = workflow.scriptFile + misc_fields['scriptid'] = workflow.scriptId + if (workflow.repository) { + misc_fields['repository'] = workflow.repository + } + if (workflow.commitId) { + misc_fields['commitid'] = workflow.commitId + } + if (workflow.revision) { + misc_fields['revision'] = workflow.revision + } + misc_fields['nxf_version'] = workflow.nextflow.version + misc_fields['nxf_build'] = workflow.nextflow.build + misc_fields['nxf_timestamp'] = workflow.nextflow.timestamp def msg_fields = [:] msg_fields['version'] = getWorkflowVersion() @@ -433,13 +450,13 @@ def imNotification(summary_params, hook_url) { def json_message = json_template.toString() // POST - def post = new URL(hook_url).openConnection(); + def post = new URL(hook_url).openConnection() post.setRequestMethod("POST") post.setDoOutput(true) post.setRequestProperty("Content-Type", "application/json") - post.getOutputStream().write(json_message.getBytes("UTF-8")); - def postRC = post.getResponseCode(); - if (! postRC.equals(200)) { - log.warn(post.getErrorStream().getText()); + post.getOutputStream().write(json_message.getBytes("UTF-8")) + def postRC = post.getResponseCode() + if (!postRC.equals(200)) { + log.warn(post.getErrorStream().getText()) } } diff --git a/subworkflows/nf-core/utils_nfschema_plugin/main.nf b/subworkflows/nf-core/utils_nfschema_plugin/main.nf new file mode 100644 index 00000000..4994303e --- /dev/null +++ b/subworkflows/nf-core/utils_nfschema_plugin/main.nf @@ -0,0 +1,46 @@ +// +// Subworkflow that uses the nf-schema plugin to validate parameters and render the parameter summary +// + +include { paramsSummaryLog } from 'plugin/nf-schema' +include { validateParameters } from 'plugin/nf-schema' + +workflow UTILS_NFSCHEMA_PLUGIN { + + take: + input_workflow // workflow: the workflow object used by nf-schema to get metadata from the workflow + validate_params // boolean: validate the parameters + parameters_schema // string: path to the parameters JSON schema. + // this has to be the same as the schema given to `validation.parametersSchema` + // when this input is empty it will automatically use the configured schema or + // "${projectDir}/nextflow_schema.json" as default. This input should not be empty + // for meta pipelines + + main: + + // + // Print parameter summary to stdout. This will display the parameters + // that differ from the default given in the JSON schema + // + if(parameters_schema) { + log.info paramsSummaryLog(input_workflow, parameters_schema:parameters_schema) + } else { + log.info paramsSummaryLog(input_workflow) + } + + // + // Validate the parameters using nextflow_schema.json or the schema + // given via the validation.parametersSchema configuration option + // + if(validate_params) { + if(parameters_schema) { + validateParameters(parameters_schema:parameters_schema) + } else { + validateParameters() + } + } + + emit: + dummy_emit = true +} + diff --git a/subworkflows/nf-core/utils_nfschema_plugin/meta.yml b/subworkflows/nf-core/utils_nfschema_plugin/meta.yml new file mode 100644 index 00000000..f7d9f028 --- /dev/null +++ b/subworkflows/nf-core/utils_nfschema_plugin/meta.yml @@ -0,0 +1,35 @@ +# yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/subworkflows/yaml-schema.json +name: "utils_nfschema_plugin" +description: Run nf-schema to validate parameters and create a summary of changed parameters +keywords: + - validation + - JSON schema + - plugin + - parameters + - summary +components: [] +input: + - input_workflow: + type: object + description: | + The workflow object of the used pipeline. + This object contains meta data used to create the params summary log + - validate_params: + type: boolean + description: Validate the parameters and error if invalid. + - parameters_schema: + type: string + description: | + Path to the parameters JSON schema. + This has to be the same as the schema given to the `validation.parametersSchema` config + option. When this input is empty it will automatically use the configured schema or + "${projectDir}/nextflow_schema.json" as default. The schema should not be given in this way + for meta pipelines. +output: + - dummy_emit: + type: boolean + description: Dummy emit to make nf-core subworkflows lint happy +authors: + - "@nvnieuwk" +maintainers: + - "@nvnieuwk" diff --git a/subworkflows/nf-core/utils_nfschema_plugin/tests/main.nf.test b/subworkflows/nf-core/utils_nfschema_plugin/tests/main.nf.test new file mode 100644 index 00000000..842dc432 --- /dev/null +++ b/subworkflows/nf-core/utils_nfschema_plugin/tests/main.nf.test @@ -0,0 +1,117 @@ +nextflow_workflow { + + name "Test Subworkflow UTILS_NFSCHEMA_PLUGIN" + script "../main.nf" + workflow "UTILS_NFSCHEMA_PLUGIN" + + tag "subworkflows" + tag "subworkflows_nfcore" + tag "subworkflows/utils_nfschema_plugin" + tag "plugin/nf-schema" + + config "./nextflow.config" + + test("Should run nothing") { + + when { + + params { + test_data = '' + } + + workflow { + """ + validate_params = false + input[0] = workflow + input[1] = validate_params + input[2] = "" + """ + } + } + + then { + assertAll( + { assert workflow.success } + ) + } + } + + test("Should validate params") { + + when { + + params { + test_data = '' + outdir = 1 + } + + workflow { + """ + validate_params = true + input[0] = workflow + input[1] = validate_params + input[2] = "" + """ + } + } + + then { + assertAll( + { assert workflow.failed }, + { assert workflow.stdout.any { it.contains('ERROR ~ Validation of pipeline parameters failed!') } } + ) + } + } + + test("Should run nothing - custom schema") { + + when { + + params { + test_data = '' + } + + workflow { + """ + validate_params = false + input[0] = workflow + input[1] = validate_params + input[2] = "${projectDir}/subworkflows/nf-core/utils_nfschema_plugin/tests/nextflow_schema.json" + """ + } + } + + then { + assertAll( + { assert workflow.success } + ) + } + } + + test("Should validate params - custom schema") { + + when { + + params { + test_data = '' + outdir = 1 + } + + workflow { + """ + validate_params = true + input[0] = workflow + input[1] = validate_params + input[2] = "${projectDir}/subworkflows/nf-core/utils_nfschema_plugin/tests/nextflow_schema.json" + """ + } + } + + then { + assertAll( + { assert workflow.failed }, + { assert workflow.stdout.any { it.contains('ERROR ~ Validation of pipeline parameters failed!') } } + ) + } + } +} diff --git a/subworkflows/nf-core/utils_nfschema_plugin/tests/nextflow.config b/subworkflows/nf-core/utils_nfschema_plugin/tests/nextflow.config new file mode 100644 index 00000000..0907ac58 --- /dev/null +++ b/subworkflows/nf-core/utils_nfschema_plugin/tests/nextflow.config @@ -0,0 +1,8 @@ +plugins { + id "nf-schema@2.1.0" +} + +validation { + parametersSchema = "${projectDir}/subworkflows/nf-core/utils_nfschema_plugin/tests/nextflow_schema.json" + monochromeLogs = true +} \ No newline at end of file diff --git a/subworkflows/nf-core/utils_nfvalidation_plugin/tests/nextflow_schema.json b/subworkflows/nf-core/utils_nfschema_plugin/tests/nextflow_schema.json similarity index 95% rename from subworkflows/nf-core/utils_nfvalidation_plugin/tests/nextflow_schema.json rename to subworkflows/nf-core/utils_nfschema_plugin/tests/nextflow_schema.json index 7626c1c9..331e0d2f 100644 --- a/subworkflows/nf-core/utils_nfvalidation_plugin/tests/nextflow_schema.json +++ b/subworkflows/nf-core/utils_nfschema_plugin/tests/nextflow_schema.json @@ -1,10 +1,10 @@ { - "$schema": "http://json-schema.org/draft-07/schema", + "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "https://raw.githubusercontent.com/./master/nextflow_schema.json", "title": ". pipeline parameters", "description": "", "type": "object", - "definitions": { + "$defs": { "input_output_options": { "title": "Input/output options", "type": "object", @@ -87,10 +87,10 @@ }, "allOf": [ { - "$ref": "#/definitions/input_output_options" + "$ref": "#/$defs/input_output_options" }, { - "$ref": "#/definitions/generic_options" + "$ref": "#/$defs/generic_options" } ] } diff --git a/subworkflows/nf-core/utils_nfvalidation_plugin/main.nf b/subworkflows/nf-core/utils_nfvalidation_plugin/main.nf deleted file mode 100644 index 2585b65d..00000000 --- a/subworkflows/nf-core/utils_nfvalidation_plugin/main.nf +++ /dev/null @@ -1,62 +0,0 @@ -// -// Subworkflow that uses the nf-validation plugin to render help text and parameter summary -// - -/* -======================================================================================== - IMPORT NF-VALIDATION PLUGIN -======================================================================================== -*/ - -include { paramsHelp } from 'plugin/nf-validation' -include { paramsSummaryLog } from 'plugin/nf-validation' -include { validateParameters } from 'plugin/nf-validation' - -/* -======================================================================================== - SUBWORKFLOW DEFINITION -======================================================================================== -*/ - -workflow UTILS_NFVALIDATION_PLUGIN { - - take: - print_help // boolean: print help - workflow_command // string: default commmand used to run pipeline - pre_help_text // string: string to be printed before help text and summary log - post_help_text // string: string to be printed after help text and summary log - validate_params // boolean: validate parameters - schema_filename // path: JSON schema file, null to use default value - - main: - - log.debug "Using schema file: ${schema_filename}" - - // Default values for strings - pre_help_text = pre_help_text ?: '' - post_help_text = post_help_text ?: '' - workflow_command = workflow_command ?: '' - - // - // Print help message if needed - // - if (print_help) { - log.info pre_help_text + paramsHelp(workflow_command, parameters_schema: schema_filename) + post_help_text - System.exit(0) - } - - // - // Print parameter summary to stdout - // - log.info pre_help_text + paramsSummaryLog(workflow, parameters_schema: schema_filename) + post_help_text - - // - // Validate parameters relative to the parameter JSON schema - // - if (validate_params){ - validateParameters(parameters_schema: schema_filename) - } - - emit: - dummy_emit = true -} diff --git a/subworkflows/nf-core/utils_nfvalidation_plugin/meta.yml b/subworkflows/nf-core/utils_nfvalidation_plugin/meta.yml deleted file mode 100644 index 3d4a6b04..00000000 --- a/subworkflows/nf-core/utils_nfvalidation_plugin/meta.yml +++ /dev/null @@ -1,44 +0,0 @@ -# yaml-language-server: $schema=https://raw.githubusercontent.com/nf-core/modules/master/subworkflows/yaml-schema.json -name: "UTILS_NFVALIDATION_PLUGIN" -description: Use nf-validation to initiate and validate a pipeline -keywords: - - utility - - pipeline - - initialise - - validation -components: [] -input: - - print_help: - type: boolean - description: | - Print help message and exit - - workflow_command: - type: string - description: | - The command to run the workflow e.g. "nextflow run main.nf" - - pre_help_text: - type: string - description: | - Text to print before the help message - - post_help_text: - type: string - description: | - Text to print after the help message - - validate_params: - type: boolean - description: | - Validate the parameters and error if invalid. - - schema_filename: - type: string - description: | - The filename of the schema to validate against. -output: - - dummy_emit: - type: boolean - description: | - Dummy emit to make nf-core subworkflows lint happy -authors: - - "@adamrtalbot" -maintainers: - - "@adamrtalbot" - - "@maxulysse" diff --git a/subworkflows/nf-core/utils_nfvalidation_plugin/tests/main.nf.test b/subworkflows/nf-core/utils_nfvalidation_plugin/tests/main.nf.test deleted file mode 100644 index 5784a33f..00000000 --- a/subworkflows/nf-core/utils_nfvalidation_plugin/tests/main.nf.test +++ /dev/null @@ -1,200 +0,0 @@ -nextflow_workflow { - - name "Test Workflow UTILS_NFVALIDATION_PLUGIN" - script "../main.nf" - workflow "UTILS_NFVALIDATION_PLUGIN" - tag "subworkflows" - tag "subworkflows_nfcore" - tag "plugin/nf-validation" - tag "'plugin/nf-validation'" - tag "utils_nfvalidation_plugin" - tag "subworkflows/utils_nfvalidation_plugin" - - test("Should run nothing") { - - when { - - params { - monochrome_logs = true - test_data = '' - } - - workflow { - """ - help = false - workflow_command = null - pre_help_text = null - post_help_text = null - validate_params = false - schema_filename = "$moduleTestDir/nextflow_schema.json" - - input[0] = help - input[1] = workflow_command - input[2] = pre_help_text - input[3] = post_help_text - input[4] = validate_params - input[5] = schema_filename - """ - } - } - - then { - assertAll( - { assert workflow.success } - ) - } - } - - test("Should run help") { - - - when { - - params { - monochrome_logs = true - test_data = '' - } - workflow { - """ - help = true - workflow_command = null - pre_help_text = null - post_help_text = null - validate_params = false - schema_filename = "$moduleTestDir/nextflow_schema.json" - - input[0] = help - input[1] = workflow_command - input[2] = pre_help_text - input[3] = post_help_text - input[4] = validate_params - input[5] = schema_filename - """ - } - } - - then { - assertAll( - { assert workflow.success }, - { assert workflow.exitStatus == 0 }, - { assert workflow.stdout.any { it.contains('Input/output options') } }, - { assert workflow.stdout.any { it.contains('--outdir') } } - ) - } - } - - test("Should run help with command") { - - when { - - params { - monochrome_logs = true - test_data = '' - } - workflow { - """ - help = true - workflow_command = "nextflow run noorg/doesntexist" - pre_help_text = null - post_help_text = null - validate_params = false - schema_filename = "$moduleTestDir/nextflow_schema.json" - - input[0] = help - input[1] = workflow_command - input[2] = pre_help_text - input[3] = post_help_text - input[4] = validate_params - input[5] = schema_filename - """ - } - } - - then { - assertAll( - { assert workflow.success }, - { assert workflow.exitStatus == 0 }, - { assert workflow.stdout.any { it.contains('nextflow run noorg/doesntexist') } }, - { assert workflow.stdout.any { it.contains('Input/output options') } }, - { assert workflow.stdout.any { it.contains('--outdir') } } - ) - } - } - - test("Should run help with extra text") { - - - when { - - params { - monochrome_logs = true - test_data = '' - } - workflow { - """ - help = true - workflow_command = "nextflow run noorg/doesntexist" - pre_help_text = "pre-help-text" - post_help_text = "post-help-text" - validate_params = false - schema_filename = "$moduleTestDir/nextflow_schema.json" - - input[0] = help - input[1] = workflow_command - input[2] = pre_help_text - input[3] = post_help_text - input[4] = validate_params - input[5] = schema_filename - """ - } - } - - then { - assertAll( - { assert workflow.success }, - { assert workflow.exitStatus == 0 }, - { assert workflow.stdout.any { it.contains('pre-help-text') } }, - { assert workflow.stdout.any { it.contains('nextflow run noorg/doesntexist') } }, - { assert workflow.stdout.any { it.contains('Input/output options') } }, - { assert workflow.stdout.any { it.contains('--outdir') } }, - { assert workflow.stdout.any { it.contains('post-help-text') } } - ) - } - } - - test("Should validate params") { - - when { - - params { - monochrome_logs = true - test_data = '' - outdir = 1 - } - workflow { - """ - help = false - workflow_command = null - pre_help_text = null - post_help_text = null - validate_params = true - schema_filename = "$moduleTestDir/nextflow_schema.json" - - input[0] = help - input[1] = workflow_command - input[2] = pre_help_text - input[3] = post_help_text - input[4] = validate_params - input[5] = schema_filename - """ - } - } - - then { - assertAll( - { assert workflow.failed }, - { assert workflow.stdout.any { it.contains('ERROR ~ ERROR: Validation of pipeline parameters failed!') } } - ) - } - } -} diff --git a/subworkflows/nf-core/utils_nfvalidation_plugin/tests/tags.yml b/subworkflows/nf-core/utils_nfvalidation_plugin/tests/tags.yml deleted file mode 100644 index 60b1cfff..00000000 --- a/subworkflows/nf-core/utils_nfvalidation_plugin/tests/tags.yml +++ /dev/null @@ -1,2 +0,0 @@ -subworkflows/utils_nfvalidation_plugin: - - subworkflows/nf-core/utils_nfvalidation_plugin/** diff --git a/tests/.nftignore b/tests/.nftignore new file mode 100644 index 00000000..2c7e41e2 --- /dev/null +++ b/tests/.nftignore @@ -0,0 +1,34 @@ +**/*.fastp.html +**/*_report.html +**/Reports/html/**/lane.html +**/Reports/html/**/laneBarcode.html +**/Stats/ConversionStats.xml +**/Stats/DemuxSummaryF1L1.txt +**/Stats/Stats.json +cellranger-tiny-bcl-simple/L001/test_sample_S1_L001_I1_001.fastp.fastq.gz +fastq/*.samplesheet.csv +multiqc/multiqc_data/bcl2fastq_undetermined.txt +multiqc/multiqc_data/fastqc*status-check-heatmap.txt +multiqc/multiqc_data/fastqc_top_overrepresented_sequences_table.txt +multiqc/multiqc_data/multiqc.log +multiqc/multiqc_data/multiqc_bcl2fastq_bylane.txt +multiqc/multiqc_data/multiqc_data.json +multiqc/multiqc_data/multiqc_fastp.txt +multiqc/multiqc_data/multiqc_fastqc.txt +multiqc/multiqc_data/multiqc_fastqc_*.txt +multiqc/multiqc_data/multiqc_general_stats.txt +multiqc/multiqc_data/multiqc_software_versions.txt +multiqc/multiqc_data/multiqc_sources.txt +multiqc/multiqc_plots/{svg,pdf,png}/*.{svg,pdf,png} +multiqc/multiqc_report.html +pipeline_info/*.{html,json,txt,yml} +samplesheet/samplesheet.csv +sim-data/*-Bases2Fastq-Sim_QC.html +sim-data/*.fastp.fastq.gz +sim-data/*.fastp.fastq.gz.md5 +sim-data/*.fastp.fastq.gz_fastqc_data.txt +sim-data/*.fastp.fastq.gz_fastqc_report.html +sim-data/*.fastp.fastq.gz_summary.txt +sim-data/RunStats.json +sim-data/Samples/DefaultProject/DefaultSample/DefaultSample_stats.json +sim-data/most_frequent_unmatched.tsv diff --git a/tests/bases2fastq.nf.test b/tests/bases2fastq.nf.test new file mode 100644 index 00000000..71de1afb --- /dev/null +++ b/tests/bases2fastq.nf.test @@ -0,0 +1,37 @@ +nextflow_pipeline { + + name "Test Workflow main.nf - BASES2FASTQ" + script "../main.nf" + profile "test_bases2fastq" + tag "bases2fastq" + tag "pipeline" + + test("Bases2Fastq") { + + when { + params { + outdir = "$outputDir" + } + } + + then { + // stable_name: All files + folders in ${params.outdir}/ with a stable name + def stable_name = getAllFilesFromDir(params.outdir, relative: true, includeDir: true, ignore: ['pipeline_info/*.{html,json,txt}']) + // stable_path: All files in ${params.outdir}/ with stable content + def stable_path = getAllFilesFromDir(params.outdir, ignoreFile: 'tests/.nftignore') + assertAll( + { assert workflow.success}, + { assert snapshot( + // Number of successful tasks + workflow.trace.succeeded().size(), + // pipeline versions.yml file for multiqc from which Nextflow version is removed because we tests pipelines on multiple Nextflow versions + removeNextflowVersion("$outputDir/pipeline_info/nf_core_pipeline_software_mqc_versions.yml"), + // All stable path name, with a relative path + stable_name, + // All files with stable contents + stable_path + ).match() } + ) + } + } +} diff --git a/tests/bases2fastq.nf.test.snap b/tests/bases2fastq.nf.test.snap new file mode 100644 index 00000000..317657ae --- /dev/null +++ b/tests/bases2fastq.nf.test.snap @@ -0,0 +1,217 @@ +{ + "Bases2Fastq": { + "content": [ + 8, + { + "BASES2FASTQ": { + "bases2fastq": "1.8.0.1260801529, use subject to license available at elementbiosciences.com" + }, + "FALCO": { + "falco": "1.2.1" + }, + "FASTP": { + "fastp": "0.23.4" + }, + "MD5SUM": { + "md5sum": 8.3 + }, + "UNTAR_FLOWCELL": { + "untar": 1.34 + }, + "Workflow": { + "nf-core/demultiplex": "v1.5.2" + } + }, + [ + "fastq", + "fastq/DefaultSample.samplesheet.csv", + "multiqc", + "multiqc/multiqc_data", + "multiqc/multiqc_data/fastp-insert-size-plot.txt", + "multiqc/multiqc_data/fastp-seq-content-gc-plot_Read_1_After_filtering.txt", + "multiqc/multiqc_data/fastp-seq-content-gc-plot_Read_1_Before_filtering.txt", + "multiqc/multiqc_data/fastp-seq-content-gc-plot_Read_2_After_filtering.txt", + "multiqc/multiqc_data/fastp-seq-content-gc-plot_Read_2_Before_filtering.txt", + "multiqc/multiqc_data/fastp-seq-content-n-plot_Read_1_After_filtering.txt", + "multiqc/multiqc_data/fastp-seq-content-n-plot_Read_1_Before_filtering.txt", + "multiqc/multiqc_data/fastp-seq-content-n-plot_Read_2_After_filtering.txt", + "multiqc/multiqc_data/fastp-seq-content-n-plot_Read_2_Before_filtering.txt", + "multiqc/multiqc_data/fastp-seq-quality-plot_Read_1_After_filtering.txt", + "multiqc/multiqc_data/fastp-seq-quality-plot_Read_1_Before_filtering.txt", + "multiqc/multiqc_data/fastp-seq-quality-plot_Read_2_After_filtering.txt", + "multiqc/multiqc_data/fastp-seq-quality-plot_Read_2_Before_filtering.txt", + "multiqc/multiqc_data/fastp_filtered_reads_plot.txt", + "multiqc/multiqc_data/fastqc-status-check-heatmap.txt", + "multiqc/multiqc_data/fastqc_per_base_n_content_plot.txt", + "multiqc/multiqc_data/fastqc_per_base_sequence_quality_plot.txt", + "multiqc/multiqc_data/fastqc_per_sequence_gc_content_plot_Counts.txt", + "multiqc/multiqc_data/fastqc_per_sequence_gc_content_plot_Percentages.txt", + "multiqc/multiqc_data/fastqc_per_sequence_quality_scores_plot.txt", + "multiqc/multiqc_data/fastqc_sequence_counts_plot.txt", + "multiqc/multiqc_data/fastqc_sequence_duplication_levels_plot.txt", + "multiqc/multiqc_data/fastqc_sequence_length_distribution_plot.txt", + "multiqc/multiqc_data/fastqc_top_overrepresented_sequences_table.txt", + "multiqc/multiqc_data/multiqc.log", + "multiqc/multiqc_data/multiqc_citations.txt", + "multiqc/multiqc_data/multiqc_data.json", + "multiqc/multiqc_data/multiqc_fastp.txt", + "multiqc/multiqc_data/multiqc_fastqc.txt", + "multiqc/multiqc_data/multiqc_general_stats.txt", + "multiqc/multiqc_data/multiqc_software_versions.txt", + "multiqc/multiqc_data/multiqc_sources.txt", + "multiqc/multiqc_plots", + "multiqc/multiqc_plots/pdf", + "multiqc/multiqc_plots/pdf/fastp-insert-size-plot.pdf", + "multiqc/multiqc_plots/pdf/fastp-seq-content-gc-plot_Read_1_After_filtering.pdf", + "multiqc/multiqc_plots/pdf/fastp-seq-content-gc-plot_Read_1_Before_filtering.pdf", + "multiqc/multiqc_plots/pdf/fastp-seq-content-gc-plot_Read_2_After_filtering.pdf", + "multiqc/multiqc_plots/pdf/fastp-seq-content-gc-plot_Read_2_Before_filtering.pdf", + "multiqc/multiqc_plots/pdf/fastp-seq-content-n-plot_Read_1_After_filtering.pdf", + "multiqc/multiqc_plots/pdf/fastp-seq-content-n-plot_Read_1_Before_filtering.pdf", + "multiqc/multiqc_plots/pdf/fastp-seq-content-n-plot_Read_2_After_filtering.pdf", + "multiqc/multiqc_plots/pdf/fastp-seq-content-n-plot_Read_2_Before_filtering.pdf", + "multiqc/multiqc_plots/pdf/fastp-seq-quality-plot_Read_1_After_filtering.pdf", + "multiqc/multiqc_plots/pdf/fastp-seq-quality-plot_Read_1_Before_filtering.pdf", + "multiqc/multiqc_plots/pdf/fastp-seq-quality-plot_Read_2_After_filtering.pdf", + "multiqc/multiqc_plots/pdf/fastp-seq-quality-plot_Read_2_Before_filtering.pdf", + "multiqc/multiqc_plots/pdf/fastp_filtered_reads_plot-cnt.pdf", + "multiqc/multiqc_plots/pdf/fastp_filtered_reads_plot-pct.pdf", + "multiqc/multiqc_plots/pdf/fastqc-status-check-heatmap.pdf", + "multiqc/multiqc_plots/pdf/fastqc_per_base_n_content_plot.pdf", + "multiqc/multiqc_plots/pdf/fastqc_per_base_sequence_quality_plot.pdf", + "multiqc/multiqc_plots/pdf/fastqc_per_sequence_gc_content_plot_Counts.pdf", + "multiqc/multiqc_plots/pdf/fastqc_per_sequence_gc_content_plot_Percentages.pdf", + "multiqc/multiqc_plots/pdf/fastqc_per_sequence_quality_scores_plot.pdf", + "multiqc/multiqc_plots/pdf/fastqc_sequence_counts_plot-cnt.pdf", + "multiqc/multiqc_plots/pdf/fastqc_sequence_counts_plot-pct.pdf", + "multiqc/multiqc_plots/pdf/fastqc_sequence_duplication_levels_plot.pdf", + "multiqc/multiqc_plots/pdf/fastqc_sequence_length_distribution_plot.pdf", + "multiqc/multiqc_plots/pdf/fastqc_top_overrepresented_sequences_table.pdf", + "multiqc/multiqc_plots/pdf/general_stats_table.pdf", + "multiqc/multiqc_plots/png", + "multiqc/multiqc_plots/png/fastp-insert-size-plot.png", + "multiqc/multiqc_plots/png/fastp-seq-content-gc-plot_Read_1_After_filtering.png", + "multiqc/multiqc_plots/png/fastp-seq-content-gc-plot_Read_1_Before_filtering.png", + "multiqc/multiqc_plots/png/fastp-seq-content-gc-plot_Read_2_After_filtering.png", + "multiqc/multiqc_plots/png/fastp-seq-content-gc-plot_Read_2_Before_filtering.png", + "multiqc/multiqc_plots/png/fastp-seq-content-n-plot_Read_1_After_filtering.png", + "multiqc/multiqc_plots/png/fastp-seq-content-n-plot_Read_1_Before_filtering.png", + "multiqc/multiqc_plots/png/fastp-seq-content-n-plot_Read_2_After_filtering.png", + "multiqc/multiqc_plots/png/fastp-seq-content-n-plot_Read_2_Before_filtering.png", + "multiqc/multiqc_plots/png/fastp-seq-quality-plot_Read_1_After_filtering.png", + "multiqc/multiqc_plots/png/fastp-seq-quality-plot_Read_1_Before_filtering.png", + "multiqc/multiqc_plots/png/fastp-seq-quality-plot_Read_2_After_filtering.png", + "multiqc/multiqc_plots/png/fastp-seq-quality-plot_Read_2_Before_filtering.png", + "multiqc/multiqc_plots/png/fastp_filtered_reads_plot-cnt.png", + "multiqc/multiqc_plots/png/fastp_filtered_reads_plot-pct.png", + "multiqc/multiqc_plots/png/fastqc-status-check-heatmap.png", + "multiqc/multiqc_plots/png/fastqc_per_base_n_content_plot.png", + "multiqc/multiqc_plots/png/fastqc_per_base_sequence_quality_plot.png", + "multiqc/multiqc_plots/png/fastqc_per_sequence_gc_content_plot_Counts.png", + "multiqc/multiqc_plots/png/fastqc_per_sequence_gc_content_plot_Percentages.png", + "multiqc/multiqc_plots/png/fastqc_per_sequence_quality_scores_plot.png", + "multiqc/multiqc_plots/png/fastqc_sequence_counts_plot-cnt.png", + "multiqc/multiqc_plots/png/fastqc_sequence_counts_plot-pct.png", + "multiqc/multiqc_plots/png/fastqc_sequence_duplication_levels_plot.png", + "multiqc/multiqc_plots/png/fastqc_sequence_length_distribution_plot.png", + "multiqc/multiqc_plots/png/fastqc_top_overrepresented_sequences_table.png", + "multiqc/multiqc_plots/png/general_stats_table.png", + "multiqc/multiqc_plots/svg", + "multiqc/multiqc_plots/svg/fastp-insert-size-plot.svg", + "multiqc/multiqc_plots/svg/fastp-seq-content-gc-plot_Read_1_After_filtering.svg", + "multiqc/multiqc_plots/svg/fastp-seq-content-gc-plot_Read_1_Before_filtering.svg", + "multiqc/multiqc_plots/svg/fastp-seq-content-gc-plot_Read_2_After_filtering.svg", + "multiqc/multiqc_plots/svg/fastp-seq-content-gc-plot_Read_2_Before_filtering.svg", + "multiqc/multiqc_plots/svg/fastp-seq-content-n-plot_Read_1_After_filtering.svg", + "multiqc/multiqc_plots/svg/fastp-seq-content-n-plot_Read_1_Before_filtering.svg", + "multiqc/multiqc_plots/svg/fastp-seq-content-n-plot_Read_2_After_filtering.svg", + "multiqc/multiqc_plots/svg/fastp-seq-content-n-plot_Read_2_Before_filtering.svg", + "multiqc/multiqc_plots/svg/fastp-seq-quality-plot_Read_1_After_filtering.svg", + "multiqc/multiqc_plots/svg/fastp-seq-quality-plot_Read_1_Before_filtering.svg", + "multiqc/multiqc_plots/svg/fastp-seq-quality-plot_Read_2_After_filtering.svg", + "multiqc/multiqc_plots/svg/fastp-seq-quality-plot_Read_2_Before_filtering.svg", + "multiqc/multiqc_plots/svg/fastp_filtered_reads_plot-cnt.svg", + "multiqc/multiqc_plots/svg/fastp_filtered_reads_plot-pct.svg", + "multiqc/multiqc_plots/svg/fastqc-status-check-heatmap.svg", + "multiqc/multiqc_plots/svg/fastqc_per_base_n_content_plot.svg", + "multiqc/multiqc_plots/svg/fastqc_per_base_sequence_quality_plot.svg", + "multiqc/multiqc_plots/svg/fastqc_per_sequence_gc_content_plot_Counts.svg", + "multiqc/multiqc_plots/svg/fastqc_per_sequence_gc_content_plot_Percentages.svg", + "multiqc/multiqc_plots/svg/fastqc_per_sequence_quality_scores_plot.svg", + "multiqc/multiqc_plots/svg/fastqc_sequence_counts_plot-cnt.svg", + "multiqc/multiqc_plots/svg/fastqc_sequence_counts_plot-pct.svg", + "multiqc/multiqc_plots/svg/fastqc_sequence_duplication_levels_plot.svg", + "multiqc/multiqc_plots/svg/fastqc_sequence_length_distribution_plot.svg", + "multiqc/multiqc_plots/svg/fastqc_top_overrepresented_sequences_table.svg", + "multiqc/multiqc_plots/svg/general_stats_table.svg", + "multiqc/multiqc_report.html", + "pipeline_info", + "pipeline_info/nf_core_pipeline_software_mqc_versions.yml", + "samplesheet", + "samplesheet/samplesheet.csv", + "sim-data", + "sim-data.csv", + "sim-data/20230404-Bases2Fastq-Sim_QC.html", + "sim-data/DefaultSample.fastp.html", + "sim-data/DefaultSample.fastp.json", + "sim-data/DefaultSample_1.fastp.fastq.gz", + "sim-data/DefaultSample_1.fastp.fastq.gz.md5", + "sim-data/DefaultSample_1.fastp.fastq.gz_fastqc_data.txt", + "sim-data/DefaultSample_1.fastp.fastq.gz_fastqc_report.html", + "sim-data/DefaultSample_1.fastp.fastq.gz_summary.txt", + "sim-data/DefaultSample_2.fastp.fastq.gz", + "sim-data/DefaultSample_2.fastp.fastq.gz.md5", + "sim-data/DefaultSample_2.fastp.fastq.gz_fastqc_data.txt", + "sim-data/DefaultSample_2.fastp.fastq.gz_fastqc_report.html", + "sim-data/DefaultSample_2.fastp.fastq.gz_summary.txt", + "sim-data/Metrics.csv", + "sim-data/RunManifest.json", + "sim-data/RunStats.json", + "sim-data/Samples", + "sim-data/Samples/DefaultProject", + "sim-data/Samples/DefaultProject/DefaultSample", + "sim-data/Samples/DefaultProject/DefaultSample/DefaultSample_R1.fastq.gz", + "sim-data/Samples/DefaultProject/DefaultSample/DefaultSample_R2.fastq.gz", + "sim-data/Samples/DefaultProject/DefaultSample/DefaultSample_stats.json", + "sim-data/UnassignedSequences.csv" + ], + [ + "fastp-insert-size-plot.txt:md5,ac9a9c57ed6cbd69033968f727e755de", + "fastp-seq-content-gc-plot_Read_1_After_filtering.txt:md5,fc7408bc90e9fd3768e041c470b297eb", + "fastp-seq-content-gc-plot_Read_1_Before_filtering.txt:md5,f1b14d0b742540f46a447508b27c2a6d", + "fastp-seq-content-gc-plot_Read_2_After_filtering.txt:md5,df0d79b9296d4ee8996f2a28ccff4b65", + "fastp-seq-content-gc-plot_Read_2_Before_filtering.txt:md5,8f63cb5ddb7b4ebe8325271093018714", + "fastp-seq-content-n-plot_Read_1_After_filtering.txt:md5,48fe699c2e7dfa81d9d97f53c613ef20", + "fastp-seq-content-n-plot_Read_1_Before_filtering.txt:md5,48fe699c2e7dfa81d9d97f53c613ef20", + "fastp-seq-content-n-plot_Read_2_After_filtering.txt:md5,48fe699c2e7dfa81d9d97f53c613ef20", + "fastp-seq-content-n-plot_Read_2_Before_filtering.txt:md5,48fe699c2e7dfa81d9d97f53c613ef20", + "fastp-seq-quality-plot_Read_1_After_filtering.txt:md5,e2194a8841653929cad0847f64daa339", + "fastp-seq-quality-plot_Read_1_Before_filtering.txt:md5,559b29beffa82c35c71a82c3ff459a40", + "fastp-seq-quality-plot_Read_2_After_filtering.txt:md5,62a344d18de885a880e8a9fe48c7816f", + "fastp-seq-quality-plot_Read_2_Before_filtering.txt:md5,5ef421e1df317a359c8b27ff65f2b758", + "fastp_filtered_reads_plot.txt:md5,5a5a98b82c02875b4d9da92e7577e802", + "fastqc_per_base_n_content_plot.txt:md5,7a1a9b3df3ce3bcca265dd13f2e23dc0", + "fastqc_per_base_sequence_quality_plot.txt:md5,9f62301e59b368cdd6738cbd871a964e", + "fastqc_per_sequence_gc_content_plot_Counts.txt:md5,ebee4de078cbb125ba741a21d3552900", + "fastqc_per_sequence_gc_content_plot_Percentages.txt:md5,58b7050c7f02baa7fc308c691e62cc4c", + "fastqc_per_sequence_quality_scores_plot.txt:md5,dd7520f2fd44bfb2fa67f8ff9f7237a5", + "fastqc_sequence_counts_plot.txt:md5,e8772d59c78943686597222939492e1e", + "fastqc_sequence_duplication_levels_plot.txt:md5,4b372fcce4dbb8b0dbe685c6380f4a97", + "fastqc_sequence_length_distribution_plot.txt:md5,5b002b51364b518093ad98ebe0a0ca39", + "multiqc_citations.txt:md5,d35df50e9903a96a2b3bce3c1fbc8ad2", + "sim-data.csv:md5,1d1dab697bd88c411fff89c102024295", + "DefaultSample.fastp.json:md5,9c10bbfbc4beb9523ca3a114f95709db", + "Metrics.csv:md5,ad7af77573845924062e2554cc641b16", + "RunManifest.json:md5,cdb8051690645d0f070191286323f1c8", + "DefaultSample_R1.fastq.gz:md5,6c73b924e4eb53b716614aa6fd8b791a", + "DefaultSample_R2.fastq.gz:md5,54e2c0894844e42605b7cd567b1c7dbe", + "UnassignedSequences.csv:md5,11c1693830ce941b8cfb8d2431a59097" + ] + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.09.2" + }, + "timestamp": "2024-10-15T16:37:55.855747" + } +} diff --git a/tests/bcl2fastq.nf.test b/tests/bcl2fastq.nf.test new file mode 100644 index 00000000..ef69097b --- /dev/null +++ b/tests/bcl2fastq.nf.test @@ -0,0 +1,37 @@ +nextflow_pipeline { + + name "Test Workflow main.nf - BCL2FASTQ" + script "../main.nf" + profile "test_bcl2fastq" + tag "bcl2fastq" + tag "pipeline" + + test("Bcl2Fastq") { + + when { + params { + outdir = "$outputDir" + } + } + + then { + // stable_name: All files + folders in ${params.outdir}/ with a stable name + def stable_name = getAllFilesFromDir(params.outdir, relative: true, includeDir: true, ignore: ['pipeline_info/*.{html,json,txt}']) + // stable_path: All files in ${params.outdir}/ with stable content + def stable_path = getAllFilesFromDir(params.outdir, ignoreFile: 'tests/.nftignore') + assertAll( + { assert workflow.success}, + { assert snapshot( + // Number of successful tasks + workflow.trace.succeeded().size(), + // pipeline versions.yml file for multiqc from which Nextflow version is removed because we tests pipelines on multiple Nextflow versions + removeNextflowVersion("$outputDir/pipeline_info/nf_core_pipeline_software_mqc_versions.yml"), + // All stable path name, with a relative path + stable_name, + // All files with stable contents + stable_path + ).match() } + ) + } + } +} diff --git a/tests/bcl2fastq.nf.test.snap b/tests/bcl2fastq.nf.test.snap new file mode 100644 index 00000000..7fb8ea17 --- /dev/null +++ b/tests/bcl2fastq.nf.test.snap @@ -0,0 +1,244 @@ +{ + "Bcl2Fastq": { + "content": [ + 6, + { + "BCL2FASTQ": { + "bcl2fastq": "2.20.0.422" + }, + "FALCO": { + "falco": "1.2.1" + }, + "FASTP": { + "fastp": "0.23.4" + }, + "MD5SUM": { + "md5sum": 8.3 + }, + "Workflow": { + "nf-core/demultiplex": "v1.5.2" + } + }, + [ + "220422_M11111_0222_000000000-K9H97", + "220422_M11111_0222_000000000-K9H97.lane1_no_adapters.csv", + "220422_M11111_0222_000000000-K9H97/InterOp", + "220422_M11111_0222_000000000-K9H97/InterOp/ControlMetricsOut.bin", + "220422_M11111_0222_000000000-K9H97/InterOp/CorrectedIntMetricsOut.bin", + "220422_M11111_0222_000000000-K9H97/InterOp/ErrorMetricsOut.bin", + "220422_M11111_0222_000000000-K9H97/InterOp/ExtractionMetricsOut.bin", + "220422_M11111_0222_000000000-K9H97/InterOp/IndexMetricsOut.bin", + "220422_M11111_0222_000000000-K9H97/InterOp/QMetricsOut.bin", + "220422_M11111_0222_000000000-K9H97/InterOp/TileMetricsOut.bin", + "220422_M11111_0222_000000000-K9H97/L001", + "220422_M11111_0222_000000000-K9H97/L001/Reports", + "220422_M11111_0222_000000000-K9H97/L001/Reports/html", + "220422_M11111_0222_000000000-K9H97/L001/Reports/html/000000000-K9H97", + "220422_M11111_0222_000000000-K9H97/L001/Reports/html/000000000-K9H97/all", + "220422_M11111_0222_000000000-K9H97/L001/Reports/html/000000000-K9H97/all/all", + "220422_M11111_0222_000000000-K9H97/L001/Reports/html/000000000-K9H97/all/all/all", + "220422_M11111_0222_000000000-K9H97/L001/Reports/html/000000000-K9H97/all/all/all/lane.html", + "220422_M11111_0222_000000000-K9H97/L001/Reports/html/000000000-K9H97/all/all/all/laneBarcode.html", + "220422_M11111_0222_000000000-K9H97/L001/Reports/html/000000000-K9H97/all/all/unknown", + "220422_M11111_0222_000000000-K9H97/L001/Reports/html/000000000-K9H97/default", + "220422_M11111_0222_000000000-K9H97/L001/Reports/html/000000000-K9H97/default/Sample1", + "220422_M11111_0222_000000000-K9H97/L001/Reports/html/000000000-K9H97/default/Sample1/all", + "220422_M11111_0222_000000000-K9H97/L001/Reports/html/000000000-K9H97/default/Sample1/all/lane.html", + "220422_M11111_0222_000000000-K9H97/L001/Reports/html/000000000-K9H97/default/Sample1/all/laneBarcode.html", + "220422_M11111_0222_000000000-K9H97/L001/Reports/html/000000000-K9H97/default/Sample1/unknown", + "220422_M11111_0222_000000000-K9H97/L001/Reports/html/000000000-K9H97/default/Sample1/unknown/lane.html", + "220422_M11111_0222_000000000-K9H97/L001/Reports/html/000000000-K9H97/default/Sample1/unknown/laneBarcode.html", + "220422_M11111_0222_000000000-K9H97/L001/Reports/html/000000000-K9H97/default/all", + "220422_M11111_0222_000000000-K9H97/L001/Reports/html/000000000-K9H97/default/all/all", + "220422_M11111_0222_000000000-K9H97/L001/Reports/html/000000000-K9H97/default/all/all/lane.html", + "220422_M11111_0222_000000000-K9H97/L001/Reports/html/000000000-K9H97/default/all/all/laneBarcode.html", + "220422_M11111_0222_000000000-K9H97/L001/Reports/html/000000000-K9H97/default/all/unknown", + "220422_M11111_0222_000000000-K9H97/L001/Reports/html/Report.css", + "220422_M11111_0222_000000000-K9H97/L001/Reports/html/index.html", + "220422_M11111_0222_000000000-K9H97/L001/Reports/html/tree.html", + "220422_M11111_0222_000000000-K9H97/L001/Sample1_S1_L001.fastp.fastq.gz", + "220422_M11111_0222_000000000-K9H97/L001/Sample1_S1_L001.fastp.fastq.gz.md5", + "220422_M11111_0222_000000000-K9H97/L001/Sample1_S1_L001.fastp.html", + "220422_M11111_0222_000000000-K9H97/L001/Sample1_S1_L001.fastp.json", + "220422_M11111_0222_000000000-K9H97/L001/Sample1_S1_L001_R1_001.fastq.gz", + "220422_M11111_0222_000000000-K9H97/L001/Sample1_S1_L001_fastqc_data.txt", + "220422_M11111_0222_000000000-K9H97/L001/Sample1_S1_L001_report.html", + "220422_M11111_0222_000000000-K9H97/L001/Sample1_S1_L001_summary.txt", + "220422_M11111_0222_000000000-K9H97/L001/Stats", + "220422_M11111_0222_000000000-K9H97/L001/Stats/AdapterTrimming.txt", + "220422_M11111_0222_000000000-K9H97/L001/Stats/ConversionStats.xml", + "220422_M11111_0222_000000000-K9H97/L001/Stats/DemultiplexingStats.xml", + "220422_M11111_0222_000000000-K9H97/L001/Stats/DemuxSummaryF1L1.txt", + "220422_M11111_0222_000000000-K9H97/L001/Stats/FastqSummaryF1L1.txt", + "220422_M11111_0222_000000000-K9H97/L001/Stats/Stats.json", + "fastq", + "fastq/Sample1_S1_L001.samplesheet.csv", + "multiqc", + "multiqc/multiqc_data", + "multiqc/multiqc_data/bcl2fastq-lane-stats-table.txt", + "multiqc/multiqc_data/bcl2fastq_lane_counts.txt", + "multiqc/multiqc_data/bcl2fastq_sample_counts.txt", + "multiqc/multiqc_data/bcl2fastq_undetermined.txt", + "multiqc/multiqc_data/fastp-seq-content-gc-plot_Read_1_After_filtering.txt", + "multiqc/multiqc_data/fastp-seq-content-gc-plot_Read_1_Before_filtering.txt", + "multiqc/multiqc_data/fastp-seq-content-n-plot_Read_1_After_filtering.txt", + "multiqc/multiqc_data/fastp-seq-content-n-plot_Read_1_Before_filtering.txt", + "multiqc/multiqc_data/fastp-seq-quality-plot_Read_1_After_filtering.txt", + "multiqc/multiqc_data/fastp-seq-quality-plot_Read_1_Before_filtering.txt", + "multiqc/multiqc_data/fastp_filtered_reads_plot.txt", + "multiqc/multiqc_data/fastqc-status-check-heatmap.txt", + "multiqc/multiqc_data/fastqc_per_base_n_content_plot.txt", + "multiqc/multiqc_data/fastqc_per_base_sequence_quality_plot.txt", + "multiqc/multiqc_data/fastqc_per_sequence_gc_content_plot_Counts.txt", + "multiqc/multiqc_data/fastqc_per_sequence_gc_content_plot_Percentages.txt", + "multiqc/multiqc_data/fastqc_per_sequence_quality_scores_plot.txt", + "multiqc/multiqc_data/fastqc_sequence_counts_plot.txt", + "multiqc/multiqc_data/fastqc_sequence_duplication_levels_plot.txt", + "multiqc/multiqc_data/fastqc_top_overrepresented_sequences_table.txt", + "multiqc/multiqc_data/multiqc.log", + "multiqc/multiqc_data/multiqc_bcl2fastq_bylane.txt", + "multiqc/multiqc_data/multiqc_bcl2fastq_bysample.txt", + "multiqc/multiqc_data/multiqc_citations.txt", + "multiqc/multiqc_data/multiqc_data.json", + "multiqc/multiqc_data/multiqc_fastp.txt", + "multiqc/multiqc_data/multiqc_fastqc.txt", + "multiqc/multiqc_data/multiqc_general_stats.txt", + "multiqc/multiqc_data/multiqc_software_versions.txt", + "multiqc/multiqc_data/multiqc_sources.txt", + "multiqc/multiqc_plots", + "multiqc/multiqc_plots/pdf", + "multiqc/multiqc_plots/pdf/bcl2fastq-lane-stats-table.pdf", + "multiqc/multiqc_plots/pdf/bcl2fastq_lane_counts-cnt.pdf", + "multiqc/multiqc_plots/pdf/bcl2fastq_lane_counts-pct.pdf", + "multiqc/multiqc_plots/pdf/bcl2fastq_sample_counts-cnt.pdf", + "multiqc/multiqc_plots/pdf/bcl2fastq_sample_counts-pct.pdf", + "multiqc/multiqc_plots/pdf/bcl2fastq_undetermined-cnt.pdf", + "multiqc/multiqc_plots/pdf/bcl2fastq_undetermined-pct.pdf", + "multiqc/multiqc_plots/pdf/fastp-seq-content-gc-plot_Read_1_After_filtering.pdf", + "multiqc/multiqc_plots/pdf/fastp-seq-content-gc-plot_Read_1_Before_filtering.pdf", + "multiqc/multiqc_plots/pdf/fastp-seq-content-n-plot_Read_1_After_filtering.pdf", + "multiqc/multiqc_plots/pdf/fastp-seq-content-n-plot_Read_1_Before_filtering.pdf", + "multiqc/multiqc_plots/pdf/fastp-seq-quality-plot_Read_1_After_filtering.pdf", + "multiqc/multiqc_plots/pdf/fastp-seq-quality-plot_Read_1_Before_filtering.pdf", + "multiqc/multiqc_plots/pdf/fastp_filtered_reads_plot-cnt.pdf", + "multiqc/multiqc_plots/pdf/fastp_filtered_reads_plot-pct.pdf", + "multiqc/multiqc_plots/pdf/fastqc-status-check-heatmap.pdf", + "multiqc/multiqc_plots/pdf/fastqc_per_base_n_content_plot.pdf", + "multiqc/multiqc_plots/pdf/fastqc_per_base_sequence_quality_plot.pdf", + "multiqc/multiqc_plots/pdf/fastqc_per_sequence_gc_content_plot_Counts.pdf", + "multiqc/multiqc_plots/pdf/fastqc_per_sequence_gc_content_plot_Percentages.pdf", + "multiqc/multiqc_plots/pdf/fastqc_per_sequence_quality_scores_plot.pdf", + "multiqc/multiqc_plots/pdf/fastqc_sequence_counts_plot-cnt.pdf", + "multiqc/multiqc_plots/pdf/fastqc_sequence_counts_plot-pct.pdf", + "multiqc/multiqc_plots/pdf/fastqc_sequence_duplication_levels_plot.pdf", + "multiqc/multiqc_plots/pdf/fastqc_top_overrepresented_sequences_table.pdf", + "multiqc/multiqc_plots/pdf/general_stats_table.pdf", + "multiqc/multiqc_plots/png", + "multiqc/multiqc_plots/png/bcl2fastq-lane-stats-table.png", + "multiqc/multiqc_plots/png/bcl2fastq_lane_counts-cnt.png", + "multiqc/multiqc_plots/png/bcl2fastq_lane_counts-pct.png", + "multiqc/multiqc_plots/png/bcl2fastq_sample_counts-cnt.png", + "multiqc/multiqc_plots/png/bcl2fastq_sample_counts-pct.png", + "multiqc/multiqc_plots/png/bcl2fastq_undetermined-cnt.png", + "multiqc/multiqc_plots/png/bcl2fastq_undetermined-pct.png", + "multiqc/multiqc_plots/png/fastp-seq-content-gc-plot_Read_1_After_filtering.png", + "multiqc/multiqc_plots/png/fastp-seq-content-gc-plot_Read_1_Before_filtering.png", + "multiqc/multiqc_plots/png/fastp-seq-content-n-plot_Read_1_After_filtering.png", + "multiqc/multiqc_plots/png/fastp-seq-content-n-plot_Read_1_Before_filtering.png", + "multiqc/multiqc_plots/png/fastp-seq-quality-plot_Read_1_After_filtering.png", + "multiqc/multiqc_plots/png/fastp-seq-quality-plot_Read_1_Before_filtering.png", + "multiqc/multiqc_plots/png/fastp_filtered_reads_plot-cnt.png", + "multiqc/multiqc_plots/png/fastp_filtered_reads_plot-pct.png", + "multiqc/multiqc_plots/png/fastqc-status-check-heatmap.png", + "multiqc/multiqc_plots/png/fastqc_per_base_n_content_plot.png", + "multiqc/multiqc_plots/png/fastqc_per_base_sequence_quality_plot.png", + "multiqc/multiqc_plots/png/fastqc_per_sequence_gc_content_plot_Counts.png", + "multiqc/multiqc_plots/png/fastqc_per_sequence_gc_content_plot_Percentages.png", + "multiqc/multiqc_plots/png/fastqc_per_sequence_quality_scores_plot.png", + "multiqc/multiqc_plots/png/fastqc_sequence_counts_plot-cnt.png", + "multiqc/multiqc_plots/png/fastqc_sequence_counts_plot-pct.png", + "multiqc/multiqc_plots/png/fastqc_sequence_duplication_levels_plot.png", + "multiqc/multiqc_plots/png/fastqc_top_overrepresented_sequences_table.png", + "multiqc/multiqc_plots/png/general_stats_table.png", + "multiqc/multiqc_plots/svg", + "multiqc/multiqc_plots/svg/bcl2fastq-lane-stats-table.svg", + "multiqc/multiqc_plots/svg/bcl2fastq_lane_counts-cnt.svg", + "multiqc/multiqc_plots/svg/bcl2fastq_lane_counts-pct.svg", + "multiqc/multiqc_plots/svg/bcl2fastq_sample_counts-cnt.svg", + "multiqc/multiqc_plots/svg/bcl2fastq_sample_counts-pct.svg", + "multiqc/multiqc_plots/svg/bcl2fastq_undetermined-cnt.svg", + "multiqc/multiqc_plots/svg/bcl2fastq_undetermined-pct.svg", + "multiqc/multiqc_plots/svg/fastp-seq-content-gc-plot_Read_1_After_filtering.svg", + "multiqc/multiqc_plots/svg/fastp-seq-content-gc-plot_Read_1_Before_filtering.svg", + "multiqc/multiqc_plots/svg/fastp-seq-content-n-plot_Read_1_After_filtering.svg", + "multiqc/multiqc_plots/svg/fastp-seq-content-n-plot_Read_1_Before_filtering.svg", + "multiqc/multiqc_plots/svg/fastp-seq-quality-plot_Read_1_After_filtering.svg", + "multiqc/multiqc_plots/svg/fastp-seq-quality-plot_Read_1_Before_filtering.svg", + "multiqc/multiqc_plots/svg/fastp_filtered_reads_plot-cnt.svg", + "multiqc/multiqc_plots/svg/fastp_filtered_reads_plot-pct.svg", + "multiqc/multiqc_plots/svg/fastqc-status-check-heatmap.svg", + "multiqc/multiqc_plots/svg/fastqc_per_base_n_content_plot.svg", + "multiqc/multiqc_plots/svg/fastqc_per_base_sequence_quality_plot.svg", + "multiqc/multiqc_plots/svg/fastqc_per_sequence_gc_content_plot_Counts.svg", + "multiqc/multiqc_plots/svg/fastqc_per_sequence_gc_content_plot_Percentages.svg", + "multiqc/multiqc_plots/svg/fastqc_per_sequence_quality_scores_plot.svg", + "multiqc/multiqc_plots/svg/fastqc_sequence_counts_plot-cnt.svg", + "multiqc/multiqc_plots/svg/fastqc_sequence_counts_plot-pct.svg", + "multiqc/multiqc_plots/svg/fastqc_sequence_duplication_levels_plot.svg", + "multiqc/multiqc_plots/svg/fastqc_top_overrepresented_sequences_table.svg", + "multiqc/multiqc_plots/svg/general_stats_table.svg", + "multiqc/multiqc_report.html", + "pipeline_info", + "pipeline_info/nf_core_pipeline_software_mqc_versions.yml", + "samplesheet", + "samplesheet/samplesheet.csv" + ], + [ + "220422_M11111_0222_000000000-K9H97.lane1_no_adapters.csv:md5,ee5db2e12754e069998b0a96e535238c", + "ControlMetricsOut.bin:md5,6d77b38d0793a6e1ce1e85706e488953", + "CorrectedIntMetricsOut.bin:md5,2bbf84d3be72734addaa2fe794711434", + "ErrorMetricsOut.bin:md5,38c88def138e9bb832539911affdb286", + "ExtractionMetricsOut.bin:md5,7497c3178837eea8f09350b5cd252e99", + "IndexMetricsOut.bin:md5,9e688c58a5487b8eaf69c9e1005ad0bf", + "QMetricsOut.bin:md5,7e9f198d53ebdfbb699a5f94cf1ed51c", + "TileMetricsOut.bin:md5,83891751ec1c91a425a524b476b6ca3c", + "Report.css:md5,eb7d3eb68fc1539f411404987246b59b", + "index.html:md5,5747c407854ae2c358d0ec201ce622d8", + "tree.html:md5,a1b9bf592973ca829ec69ddf888b7e34", + "Sample1_S1_L001.fastp.fastq.gz:md5,64639ff33d4b07d62a9079f88cbbd373", + "Sample1_S1_L001.fastp.fastq.gz.md5:md5,c3cd96f3a22fb6afbaa1df324814d54c", + "Sample1_S1_L001.fastp.json:md5,d9d2d702f3c64412a04cd0768863b1ab", + "Sample1_S1_L001_R1_001.fastq.gz:md5,0675fb6365322eaafb33c0f8e862b54b", + "Sample1_S1_L001_fastqc_data.txt:md5,0adf4e2617f55fabba0663583c1f65b7", + "Sample1_S1_L001_summary.txt:md5,510c6b8a26ff8d530950c05b3ca5a1c6", + "AdapterTrimming.txt:md5,48ed2b914b1246c0b5d8667525550946", + "DemultiplexingStats.xml:md5,2047ff18f5b9107c084de06e9ff943ad", + "FastqSummaryF1L1.txt:md5,0c6f2d87ee183b84d1051cde9a5643d1", + "bcl2fastq-lane-stats-table.txt:md5,d0e821a9c0ccf7da808c5dd05e99ddc2", + "bcl2fastq_lane_counts.txt:md5,9404ab530f43e442093337dd10c351c5", + "bcl2fastq_sample_counts.txt:md5,93cb0cd1aee1b464f0e640e1c3d0c142", + "fastp-seq-content-gc-plot_Read_1_After_filtering.txt:md5,8105d4ce1d752e1f8a26e4291e8d9c6c", + "fastp-seq-content-gc-plot_Read_1_Before_filtering.txt:md5,0ac68e41c4de8ca35a1cd6ee7c6cb3f3", + "fastp-seq-content-n-plot_Read_1_After_filtering.txt:md5,1ec69a9fd0d46a39dfb59e377733e98b", + "fastp-seq-content-n-plot_Read_1_Before_filtering.txt:md5,1ec69a9fd0d46a39dfb59e377733e98b", + "fastp-seq-quality-plot_Read_1_After_filtering.txt:md5,1701b40c23dca068210f5410788e3be1", + "fastp-seq-quality-plot_Read_1_Before_filtering.txt:md5,35de9aebdc467b1bbc9fd1f40d3aece4", + "fastp_filtered_reads_plot.txt:md5,fa14a1941e109d4104c33db0e5fe20fc", + "fastqc_per_base_n_content_plot.txt:md5,d7db99124db8f53d82c51c779ce77463", + "fastqc_per_base_sequence_quality_plot.txt:md5,31c51bbd7d4dbb32107efa95c8a58ee5", + "fastqc_per_sequence_gc_content_plot_Counts.txt:md5,842eaa1c62a8e6676b4b07226bda998b", + "fastqc_per_sequence_gc_content_plot_Percentages.txt:md5,b231390d458d0bfdf4fa1360a776e03c", + "fastqc_per_sequence_quality_scores_plot.txt:md5,edbe64e0545cb866af73a649349d2a42", + "fastqc_sequence_counts_plot.txt:md5,662c69090978601ca7d39504b1ac736b", + "fastqc_sequence_duplication_levels_plot.txt:md5,cc02a5151984c0a9fdf8316bfb05088b", + "multiqc_bcl2fastq_bysample.txt:md5,baaa56d8315c18633f6ce6568d6f0657", + "multiqc_citations.txt:md5,d35df50e9903a96a2b3bce3c1fbc8ad2" + ] + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.09.2" + }, + "timestamp": "2024-10-15T16:39:25.304794" + } +} diff --git a/tests/bclconvert.nf.test b/tests/bclconvert.nf.test new file mode 100644 index 00000000..efdc72c1 --- /dev/null +++ b/tests/bclconvert.nf.test @@ -0,0 +1,37 @@ +nextflow_pipeline { + + name "Test Workflow main.nf - BCLCONVERT" + script "../main.nf" + profile "test" + tag "bclconvert" + tag "pipeline" + + test("BCL-CONVERT") { + + when { + params { + outdir = "$outputDir" + } + } + + then { + // stable_name: All files + folders in ${params.outdir}/ with a stable name + def stable_name = getAllFilesFromDir(params.outdir, relative: true, includeDir: true, ignore: ['pipeline_info/*.{html,json,txt}']) + // stable_path: All files in ${params.outdir}/ with stable content + def stable_path = getAllFilesFromDir(params.outdir, ignoreFile: 'tests/.nftignore') + assertAll( + { assert workflow.success}, + { assert snapshot( + // Number of successful tasks + workflow.trace.succeeded().size(), + // pipeline versions.yml file for multiqc from which Nextflow version is removed because we tests pipelines on multiple Nextflow versions + removeNextflowVersion("$outputDir/pipeline_info/nf_core_pipeline_software_mqc_versions.yml"), + // All stable path name, with a relative path + stable_name, + // All files with stable contents + stable_path + ).match() } + ) + } + } +} diff --git a/tests/bclconvert.nf.test.snap b/tests/bclconvert.nf.test.snap new file mode 100644 index 00000000..f064c458 --- /dev/null +++ b/tests/bclconvert.nf.test.snap @@ -0,0 +1,240 @@ +{ + "BCL-CONVERT": { + "content": [ + 6, + { + "BCLCONVERT": { + "bclconvert": "4.3.6" + }, + "FALCO": { + "falco": "1.2.1" + }, + "FASTP": { + "fastp": "0.23.4" + }, + "MD5SUM": { + "md5sum": 8.3 + }, + "Workflow": { + "nf-core/demultiplex": "v1.5.2" + } + }, + [ + "220422_M11111_0222_000000000-K9H97", + "220422_M11111_0222_000000000-K9H97.lane1_no_adapters.csv", + "220422_M11111_0222_000000000-K9H97/InterOp", + "220422_M11111_0222_000000000-K9H97/InterOp/ControlMetricsOut.bin", + "220422_M11111_0222_000000000-K9H97/InterOp/CorrectedIntMetricsOut.bin", + "220422_M11111_0222_000000000-K9H97/InterOp/ErrorMetricsOut.bin", + "220422_M11111_0222_000000000-K9H97/InterOp/ExtractionMetricsOut.bin", + "220422_M11111_0222_000000000-K9H97/InterOp/IndexMetricsOut.bin", + "220422_M11111_0222_000000000-K9H97/InterOp/QMetricsOut.bin", + "220422_M11111_0222_000000000-K9H97/InterOp/TileMetricsOut.bin", + "220422_M11111_0222_000000000-K9H97/L001", + "220422_M11111_0222_000000000-K9H97/L001/Reports", + "220422_M11111_0222_000000000-K9H97/L001/Reports/Adapter_Cycle_Metrics.csv", + "220422_M11111_0222_000000000-K9H97/L001/Reports/Adapter_Metrics.csv", + "220422_M11111_0222_000000000-K9H97/L001/Reports/Demultiplex_Stats.csv", + "220422_M11111_0222_000000000-K9H97/L001/Reports/Demultiplex_Tile_Stats.csv", + "220422_M11111_0222_000000000-K9H97/L001/Reports/IndexMetricsOut.bin", + "220422_M11111_0222_000000000-K9H97/L001/Reports/Index_Hopping_Counts.csv", + "220422_M11111_0222_000000000-K9H97/L001/Reports/Quality_Metrics.csv", + "220422_M11111_0222_000000000-K9H97/L001/Reports/Quality_Tile_Metrics.csv", + "220422_M11111_0222_000000000-K9H97/L001/Reports/RunInfo.xml", + "220422_M11111_0222_000000000-K9H97/L001/Reports/SampleSheet.csv", + "220422_M11111_0222_000000000-K9H97/L001/Reports/Top_Unknown_Barcodes.csv", + "220422_M11111_0222_000000000-K9H97/L001/Reports/fastq_list.csv", + "220422_M11111_0222_000000000-K9H97/L001/Sample1_S1_L001.fastp.fastq.gz", + "220422_M11111_0222_000000000-K9H97/L001/Sample1_S1_L001.fastp.fastq.gz.md5", + "220422_M11111_0222_000000000-K9H97/L001/Sample1_S1_L001.fastp.html", + "220422_M11111_0222_000000000-K9H97/L001/Sample1_S1_L001.fastp.json", + "220422_M11111_0222_000000000-K9H97/L001/Sample1_S1_L001_R1_001.fastq.gz", + "220422_M11111_0222_000000000-K9H97/L001/Sample1_S1_L001_fastqc_data.txt", + "220422_M11111_0222_000000000-K9H97/L001/Sample1_S1_L001_report.html", + "220422_M11111_0222_000000000-K9H97/L001/Sample1_S1_L001_summary.txt", + "220422_M11111_0222_000000000-K9H97/L001/Undetermined_S0_L001_R1_001.fastq.gz", + "fastq", + "fastq/Sample1_S1_L001.samplesheet.csv", + "multiqc", + "multiqc/multiqc_data", + "multiqc/multiqc_data/bclconvert-lane-stats-table.txt", + "multiqc/multiqc_data/bclconvert-sample-stats-table.txt", + "multiqc/multiqc_data/bclconvert_lane_counts.txt", + "multiqc/multiqc_data/bclconvert_sample_counts_Counts_per_lane.txt", + "multiqc/multiqc_data/bclconvert_sample_counts_Index_mismatches.txt", + "multiqc/multiqc_data/fastp-seq-content-gc-plot_Read_1_After_filtering.txt", + "multiqc/multiqc_data/fastp-seq-content-gc-plot_Read_1_Before_filtering.txt", + "multiqc/multiqc_data/fastp-seq-content-n-plot_Read_1_After_filtering.txt", + "multiqc/multiqc_data/fastp-seq-content-n-plot_Read_1_Before_filtering.txt", + "multiqc/multiqc_data/fastp-seq-quality-plot_Read_1_After_filtering.txt", + "multiqc/multiqc_data/fastp-seq-quality-plot_Read_1_Before_filtering.txt", + "multiqc/multiqc_data/fastp_filtered_reads_plot.txt", + "multiqc/multiqc_data/fastqc-status-check-heatmap.txt", + "multiqc/multiqc_data/fastqc_per_base_n_content_plot.txt", + "multiqc/multiqc_data/fastqc_per_base_sequence_quality_plot.txt", + "multiqc/multiqc_data/fastqc_per_sequence_gc_content_plot_Counts.txt", + "multiqc/multiqc_data/fastqc_per_sequence_gc_content_plot_Percentages.txt", + "multiqc/multiqc_data/fastqc_per_sequence_quality_scores_plot.txt", + "multiqc/multiqc_data/fastqc_sequence_counts_plot.txt", + "multiqc/multiqc_data/fastqc_sequence_duplication_levels_plot.txt", + "multiqc/multiqc_data/fastqc_top_overrepresented_sequences_table.txt", + "multiqc/multiqc_data/multiqc.log", + "multiqc/multiqc_data/multiqc_bclconvert_bylane.txt", + "multiqc/multiqc_data/multiqc_bclconvert_bysample.txt", + "multiqc/multiqc_data/multiqc_citations.txt", + "multiqc/multiqc_data/multiqc_data.json", + "multiqc/multiqc_data/multiqc_fastp.txt", + "multiqc/multiqc_data/multiqc_fastqc.txt", + "multiqc/multiqc_data/multiqc_general_stats.txt", + "multiqc/multiqc_data/multiqc_software_versions.txt", + "multiqc/multiqc_data/multiqc_sources.txt", + "multiqc/multiqc_plots", + "multiqc/multiqc_plots/pdf", + "multiqc/multiqc_plots/pdf/bclconvert-lane-stats-table.pdf", + "multiqc/multiqc_plots/pdf/bclconvert-sample-stats-table.pdf", + "multiqc/multiqc_plots/pdf/bclconvert_lane_counts-cnt.pdf", + "multiqc/multiqc_plots/pdf/bclconvert_lane_counts-pct.pdf", + "multiqc/multiqc_plots/pdf/bclconvert_sample_counts_Counts_per_lane-cnt.pdf", + "multiqc/multiqc_plots/pdf/bclconvert_sample_counts_Counts_per_lane-pct.pdf", + "multiqc/multiqc_plots/pdf/bclconvert_sample_counts_Index_mismatches-cnt.pdf", + "multiqc/multiqc_plots/pdf/bclconvert_sample_counts_Index_mismatches-pct.pdf", + "multiqc/multiqc_plots/pdf/fastp-seq-content-gc-plot_Read_1_After_filtering.pdf", + "multiqc/multiqc_plots/pdf/fastp-seq-content-gc-plot_Read_1_Before_filtering.pdf", + "multiqc/multiqc_plots/pdf/fastp-seq-content-n-plot_Read_1_After_filtering.pdf", + "multiqc/multiqc_plots/pdf/fastp-seq-content-n-plot_Read_1_Before_filtering.pdf", + "multiqc/multiqc_plots/pdf/fastp-seq-quality-plot_Read_1_After_filtering.pdf", + "multiqc/multiqc_plots/pdf/fastp-seq-quality-plot_Read_1_Before_filtering.pdf", + "multiqc/multiqc_plots/pdf/fastp_filtered_reads_plot-cnt.pdf", + "multiqc/multiqc_plots/pdf/fastp_filtered_reads_plot-pct.pdf", + "multiqc/multiqc_plots/pdf/fastqc-status-check-heatmap.pdf", + "multiqc/multiqc_plots/pdf/fastqc_per_base_n_content_plot.pdf", + "multiqc/multiqc_plots/pdf/fastqc_per_base_sequence_quality_plot.pdf", + "multiqc/multiqc_plots/pdf/fastqc_per_sequence_gc_content_plot_Counts.pdf", + "multiqc/multiqc_plots/pdf/fastqc_per_sequence_gc_content_plot_Percentages.pdf", + "multiqc/multiqc_plots/pdf/fastqc_per_sequence_quality_scores_plot.pdf", + "multiqc/multiqc_plots/pdf/fastqc_sequence_counts_plot-cnt.pdf", + "multiqc/multiqc_plots/pdf/fastqc_sequence_counts_plot-pct.pdf", + "multiqc/multiqc_plots/pdf/fastqc_sequence_duplication_levels_plot.pdf", + "multiqc/multiqc_plots/pdf/fastqc_top_overrepresented_sequences_table.pdf", + "multiqc/multiqc_plots/pdf/general_stats_table.pdf", + "multiqc/multiqc_plots/png", + "multiqc/multiqc_plots/png/bclconvert-lane-stats-table.png", + "multiqc/multiqc_plots/png/bclconvert-sample-stats-table.png", + "multiqc/multiqc_plots/png/bclconvert_lane_counts-cnt.png", + "multiqc/multiqc_plots/png/bclconvert_lane_counts-pct.png", + "multiqc/multiqc_plots/png/bclconvert_sample_counts_Counts_per_lane-cnt.png", + "multiqc/multiqc_plots/png/bclconvert_sample_counts_Counts_per_lane-pct.png", + "multiqc/multiqc_plots/png/bclconvert_sample_counts_Index_mismatches-cnt.png", + "multiqc/multiqc_plots/png/bclconvert_sample_counts_Index_mismatches-pct.png", + "multiqc/multiqc_plots/png/fastp-seq-content-gc-plot_Read_1_After_filtering.png", + "multiqc/multiqc_plots/png/fastp-seq-content-gc-plot_Read_1_Before_filtering.png", + "multiqc/multiqc_plots/png/fastp-seq-content-n-plot_Read_1_After_filtering.png", + "multiqc/multiqc_plots/png/fastp-seq-content-n-plot_Read_1_Before_filtering.png", + "multiqc/multiqc_plots/png/fastp-seq-quality-plot_Read_1_After_filtering.png", + "multiqc/multiqc_plots/png/fastp-seq-quality-plot_Read_1_Before_filtering.png", + "multiqc/multiqc_plots/png/fastp_filtered_reads_plot-cnt.png", + "multiqc/multiqc_plots/png/fastp_filtered_reads_plot-pct.png", + "multiqc/multiqc_plots/png/fastqc-status-check-heatmap.png", + "multiqc/multiqc_plots/png/fastqc_per_base_n_content_plot.png", + "multiqc/multiqc_plots/png/fastqc_per_base_sequence_quality_plot.png", + "multiqc/multiqc_plots/png/fastqc_per_sequence_gc_content_plot_Counts.png", + "multiqc/multiqc_plots/png/fastqc_per_sequence_gc_content_plot_Percentages.png", + "multiqc/multiqc_plots/png/fastqc_per_sequence_quality_scores_plot.png", + "multiqc/multiqc_plots/png/fastqc_sequence_counts_plot-cnt.png", + "multiqc/multiqc_plots/png/fastqc_sequence_counts_plot-pct.png", + "multiqc/multiqc_plots/png/fastqc_sequence_duplication_levels_plot.png", + "multiqc/multiqc_plots/png/fastqc_top_overrepresented_sequences_table.png", + "multiqc/multiqc_plots/png/general_stats_table.png", + "multiqc/multiqc_plots/svg", + "multiqc/multiqc_plots/svg/bclconvert-lane-stats-table.svg", + "multiqc/multiqc_plots/svg/bclconvert-sample-stats-table.svg", + "multiqc/multiqc_plots/svg/bclconvert_lane_counts-cnt.svg", + "multiqc/multiqc_plots/svg/bclconvert_lane_counts-pct.svg", + "multiqc/multiqc_plots/svg/bclconvert_sample_counts_Counts_per_lane-cnt.svg", + "multiqc/multiqc_plots/svg/bclconvert_sample_counts_Counts_per_lane-pct.svg", + "multiqc/multiqc_plots/svg/bclconvert_sample_counts_Index_mismatches-cnt.svg", + "multiqc/multiqc_plots/svg/bclconvert_sample_counts_Index_mismatches-pct.svg", + "multiqc/multiqc_plots/svg/fastp-seq-content-gc-plot_Read_1_After_filtering.svg", + "multiqc/multiqc_plots/svg/fastp-seq-content-gc-plot_Read_1_Before_filtering.svg", + "multiqc/multiqc_plots/svg/fastp-seq-content-n-plot_Read_1_After_filtering.svg", + "multiqc/multiqc_plots/svg/fastp-seq-content-n-plot_Read_1_Before_filtering.svg", + "multiqc/multiqc_plots/svg/fastp-seq-quality-plot_Read_1_After_filtering.svg", + "multiqc/multiqc_plots/svg/fastp-seq-quality-plot_Read_1_Before_filtering.svg", + "multiqc/multiqc_plots/svg/fastp_filtered_reads_plot-cnt.svg", + "multiqc/multiqc_plots/svg/fastp_filtered_reads_plot-pct.svg", + "multiqc/multiqc_plots/svg/fastqc-status-check-heatmap.svg", + "multiqc/multiqc_plots/svg/fastqc_per_base_n_content_plot.svg", + "multiqc/multiqc_plots/svg/fastqc_per_base_sequence_quality_plot.svg", + "multiqc/multiqc_plots/svg/fastqc_per_sequence_gc_content_plot_Counts.svg", + "multiqc/multiqc_plots/svg/fastqc_per_sequence_gc_content_plot_Percentages.svg", + "multiqc/multiqc_plots/svg/fastqc_per_sequence_quality_scores_plot.svg", + "multiqc/multiqc_plots/svg/fastqc_sequence_counts_plot-cnt.svg", + "multiqc/multiqc_plots/svg/fastqc_sequence_counts_plot-pct.svg", + "multiqc/multiqc_plots/svg/fastqc_sequence_duplication_levels_plot.svg", + "multiqc/multiqc_plots/svg/fastqc_top_overrepresented_sequences_table.svg", + "multiqc/multiqc_plots/svg/general_stats_table.svg", + "multiqc/multiqc_report.html", + "pipeline_info", + "pipeline_info/nf_core_pipeline_software_mqc_versions.yml", + "samplesheet", + "samplesheet/samplesheet.csv" + ], + [ + "220422_M11111_0222_000000000-K9H97.lane1_no_adapters.csv:md5,ee5db2e12754e069998b0a96e535238c", + "ControlMetricsOut.bin:md5,6d77b38d0793a6e1ce1e85706e488953", + "CorrectedIntMetricsOut.bin:md5,2bbf84d3be72734addaa2fe794711434", + "ErrorMetricsOut.bin:md5,38c88def138e9bb832539911affdb286", + "ExtractionMetricsOut.bin:md5,7497c3178837eea8f09350b5cd252e99", + "IndexMetricsOut.bin:md5,d41d8cd98f00b204e9800998ecf8427e", + "QMetricsOut.bin:md5,7e9f198d53ebdfbb699a5f94cf1ed51c", + "TileMetricsOut.bin:md5,83891751ec1c91a425a524b476b6ca3c", + "Adapter_Cycle_Metrics.csv:md5,5a0c88793b4a0885fe3dda16609b576e", + "Adapter_Metrics.csv:md5,989240b8840b2169ac1061f952c90f6c", + "Demultiplex_Stats.csv:md5,93949a8cd96f907d83e0808c1ec2a04b", + "Demultiplex_Tile_Stats.csv:md5,83120160b0f22a1303fa1db31c19f6e9", + "IndexMetricsOut.bin:md5,9e688c58a5487b8eaf69c9e1005ad0bf", + "Index_Hopping_Counts.csv:md5,1059369e375fd8f8423c0f6c934be978", + "Quality_Metrics.csv:md5,6614accb1bb414fe312b17b81f5521f7", + "Quality_Tile_Metrics.csv:md5,cdc89fd2962bdd4a24f71e186112118a", + "RunInfo.xml:md5,03038959f4dd181c86bc97ae71fe270a", + "SampleSheet.csv:md5,ee5db2e12754e069998b0a96e535238c", + "Top_Unknown_Barcodes.csv:md5,2e2faba761137f228e56bd3428453ccc", + "fastq_list.csv:md5,ae1470cd741e33b87a4ad26f849a50f9", + "Sample1_S1_L001.fastp.fastq.gz:md5,64639ff33d4b07d62a9079f88cbbd373", + "Sample1_S1_L001.fastp.fastq.gz.md5:md5,c3cd96f3a22fb6afbaa1df324814d54c", + "Sample1_S1_L001.fastp.json:md5,d9d2d702f3c64412a04cd0768863b1ab", + "Sample1_S1_L001_R1_001.fastq.gz:md5,0675fb6365322eaafb33c0f8e862b54b", + "Sample1_S1_L001_fastqc_data.txt:md5,0adf4e2617f55fabba0663583c1f65b7", + "Sample1_S1_L001_summary.txt:md5,510c6b8a26ff8d530950c05b3ca5a1c6", + "Undetermined_S0_L001_R1_001.fastq.gz:md5,d41d8cd98f00b204e9800998ecf8427e", + "bclconvert-lane-stats-table.txt:md5,8bff7b728d3ad67405d4742d0aa2088e", + "bclconvert-sample-stats-table.txt:md5,a6edf6b192981bd296c1eba968e4333c", + "bclconvert_lane_counts.txt:md5,a327047d0d6c7de32eef9535bb159110", + "bclconvert_sample_counts_Counts_per_lane.txt:md5,a7e57ab911ba2cf74ec7bd93b921036d", + "bclconvert_sample_counts_Index_mismatches.txt:md5,06c29164e83815c79a2b1541a4a6294e", + "fastp-seq-content-gc-plot_Read_1_After_filtering.txt:md5,8105d4ce1d752e1f8a26e4291e8d9c6c", + "fastp-seq-content-gc-plot_Read_1_Before_filtering.txt:md5,0ac68e41c4de8ca35a1cd6ee7c6cb3f3", + "fastp-seq-content-n-plot_Read_1_After_filtering.txt:md5,1ec69a9fd0d46a39dfb59e377733e98b", + "fastp-seq-content-n-plot_Read_1_Before_filtering.txt:md5,1ec69a9fd0d46a39dfb59e377733e98b", + "fastp-seq-quality-plot_Read_1_After_filtering.txt:md5,1701b40c23dca068210f5410788e3be1", + "fastp-seq-quality-plot_Read_1_Before_filtering.txt:md5,35de9aebdc467b1bbc9fd1f40d3aece4", + "fastp_filtered_reads_plot.txt:md5,fa14a1941e109d4104c33db0e5fe20fc", + "fastqc_per_base_n_content_plot.txt:md5,d7db99124db8f53d82c51c779ce77463", + "fastqc_per_base_sequence_quality_plot.txt:md5,31c51bbd7d4dbb32107efa95c8a58ee5", + "fastqc_per_sequence_gc_content_plot_Counts.txt:md5,842eaa1c62a8e6676b4b07226bda998b", + "fastqc_per_sequence_gc_content_plot_Percentages.txt:md5,b231390d458d0bfdf4fa1360a776e03c", + "fastqc_per_sequence_quality_scores_plot.txt:md5,edbe64e0545cb866af73a649349d2a42", + "fastqc_sequence_counts_plot.txt:md5,662c69090978601ca7d39504b1ac736b", + "fastqc_sequence_duplication_levels_plot.txt:md5,cc02a5151984c0a9fdf8316bfb05088b", + "multiqc_bclconvert_bylane.txt:md5,2f779a97f3a5429454f62059a19856e6", + "multiqc_bclconvert_bysample.txt:md5,6a1ababe7d8242995ba5c5f78699cd63", + "multiqc_citations.txt:md5,d35df50e9903a96a2b3bce3c1fbc8ad2" + ] + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.09.2" + }, + "timestamp": "2024-10-15T16:41:01.01928" + } +} diff --git a/tests/bclconvert_mini.nf.test b/tests/bclconvert_mini.nf.test new file mode 100644 index 00000000..19f24167 --- /dev/null +++ b/tests/bclconvert_mini.nf.test @@ -0,0 +1,37 @@ +nextflow_pipeline { + + name "Test Workflow main.nf - BCLCONVERT-mini" + script "../main.nf" + profile "test_bclconvert" + tag "bclconvert" + tag "pipeline" + + test("BCL-CONVERT-mini") { + + when { + params { + outdir = "$outputDir" + } + } + + then { + // stable_name: All files + folders in ${params.outdir}/ with a stable name + def stable_name = getAllFilesFromDir(params.outdir, relative: true, includeDir: true, ignore: ['pipeline_info/*.{html,json,txt}']) + // stable_path: All files in ${params.outdir}/ with stable content + def stable_path = getAllFilesFromDir(params.outdir, ignoreFile: 'tests/.nftignore') + assertAll( + { assert workflow.success}, + { assert snapshot( + // Number of successful tasks + workflow.trace.succeeded().size(), + // pipeline versions.yml file for multiqc from which Nextflow version is removed because we tests pipelines on multiple Nextflow versions + removeNextflowVersion("$outputDir/pipeline_info/nf_core_pipeline_software_mqc_versions.yml"), + // All stable path name, with a relative path + stable_name, + // All files with stable contents + stable_path + ).match() } + ) + } + } +} diff --git a/tests/bclconvert_mini.nf.test.snap b/tests/bclconvert_mini.nf.test.snap new file mode 100644 index 00000000..77ba8a65 --- /dev/null +++ b/tests/bclconvert_mini.nf.test.snap @@ -0,0 +1,353 @@ +{ + "BCL-CONVERT-mini": { + "content": [ + 26, + { + "BCLCONVERT": { + "bclconvert": "4.3.6" + }, + "FALCO": { + "falco": "1.2.1" + }, + "FASTP": { + "fastp": "0.23.4" + }, + "MD5SUM": { + "md5sum": 8.3 + }, + "Workflow": { + "nf-core/demultiplex": "v1.5.2" + } + }, + [ + "fastq", + "fastq/HBRR1_S1_L001.samplesheet.csv", + "fastq/HBRR2_S2_L001.samplesheet.csv", + "fastq/HBRR3_S3_L001.samplesheet.csv", + "fastq/UHRR1_S4_L001.samplesheet.csv", + "fastq/UHRR2_S5_L001.samplesheet.csv", + "fastq/UHRR3_S6_L001.samplesheet.csv", + "miniseq_truseq_smrna", + "miniseq_truseq_smrna/HBRR1_S1_L001.fastp.fastq.gz", + "miniseq_truseq_smrna/HBRR1_S1_L001.fastp.fastq.gz.md5", + "miniseq_truseq_smrna/HBRR1_S1_L001.fastp.html", + "miniseq_truseq_smrna/HBRR1_S1_L001.fastp.json", + "miniseq_truseq_smrna/HBRR1_S1_L001_R1_001.fastq.gz", + "miniseq_truseq_smrna/HBRR1_S1_L001_fastqc_data.txt", + "miniseq_truseq_smrna/HBRR1_S1_L001_report.html", + "miniseq_truseq_smrna/HBRR1_S1_L001_summary.txt", + "miniseq_truseq_smrna/HBRR2_S2_L001.fastp.fastq.gz", + "miniseq_truseq_smrna/HBRR2_S2_L001.fastp.fastq.gz.md5", + "miniseq_truseq_smrna/HBRR2_S2_L001.fastp.html", + "miniseq_truseq_smrna/HBRR2_S2_L001.fastp.json", + "miniseq_truseq_smrna/HBRR2_S2_L001_R1_001.fastq.gz", + "miniseq_truseq_smrna/HBRR2_S2_L001_fastqc_data.txt", + "miniseq_truseq_smrna/HBRR2_S2_L001_report.html", + "miniseq_truseq_smrna/HBRR2_S2_L001_summary.txt", + "miniseq_truseq_smrna/HBRR3_S3_L001.fastp.fastq.gz", + "miniseq_truseq_smrna/HBRR3_S3_L001.fastp.fastq.gz.md5", + "miniseq_truseq_smrna/HBRR3_S3_L001.fastp.html", + "miniseq_truseq_smrna/HBRR3_S3_L001.fastp.json", + "miniseq_truseq_smrna/HBRR3_S3_L001_R1_001.fastq.gz", + "miniseq_truseq_smrna/HBRR3_S3_L001_fastqc_data.txt", + "miniseq_truseq_smrna/HBRR3_S3_L001_report.html", + "miniseq_truseq_smrna/HBRR3_S3_L001_summary.txt", + "miniseq_truseq_smrna/InterOp", + "miniseq_truseq_smrna/InterOp/CorrectedIntMetricsOut.bin", + "miniseq_truseq_smrna/InterOp/EmpiricalPhasingMetricsOut.bin", + "miniseq_truseq_smrna/InterOp/ErrorMetricsOut.bin", + "miniseq_truseq_smrna/InterOp/EventMetricsOut.bin", + "miniseq_truseq_smrna/InterOp/ExtendedTileMetricsOut.bin", + "miniseq_truseq_smrna/InterOp/ExtractionMetricsOut.bin", + "miniseq_truseq_smrna/InterOp/FWHMGridMetricsOut.bin", + "miniseq_truseq_smrna/InterOp/ImageMetricsOut.bin", + "miniseq_truseq_smrna/InterOp/IndexMetricsOut.bin", + "miniseq_truseq_smrna/InterOp/PFGridMetricsOut.bin", + "miniseq_truseq_smrna/InterOp/QMetrics2030Out.bin", + "miniseq_truseq_smrna/InterOp/QMetricsByLaneOut.bin", + "miniseq_truseq_smrna/InterOp/QMetricsOut.bin", + "miniseq_truseq_smrna/InterOp/RegistrationMetricsOut.bin", + "miniseq_truseq_smrna/InterOp/TileMetricsOut.bin", + "miniseq_truseq_smrna/Reports", + "miniseq_truseq_smrna/Reports/Adapter_Cycle_Metrics.csv", + "miniseq_truseq_smrna/Reports/Adapter_Metrics.csv", + "miniseq_truseq_smrna/Reports/Demultiplex_Stats.csv", + "miniseq_truseq_smrna/Reports/Demultiplex_Tile_Stats.csv", + "miniseq_truseq_smrna/Reports/IndexMetricsOut.bin", + "miniseq_truseq_smrna/Reports/Index_Hopping_Counts.csv", + "miniseq_truseq_smrna/Reports/Quality_Metrics.csv", + "miniseq_truseq_smrna/Reports/Quality_Tile_Metrics.csv", + "miniseq_truseq_smrna/Reports/RunInfo.xml", + "miniseq_truseq_smrna/Reports/SampleSheet.csv", + "miniseq_truseq_smrna/Reports/Top_Unknown_Barcodes.csv", + "miniseq_truseq_smrna/Reports/fastq_list.csv", + "miniseq_truseq_smrna/UHRR1_S4_L001.fastp.fastq.gz", + "miniseq_truseq_smrna/UHRR1_S4_L001.fastp.fastq.gz.md5", + "miniseq_truseq_smrna/UHRR1_S4_L001.fastp.html", + "miniseq_truseq_smrna/UHRR1_S4_L001.fastp.json", + "miniseq_truseq_smrna/UHRR1_S4_L001_R1_001.fastq.gz", + "miniseq_truseq_smrna/UHRR1_S4_L001_fastqc_data.txt", + "miniseq_truseq_smrna/UHRR1_S4_L001_report.html", + "miniseq_truseq_smrna/UHRR1_S4_L001_summary.txt", + "miniseq_truseq_smrna/UHRR2_S5_L001.fastp.fastq.gz", + "miniseq_truseq_smrna/UHRR2_S5_L001.fastp.fastq.gz.md5", + "miniseq_truseq_smrna/UHRR2_S5_L001.fastp.html", + "miniseq_truseq_smrna/UHRR2_S5_L001.fastp.json", + "miniseq_truseq_smrna/UHRR2_S5_L001_R1_001.fastq.gz", + "miniseq_truseq_smrna/UHRR2_S5_L001_fastqc_data.txt", + "miniseq_truseq_smrna/UHRR2_S5_L001_report.html", + "miniseq_truseq_smrna/UHRR2_S5_L001_summary.txt", + "miniseq_truseq_smrna/UHRR3_S6_L001.fastp.fastq.gz", + "miniseq_truseq_smrna/UHRR3_S6_L001.fastp.fastq.gz.md5", + "miniseq_truseq_smrna/UHRR3_S6_L001.fastp.html", + "miniseq_truseq_smrna/UHRR3_S6_L001.fastp.json", + "miniseq_truseq_smrna/UHRR3_S6_L001_R1_001.fastq.gz", + "miniseq_truseq_smrna/UHRR3_S6_L001_fastqc_data.txt", + "miniseq_truseq_smrna/UHRR3_S6_L001_report.html", + "miniseq_truseq_smrna/UHRR3_S6_L001_summary.txt", + "miniseq_truseq_smrna/Undetermined_S0_L001_R1_001.fastq.gz", + "miniseq_truseq_smrna_no_adapters.csv", + "multiqc", + "multiqc/multiqc_data", + "multiqc/multiqc_data/bclconvert-lane-stats-table.txt", + "multiqc/multiqc_data/bclconvert-sample-stats-table.txt", + "multiqc/multiqc_data/bclconvert_lane_counts.txt", + "multiqc/multiqc_data/bclconvert_sample_counts_Counts_per_lane.txt", + "multiqc/multiqc_data/bclconvert_sample_counts_Index_mismatches.txt", + "multiqc/multiqc_data/bclconvert_undetermined.txt", + "multiqc/multiqc_data/fastp-seq-content-gc-plot_Read_1_After_filtering.txt", + "multiqc/multiqc_data/fastp-seq-content-gc-plot_Read_1_Before_filtering.txt", + "multiqc/multiqc_data/fastp-seq-content-n-plot_Read_1_After_filtering.txt", + "multiqc/multiqc_data/fastp-seq-content-n-plot_Read_1_Before_filtering.txt", + "multiqc/multiqc_data/fastp-seq-quality-plot_Read_1_After_filtering.txt", + "multiqc/multiqc_data/fastp-seq-quality-plot_Read_1_Before_filtering.txt", + "multiqc/multiqc_data/fastp_filtered_reads_plot.txt", + "multiqc/multiqc_data/fastqc-status-check-heatmap.txt", + "multiqc/multiqc_data/fastqc_adapter_content_plot.txt", + "multiqc/multiqc_data/fastqc_overrepresented_sequences_plot.txt", + "multiqc/multiqc_data/fastqc_per_base_n_content_plot.txt", + "multiqc/multiqc_data/fastqc_per_base_sequence_quality_plot.txt", + "multiqc/multiqc_data/fastqc_per_sequence_gc_content_plot_Counts.txt", + "multiqc/multiqc_data/fastqc_per_sequence_gc_content_plot_Percentages.txt", + "multiqc/multiqc_data/fastqc_per_sequence_quality_scores_plot.txt", + "multiqc/multiqc_data/fastqc_sequence_counts_plot.txt", + "multiqc/multiqc_data/fastqc_sequence_duplication_levels_plot.txt", + "multiqc/multiqc_data/fastqc_sequence_length_distribution_plot.txt", + "multiqc/multiqc_data/fastqc_top_overrepresented_sequences_table.txt", + "multiqc/multiqc_data/multiqc.log", + "multiqc/multiqc_data/multiqc_bclconvert_bylane.txt", + "multiqc/multiqc_data/multiqc_bclconvert_bysample.txt", + "multiqc/multiqc_data/multiqc_citations.txt", + "multiqc/multiqc_data/multiqc_data.json", + "multiqc/multiqc_data/multiqc_fastp.txt", + "multiqc/multiqc_data/multiqc_fastqc.txt", + "multiqc/multiqc_data/multiqc_general_stats.txt", + "multiqc/multiqc_data/multiqc_software_versions.txt", + "multiqc/multiqc_data/multiqc_sources.txt", + "multiqc/multiqc_plots", + "multiqc/multiqc_plots/pdf", + "multiqc/multiqc_plots/pdf/bclconvert-lane-stats-table.pdf", + "multiqc/multiqc_plots/pdf/bclconvert-sample-stats-table.pdf", + "multiqc/multiqc_plots/pdf/bclconvert_lane_counts-cnt.pdf", + "multiqc/multiqc_plots/pdf/bclconvert_lane_counts-pct.pdf", + "multiqc/multiqc_plots/pdf/bclconvert_sample_counts_Counts_per_lane-cnt.pdf", + "multiqc/multiqc_plots/pdf/bclconvert_sample_counts_Counts_per_lane-pct.pdf", + "multiqc/multiqc_plots/pdf/bclconvert_sample_counts_Index_mismatches-cnt.pdf", + "multiqc/multiqc_plots/pdf/bclconvert_sample_counts_Index_mismatches-pct.pdf", + "multiqc/multiqc_plots/pdf/bclconvert_undetermined-cnt.pdf", + "multiqc/multiqc_plots/pdf/bclconvert_undetermined-pct.pdf", + "multiqc/multiqc_plots/pdf/fastp-seq-content-gc-plot_Read_1_After_filtering.pdf", + "multiqc/multiqc_plots/pdf/fastp-seq-content-gc-plot_Read_1_Before_filtering.pdf", + "multiqc/multiqc_plots/pdf/fastp-seq-content-n-plot_Read_1_After_filtering.pdf", + "multiqc/multiqc_plots/pdf/fastp-seq-content-n-plot_Read_1_Before_filtering.pdf", + "multiqc/multiqc_plots/pdf/fastp-seq-quality-plot_Read_1_After_filtering.pdf", + "multiqc/multiqc_plots/pdf/fastp-seq-quality-plot_Read_1_Before_filtering.pdf", + "multiqc/multiqc_plots/pdf/fastp_filtered_reads_plot-cnt.pdf", + "multiqc/multiqc_plots/pdf/fastp_filtered_reads_plot-pct.pdf", + "multiqc/multiqc_plots/pdf/fastqc-status-check-heatmap.pdf", + "multiqc/multiqc_plots/pdf/fastqc_adapter_content_plot.pdf", + "multiqc/multiqc_plots/pdf/fastqc_overrepresented_sequences_plot.pdf", + "multiqc/multiqc_plots/pdf/fastqc_per_base_n_content_plot.pdf", + "multiqc/multiqc_plots/pdf/fastqc_per_base_sequence_quality_plot.pdf", + "multiqc/multiqc_plots/pdf/fastqc_per_sequence_gc_content_plot_Counts.pdf", + "multiqc/multiqc_plots/pdf/fastqc_per_sequence_gc_content_plot_Percentages.pdf", + "multiqc/multiqc_plots/pdf/fastqc_per_sequence_quality_scores_plot.pdf", + "multiqc/multiqc_plots/pdf/fastqc_sequence_counts_plot-cnt.pdf", + "multiqc/multiqc_plots/pdf/fastqc_sequence_counts_plot-pct.pdf", + "multiqc/multiqc_plots/pdf/fastqc_sequence_duplication_levels_plot.pdf", + "multiqc/multiqc_plots/pdf/fastqc_sequence_length_distribution_plot.pdf", + "multiqc/multiqc_plots/pdf/fastqc_top_overrepresented_sequences_table.pdf", + "multiqc/multiqc_plots/pdf/general_stats_table.pdf", + "multiqc/multiqc_plots/png", + "multiqc/multiqc_plots/png/bclconvert-lane-stats-table.png", + "multiqc/multiqc_plots/png/bclconvert-sample-stats-table.png", + "multiqc/multiqc_plots/png/bclconvert_lane_counts-cnt.png", + "multiqc/multiqc_plots/png/bclconvert_lane_counts-pct.png", + "multiqc/multiqc_plots/png/bclconvert_sample_counts_Counts_per_lane-cnt.png", + "multiqc/multiqc_plots/png/bclconvert_sample_counts_Counts_per_lane-pct.png", + "multiqc/multiqc_plots/png/bclconvert_sample_counts_Index_mismatches-cnt.png", + "multiqc/multiqc_plots/png/bclconvert_sample_counts_Index_mismatches-pct.png", + "multiqc/multiqc_plots/png/bclconvert_undetermined-cnt.png", + "multiqc/multiqc_plots/png/bclconvert_undetermined-pct.png", + "multiqc/multiqc_plots/png/fastp-seq-content-gc-plot_Read_1_After_filtering.png", + "multiqc/multiqc_plots/png/fastp-seq-content-gc-plot_Read_1_Before_filtering.png", + "multiqc/multiqc_plots/png/fastp-seq-content-n-plot_Read_1_After_filtering.png", + "multiqc/multiqc_plots/png/fastp-seq-content-n-plot_Read_1_Before_filtering.png", + "multiqc/multiqc_plots/png/fastp-seq-quality-plot_Read_1_After_filtering.png", + "multiqc/multiqc_plots/png/fastp-seq-quality-plot_Read_1_Before_filtering.png", + "multiqc/multiqc_plots/png/fastp_filtered_reads_plot-cnt.png", + "multiqc/multiqc_plots/png/fastp_filtered_reads_plot-pct.png", + "multiqc/multiqc_plots/png/fastqc-status-check-heatmap.png", + "multiqc/multiqc_plots/png/fastqc_adapter_content_plot.png", + "multiqc/multiqc_plots/png/fastqc_overrepresented_sequences_plot.png", + "multiqc/multiqc_plots/png/fastqc_per_base_n_content_plot.png", + "multiqc/multiqc_plots/png/fastqc_per_base_sequence_quality_plot.png", + "multiqc/multiqc_plots/png/fastqc_per_sequence_gc_content_plot_Counts.png", + "multiqc/multiqc_plots/png/fastqc_per_sequence_gc_content_plot_Percentages.png", + "multiqc/multiqc_plots/png/fastqc_per_sequence_quality_scores_plot.png", + "multiqc/multiqc_plots/png/fastqc_sequence_counts_plot-cnt.png", + "multiqc/multiqc_plots/png/fastqc_sequence_counts_plot-pct.png", + "multiqc/multiqc_plots/png/fastqc_sequence_duplication_levels_plot.png", + "multiqc/multiqc_plots/png/fastqc_sequence_length_distribution_plot.png", + "multiqc/multiqc_plots/png/fastqc_top_overrepresented_sequences_table.png", + "multiqc/multiqc_plots/png/general_stats_table.png", + "multiqc/multiqc_plots/svg", + "multiqc/multiqc_plots/svg/bclconvert-lane-stats-table.svg", + "multiqc/multiqc_plots/svg/bclconvert-sample-stats-table.svg", + "multiqc/multiqc_plots/svg/bclconvert_lane_counts-cnt.svg", + "multiqc/multiqc_plots/svg/bclconvert_lane_counts-pct.svg", + "multiqc/multiqc_plots/svg/bclconvert_sample_counts_Counts_per_lane-cnt.svg", + "multiqc/multiqc_plots/svg/bclconvert_sample_counts_Counts_per_lane-pct.svg", + "multiqc/multiqc_plots/svg/bclconvert_sample_counts_Index_mismatches-cnt.svg", + "multiqc/multiqc_plots/svg/bclconvert_sample_counts_Index_mismatches-pct.svg", + "multiqc/multiqc_plots/svg/bclconvert_undetermined-cnt.svg", + "multiqc/multiqc_plots/svg/bclconvert_undetermined-pct.svg", + "multiqc/multiqc_plots/svg/fastp-seq-content-gc-plot_Read_1_After_filtering.svg", + "multiqc/multiqc_plots/svg/fastp-seq-content-gc-plot_Read_1_Before_filtering.svg", + "multiqc/multiqc_plots/svg/fastp-seq-content-n-plot_Read_1_After_filtering.svg", + "multiqc/multiqc_plots/svg/fastp-seq-content-n-plot_Read_1_Before_filtering.svg", + "multiqc/multiqc_plots/svg/fastp-seq-quality-plot_Read_1_After_filtering.svg", + "multiqc/multiqc_plots/svg/fastp-seq-quality-plot_Read_1_Before_filtering.svg", + "multiqc/multiqc_plots/svg/fastp_filtered_reads_plot-cnt.svg", + "multiqc/multiqc_plots/svg/fastp_filtered_reads_plot-pct.svg", + "multiqc/multiqc_plots/svg/fastqc-status-check-heatmap.svg", + "multiqc/multiqc_plots/svg/fastqc_adapter_content_plot.svg", + "multiqc/multiqc_plots/svg/fastqc_overrepresented_sequences_plot.svg", + "multiqc/multiqc_plots/svg/fastqc_per_base_n_content_plot.svg", + "multiqc/multiqc_plots/svg/fastqc_per_base_sequence_quality_plot.svg", + "multiqc/multiqc_plots/svg/fastqc_per_sequence_gc_content_plot_Counts.svg", + "multiqc/multiqc_plots/svg/fastqc_per_sequence_gc_content_plot_Percentages.svg", + "multiqc/multiqc_plots/svg/fastqc_per_sequence_quality_scores_plot.svg", + "multiqc/multiqc_plots/svg/fastqc_sequence_counts_plot-cnt.svg", + "multiqc/multiqc_plots/svg/fastqc_sequence_counts_plot-pct.svg", + "multiqc/multiqc_plots/svg/fastqc_sequence_duplication_levels_plot.svg", + "multiqc/multiqc_plots/svg/fastqc_sequence_length_distribution_plot.svg", + "multiqc/multiqc_plots/svg/fastqc_top_overrepresented_sequences_table.svg", + "multiqc/multiqc_plots/svg/general_stats_table.svg", + "multiqc/multiqc_report.html", + "pipeline_info", + "pipeline_info/nf_core_pipeline_software_mqc_versions.yml", + "samplesheet", + "samplesheet/samplesheet.csv" + ], + [ + "HBRR1_S1_L001.fastp.fastq.gz:md5,451657490d4816dd5ff904e34ecc7fdf", + "HBRR1_S1_L001.fastp.fastq.gz.md5:md5,573455dfd3f2e7fa6b1eee838659c03a", + "HBRR1_S1_L001.fastp.json:md5,d34d8a4237b3ff4585f5b3fc84172d02", + "HBRR1_S1_L001_R1_001.fastq.gz:md5,451657490d4816dd5ff904e34ecc7fdf", + "HBRR1_S1_L001_fastqc_data.txt:md5,e3ef09af2b44d86b7b32494f1ce5fc4c", + "HBRR1_S1_L001_summary.txt:md5,53a5e6bac1e853f23d27d6966e52df81", + "HBRR2_S2_L001.fastp.fastq.gz:md5,3b9e4fc70ebc608b48d1f0027265e9b8", + "HBRR2_S2_L001.fastp.fastq.gz.md5:md5,50fbb4ab07c7641277f2f7352babe4bd", + "HBRR2_S2_L001.fastp.json:md5,f0ff03f6bf6c1a3878ae2eebba0f070d", + "HBRR2_S2_L001_R1_001.fastq.gz:md5,3b9e4fc70ebc608b48d1f0027265e9b8", + "HBRR2_S2_L001_fastqc_data.txt:md5,1c5127f5835c98503af2c7fa98da2982", + "HBRR2_S2_L001_summary.txt:md5,f3e0bc27d30d0f6e10ad76be47017881", + "HBRR3_S3_L001.fastp.fastq.gz:md5,a110eefaee1da4d99398500e55919f0c", + "HBRR3_S3_L001.fastp.fastq.gz.md5:md5,e744c0e523aa5cd3d5422ded60f28109", + "HBRR3_S3_L001.fastp.json:md5,c2abb3a7d3e46392cad6b0230d744ac2", + "HBRR3_S3_L001_R1_001.fastq.gz:md5,a110eefaee1da4d99398500e55919f0c", + "HBRR3_S3_L001_fastqc_data.txt:md5,33a618ec1d0f8d16987adf55115a89ae", + "HBRR3_S3_L001_summary.txt:md5,fbe9c4281a768a826429e328f5eb2a34", + "CorrectedIntMetricsOut.bin:md5,4d82e208f18bfd51a5f9275e05d073ba", + "EmpiricalPhasingMetricsOut.bin:md5,0e9d6b71c90661d800b1129a0097c301", + "ErrorMetricsOut.bin:md5,dbc41ced845d7645451c6995e5774c0b", + "EventMetricsOut.bin:md5,5a93a812df6a55e6d7a0f26bdf176e93", + "ExtendedTileMetricsOut.bin:md5,5ffaee26c4ed0074f69d8c62293118f9", + "ExtractionMetricsOut.bin:md5,a4d4c0d3b9afe453fae7ca6118c9346d", + "FWHMGridMetricsOut.bin:md5,80e7c3652f72edbc5f661a1f1b3b28fc", + "ImageMetricsOut.bin:md5,2dddf68f924261ab37f83e8ee750b6f2", + "IndexMetricsOut.bin:md5,e63ea5cfa848feab8a40ba469ff46845", + "PFGridMetricsOut.bin:md5,e65fed6f9594655657521a5359759b01", + "QMetrics2030Out.bin:md5,670b3c089d4d264103a01105d12abbe8", + "QMetricsByLaneOut.bin:md5,b6d8d8ff4144f33a3f4304743db53f97", + "QMetricsOut.bin:md5,13fee543cefb5d5ae1c108ccbb07f0e6", + "RegistrationMetricsOut.bin:md5,b201979275957afbbcea634698afc352", + "TileMetricsOut.bin:md5,0d2aa2c7e39eb33e61d2ed248068ed9d", + "Adapter_Cycle_Metrics.csv:md5,757778bb0ee048463c423dff14133a51", + "Adapter_Metrics.csv:md5,5cbba841c650097f1e759c2b75c7a005", + "Demultiplex_Stats.csv:md5,40c3efd7ffb9d02fcc97028f6ee98c96", + "Demultiplex_Tile_Stats.csv:md5,916e3e488c4ed847249d7d46401a57ff", + "IndexMetricsOut.bin:md5,9a6ad90fd45b3abd2360285feff76509", + "Index_Hopping_Counts.csv:md5,1059369e375fd8f8423c0f6c934be978", + "Quality_Metrics.csv:md5,215e001631d9383f73360975d5726f14", + "Quality_Tile_Metrics.csv:md5,122f967d30318f79f5a7ef59339f8275", + "RunInfo.xml:md5,d3d94b916915b35224ec362c64542190", + "SampleSheet.csv:md5,c32433167a5c56d5c15952c2e7948898", + "Top_Unknown_Barcodes.csv:md5,b5fa3ea9ba12fd35650e36e6c5cbdc99", + "fastq_list.csv:md5,07cbe4173e18cbdef16ee8feb4adaf7d", + "UHRR1_S4_L001.fastp.fastq.gz:md5,03f215bcb4005804f60acccfe4aaef78", + "UHRR1_S4_L001.fastp.fastq.gz.md5:md5,baa87b03873661fc6c7f318e4b19de55", + "UHRR1_S4_L001.fastp.json:md5,6b50a023754acafdd32c2bb103650a83", + "UHRR1_S4_L001_R1_001.fastq.gz:md5,b470c82d2002c563c42786060ae364b9", + "UHRR1_S4_L001_fastqc_data.txt:md5,be145fdf6b50140c98d7590d85e891f2", + "UHRR1_S4_L001_summary.txt:md5,c6c342cbcad3fc68343284c24e4a8b4a", + "UHRR2_S5_L001.fastp.fastq.gz:md5,2186d5f37865f970d223953e9a5412ae", + "UHRR2_S5_L001.fastp.fastq.gz.md5:md5,3996768dfb0c678b758399ca0aecb4dd", + "UHRR2_S5_L001.fastp.json:md5,db5ef9bec3dd04d37ada557785f43fb7", + "UHRR2_S5_L001_R1_001.fastq.gz:md5,47c36adf557bf4d37b0a84d055125290", + "UHRR2_S5_L001_fastqc_data.txt:md5,da424cfd66107dc895705fbdd5e7c94b", + "UHRR2_S5_L001_summary.txt:md5,121a0aeaf860fae497a27e8eceff3283", + "UHRR3_S6_L001.fastp.fastq.gz:md5,674c4989c2270d88612fcf221e3e0950", + "UHRR3_S6_L001.fastp.fastq.gz.md5:md5,22f315bfc3ebbe1fbf9eeca758fdd137", + "UHRR3_S6_L001.fastp.json:md5,1e08e9fa69ad134ef69dc11cbbfd03ef", + "UHRR3_S6_L001_R1_001.fastq.gz:md5,bdb407e3ded3691479ec25f5f1df3b07", + "UHRR3_S6_L001_fastqc_data.txt:md5,8cf45b23b2176f83309b2bd6162adb0d", + "UHRR3_S6_L001_summary.txt:md5,d7d5a014b51d64e4da1a113a4ad79eda", + "Undetermined_S0_L001_R1_001.fastq.gz:md5,b0b4daae001636cf033ff760a5ab479d", + "miniseq_truseq_smrna_no_adapters.csv:md5,c32433167a5c56d5c15952c2e7948898", + "bclconvert-lane-stats-table.txt:md5,9295e908a296865f1ea271ae4181ab04", + "bclconvert-sample-stats-table.txt:md5,703e85fc7ef1b3784c02e8fc28e6dbd6", + "bclconvert_lane_counts.txt:md5,32e8acea6fd6ef76943100329be22fee", + "bclconvert_sample_counts_Counts_per_lane.txt:md5,2eb58439a3eb1eee508bdce0ee340649", + "bclconvert_sample_counts_Index_mismatches.txt:md5,94023737055873c151ea9f7e3f563f73", + "bclconvert_undetermined.txt:md5,3fda7704b2b8cbab81a48ad4e5552243", + "fastp-seq-content-gc-plot_Read_1_After_filtering.txt:md5,f34d80cbc50fb151f04c9739c62412f0", + "fastp-seq-content-gc-plot_Read_1_Before_filtering.txt:md5,c50799d5b2e88aaf6d134a0c91799617", + "fastp-seq-content-n-plot_Read_1_After_filtering.txt:md5,1787c362916517c9b922b7bcd5940bf7", + "fastp-seq-content-n-plot_Read_1_Before_filtering.txt:md5,ae11e4c047b4f2933fe09261c305c520", + "fastp-seq-quality-plot_Read_1_After_filtering.txt:md5,d1c9f76c20c4940880126246fa2c3412", + "fastp-seq-quality-plot_Read_1_Before_filtering.txt:md5,f8b94a819f2b15b5a47c4b1003c32a18", + "fastp_filtered_reads_plot.txt:md5,8ab004632691b04b665920977beb8924", + "fastqc_adapter_content_plot.txt:md5,a209adf87470f3a106e95a8636199b66", + "fastqc_overrepresented_sequences_plot.txt:md5,bf4b46c609cb609742c369cb251f2e2c", + "fastqc_per_base_n_content_plot.txt:md5,b7793753c3e72a9ecf52e9be83024cb2", + "fastqc_per_base_sequence_quality_plot.txt:md5,d1c9f76c20c4940880126246fa2c3412", + "fastqc_per_sequence_gc_content_plot_Counts.txt:md5,0b2a4ff7cf154b2a500236edd1e25702", + "fastqc_per_sequence_gc_content_plot_Percentages.txt:md5,ee01bcc9619fbb1f817c6c892743f25f", + "fastqc_per_sequence_quality_scores_plot.txt:md5,97c62777c755c89ed8e7ca802a111329", + "fastqc_sequence_counts_plot.txt:md5,4b906147cf7e362c83df2bf639d9c213", + "fastqc_sequence_duplication_levels_plot.txt:md5,6da1431aca488bb451e8a2b03dcb1d59", + "fastqc_sequence_length_distribution_plot.txt:md5,70de269b5d06021f286c44d3ac91b54b", + "multiqc_bclconvert_bylane.txt:md5,5067dc968fcca1f47db0663f4d407807", + "multiqc_bclconvert_bysample.txt:md5,29634775947e43972c864bdb08ceb61e", + "multiqc_citations.txt:md5,d35df50e9903a96a2b3bce3c1fbc8ad2" + ] + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.09.2" + }, + "timestamp": "2024-10-16T10:59:08.175426" + } +} diff --git a/tests/fqtk.nf.test b/tests/fqtk.nf.test new file mode 100644 index 00000000..3dea13d8 --- /dev/null +++ b/tests/fqtk.nf.test @@ -0,0 +1,36 @@ +nextflow_pipeline { + + name "Test Workflow main.nf - FQTK" + script "../main.nf" + profile "test_fqtk" + tag "fqtk" + + test("FQTK") { + + when { + params { + outdir = "$outputDir" + } + } + + then { + // stable_name: All files + folders in ${params.outdir}/ with a stable name + def stable_name = getAllFilesFromDir(params.outdir, relative: true, includeDir: true, ignore: ['pipeline_info/*.{html,json,txt}']) + // stable_path: All files in ${params.outdir}/ with stable content + def stable_path = getAllFilesFromDir(params.outdir, ignoreFile: 'tests/.nftignore') + assertAll( + { assert workflow.success}, + { assert snapshot( + // Number of successful tasks + workflow.trace.succeeded().size(), + // pipeline versions.yml file for multiqc from which Nextflow version is removed because we tests pipelines on multiple Nextflow versions + removeNextflowVersion("$outputDir/pipeline_info/nf_core_pipeline_software_mqc_versions.yml"), + // All stable path name, with a relative path + stable_name, + // All files with stable contents + stable_path + ).match() } + ) + } + } +} diff --git a/tests/fqtk.nf.test.snap b/tests/fqtk.nf.test.snap new file mode 100644 index 00000000..c5cbb5ec --- /dev/null +++ b/tests/fqtk.nf.test.snap @@ -0,0 +1,735 @@ +{ + "FQTK": { + "content": [ + 129, + { + "CSV2TSV": { + "sed": 4.8 + }, + "FALCO": { + "falco": "1.2.1" + }, + "FASTP": { + "fastp": "0.23.4" + }, + "FQTK": { + "fqtk": "0.2.1" + }, + "MD5SUM": { + "md5sum": 8.3 + }, + "UNTAR_FLOWCELL": { + "untar": 1.34 + }, + "Workflow": { + "nf-core/demultiplex": "v1.5.2" + } + }, + [ + "csv2tsv", + "csv2tsv/samplesheet.tsv", + "fastq", + "fastq/s1.samplesheet.csv", + "fastq/s10.samplesheet.csv", + "fastq/s11.samplesheet.csv", + "fastq/s12.samplesheet.csv", + "fastq/s13.samplesheet.csv", + "fastq/s14.samplesheet.csv", + "fastq/s15.samplesheet.csv", + "fastq/s16.samplesheet.csv", + "fastq/s17.samplesheet.csv", + "fastq/s18.samplesheet.csv", + "fastq/s19.samplesheet.csv", + "fastq/s2.samplesheet.csv", + "fastq/s20.samplesheet.csv", + "fastq/s21.samplesheet.csv", + "fastq/s22.samplesheet.csv", + "fastq/s23.samplesheet.csv", + "fastq/s24.samplesheet.csv", + "fastq/s3.samplesheet.csv", + "fastq/s4.samplesheet.csv", + "fastq/s5.samplesheet.csv", + "fastq/s6.samplesheet.csv", + "fastq/s7.samplesheet.csv", + "fastq/s8.samplesheet.csv", + "fastq/s9.samplesheet.csv", + "fastq/unmatched.samplesheet.csv", + "multiqc", + "multiqc/multiqc_data", + "multiqc/multiqc_data/fastp-seq-content-gc-plot_Read_1_After_filtering.txt", + "multiqc/multiqc_data/fastp-seq-content-gc-plot_Read_1_Before_filtering.txt", + "multiqc/multiqc_data/fastp-seq-content-gc-plot_Read_2_After_filtering.txt", + "multiqc/multiqc_data/fastp-seq-content-gc-plot_Read_2_Before_filtering.txt", + "multiqc/multiqc_data/fastp-seq-content-n-plot_Read_1_After_filtering.txt", + "multiqc/multiqc_data/fastp-seq-content-n-plot_Read_1_Before_filtering.txt", + "multiqc/multiqc_data/fastp-seq-content-n-plot_Read_2_After_filtering.txt", + "multiqc/multiqc_data/fastp-seq-content-n-plot_Read_2_Before_filtering.txt", + "multiqc/multiqc_data/fastp-seq-quality-plot_Read_1_After_filtering.txt", + "multiqc/multiqc_data/fastp-seq-quality-plot_Read_1_Before_filtering.txt", + "multiqc/multiqc_data/fastp-seq-quality-plot_Read_2_After_filtering.txt", + "multiqc/multiqc_data/fastp-seq-quality-plot_Read_2_Before_filtering.txt", + "multiqc/multiqc_data/fastp_filtered_reads_plot.txt", + "multiqc/multiqc_data/fastqc-status-check-heatmap.txt", + "multiqc/multiqc_data/fastqc_per_base_n_content_plot.txt", + "multiqc/multiqc_data/fastqc_per_base_sequence_quality_plot.txt", + "multiqc/multiqc_data/fastqc_per_sequence_gc_content_plot_Counts.txt", + "multiqc/multiqc_data/fastqc_per_sequence_gc_content_plot_Percentages.txt", + "multiqc/multiqc_data/fastqc_per_sequence_quality_scores_plot.txt", + "multiqc/multiqc_data/fastqc_sequence_counts_plot.txt", + "multiqc/multiqc_data/fastqc_sequence_duplication_levels_plot.txt", + "multiqc/multiqc_data/fastqc_top_overrepresented_sequences_table.txt", + "multiqc/multiqc_data/multiqc.log", + "multiqc/multiqc_data/multiqc_citations.txt", + "multiqc/multiqc_data/multiqc_data.json", + "multiqc/multiqc_data/multiqc_fastp.txt", + "multiqc/multiqc_data/multiqc_fastqc.txt", + "multiqc/multiqc_data/multiqc_general_stats.txt", + "multiqc/multiqc_data/multiqc_software_versions.txt", + "multiqc/multiqc_data/multiqc_sources.txt", + "multiqc/multiqc_plots", + "multiqc/multiqc_plots/pdf", + "multiqc/multiqc_plots/pdf/fastp-seq-content-gc-plot_Read_1_After_filtering.pdf", + "multiqc/multiqc_plots/pdf/fastp-seq-content-gc-plot_Read_1_Before_filtering.pdf", + "multiqc/multiqc_plots/pdf/fastp-seq-content-gc-plot_Read_2_After_filtering.pdf", + "multiqc/multiqc_plots/pdf/fastp-seq-content-gc-plot_Read_2_Before_filtering.pdf", + "multiqc/multiqc_plots/pdf/fastp-seq-content-n-plot_Read_1_After_filtering.pdf", + "multiqc/multiqc_plots/pdf/fastp-seq-content-n-plot_Read_1_Before_filtering.pdf", + "multiqc/multiqc_plots/pdf/fastp-seq-content-n-plot_Read_2_After_filtering.pdf", + "multiqc/multiqc_plots/pdf/fastp-seq-content-n-plot_Read_2_Before_filtering.pdf", + "multiqc/multiqc_plots/pdf/fastp-seq-quality-plot_Read_1_After_filtering.pdf", + "multiqc/multiqc_plots/pdf/fastp-seq-quality-plot_Read_1_Before_filtering.pdf", + "multiqc/multiqc_plots/pdf/fastp-seq-quality-plot_Read_2_After_filtering.pdf", + "multiqc/multiqc_plots/pdf/fastp-seq-quality-plot_Read_2_Before_filtering.pdf", + "multiqc/multiqc_plots/pdf/fastp_filtered_reads_plot-cnt.pdf", + "multiqc/multiqc_plots/pdf/fastp_filtered_reads_plot-pct.pdf", + "multiqc/multiqc_plots/pdf/fastqc-status-check-heatmap.pdf", + "multiqc/multiqc_plots/pdf/fastqc_per_base_n_content_plot.pdf", + "multiqc/multiqc_plots/pdf/fastqc_per_base_sequence_quality_plot.pdf", + "multiqc/multiqc_plots/pdf/fastqc_per_sequence_gc_content_plot_Counts.pdf", + "multiqc/multiqc_plots/pdf/fastqc_per_sequence_gc_content_plot_Percentages.pdf", + "multiqc/multiqc_plots/pdf/fastqc_per_sequence_quality_scores_plot.pdf", + "multiqc/multiqc_plots/pdf/fastqc_sequence_counts_plot-cnt.pdf", + "multiqc/multiqc_plots/pdf/fastqc_sequence_counts_plot-pct.pdf", + "multiqc/multiqc_plots/pdf/fastqc_sequence_duplication_levels_plot.pdf", + "multiqc/multiqc_plots/pdf/fastqc_top_overrepresented_sequences_table.pdf", + "multiqc/multiqc_plots/pdf/general_stats_table.pdf", + "multiqc/multiqc_plots/png", + "multiqc/multiqc_plots/png/fastp-seq-content-gc-plot_Read_1_After_filtering.png", + "multiqc/multiqc_plots/png/fastp-seq-content-gc-plot_Read_1_Before_filtering.png", + "multiqc/multiqc_plots/png/fastp-seq-content-gc-plot_Read_2_After_filtering.png", + "multiqc/multiqc_plots/png/fastp-seq-content-gc-plot_Read_2_Before_filtering.png", + "multiqc/multiqc_plots/png/fastp-seq-content-n-plot_Read_1_After_filtering.png", + "multiqc/multiqc_plots/png/fastp-seq-content-n-plot_Read_1_Before_filtering.png", + "multiqc/multiqc_plots/png/fastp-seq-content-n-plot_Read_2_After_filtering.png", + "multiqc/multiqc_plots/png/fastp-seq-content-n-plot_Read_2_Before_filtering.png", + "multiqc/multiqc_plots/png/fastp-seq-quality-plot_Read_1_After_filtering.png", + "multiqc/multiqc_plots/png/fastp-seq-quality-plot_Read_1_Before_filtering.png", + "multiqc/multiqc_plots/png/fastp-seq-quality-plot_Read_2_After_filtering.png", + "multiqc/multiqc_plots/png/fastp-seq-quality-plot_Read_2_Before_filtering.png", + "multiqc/multiqc_plots/png/fastp_filtered_reads_plot-cnt.png", + "multiqc/multiqc_plots/png/fastp_filtered_reads_plot-pct.png", + "multiqc/multiqc_plots/png/fastqc-status-check-heatmap.png", + "multiqc/multiqc_plots/png/fastqc_per_base_n_content_plot.png", + "multiqc/multiqc_plots/png/fastqc_per_base_sequence_quality_plot.png", + "multiqc/multiqc_plots/png/fastqc_per_sequence_gc_content_plot_Counts.png", + "multiqc/multiqc_plots/png/fastqc_per_sequence_gc_content_plot_Percentages.png", + "multiqc/multiqc_plots/png/fastqc_per_sequence_quality_scores_plot.png", + "multiqc/multiqc_plots/png/fastqc_sequence_counts_plot-cnt.png", + "multiqc/multiqc_plots/png/fastqc_sequence_counts_plot-pct.png", + "multiqc/multiqc_plots/png/fastqc_sequence_duplication_levels_plot.png", + "multiqc/multiqc_plots/png/fastqc_top_overrepresented_sequences_table.png", + "multiqc/multiqc_plots/png/general_stats_table.png", + "multiqc/multiqc_plots/svg", + "multiqc/multiqc_plots/svg/fastp-seq-content-gc-plot_Read_1_After_filtering.svg", + "multiqc/multiqc_plots/svg/fastp-seq-content-gc-plot_Read_1_Before_filtering.svg", + "multiqc/multiqc_plots/svg/fastp-seq-content-gc-plot_Read_2_After_filtering.svg", + "multiqc/multiqc_plots/svg/fastp-seq-content-gc-plot_Read_2_Before_filtering.svg", + "multiqc/multiqc_plots/svg/fastp-seq-content-n-plot_Read_1_After_filtering.svg", + "multiqc/multiqc_plots/svg/fastp-seq-content-n-plot_Read_1_Before_filtering.svg", + "multiqc/multiqc_plots/svg/fastp-seq-content-n-plot_Read_2_After_filtering.svg", + "multiqc/multiqc_plots/svg/fastp-seq-content-n-plot_Read_2_Before_filtering.svg", + "multiqc/multiqc_plots/svg/fastp-seq-quality-plot_Read_1_After_filtering.svg", + "multiqc/multiqc_plots/svg/fastp-seq-quality-plot_Read_1_Before_filtering.svg", + "multiqc/multiqc_plots/svg/fastp-seq-quality-plot_Read_2_After_filtering.svg", + "multiqc/multiqc_plots/svg/fastp-seq-quality-plot_Read_2_Before_filtering.svg", + "multiqc/multiqc_plots/svg/fastp_filtered_reads_plot-cnt.svg", + "multiqc/multiqc_plots/svg/fastp_filtered_reads_plot-pct.svg", + "multiqc/multiqc_plots/svg/fastqc-status-check-heatmap.svg", + "multiqc/multiqc_plots/svg/fastqc_per_base_n_content_plot.svg", + "multiqc/multiqc_plots/svg/fastqc_per_base_sequence_quality_plot.svg", + "multiqc/multiqc_plots/svg/fastqc_per_sequence_gc_content_plot_Counts.svg", + "multiqc/multiqc_plots/svg/fastqc_per_sequence_gc_content_plot_Percentages.svg", + "multiqc/multiqc_plots/svg/fastqc_per_sequence_quality_scores_plot.svg", + "multiqc/multiqc_plots/svg/fastqc_sequence_counts_plot-cnt.svg", + "multiqc/multiqc_plots/svg/fastqc_sequence_counts_plot-pct.svg", + "multiqc/multiqc_plots/svg/fastqc_sequence_duplication_levels_plot.svg", + "multiqc/multiqc_plots/svg/fastqc_top_overrepresented_sequences_table.svg", + "multiqc/multiqc_plots/svg/general_stats_table.svg", + "multiqc/multiqc_report.html", + "pipeline_info", + "pipeline_info/nf_core_pipeline_software_mqc_versions.yml", + "samplesheet", + "samplesheet/samplesheet.csv", + "test", + "test.csv", + "test/demux-metrics.txt", + "test/s1.fastp.html", + "test/s1.fastp.json", + "test/s10.fastp.html", + "test/s10.fastp.json", + "test/s10_1.fastp.fastq.gz", + "test/s10_1.fastp.fastq.gz.md5", + "test/s10_1.fastp.fastq.gz_fastqc_data.txt", + "test/s10_1.fastp.fastq.gz_fastqc_report.html", + "test/s10_1.fastp.fastq.gz_summary.txt", + "test/s10_2.fastp.fastq.gz", + "test/s10_2.fastp.fastq.gz.md5", + "test/s10_2.fastp.fastq.gz_fastqc_data.txt", + "test/s10_2.fastp.fastq.gz_fastqc_report.html", + "test/s10_2.fastp.fastq.gz_summary.txt", + "test/s11.fastp.html", + "test/s11.fastp.json", + "test/s11_1.fastp.fastq.gz", + "test/s11_1.fastp.fastq.gz.md5", + "test/s11_1.fastp.fastq.gz_fastqc_data.txt", + "test/s11_1.fastp.fastq.gz_fastqc_report.html", + "test/s11_1.fastp.fastq.gz_summary.txt", + "test/s11_2.fastp.fastq.gz", + "test/s11_2.fastp.fastq.gz.md5", + "test/s11_2.fastp.fastq.gz_fastqc_data.txt", + "test/s11_2.fastp.fastq.gz_fastqc_report.html", + "test/s11_2.fastp.fastq.gz_summary.txt", + "test/s12.fastp.html", + "test/s12.fastp.json", + "test/s12_1.fastp.fastq.gz", + "test/s12_1.fastp.fastq.gz.md5", + "test/s12_1.fastp.fastq.gz_fastqc_data.txt", + "test/s12_1.fastp.fastq.gz_fastqc_report.html", + "test/s12_1.fastp.fastq.gz_summary.txt", + "test/s12_2.fastp.fastq.gz", + "test/s12_2.fastp.fastq.gz.md5", + "test/s12_2.fastp.fastq.gz_fastqc_data.txt", + "test/s12_2.fastp.fastq.gz_fastqc_report.html", + "test/s12_2.fastp.fastq.gz_summary.txt", + "test/s13.fastp.html", + "test/s13.fastp.json", + "test/s13_1.fastp.fastq.gz", + "test/s13_1.fastp.fastq.gz.md5", + "test/s13_1.fastp.fastq.gz_fastqc_data.txt", + "test/s13_1.fastp.fastq.gz_fastqc_report.html", + "test/s13_1.fastp.fastq.gz_summary.txt", + "test/s13_2.fastp.fastq.gz", + "test/s13_2.fastp.fastq.gz.md5", + "test/s13_2.fastp.fastq.gz_fastqc_data.txt", + "test/s13_2.fastp.fastq.gz_fastqc_report.html", + "test/s13_2.fastp.fastq.gz_summary.txt", + "test/s14.fastp.html", + "test/s14.fastp.json", + "test/s14_1.fastp.fastq.gz", + "test/s14_1.fastp.fastq.gz.md5", + "test/s14_1.fastp.fastq.gz_fastqc_data.txt", + "test/s14_1.fastp.fastq.gz_fastqc_report.html", + "test/s14_1.fastp.fastq.gz_summary.txt", + "test/s14_2.fastp.fastq.gz", + "test/s14_2.fastp.fastq.gz.md5", + "test/s14_2.fastp.fastq.gz_fastqc_data.txt", + "test/s14_2.fastp.fastq.gz_fastqc_report.html", + "test/s14_2.fastp.fastq.gz_summary.txt", + "test/s15.fastp.html", + "test/s15.fastp.json", + "test/s15_1.fastp.fastq.gz", + "test/s15_1.fastp.fastq.gz.md5", + "test/s15_1.fastp.fastq.gz_fastqc_data.txt", + "test/s15_1.fastp.fastq.gz_fastqc_report.html", + "test/s15_1.fastp.fastq.gz_summary.txt", + "test/s15_2.fastp.fastq.gz", + "test/s15_2.fastp.fastq.gz.md5", + "test/s15_2.fastp.fastq.gz_fastqc_data.txt", + "test/s15_2.fastp.fastq.gz_fastqc_report.html", + "test/s15_2.fastp.fastq.gz_summary.txt", + "test/s16.fastp.html", + "test/s16.fastp.json", + "test/s16_1.fastp.fastq.gz", + "test/s16_1.fastp.fastq.gz.md5", + "test/s16_1.fastp.fastq.gz_fastqc_data.txt", + "test/s16_1.fastp.fastq.gz_fastqc_report.html", + "test/s16_1.fastp.fastq.gz_summary.txt", + "test/s16_2.fastp.fastq.gz", + "test/s16_2.fastp.fastq.gz.md5", + "test/s16_2.fastp.fastq.gz_fastqc_data.txt", + "test/s16_2.fastp.fastq.gz_fastqc_report.html", + "test/s16_2.fastp.fastq.gz_summary.txt", + "test/s17.fastp.html", + "test/s17.fastp.json", + "test/s17_1.fastp.fastq.gz", + "test/s17_1.fastp.fastq.gz.md5", + "test/s17_1.fastp.fastq.gz_fastqc_data.txt", + "test/s17_1.fastp.fastq.gz_fastqc_report.html", + "test/s17_1.fastp.fastq.gz_summary.txt", + "test/s17_2.fastp.fastq.gz", + "test/s17_2.fastp.fastq.gz.md5", + "test/s17_2.fastp.fastq.gz_fastqc_data.txt", + "test/s17_2.fastp.fastq.gz_fastqc_report.html", + "test/s17_2.fastp.fastq.gz_summary.txt", + "test/s18.fastp.html", + "test/s18.fastp.json", + "test/s18_1.fastp.fastq.gz", + "test/s18_1.fastp.fastq.gz.md5", + "test/s18_1.fastp.fastq.gz_fastqc_data.txt", + "test/s18_1.fastp.fastq.gz_fastqc_report.html", + "test/s18_1.fastp.fastq.gz_summary.txt", + "test/s18_2.fastp.fastq.gz", + "test/s18_2.fastp.fastq.gz.md5", + "test/s18_2.fastp.fastq.gz_fastqc_data.txt", + "test/s18_2.fastp.fastq.gz_fastqc_report.html", + "test/s18_2.fastp.fastq.gz_summary.txt", + "test/s19.fastp.html", + "test/s19.fastp.json", + "test/s19_1.fastp.fastq.gz", + "test/s19_1.fastp.fastq.gz.md5", + "test/s19_1.fastp.fastq.gz_fastqc_data.txt", + "test/s19_1.fastp.fastq.gz_fastqc_report.html", + "test/s19_1.fastp.fastq.gz_summary.txt", + "test/s19_2.fastp.fastq.gz", + "test/s19_2.fastp.fastq.gz.md5", + "test/s19_2.fastp.fastq.gz_fastqc_data.txt", + "test/s19_2.fastp.fastq.gz_fastqc_report.html", + "test/s19_2.fastp.fastq.gz_summary.txt", + "test/s1_1.fastp.fastq.gz", + "test/s1_1.fastp.fastq.gz.md5", + "test/s1_1.fastp.fastq.gz_fastqc_data.txt", + "test/s1_1.fastp.fastq.gz_fastqc_report.html", + "test/s1_1.fastp.fastq.gz_summary.txt", + "test/s1_2.fastp.fastq.gz", + "test/s1_2.fastp.fastq.gz.md5", + "test/s1_2.fastp.fastq.gz_fastqc_data.txt", + "test/s1_2.fastp.fastq.gz_fastqc_report.html", + "test/s1_2.fastp.fastq.gz_summary.txt", + "test/s2.fastp.html", + "test/s2.fastp.json", + "test/s20.fastp.html", + "test/s20.fastp.json", + "test/s20_1.fastp.fastq.gz", + "test/s20_1.fastp.fastq.gz.md5", + "test/s20_1.fastp.fastq.gz_fastqc_data.txt", + "test/s20_1.fastp.fastq.gz_fastqc_report.html", + "test/s20_1.fastp.fastq.gz_summary.txt", + "test/s20_2.fastp.fastq.gz", + "test/s20_2.fastp.fastq.gz.md5", + "test/s20_2.fastp.fastq.gz_fastqc_data.txt", + "test/s20_2.fastp.fastq.gz_fastqc_report.html", + "test/s20_2.fastp.fastq.gz_summary.txt", + "test/s21.fastp.html", + "test/s21.fastp.json", + "test/s21_1.fastp.fastq.gz", + "test/s21_1.fastp.fastq.gz.md5", + "test/s21_1.fastp.fastq.gz_fastqc_data.txt", + "test/s21_1.fastp.fastq.gz_fastqc_report.html", + "test/s21_1.fastp.fastq.gz_summary.txt", + "test/s21_2.fastp.fastq.gz", + "test/s21_2.fastp.fastq.gz.md5", + "test/s21_2.fastp.fastq.gz_fastqc_data.txt", + "test/s21_2.fastp.fastq.gz_fastqc_report.html", + "test/s21_2.fastp.fastq.gz_summary.txt", + "test/s22.fastp.html", + "test/s22.fastp.json", + "test/s22_1.fastp.fastq.gz", + "test/s22_1.fastp.fastq.gz.md5", + "test/s22_1.fastp.fastq.gz_fastqc_data.txt", + "test/s22_1.fastp.fastq.gz_fastqc_report.html", + "test/s22_1.fastp.fastq.gz_summary.txt", + "test/s22_2.fastp.fastq.gz", + "test/s22_2.fastp.fastq.gz.md5", + "test/s22_2.fastp.fastq.gz_fastqc_data.txt", + "test/s22_2.fastp.fastq.gz_fastqc_report.html", + "test/s22_2.fastp.fastq.gz_summary.txt", + "test/s23.fastp.html", + "test/s23.fastp.json", + "test/s23_1.fastp.fastq.gz", + "test/s23_1.fastp.fastq.gz.md5", + "test/s23_1.fastp.fastq.gz_fastqc_data.txt", + "test/s23_1.fastp.fastq.gz_fastqc_report.html", + "test/s23_1.fastp.fastq.gz_summary.txt", + "test/s23_2.fastp.fastq.gz", + "test/s23_2.fastp.fastq.gz.md5", + "test/s23_2.fastp.fastq.gz_fastqc_data.txt", + "test/s23_2.fastp.fastq.gz_fastqc_report.html", + "test/s23_2.fastp.fastq.gz_summary.txt", + "test/s24.fastp.html", + "test/s24.fastp.json", + "test/s24_1.fastp.fastq.gz", + "test/s24_1.fastp.fastq.gz.md5", + "test/s24_1.fastp.fastq.gz_fastqc_data.txt", + "test/s24_1.fastp.fastq.gz_fastqc_report.html", + "test/s24_1.fastp.fastq.gz_summary.txt", + "test/s24_2.fastp.fastq.gz", + "test/s24_2.fastp.fastq.gz.md5", + "test/s24_2.fastp.fastq.gz_fastqc_data.txt", + "test/s24_2.fastp.fastq.gz_fastqc_report.html", + "test/s24_2.fastp.fastq.gz_summary.txt", + "test/s2_1.fastp.fastq.gz", + "test/s2_1.fastp.fastq.gz.md5", + "test/s2_1.fastp.fastq.gz_fastqc_data.txt", + "test/s2_1.fastp.fastq.gz_fastqc_report.html", + "test/s2_1.fastp.fastq.gz_summary.txt", + "test/s2_2.fastp.fastq.gz", + "test/s2_2.fastp.fastq.gz.md5", + "test/s2_2.fastp.fastq.gz_fastqc_data.txt", + "test/s2_2.fastp.fastq.gz_fastqc_report.html", + "test/s2_2.fastp.fastq.gz_summary.txt", + "test/s3.fastp.html", + "test/s3.fastp.json", + "test/s3_1.fastp.fastq.gz", + "test/s3_1.fastp.fastq.gz.md5", + "test/s3_1.fastp.fastq.gz_fastqc_data.txt", + "test/s3_1.fastp.fastq.gz_fastqc_report.html", + "test/s3_1.fastp.fastq.gz_summary.txt", + "test/s3_2.fastp.fastq.gz", + "test/s3_2.fastp.fastq.gz.md5", + "test/s3_2.fastp.fastq.gz_fastqc_data.txt", + "test/s3_2.fastp.fastq.gz_fastqc_report.html", + "test/s3_2.fastp.fastq.gz_summary.txt", + "test/s4.fastp.html", + "test/s4.fastp.json", + "test/s4_1.fastp.fastq.gz", + "test/s4_1.fastp.fastq.gz.md5", + "test/s4_1.fastp.fastq.gz_fastqc_data.txt", + "test/s4_1.fastp.fastq.gz_fastqc_report.html", + "test/s4_1.fastp.fastq.gz_summary.txt", + "test/s4_2.fastp.fastq.gz", + "test/s4_2.fastp.fastq.gz.md5", + "test/s4_2.fastp.fastq.gz_fastqc_data.txt", + "test/s4_2.fastp.fastq.gz_fastqc_report.html", + "test/s4_2.fastp.fastq.gz_summary.txt", + "test/s5.fastp.html", + "test/s5.fastp.json", + "test/s5_1.fastp.fastq.gz", + "test/s5_1.fastp.fastq.gz.md5", + "test/s5_1.fastp.fastq.gz_fastqc_data.txt", + "test/s5_1.fastp.fastq.gz_fastqc_report.html", + "test/s5_1.fastp.fastq.gz_summary.txt", + "test/s5_2.fastp.fastq.gz", + "test/s5_2.fastp.fastq.gz.md5", + "test/s5_2.fastp.fastq.gz_fastqc_data.txt", + "test/s5_2.fastp.fastq.gz_fastqc_report.html", + "test/s5_2.fastp.fastq.gz_summary.txt", + "test/s6.fastp.html", + "test/s6.fastp.json", + "test/s6_1.fastp.fastq.gz", + "test/s6_1.fastp.fastq.gz.md5", + "test/s6_1.fastp.fastq.gz_fastqc_data.txt", + "test/s6_1.fastp.fastq.gz_fastqc_report.html", + "test/s6_1.fastp.fastq.gz_summary.txt", + "test/s6_2.fastp.fastq.gz", + "test/s6_2.fastp.fastq.gz.md5", + "test/s6_2.fastp.fastq.gz_fastqc_data.txt", + "test/s6_2.fastp.fastq.gz_fastqc_report.html", + "test/s6_2.fastp.fastq.gz_summary.txt", + "test/s7.fastp.html", + "test/s7.fastp.json", + "test/s7_1.fastp.fastq.gz", + "test/s7_1.fastp.fastq.gz.md5", + "test/s7_1.fastp.fastq.gz_fastqc_data.txt", + "test/s7_1.fastp.fastq.gz_fastqc_report.html", + "test/s7_1.fastp.fastq.gz_summary.txt", + "test/s7_2.fastp.fastq.gz", + "test/s7_2.fastp.fastq.gz.md5", + "test/s7_2.fastp.fastq.gz_fastqc_data.txt", + "test/s7_2.fastp.fastq.gz_fastqc_report.html", + "test/s7_2.fastp.fastq.gz_summary.txt", + "test/s8.fastp.html", + "test/s8.fastp.json", + "test/s8_1.fastp.fastq.gz", + "test/s8_1.fastp.fastq.gz.md5", + "test/s8_1.fastp.fastq.gz_fastqc_data.txt", + "test/s8_1.fastp.fastq.gz_fastqc_report.html", + "test/s8_1.fastp.fastq.gz_summary.txt", + "test/s8_2.fastp.fastq.gz", + "test/s8_2.fastp.fastq.gz.md5", + "test/s8_2.fastp.fastq.gz_fastqc_data.txt", + "test/s8_2.fastp.fastq.gz_fastqc_report.html", + "test/s8_2.fastp.fastq.gz_summary.txt", + "test/s9.fastp.html", + "test/s9.fastp.json", + "test/s9_1.fastp.fastq.gz", + "test/s9_1.fastp.fastq.gz.md5", + "test/s9_1.fastp.fastq.gz_fastqc_data.txt", + "test/s9_1.fastp.fastq.gz_fastqc_report.html", + "test/s9_1.fastp.fastq.gz_summary.txt", + "test/s9_2.fastp.fastq.gz", + "test/s9_2.fastp.fastq.gz.md5", + "test/s9_2.fastp.fastq.gz_fastqc_data.txt", + "test/s9_2.fastp.fastq.gz_fastqc_report.html", + "test/s9_2.fastp.fastq.gz_summary.txt", + "test/unmatched.fastp.html", + "test/unmatched.fastp.json", + "test/unmatched_1.fastp.fastq.gz", + "test/unmatched_1.fastp.fastq.gz.md5", + "test/unmatched_1.fastp.fastq.gz_fastqc_data.txt", + "test/unmatched_1.fastp.fastq.gz_fastqc_report.html", + "test/unmatched_1.fastp.fastq.gz_summary.txt", + "test/unmatched_2.fastp.fastq.gz", + "test/unmatched_2.fastp.fastq.gz.md5", + "test/unmatched_2.fastp.fastq.gz_fastqc_data.txt", + "test/unmatched_2.fastp.fastq.gz_fastqc_report.html", + "test/unmatched_2.fastp.fastq.gz_summary.txt" + ], + [ + "samplesheet.tsv:md5,f6595e6a60b7f135d8d6ad2a7d8b84c9", + "fastp-seq-content-gc-plot_Read_1_After_filtering.txt:md5,2e2ea8010dfa345adb054ab61d4097cb", + "fastp-seq-content-gc-plot_Read_1_Before_filtering.txt:md5,2e2ea8010dfa345adb054ab61d4097cb", + "fastp-seq-content-gc-plot_Read_2_After_filtering.txt:md5,77de96e7f6c12b078ca4123e935664fa", + "fastp-seq-content-gc-plot_Read_2_Before_filtering.txt:md5,77de96e7f6c12b078ca4123e935664fa", + "fastp-seq-content-n-plot_Read_1_After_filtering.txt:md5,aa314757967b1e15327c91d755647633", + "fastp-seq-content-n-plot_Read_1_Before_filtering.txt:md5,aa314757967b1e15327c91d755647633", + "fastp-seq-content-n-plot_Read_2_After_filtering.txt:md5,aa314757967b1e15327c91d755647633", + "fastp-seq-content-n-plot_Read_2_Before_filtering.txt:md5,aa314757967b1e15327c91d755647633", + "fastp-seq-quality-plot_Read_1_After_filtering.txt:md5,51c775bbe26bc18302e5ad4e3f062a35", + "fastp-seq-quality-plot_Read_1_Before_filtering.txt:md5,51c775bbe26bc18302e5ad4e3f062a35", + "fastp-seq-quality-plot_Read_2_After_filtering.txt:md5,51c775bbe26bc18302e5ad4e3f062a35", + "fastp-seq-quality-plot_Read_2_Before_filtering.txt:md5,51c775bbe26bc18302e5ad4e3f062a35", + "fastp_filtered_reads_plot.txt:md5,aa201560b0d9c48a413c496c6b9c2368", + "fastqc_per_base_n_content_plot.txt:md5,e4075b5f39c67cad9863454c740b49fb", + "fastqc_per_base_sequence_quality_plot.txt:md5,f36dd0652b24458c44d8db504396a1c0", + "fastqc_per_sequence_gc_content_plot_Counts.txt:md5,a455ab83946f6245c4d191b3c007c21c", + "fastqc_per_sequence_gc_content_plot_Percentages.txt:md5,90c4dc771cb6ed90c6a08d6ec946e347", + "fastqc_per_sequence_quality_scores_plot.txt:md5,0075027df869f39e0946161431260538", + "fastqc_sequence_counts_plot.txt:md5,5168b647c4bbd6b3be17373e134fb296", + "fastqc_sequence_duplication_levels_plot.txt:md5,d6db81670f1240dda7a91e14a29557c0", + "multiqc_citations.txt:md5,d35df50e9903a96a2b3bce3c1fbc8ad2", + "test.csv:md5,c01a880241575a67e3eb5dc461a4972c", + "demux-metrics.txt:md5,1d587fa959f9129155314cf531103347", + "s1.fastp.json:md5,be9a4b1838890e0ef5c586a3dc83b728", + "s10.fastp.json:md5,4a9489b26bda96e3b589d54df90ff063", + "s10_1.fastp.fastq.gz:md5,68d72892789df70b17b8886d6a616999", + "s10_1.fastp.fastq.gz.md5:md5,8db05dbfa024326847b7dcbf5f9bc5ee", + "s10_1.fastp.fastq.gz_fastqc_data.txt:md5,f4877a6030408f6602010f135bd00199", + "s10_1.fastp.fastq.gz_summary.txt:md5,bbe10e92d011509ae8384020f66ac895", + "s10_2.fastp.fastq.gz:md5,abe44a80eebd1a4a7ec432ee3142f599", + "s10_2.fastp.fastq.gz.md5:md5,5cbb47118bc5c1fec6b6e08a1f1c30a6", + "s10_2.fastp.fastq.gz_fastqc_data.txt:md5,42f985dc5d6e23ab745c90cd8bf0889b", + "s10_2.fastp.fastq.gz_summary.txt:md5,cf832ac3f3e9bf35bcfaa9768e2dcc20", + "s11.fastp.json:md5,3ddede2a5cb7c7b5567390d3d39a5dc5", + "s11_1.fastp.fastq.gz:md5,1e63515691b7694b3237f69e95dacdd7", + "s11_1.fastp.fastq.gz.md5:md5,8d33a1fe56fb44826cb377daa5b730ed", + "s11_1.fastp.fastq.gz_fastqc_data.txt:md5,71a1bb83be438792b01c87e4625c7ff9", + "s11_1.fastp.fastq.gz_summary.txt:md5,1b38f806b008bf6ce281d46c203ea46e", + "s11_2.fastp.fastq.gz:md5,3431b7a6d5840afb4460529a6f9611e3", + "s11_2.fastp.fastq.gz.md5:md5,93334c959bd78786b274cc05db184e14", + "s11_2.fastp.fastq.gz_fastqc_data.txt:md5,427934d28e9bc0987889cafc3d58647d", + "s11_2.fastp.fastq.gz_summary.txt:md5,a09abb540a0e59bd43be621c7ff10a3e", + "s12.fastp.json:md5,f2183e56c353c842179e3a9c9961ae92", + "s12_1.fastp.fastq.gz:md5,a27e66093a904a269bfcc3c3f98a1238", + "s12_1.fastp.fastq.gz.md5:md5,e68abcbca9161b0a02def11aaf3ba9d1", + "s12_1.fastp.fastq.gz_fastqc_data.txt:md5,04e72d7df66c532cba7154355c9120b2", + "s12_1.fastp.fastq.gz_summary.txt:md5,1ba67ec838f7a385a36f9387c30cc05b", + "s12_2.fastp.fastq.gz:md5,25b5b8ced9353f202880077aabd2a721", + "s12_2.fastp.fastq.gz.md5:md5,977807b9ef4f4327d2b54ac9e1497437", + "s12_2.fastp.fastq.gz_fastqc_data.txt:md5,63b15e0b2a65e69d125a8012bf50d9d9", + "s12_2.fastp.fastq.gz_summary.txt:md5,05cf105e959da1c76b1d6724b12b9a66", + "s13.fastp.json:md5,6a61f4bf86a107a8090ed7c8fe60670c", + "s13_1.fastp.fastq.gz:md5,353b2cbd1394d0e1c03cd3a4a7f4f623", + "s13_1.fastp.fastq.gz.md5:md5,c8717d66778eb444f03bb4ba2b42a419", + "s13_1.fastp.fastq.gz_fastqc_data.txt:md5,8b23beefaf52a5efb3c61df884fef31e", + "s13_1.fastp.fastq.gz_summary.txt:md5,f5471ae4ddf2e0f41acedf6f37264cbd", + "s13_2.fastp.fastq.gz:md5,3e3c6ed5933d864759cceee197f8fa64", + "s13_2.fastp.fastq.gz.md5:md5,4a2737d6b404afa20e57a25e3e16c357", + "s13_2.fastp.fastq.gz_fastqc_data.txt:md5,0f37812e627b4c608dc1254aff903f11", + "s13_2.fastp.fastq.gz_summary.txt:md5,213304b4943eabe32b43abe315a99a72", + "s14.fastp.json:md5,dea1c5d8dd7311ee10a1663c62b755e5", + "s14_1.fastp.fastq.gz:md5,83744d94d2f5d3722c960566b7a5267e", + "s14_1.fastp.fastq.gz.md5:md5,1ed08db7b3ee59699c69f8f6802eea1b", + "s14_1.fastp.fastq.gz_fastqc_data.txt:md5,dad59184d517f9b9b746d58d993fb2e6", + "s14_1.fastp.fastq.gz_summary.txt:md5,eac4575d795da57e20573cad9ecef4d1", + "s14_2.fastp.fastq.gz:md5,1aecf34deb4bc27069f4ff83a0fb9f5d", + "s14_2.fastp.fastq.gz.md5:md5,8331df306ee370dc1eab5333f9f984b5", + "s14_2.fastp.fastq.gz_fastqc_data.txt:md5,f3397fb39b7d261ef30a531b9defd7af", + "s14_2.fastp.fastq.gz_summary.txt:md5,795fe9cba1265989811625916f65fd8a", + "s15.fastp.json:md5,5271bdbbdf1c2c3c1e5a1ea541b39d9b", + "s15_1.fastp.fastq.gz:md5,ea1f11b52fc604e4aa168a78bf086892", + "s15_1.fastp.fastq.gz.md5:md5,dcc9a9feac74537abbf110a050634f16", + "s15_1.fastp.fastq.gz_fastqc_data.txt:md5,f350de6b6b415bfa779c1347dfc6e6cf", + "s15_1.fastp.fastq.gz_summary.txt:md5,c4b63c996c1840cc02873a5b61b20e9d", + "s15_2.fastp.fastq.gz:md5,f059ac2b1125d364570be8a5010e94d8", + "s15_2.fastp.fastq.gz.md5:md5,eac53af81c90e12babd1868ba63250d7", + "s15_2.fastp.fastq.gz_fastqc_data.txt:md5,8fcbf9893d145fb7ba5828ee587219b1", + "s15_2.fastp.fastq.gz_summary.txt:md5,d879805b86fd51404213146167de0bb8", + "s16.fastp.json:md5,178faff96bfe299eeda69bc42cf5969c", + "s16_1.fastp.fastq.gz:md5,150db1d3462b6cdd8022011b462d190d", + "s16_1.fastp.fastq.gz.md5:md5,f7dff2b49d590f7357e69eafb61b17f8", + "s16_1.fastp.fastq.gz_fastqc_data.txt:md5,2ad150c1a32babb0f3fda90609923b2f", + "s16_1.fastp.fastq.gz_summary.txt:md5,99dcf04f3f19e394e9136c98cf06455e", + "s16_2.fastp.fastq.gz:md5,a939a31d634df5a6c5741a79ad84fea5", + "s16_2.fastp.fastq.gz.md5:md5,1edbe71af9b9461671c8b6a88e8c1b2d", + "s16_2.fastp.fastq.gz_fastqc_data.txt:md5,6e67cf4be9cbb06fa589ffb2a252eba2", + "s16_2.fastp.fastq.gz_summary.txt:md5,77184c2c0a60f6150a2741c526d292b1", + "s17.fastp.json:md5,22592f57012a71239e4571b4ee81f68e", + "s17_1.fastp.fastq.gz:md5,eb2a43e737d5bc941866957d878f52cb", + "s17_1.fastp.fastq.gz.md5:md5,8a78a67904f87e1d7f7b0bdadf4fd358", + "s17_1.fastp.fastq.gz_fastqc_data.txt:md5,272799600b9eae03a2fda82093454159", + "s17_1.fastp.fastq.gz_summary.txt:md5,a57ff79f8045bbbde87fcee38d1e1986", + "s17_2.fastp.fastq.gz:md5,affeeeb95f4ab3eb73ff3fd49d62a460", + "s17_2.fastp.fastq.gz.md5:md5,4afdddaae7c346c587bd6611da6f8340", + "s17_2.fastp.fastq.gz_fastqc_data.txt:md5,d5c62b1c0d48ca2d5b66187294574bee", + "s17_2.fastp.fastq.gz_summary.txt:md5,f5322e243e01c8da1e497773bb691d5b", + "s18.fastp.json:md5,d7877e69b0f42df112a1aa7e4a4f2b3b", + "s18_1.fastp.fastq.gz:md5,413c245496557c3973bcb2c8fd738fed", + "s18_1.fastp.fastq.gz.md5:md5,9097ef96f51fce62a56b2b15321552c9", + "s18_1.fastp.fastq.gz_fastqc_data.txt:md5,8029dd9a64b513c655c7ece29f0c68a8", + "s18_1.fastp.fastq.gz_summary.txt:md5,8aaeaec3157659c60708d6fab0a1fea0", + "s18_2.fastp.fastq.gz:md5,50d854cd559fb641967e8eda19006f8f", + "s18_2.fastp.fastq.gz.md5:md5,b27dbe25fc37de3cd294200e5733d725", + "s18_2.fastp.fastq.gz_fastqc_data.txt:md5,93a87272a4b3baf54adbd7d6db4a1e18", + "s18_2.fastp.fastq.gz_summary.txt:md5,8208a75cb7c51db537b893061f1f47bf", + "s19.fastp.json:md5,1992210c2eed2fb36c04b656f5f50ff6", + "s19_1.fastp.fastq.gz:md5,9581c36425dd36b1bf4a844d4c3fd434", + "s19_1.fastp.fastq.gz.md5:md5,57cf0a82a1cbc6f81dd3af344769c067", + "s19_1.fastp.fastq.gz_fastqc_data.txt:md5,8e4cdf867e0315bfcc621cf3c9098ec3", + "s19_1.fastp.fastq.gz_summary.txt:md5,3cf3a6d2b17e6ac6a671218dfea1b561", + "s19_2.fastp.fastq.gz:md5,13e966cdfcf3fd272a1d739dbe82e05c", + "s19_2.fastp.fastq.gz.md5:md5,26fcb1ddc99bb72d652abebcc508d661", + "s19_2.fastp.fastq.gz_fastqc_data.txt:md5,933c6e6f1d77695b9c4c19bd873ea505", + "s19_2.fastp.fastq.gz_summary.txt:md5,5e0f81803f2360ec27a6045f80654d96", + "s1_1.fastp.fastq.gz:md5,1eadc3622432e260b2d1c43d669b621a", + "s1_1.fastp.fastq.gz.md5:md5,f64ffb4f1c9b5e5e19dd2da8f86ec2e8", + "s1_1.fastp.fastq.gz_fastqc_data.txt:md5,7bc10cfb10e7fe926bba406b0aaffc8a", + "s1_1.fastp.fastq.gz_summary.txt:md5,6f24a3a874a2c4d74c2b5a6fa25ccb5e", + "s1_2.fastp.fastq.gz:md5,fe11bc516e32e2ee6c3064dd7d157bc8", + "s1_2.fastp.fastq.gz.md5:md5,fda56aa2d1c15cb762abf59a4f64e1bb", + "s1_2.fastp.fastq.gz_fastqc_data.txt:md5,0d8aedb8f157166910a984e01c8cffed", + "s1_2.fastp.fastq.gz_summary.txt:md5,6ea5d63f4d9ad9db3d9a489e31ff13ad", + "s2.fastp.json:md5,5b7111c2b812648a6df3241ee1a3a807", + "s20.fastp.json:md5,98f0d732c90f5108d96bd3d690b55691", + "s20_1.fastp.fastq.gz:md5,32144c46d24d5c264d98be49b8d8fb1d", + "s20_1.fastp.fastq.gz.md5:md5,4dc0f3e4498df3c04d47574134acee60", + "s20_1.fastp.fastq.gz_fastqc_data.txt:md5,514e1cfcb754ace865ed1a059292caa2", + "s20_1.fastp.fastq.gz_summary.txt:md5,b3e709ce23ff76b8099aa6607888a25f", + "s20_2.fastp.fastq.gz:md5,585a1ff0e75a693c7464f6d0966c5fb9", + "s20_2.fastp.fastq.gz.md5:md5,777e375cbdfc81d449cb9d09574ab16a", + "s20_2.fastp.fastq.gz_fastqc_data.txt:md5,352c6eba7490dbeadd2e8bb528959e00", + "s20_2.fastp.fastq.gz_summary.txt:md5,0adc9b32fab9218bb96503ca98974579", + "s21.fastp.json:md5,e718ebf18e43b2701cd41ff12590efac", + "s21_1.fastp.fastq.gz:md5,1e92094589206300ef884273ee9ee265", + "s21_1.fastp.fastq.gz.md5:md5,271cbfb8258b802dff135d0134f08896", + "s21_1.fastp.fastq.gz_fastqc_data.txt:md5,583f37c4d0b3c1cf70146638288259eb", + "s21_1.fastp.fastq.gz_summary.txt:md5,53521830e74bc2fda95746bd59e1b47a", + "s21_2.fastp.fastq.gz:md5,9f9278e60ba2dd2c5bb14d021268c613", + "s21_2.fastp.fastq.gz.md5:md5,bb1d568adb5761fbe58e7042753f7e6b", + "s21_2.fastp.fastq.gz_fastqc_data.txt:md5,4220408a8a49188293008705d99797d7", + "s21_2.fastp.fastq.gz_summary.txt:md5,9cac4c355b24c72774be49dc72b910c5", + "s22.fastp.json:md5,8487379d87e761dad734a69cab1cfce9", + "s22_1.fastp.fastq.gz:md5,5abfd96f6a1eb0391208fe7f4dcecade", + "s22_1.fastp.fastq.gz.md5:md5,2545a5e84d10f130551c45ea29154dde", + "s22_1.fastp.fastq.gz_fastqc_data.txt:md5,903c86972bd98447069b8123bbd2ed2b", + "s22_1.fastp.fastq.gz_summary.txt:md5,dc7a13f5a1d35e0d58457fcf21ce6319", + "s22_2.fastp.fastq.gz:md5,868ef4eb6ca676ed93d2389188ed3d81", + "s22_2.fastp.fastq.gz.md5:md5,58ca118289a9f7836b4b7780099fb803", + "s22_2.fastp.fastq.gz_fastqc_data.txt:md5,6aa91feefd6ded02d5158132482f6f75", + "s22_2.fastp.fastq.gz_summary.txt:md5,7704ed026dbaf60ccb8426b5d122c53d", + "s23.fastp.json:md5,8e007318d9f605f36a23f78b862e8e65", + "s23_1.fastp.fastq.gz:md5,0d0ec11e03749ac7a48d00a46781a74f", + "s23_1.fastp.fastq.gz.md5:md5,0aa820c87fa31d216678ad1e0a959351", + "s23_1.fastp.fastq.gz_fastqc_data.txt:md5,b80be522e8fc203353873b4293a1bd93", + "s23_1.fastp.fastq.gz_summary.txt:md5,fa0459c6f2d09851918d0746198011d7", + "s23_2.fastp.fastq.gz:md5,3ca8a6141f9e4f9595a90075ac390e7f", + "s23_2.fastp.fastq.gz.md5:md5,81b8b9414e34771045a38dd2f09fe1a1", + "s23_2.fastp.fastq.gz_fastqc_data.txt:md5,03581c6566f47f1d942e578f03f520ba", + "s23_2.fastp.fastq.gz_summary.txt:md5,15ddeefe82e3af35daf5254322c9abc6", + "s24.fastp.json:md5,0dab2f8c10346eb08a11b8e201663cbb", + "s24_1.fastp.fastq.gz:md5,9af8ba800a69fc8637cfe864870bade7", + "s24_1.fastp.fastq.gz.md5:md5,cd24734dc26c7ea8ea3c21bdc77ff9c4", + "s24_1.fastp.fastq.gz_fastqc_data.txt:md5,09385a18735331295ec633a1d416cd70", + "s24_1.fastp.fastq.gz_summary.txt:md5,92d1c0ec63759b0ccf61354405d46fd4", + "s24_2.fastp.fastq.gz:md5,1e988f6a217b67271801f2041be5c66b", + "s24_2.fastp.fastq.gz.md5:md5,ec8374f3a49357468b421dd3c2f87801", + "s24_2.fastp.fastq.gz_fastqc_data.txt:md5,6c22195c538a12592e76d8a72d87d0a1", + "s24_2.fastp.fastq.gz_summary.txt:md5,8a378d9090f444a073769427286966e9", + "s2_1.fastp.fastq.gz:md5,e5a9598bef0d53087aa25530667ccf79", + "s2_1.fastp.fastq.gz.md5:md5,35ea1cf27f3ecf7013233b28fb479542", + "s2_1.fastp.fastq.gz_fastqc_data.txt:md5,cf1b2108b901417c545a4922f0bad7e7", + "s2_1.fastp.fastq.gz_summary.txt:md5,7033939b9cd1f10f378f62cce8f83f0b", + "s2_2.fastp.fastq.gz:md5,7cbede4e3e641207da50ebb96653d0df", + "s2_2.fastp.fastq.gz.md5:md5,376b241d56d27365a559e1c3ca3bdacb", + "s2_2.fastp.fastq.gz_fastqc_data.txt:md5,1815381c120dc27aa1cce557405b0375", + "s2_2.fastp.fastq.gz_summary.txt:md5,3abb4bf4dac99a045470c9fef3186bd7", + "s3.fastp.json:md5,042a8f6af4755d36c35b5c1fc7311772", + "s3_1.fastp.fastq.gz:md5,aa1fe4107eb39313f97c1c045a3a15ed", + "s3_1.fastp.fastq.gz.md5:md5,f3deafacc172d00bfb62fddbd0eb17c3", + "s3_1.fastp.fastq.gz_fastqc_data.txt:md5,0b8a95b400e766a95d6d212bc581b6ef", + "s3_1.fastp.fastq.gz_summary.txt:md5,465ecf738d98d9054ebe710f94adf89e", + "s3_2.fastp.fastq.gz:md5,22332ab06eed7ff915ec1ffba0100610", + "s3_2.fastp.fastq.gz.md5:md5,b06cc80886e7c21e9acbff3be7b20c06", + "s3_2.fastp.fastq.gz_fastqc_data.txt:md5,b3cb5076eb6e22780051e66367f80469", + "s3_2.fastp.fastq.gz_summary.txt:md5,d2f5f7caf04eba3fa1a72dfc620b7324", + "s4.fastp.json:md5,6ddbd1bcbdfbd78abdfd01120938cccf", + "s4_1.fastp.fastq.gz:md5,f6818e27d3118f66168b8af2f155f4b0", + "s4_1.fastp.fastq.gz.md5:md5,a51cb41091933d7ea537e4eca66ee583", + "s4_1.fastp.fastq.gz_fastqc_data.txt:md5,c827cb223cd18868e986114b2b56aa11", + "s4_1.fastp.fastq.gz_summary.txt:md5,54c61ffda03c4aeaee055b43738bea8e", + "s4_2.fastp.fastq.gz:md5,c489acd3fd4775cb9a69053d4b26250f", + "s4_2.fastp.fastq.gz.md5:md5,5913f5cf971d04484e0473fc03e78a31", + "s4_2.fastp.fastq.gz_fastqc_data.txt:md5,c062a41b9578769e063655ee0410179d", + "s4_2.fastp.fastq.gz_summary.txt:md5,61f3820bf97c6b358d9e039266ac7691", + "s5.fastp.json:md5,8826756e18132471c33d5d0ba3f6b17f", + "s5_1.fastp.fastq.gz:md5,2c111ddbdc64a9f4a9fc7a27f2e2aaea", + "s5_1.fastp.fastq.gz.md5:md5,7fffdc9a1785f132cf56800a269aa20d", + "s5_1.fastp.fastq.gz_fastqc_data.txt:md5,c54f90f7b4623bd3bdfe8580b277af0b", + "s5_1.fastp.fastq.gz_summary.txt:md5,cd6ae5046c4bef89115a98fc3b6a1282", + "s5_2.fastp.fastq.gz:md5,6ae8e46cf5fa66f6998a72f15caa9c58", + "s5_2.fastp.fastq.gz.md5:md5,bb1dfb34b2cfb26b5dbef8493eb4fdfe", + "s5_2.fastp.fastq.gz_fastqc_data.txt:md5,9df4fa82eb11393fb57d7c029c7ae327", + "s5_2.fastp.fastq.gz_summary.txt:md5,2fe1f212327441aa271f7f308270f3d2", + "s6.fastp.json:md5,6a0c0339fed4eb4f7e5780b7fef079d2", + "s6_1.fastp.fastq.gz:md5,cc6c0fb00166827307c846c8e9661c47", + "s6_1.fastp.fastq.gz.md5:md5,81910b3afe48abf930d7623f94adf9f6", + "s6_1.fastp.fastq.gz_fastqc_data.txt:md5,f6dcd4caa543e6b9bd7f683c50d09a84", + "s6_1.fastp.fastq.gz_summary.txt:md5,babe9aa8373d25fd029fd0bd4c1bcdc2", + "s6_2.fastp.fastq.gz:md5,6d5556ca178aab7202cf860fff94f574", + "s6_2.fastp.fastq.gz.md5:md5,2417e2f3c914fa8f032afd8676b2d43d", + "s6_2.fastp.fastq.gz_fastqc_data.txt:md5,a0cfd6e5c6d000b54798aa7967b654d5", + "s6_2.fastp.fastq.gz_summary.txt:md5,1afa3915b57e51d56eb998af0c2121a8", + "s7.fastp.json:md5,19d4c1d93cfddfe31c5be76dc0e1b50a", + "s7_1.fastp.fastq.gz:md5,36ab856e02e7d1c17c3a122ec9179cbb", + "s7_1.fastp.fastq.gz.md5:md5,6942c45c37a57407853cfcbef1a7576e", + "s7_1.fastp.fastq.gz_fastqc_data.txt:md5,a8f1a1249da32dc1bafe64ef11ff333e", + "s7_1.fastp.fastq.gz_summary.txt:md5,5ff0936a3b19a6cba43d74c59a4ffbfa", + "s7_2.fastp.fastq.gz:md5,0764aae83716030f4ea05cca5d4511a4", + "s7_2.fastp.fastq.gz.md5:md5,08bbbd69fc3ee7df14b33947f3265790", + "s7_2.fastp.fastq.gz_fastqc_data.txt:md5,4eda9a3f2a829184adbb61fcea58f6b4", + "s7_2.fastp.fastq.gz_summary.txt:md5,5d47846f21b5fe4e8b05cdd054f6a91b", + "s8.fastp.json:md5,bad705ea8bbd9957d3a1bb831b2966c2", + "s8_1.fastp.fastq.gz:md5,f37f97582eafb96aae79a1d635e4585e", + "s8_1.fastp.fastq.gz.md5:md5,530292bf972cf1b4b234fc40ae40e402", + "s8_1.fastp.fastq.gz_fastqc_data.txt:md5,9769a7bce94f65c7eb7d0a64f00607b5", + "s8_1.fastp.fastq.gz_summary.txt:md5,a65831285ff1b417c72dd20fe7393ad0", + "s8_2.fastp.fastq.gz:md5,b5e48a29663e3e92354794290e2ba419", + "s8_2.fastp.fastq.gz.md5:md5,ec862cc5d2cc18be996a8a38b4052d87", + "s8_2.fastp.fastq.gz_fastqc_data.txt:md5,065d4208b7d2c0162b71e47a673b6cd7", + "s8_2.fastp.fastq.gz_summary.txt:md5,821bbcf71f1e5e568aee2e8ac5788305", + "s9.fastp.json:md5,a961c9be7ef88ae4bc188809d6383842", + "s9_1.fastp.fastq.gz:md5,42e79f8a4e8db043b76782538982d1ea", + "s9_1.fastp.fastq.gz.md5:md5,9ba7d8112363ed1de4e542e458ad02fa", + "s9_1.fastp.fastq.gz_fastqc_data.txt:md5,861216d8769fcf246198ce71e550c50d", + "s9_1.fastp.fastq.gz_summary.txt:md5,47a130225685bbfde4f1f0a285a1f380", + "s9_2.fastp.fastq.gz:md5,d3af5fce6432934a479770f16c8f50b1", + "s9_2.fastp.fastq.gz.md5:md5,35b322363f80b060c3c79b6d21448661", + "s9_2.fastp.fastq.gz_fastqc_data.txt:md5,44ac3768c508a14eea3756ed88271d96", + "s9_2.fastp.fastq.gz_summary.txt:md5,d6c912c1a073a7b0df9c1c3e00b1b814", + "unmatched.fastp.json:md5,4f4f375bc6fef5880d843df77ae2d5f1", + "unmatched_1.fastp.fastq.gz:md5,8f77e8d5adc4b16dd499fe3bd092f66d", + "unmatched_1.fastp.fastq.gz.md5:md5,5b5876132b859c7dc6558bc63b24f8bf", + "unmatched_1.fastp.fastq.gz_fastqc_data.txt:md5,03d2a927a8850e90f4401c5e7cb469ec", + "unmatched_1.fastp.fastq.gz_summary.txt:md5,8f82f5c293be99943424dd66ebc74627", + "unmatched_2.fastp.fastq.gz:md5,a2c623dcaa11fe3faaecc563c376f24b", + "unmatched_2.fastp.fastq.gz.md5:md5,ea51457970db5e6690a0f76cd2b6be85", + "unmatched_2.fastp.fastq.gz_fastqc_data.txt:md5,ba1ff6c0e111ebdb3a269a3add145ae6", + "unmatched_2.fastp.fastq.gz_summary.txt:md5,202c2d50118198e29ead032008eab7d6" + ] + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.09.2" + }, + "timestamp": "2024-10-15T16:56:01.494868" + } +} diff --git a/tests/functions/demultiplex.nf.test b/tests/functions/demultiplex.nf.test deleted file mode 100644 index 97c42247..00000000 --- a/tests/functions/demultiplex.nf.test +++ /dev/null @@ -1,35 +0,0 @@ -nextflow_function { - - name "Test Functions" - script "workflows/demultiplex.nf" - - // TODO test("Test Function summary_params = NfcoreSchema.paramsSummaryMap") - - test("Test Function extract_csv") { - - function "extract_csv" - - when { - function { - """ - input[0] = 'https://raw.githubusercontent.com/nf-core/test-datasets/demultiplex/samplesheet/1.3.0/flowcell_input.csv' - """ - } - } - - then { - // FIXME - assert function.failed - assert snapshot(function.result).match() - } - - } - - // TODO test("Test Function all_columns = input_schema.columns.keySet().collect") - // TODO test("Test Function commons = all_columns.intersect") - // TODO test("Test Function diffs = all_columns.plus") - // TODO test("Test Function parse_flowcell_csv") - // TODO test("Test Function flowcell = file") - // TODO test("Test Function samplesheet = file") - -} diff --git a/tests/functions/demultiplex.nf.test.snap b/tests/functions/demultiplex.nf.test.snap deleted file mode 100644 index 81b1a55b..00000000 --- a/tests/functions/demultiplex.nf.test.snap +++ /dev/null @@ -1,6 +0,0 @@ -{ - "Test Function extract_csv": { - "content": null, - "timestamp": "2023-06-05T10:39:32+0000" - } -} \ No newline at end of file diff --git a/tests/kraken.nf.test b/tests/kraken.nf.test new file mode 100644 index 00000000..ec4cead7 --- /dev/null +++ b/tests/kraken.nf.test @@ -0,0 +1,43 @@ +nextflow_pipeline { + + name "Test Workflow main.nf - Kraken" + script "../main.nf" + config "../conf/test_kraken.config" + profile "test" + tag "kraken" + tag "pipeline" + + test("kraken2") { + + when { + params { + input = 'https://raw.githubusercontent.com/nf-core/test-datasets/demultiplex/samplesheet/1.3.0/flowcell_input.csv' + demultiplexer = 'bcl2fastq' + outdir = "$outputDir" + skip_tools = "checkqc,samshee" + kraken_db = 'https://raw.githubusercontent.com/nf-core/test-datasets/modules/data/genomics/sarscov2/genome/db/kraken2.tar.gz' + + } + } + + then { + // stable_name: All files + folders in ${params.outdir}/ with a stable name + def stable_name = getAllFilesFromDir(params.outdir, relative: true, includeDir: true, ignore: ['pipeline_info/*.{html,json,txt}']) + // stable_path: All files in ${params.outdir}/ with stable content + def stable_path = getAllFilesFromDir(params.outdir, ignoreFile: 'tests/.nftignore') + assertAll( + { assert workflow.success}, + { assert snapshot( + // Number of successful tasks + workflow.trace.succeeded().size(), + // pipeline versions.yml file for multiqc from which Nextflow version is removed because we tests pipelines on multiple Nextflow versions + removeNextflowVersion("$outputDir/pipeline_info/nf_core_pipeline_software_mqc_versions.yml"), + // All stable path name, with a relative path + stable_name, + // All files with stable contents + stable_path + ).match() } + ) + } + } +} diff --git a/tests/kraken.nf.test.snap b/tests/kraken.nf.test.snap new file mode 100644 index 00000000..36a6b165 --- /dev/null +++ b/tests/kraken.nf.test.snap @@ -0,0 +1,262 @@ +{ + "kraken2": { + "content": [ + 9, + { + "BCL2FASTQ": { + "bcl2fastq": "2.20.0.422" + }, + "FALCO": { + "falco": "1.2.1" + }, + "FASTP": { + "fastp": "0.23.4" + }, + "KRAKEN2": { + "kraken2": "2.1.3", + "pigz": 2.8 + }, + "MD5SUM": { + "md5sum": 8.3 + }, + "Workflow": { + "nf-core/demultiplex": "v1.5.2" + } + }, + [ + "220422_M11111_0222_000000000-K9H97", + "220422_M11111_0222_000000000-K9H97.lane1_no_adapters.csv", + "220422_M11111_0222_000000000-K9H97/InterOp", + "220422_M11111_0222_000000000-K9H97/InterOp/ControlMetricsOut.bin", + "220422_M11111_0222_000000000-K9H97/InterOp/CorrectedIntMetricsOut.bin", + "220422_M11111_0222_000000000-K9H97/InterOp/ErrorMetricsOut.bin", + "220422_M11111_0222_000000000-K9H97/InterOp/ExtractionMetricsOut.bin", + "220422_M11111_0222_000000000-K9H97/InterOp/IndexMetricsOut.bin", + "220422_M11111_0222_000000000-K9H97/InterOp/QMetricsOut.bin", + "220422_M11111_0222_000000000-K9H97/InterOp/TileMetricsOut.bin", + "220422_M11111_0222_000000000-K9H97/L001", + "220422_M11111_0222_000000000-K9H97/L001/Reports", + "220422_M11111_0222_000000000-K9H97/L001/Reports/html", + "220422_M11111_0222_000000000-K9H97/L001/Reports/html/000000000-K9H97", + "220422_M11111_0222_000000000-K9H97/L001/Reports/html/000000000-K9H97/all", + "220422_M11111_0222_000000000-K9H97/L001/Reports/html/000000000-K9H97/all/all", + "220422_M11111_0222_000000000-K9H97/L001/Reports/html/000000000-K9H97/all/all/all", + "220422_M11111_0222_000000000-K9H97/L001/Reports/html/000000000-K9H97/all/all/all/lane.html", + "220422_M11111_0222_000000000-K9H97/L001/Reports/html/000000000-K9H97/all/all/all/laneBarcode.html", + "220422_M11111_0222_000000000-K9H97/L001/Reports/html/000000000-K9H97/all/all/unknown", + "220422_M11111_0222_000000000-K9H97/L001/Reports/html/000000000-K9H97/default", + "220422_M11111_0222_000000000-K9H97/L001/Reports/html/000000000-K9H97/default/Sample1", + "220422_M11111_0222_000000000-K9H97/L001/Reports/html/000000000-K9H97/default/Sample1/all", + "220422_M11111_0222_000000000-K9H97/L001/Reports/html/000000000-K9H97/default/Sample1/all/lane.html", + "220422_M11111_0222_000000000-K9H97/L001/Reports/html/000000000-K9H97/default/Sample1/all/laneBarcode.html", + "220422_M11111_0222_000000000-K9H97/L001/Reports/html/000000000-K9H97/default/Sample1/unknown", + "220422_M11111_0222_000000000-K9H97/L001/Reports/html/000000000-K9H97/default/Sample1/unknown/lane.html", + "220422_M11111_0222_000000000-K9H97/L001/Reports/html/000000000-K9H97/default/Sample1/unknown/laneBarcode.html", + "220422_M11111_0222_000000000-K9H97/L001/Reports/html/000000000-K9H97/default/all", + "220422_M11111_0222_000000000-K9H97/L001/Reports/html/000000000-K9H97/default/all/all", + "220422_M11111_0222_000000000-K9H97/L001/Reports/html/000000000-K9H97/default/all/all/lane.html", + "220422_M11111_0222_000000000-K9H97/L001/Reports/html/000000000-K9H97/default/all/all/laneBarcode.html", + "220422_M11111_0222_000000000-K9H97/L001/Reports/html/000000000-K9H97/default/all/unknown", + "220422_M11111_0222_000000000-K9H97/L001/Reports/html/Report.css", + "220422_M11111_0222_000000000-K9H97/L001/Reports/html/index.html", + "220422_M11111_0222_000000000-K9H97/L001/Reports/html/tree.html", + "220422_M11111_0222_000000000-K9H97/L001/Sample1_S1_L001.fastp.fastq.gz", + "220422_M11111_0222_000000000-K9H97/L001/Sample1_S1_L001.fastp.fastq.gz.md5", + "220422_M11111_0222_000000000-K9H97/L001/Sample1_S1_L001.fastp.html", + "220422_M11111_0222_000000000-K9H97/L001/Sample1_S1_L001.fastp.json", + "220422_M11111_0222_000000000-K9H97/L001/Sample1_S1_L001.kraken2.report.txt", + "220422_M11111_0222_000000000-K9H97/L001/Sample1_S1_L001_R1_001.fastq.gz", + "220422_M11111_0222_000000000-K9H97/L001/Sample1_S1_L001_Sample1_S1_L001.fastp.fastq.gz", + "220422_M11111_0222_000000000-K9H97/L001/Sample1_S1_L001_fastqc_data.txt", + "220422_M11111_0222_000000000-K9H97/L001/Sample1_S1_L001_report.html", + "220422_M11111_0222_000000000-K9H97/L001/Sample1_S1_L001_summary.txt", + "220422_M11111_0222_000000000-K9H97/L001/Stats", + "220422_M11111_0222_000000000-K9H97/L001/Stats/AdapterTrimming.txt", + "220422_M11111_0222_000000000-K9H97/L001/Stats/ConversionStats.xml", + "220422_M11111_0222_000000000-K9H97/L001/Stats/DemultiplexingStats.xml", + "220422_M11111_0222_000000000-K9H97/L001/Stats/DemuxSummaryF1L1.txt", + "220422_M11111_0222_000000000-K9H97/L001/Stats/FastqSummaryF1L1.txt", + "220422_M11111_0222_000000000-K9H97/L001/Stats/Stats.json", + "fastq", + "fastq/Sample1_S1_L001.samplesheet.csv", + "multiqc", + "multiqc/multiqc_data", + "multiqc/multiqc_data/bcl2fastq-lane-stats-table.txt", + "multiqc/multiqc_data/bcl2fastq_lane_counts.txt", + "multiqc/multiqc_data/bcl2fastq_sample_counts.txt", + "multiqc/multiqc_data/bcl2fastq_undetermined.txt", + "multiqc/multiqc_data/fastp-seq-content-gc-plot_Read_1_After_filtering.txt", + "multiqc/multiqc_data/fastp-seq-content-gc-plot_Read_1_Before_filtering.txt", + "multiqc/multiqc_data/fastp-seq-content-n-plot_Read_1_After_filtering.txt", + "multiqc/multiqc_data/fastp-seq-content-n-plot_Read_1_Before_filtering.txt", + "multiqc/multiqc_data/fastp-seq-quality-plot_Read_1_After_filtering.txt", + "multiqc/multiqc_data/fastp-seq-quality-plot_Read_1_Before_filtering.txt", + "multiqc/multiqc_data/fastp_filtered_reads_plot.txt", + "multiqc/multiqc_data/fastqc-status-check-heatmap.txt", + "multiqc/multiqc_data/fastqc_per_base_n_content_plot.txt", + "multiqc/multiqc_data/fastqc_per_base_sequence_quality_plot.txt", + "multiqc/multiqc_data/fastqc_per_sequence_gc_content_plot_Counts.txt", + "multiqc/multiqc_data/fastqc_per_sequence_gc_content_plot_Percentages.txt", + "multiqc/multiqc_data/fastqc_per_sequence_quality_scores_plot.txt", + "multiqc/multiqc_data/fastqc_sequence_counts_plot.txt", + "multiqc/multiqc_data/fastqc_sequence_duplication_levels_plot.txt", + "multiqc/multiqc_data/fastqc_top_overrepresented_sequences_table.txt", + "multiqc/multiqc_data/kraken-top-n-plot.txt", + "multiqc/multiqc_data/multiqc.log", + "multiqc/multiqc_data/multiqc_bcl2fastq_bylane.txt", + "multiqc/multiqc_data/multiqc_bcl2fastq_bysample.txt", + "multiqc/multiqc_data/multiqc_citations.txt", + "multiqc/multiqc_data/multiqc_data.json", + "multiqc/multiqc_data/multiqc_fastp.txt", + "multiqc/multiqc_data/multiqc_fastqc.txt", + "multiqc/multiqc_data/multiqc_general_stats.txt", + "multiqc/multiqc_data/multiqc_kraken.txt", + "multiqc/multiqc_data/multiqc_software_versions.txt", + "multiqc/multiqc_data/multiqc_sources.txt", + "multiqc/multiqc_plots", + "multiqc/multiqc_plots/pdf", + "multiqc/multiqc_plots/pdf/bcl2fastq-lane-stats-table.pdf", + "multiqc/multiqc_plots/pdf/bcl2fastq_lane_counts-cnt.pdf", + "multiqc/multiqc_plots/pdf/bcl2fastq_lane_counts-pct.pdf", + "multiqc/multiqc_plots/pdf/bcl2fastq_sample_counts-cnt.pdf", + "multiqc/multiqc_plots/pdf/bcl2fastq_sample_counts-pct.pdf", + "multiqc/multiqc_plots/pdf/bcl2fastq_undetermined-cnt.pdf", + "multiqc/multiqc_plots/pdf/bcl2fastq_undetermined-pct.pdf", + "multiqc/multiqc_plots/pdf/fastp-seq-content-gc-plot_Read_1_After_filtering.pdf", + "multiqc/multiqc_plots/pdf/fastp-seq-content-gc-plot_Read_1_Before_filtering.pdf", + "multiqc/multiqc_plots/pdf/fastp-seq-content-n-plot_Read_1_After_filtering.pdf", + "multiqc/multiqc_plots/pdf/fastp-seq-content-n-plot_Read_1_Before_filtering.pdf", + "multiqc/multiqc_plots/pdf/fastp-seq-quality-plot_Read_1_After_filtering.pdf", + "multiqc/multiqc_plots/pdf/fastp-seq-quality-plot_Read_1_Before_filtering.pdf", + "multiqc/multiqc_plots/pdf/fastp_filtered_reads_plot-cnt.pdf", + "multiqc/multiqc_plots/pdf/fastp_filtered_reads_plot-pct.pdf", + "multiqc/multiqc_plots/pdf/fastqc-status-check-heatmap.pdf", + "multiqc/multiqc_plots/pdf/fastqc_per_base_n_content_plot.pdf", + "multiqc/multiqc_plots/pdf/fastqc_per_base_sequence_quality_plot.pdf", + "multiqc/multiqc_plots/pdf/fastqc_per_sequence_gc_content_plot_Counts.pdf", + "multiqc/multiqc_plots/pdf/fastqc_per_sequence_gc_content_plot_Percentages.pdf", + "multiqc/multiqc_plots/pdf/fastqc_per_sequence_quality_scores_plot.pdf", + "multiqc/multiqc_plots/pdf/fastqc_sequence_counts_plot-cnt.pdf", + "multiqc/multiqc_plots/pdf/fastqc_sequence_counts_plot-pct.pdf", + "multiqc/multiqc_plots/pdf/fastqc_sequence_duplication_levels_plot.pdf", + "multiqc/multiqc_plots/pdf/fastqc_top_overrepresented_sequences_table.pdf", + "multiqc/multiqc_plots/pdf/general_stats_table.pdf", + "multiqc/multiqc_plots/pdf/kraken-top-n-plot-cnt.pdf", + "multiqc/multiqc_plots/pdf/kraken-top-n-plot-pct.pdf", + "multiqc/multiqc_plots/png", + "multiqc/multiqc_plots/png/bcl2fastq-lane-stats-table.png", + "multiqc/multiqc_plots/png/bcl2fastq_lane_counts-cnt.png", + "multiqc/multiqc_plots/png/bcl2fastq_lane_counts-pct.png", + "multiqc/multiqc_plots/png/bcl2fastq_sample_counts-cnt.png", + "multiqc/multiqc_plots/png/bcl2fastq_sample_counts-pct.png", + "multiqc/multiqc_plots/png/bcl2fastq_undetermined-cnt.png", + "multiqc/multiqc_plots/png/bcl2fastq_undetermined-pct.png", + "multiqc/multiqc_plots/png/fastp-seq-content-gc-plot_Read_1_After_filtering.png", + "multiqc/multiqc_plots/png/fastp-seq-content-gc-plot_Read_1_Before_filtering.png", + "multiqc/multiqc_plots/png/fastp-seq-content-n-plot_Read_1_After_filtering.png", + "multiqc/multiqc_plots/png/fastp-seq-content-n-plot_Read_1_Before_filtering.png", + "multiqc/multiqc_plots/png/fastp-seq-quality-plot_Read_1_After_filtering.png", + "multiqc/multiqc_plots/png/fastp-seq-quality-plot_Read_1_Before_filtering.png", + "multiqc/multiqc_plots/png/fastp_filtered_reads_plot-cnt.png", + "multiqc/multiqc_plots/png/fastp_filtered_reads_plot-pct.png", + "multiqc/multiqc_plots/png/fastqc-status-check-heatmap.png", + "multiqc/multiqc_plots/png/fastqc_per_base_n_content_plot.png", + "multiqc/multiqc_plots/png/fastqc_per_base_sequence_quality_plot.png", + "multiqc/multiqc_plots/png/fastqc_per_sequence_gc_content_plot_Counts.png", + "multiqc/multiqc_plots/png/fastqc_per_sequence_gc_content_plot_Percentages.png", + "multiqc/multiqc_plots/png/fastqc_per_sequence_quality_scores_plot.png", + "multiqc/multiqc_plots/png/fastqc_sequence_counts_plot-cnt.png", + "multiqc/multiqc_plots/png/fastqc_sequence_counts_plot-pct.png", + "multiqc/multiqc_plots/png/fastqc_sequence_duplication_levels_plot.png", + "multiqc/multiqc_plots/png/fastqc_top_overrepresented_sequences_table.png", + "multiqc/multiqc_plots/png/general_stats_table.png", + "multiqc/multiqc_plots/png/kraken-top-n-plot-cnt.png", + "multiqc/multiqc_plots/png/kraken-top-n-plot-pct.png", + "multiqc/multiqc_plots/svg", + "multiqc/multiqc_plots/svg/bcl2fastq-lane-stats-table.svg", + "multiqc/multiqc_plots/svg/bcl2fastq_lane_counts-cnt.svg", + "multiqc/multiqc_plots/svg/bcl2fastq_lane_counts-pct.svg", + "multiqc/multiqc_plots/svg/bcl2fastq_sample_counts-cnt.svg", + "multiqc/multiqc_plots/svg/bcl2fastq_sample_counts-pct.svg", + "multiqc/multiqc_plots/svg/bcl2fastq_undetermined-cnt.svg", + "multiqc/multiqc_plots/svg/bcl2fastq_undetermined-pct.svg", + "multiqc/multiqc_plots/svg/fastp-seq-content-gc-plot_Read_1_After_filtering.svg", + "multiqc/multiqc_plots/svg/fastp-seq-content-gc-plot_Read_1_Before_filtering.svg", + "multiqc/multiqc_plots/svg/fastp-seq-content-n-plot_Read_1_After_filtering.svg", + "multiqc/multiqc_plots/svg/fastp-seq-content-n-plot_Read_1_Before_filtering.svg", + "multiqc/multiqc_plots/svg/fastp-seq-quality-plot_Read_1_After_filtering.svg", + "multiqc/multiqc_plots/svg/fastp-seq-quality-plot_Read_1_Before_filtering.svg", + "multiqc/multiqc_plots/svg/fastp_filtered_reads_plot-cnt.svg", + "multiqc/multiqc_plots/svg/fastp_filtered_reads_plot-pct.svg", + "multiqc/multiqc_plots/svg/fastqc-status-check-heatmap.svg", + "multiqc/multiqc_plots/svg/fastqc_per_base_n_content_plot.svg", + "multiqc/multiqc_plots/svg/fastqc_per_base_sequence_quality_plot.svg", + "multiqc/multiqc_plots/svg/fastqc_per_sequence_gc_content_plot_Counts.svg", + "multiqc/multiqc_plots/svg/fastqc_per_sequence_gc_content_plot_Percentages.svg", + "multiqc/multiqc_plots/svg/fastqc_per_sequence_quality_scores_plot.svg", + "multiqc/multiqc_plots/svg/fastqc_sequence_counts_plot-cnt.svg", + "multiqc/multiqc_plots/svg/fastqc_sequence_counts_plot-pct.svg", + "multiqc/multiqc_plots/svg/fastqc_sequence_duplication_levels_plot.svg", + "multiqc/multiqc_plots/svg/fastqc_top_overrepresented_sequences_table.svg", + "multiqc/multiqc_plots/svg/general_stats_table.svg", + "multiqc/multiqc_plots/svg/kraken-top-n-plot-cnt.svg", + "multiqc/multiqc_plots/svg/kraken-top-n-plot-pct.svg", + "multiqc/multiqc_report.html", + "pipeline_info", + "pipeline_info/nf_core_pipeline_software_mqc_versions.yml", + "samplesheet", + "samplesheet/samplesheet.csv" + ], + [ + "220422_M11111_0222_000000000-K9H97.lane1_no_adapters.csv:md5,ee5db2e12754e069998b0a96e535238c", + "ControlMetricsOut.bin:md5,6d77b38d0793a6e1ce1e85706e488953", + "CorrectedIntMetricsOut.bin:md5,2bbf84d3be72734addaa2fe794711434", + "ErrorMetricsOut.bin:md5,38c88def138e9bb832539911affdb286", + "ExtractionMetricsOut.bin:md5,7497c3178837eea8f09350b5cd252e99", + "IndexMetricsOut.bin:md5,9e688c58a5487b8eaf69c9e1005ad0bf", + "QMetricsOut.bin:md5,7e9f198d53ebdfbb699a5f94cf1ed51c", + "TileMetricsOut.bin:md5,83891751ec1c91a425a524b476b6ca3c", + "Report.css:md5,eb7d3eb68fc1539f411404987246b59b", + "index.html:md5,5747c407854ae2c358d0ec201ce622d8", + "tree.html:md5,a1b9bf592973ca829ec69ddf888b7e34", + "Sample1_S1_L001.fastp.fastq.gz:md5,64639ff33d4b07d62a9079f88cbbd373", + "Sample1_S1_L001.fastp.fastq.gz.md5:md5,c3cd96f3a22fb6afbaa1df324814d54c", + "Sample1_S1_L001.fastp.json:md5,d9d2d702f3c64412a04cd0768863b1ab", + "Sample1_S1_L001.kraken2.report.txt:md5,726f60beda853ebb9134f6a712c4196b", + "Sample1_S1_L001_R1_001.fastq.gz:md5,0675fb6365322eaafb33c0f8e862b54b", + "Sample1_S1_L001_Sample1_S1_L001.fastp.fastq.gz:md5,53bf34dad1f8269eeed36e661ef036fb", + "Sample1_S1_L001_fastqc_data.txt:md5,0adf4e2617f55fabba0663583c1f65b7", + "Sample1_S1_L001_summary.txt:md5,510c6b8a26ff8d530950c05b3ca5a1c6", + "AdapterTrimming.txt:md5,48ed2b914b1246c0b5d8667525550946", + "DemultiplexingStats.xml:md5,2047ff18f5b9107c084de06e9ff943ad", + "FastqSummaryF1L1.txt:md5,0c6f2d87ee183b84d1051cde9a5643d1", + "bcl2fastq-lane-stats-table.txt:md5,d0e821a9c0ccf7da808c5dd05e99ddc2", + "bcl2fastq_lane_counts.txt:md5,9404ab530f43e442093337dd10c351c5", + "bcl2fastq_sample_counts.txt:md5,93cb0cd1aee1b464f0e640e1c3d0c142", + "fastp-seq-content-gc-plot_Read_1_After_filtering.txt:md5,8105d4ce1d752e1f8a26e4291e8d9c6c", + "fastp-seq-content-gc-plot_Read_1_Before_filtering.txt:md5,0ac68e41c4de8ca35a1cd6ee7c6cb3f3", + "fastp-seq-content-n-plot_Read_1_After_filtering.txt:md5,1ec69a9fd0d46a39dfb59e377733e98b", + "fastp-seq-content-n-plot_Read_1_Before_filtering.txt:md5,1ec69a9fd0d46a39dfb59e377733e98b", + "fastp-seq-quality-plot_Read_1_After_filtering.txt:md5,1701b40c23dca068210f5410788e3be1", + "fastp-seq-quality-plot_Read_1_Before_filtering.txt:md5,35de9aebdc467b1bbc9fd1f40d3aece4", + "fastp_filtered_reads_plot.txt:md5,fa14a1941e109d4104c33db0e5fe20fc", + "fastqc_per_base_n_content_plot.txt:md5,d7db99124db8f53d82c51c779ce77463", + "fastqc_per_base_sequence_quality_plot.txt:md5,31c51bbd7d4dbb32107efa95c8a58ee5", + "fastqc_per_sequence_gc_content_plot_Counts.txt:md5,842eaa1c62a8e6676b4b07226bda998b", + "fastqc_per_sequence_gc_content_plot_Percentages.txt:md5,b231390d458d0bfdf4fa1360a776e03c", + "fastqc_per_sequence_quality_scores_plot.txt:md5,edbe64e0545cb866af73a649349d2a42", + "fastqc_sequence_counts_plot.txt:md5,662c69090978601ca7d39504b1ac736b", + "fastqc_sequence_duplication_levels_plot.txt:md5,cc02a5151984c0a9fdf8316bfb05088b", + "kraken-top-n-plot.txt:md5,add0b89a8b3d1729dac311870959b1e7", + "multiqc_bcl2fastq_bysample.txt:md5,baaa56d8315c18633f6ce6568d6f0657", + "multiqc_citations.txt:md5,97f1dcb4348072ce2865c29c5c306a3d", + "multiqc_kraken.txt:md5,a90fd69786a0df1e43b948e423545654" + ] + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.09.2" + }, + "timestamp": "2024-10-15T16:57:22.70902" + } +} diff --git a/tests/mkfastq.nf.test b/tests/mkfastq.nf.test new file mode 100644 index 00000000..a9378098 --- /dev/null +++ b/tests/mkfastq.nf.test @@ -0,0 +1,37 @@ +nextflow_pipeline { + + name "Test Workflow main.nf - mkfastq" + script "../main.nf" + profile "test_mkfastq" + tag "mkfastq" + tag "pipeline" + + test("MKFASTQ") { + + when { + params { + outdir = "$outputDir" + } + } + + then { + // stable_name: All files + folders in ${params.outdir}/ with a stable name + def stable_name = getAllFilesFromDir(params.outdir, relative: true, includeDir: true, ignore: ['pipeline_info/*.{html,json,txt}']) + // stable_path: All files in ${params.outdir}/ with stable content + def stable_path = getAllFilesFromDir(params.outdir, ignoreFile: 'tests/.nftignore') + assertAll( + { assert workflow.success}, + { assert snapshot( + // Number of successful tasks + workflow.trace.succeeded().size(), + // pipeline versions.yml file for multiqc from which Nextflow version is removed because we tests pipelines on multiple Nextflow versions + removeNextflowVersion("$outputDir/pipeline_info/nf_core_pipeline_software_mqc_versions.yml"), + // All stable path name, with a relative path + stable_name, + // All files with stable contents + stable_path + ).match() } + ) + } + } +} diff --git a/tests/mkfastq.nf.test.snap b/tests/mkfastq.nf.test.snap new file mode 100644 index 00000000..c95a793e --- /dev/null +++ b/tests/mkfastq.nf.test.snap @@ -0,0 +1,207 @@ +{ + "MKFASTQ": { + "content": [ + 10, + { + "CELLRANGER_MKFASTQ": { + "cellranger": "8.0.0" + }, + "FASTP": { + "fastp": "0.23.4" + }, + "MD5SUM": { + "md5sum": 8.3 + }, + "UNTAR_FLOWCELL": { + "untar": 1.34 + }, + "Workflow": { + "nf-core/demultiplex": "v1.5.2" + } + }, + [ + "cellranger-tiny-bcl-simple", + "cellranger-tiny-bcl-simple.lane1_no_adapters.csv", + "cellranger-tiny-bcl-simple/InterOp", + "cellranger-tiny-bcl-simple/InterOp/IndexMetricsOut.bin", + "cellranger-tiny-bcl-simple/L001", + "cellranger-tiny-bcl-simple/L001/Reports", + "cellranger-tiny-bcl-simple/L001/Reports/html", + "cellranger-tiny-bcl-simple/L001/Reports/html/H35KCBCXY", + "cellranger-tiny-bcl-simple/L001/Reports/html/H35KCBCXY/all", + "cellranger-tiny-bcl-simple/L001/Reports/html/H35KCBCXY/all/all", + "cellranger-tiny-bcl-simple/L001/Reports/html/H35KCBCXY/all/all/all", + "cellranger-tiny-bcl-simple/L001/Reports/html/H35KCBCXY/all/all/unknown", + "cellranger-tiny-bcl-simple/L001/Reports/html/H35KCBCXY/default", + "cellranger-tiny-bcl-simple/L001/Reports/html/H35KCBCXY/default/Undetermined", + "cellranger-tiny-bcl-simple/L001/Reports/html/H35KCBCXY/default/Undetermined/all", + "cellranger-tiny-bcl-simple/L001/Reports/html/H35KCBCXY/default/Undetermined/unknown", + "cellranger-tiny-bcl-simple/L001/Reports/html/H35KCBCXY/default/all", + "cellranger-tiny-bcl-simple/L001/Reports/html/H35KCBCXY/default/all/all", + "cellranger-tiny-bcl-simple/L001/Reports/html/H35KCBCXY/default/all/unknown", + "cellranger-tiny-bcl-simple/L001/Reports/html/H35KCBCXY/p1", + "cellranger-tiny-bcl-simple/L001/Reports/html/H35KCBCXY/p1/all", + "cellranger-tiny-bcl-simple/L001/Reports/html/H35KCBCXY/p1/all/all", + "cellranger-tiny-bcl-simple/L001/Reports/html/H35KCBCXY/p1/all/unknown", + "cellranger-tiny-bcl-simple/L001/Reports/html/H35KCBCXY/p1/test_sample_S1", + "cellranger-tiny-bcl-simple/L001/Reports/html/H35KCBCXY/p1/test_sample_S1/AGATCGGT", + "cellranger-tiny-bcl-simple/L001/Reports/html/H35KCBCXY/p1/test_sample_S1/all", + "cellranger-tiny-bcl-simple/L001/Reports/html/H35KCBCXY/p1/test_sample_S1/unknown", + "cellranger-tiny-bcl-simple/L001/Reports/html/H35KCBCXY/p1/test_sample_S2", + "cellranger-tiny-bcl-simple/L001/Reports/html/H35KCBCXY/p1/test_sample_S2/CATCGTCG", + "cellranger-tiny-bcl-simple/L001/Reports/html/H35KCBCXY/p1/test_sample_S2/all", + "cellranger-tiny-bcl-simple/L001/Reports/html/H35KCBCXY/p1/test_sample_S2/unknown", + "cellranger-tiny-bcl-simple/L001/Reports/html/H35KCBCXY/p1/test_sample_S3", + "cellranger-tiny-bcl-simple/L001/Reports/html/H35KCBCXY/p1/test_sample_S3/GTCATATA", + "cellranger-tiny-bcl-simple/L001/Reports/html/H35KCBCXY/p1/test_sample_S3/all", + "cellranger-tiny-bcl-simple/L001/Reports/html/H35KCBCXY/p1/test_sample_S3/unknown", + "cellranger-tiny-bcl-simple/L001/Reports/html/H35KCBCXY/p1/test_sample_S4", + "cellranger-tiny-bcl-simple/L001/Reports/html/H35KCBCXY/p1/test_sample_S4/TCGGACAC", + "cellranger-tiny-bcl-simple/L001/Reports/html/H35KCBCXY/p1/test_sample_S4/all", + "cellranger-tiny-bcl-simple/L001/Reports/html/H35KCBCXY/p1/test_sample_S4/unknown", + "cellranger-tiny-bcl-simple/L001/Stats", + "cellranger-tiny-bcl-simple/L001/Stats/AdapterTrimming.txt", + "cellranger-tiny-bcl-simple/L001/Stats/ConversionStats.xml", + "cellranger-tiny-bcl-simple/L001/Stats/DemultiplexingStats.xml", + "cellranger-tiny-bcl-simple/L001/Stats/DemuxSummaryF1L1.txt", + "cellranger-tiny-bcl-simple/L001/Stats/FastqSummaryF1L1.txt", + "cellranger-tiny-bcl-simple/L001/Stats/Stats.json", + "cellranger-tiny-bcl-simple/L001/test_sample_S1_L001.fastp.html", + "cellranger-tiny-bcl-simple/L001/test_sample_S1_L001.fastp.json", + "cellranger-tiny-bcl-simple/L001/test_sample_S1_L001_1.fastp.fastq.gz", + "cellranger-tiny-bcl-simple/L001/test_sample_S1_L001_1.fastp.fastq.gz.md5", + "cellranger-tiny-bcl-simple/L001/test_sample_S1_L001_2.fastp.fastq.gz", + "cellranger-tiny-bcl-simple/L001/test_sample_S1_L001_2.fastp.fastq.gz.md5", + "cellranger-tiny-bcl-simple/L001/test_sample_S1_L001_I1_001.fastp.fastq.gz", + "cellranger-tiny-bcl-simple/L001/test_sample_S1_L001_I1_001.fastp.fastq.gz.md5", + "cellranger-tiny-bcl-simple/L001/test_sample_S1_L001_I1_001.fastp.html", + "cellranger-tiny-bcl-simple/L001/test_sample_S1_L001_I1_001.fastp.json", + "cellranger-tiny-bcl-simple/L001/test_sample_S1_L001_I1_001.fastq.gz", + "cellranger-tiny-bcl-simple/L001/test_sample_S1_L001_R1_001.fastq.gz", + "cellranger-tiny-bcl-simple/L001/test_sample_S1_L001_R2_001.fastq.gz", + "cellranger-tiny-bcl-simple/L001/undetermined", + "cellranger-tiny-bcl-simple/L001/undetermined/Undetermined_S0_L001_I1_001.fastq.gz", + "cellranger-tiny-bcl-simple/L001/undetermined/Undetermined_S0_L001_R1_001.fastq.gz", + "cellranger-tiny-bcl-simple/L001/undetermined/Undetermined_S0_L001_R2_001.fastq.gz", + "fastq", + "fastq/test_sample_S1_L001.samplesheet.csv", + "fastq/test_sample_S1_L001_I1_001.samplesheet.csv", + "multiqc", + "multiqc/multiqc_data", + "multiqc/multiqc_data/fastp-seq-content-gc-plot_Read_1_After_filtering.txt", + "multiqc/multiqc_data/fastp-seq-content-gc-plot_Read_1_Before_filtering.txt", + "multiqc/multiqc_data/fastp-seq-content-gc-plot_Read_2_After_filtering.txt", + "multiqc/multiqc_data/fastp-seq-content-gc-plot_Read_2_Before_filtering.txt", + "multiqc/multiqc_data/fastp-seq-content-n-plot_Read_1_After_filtering.txt", + "multiqc/multiqc_data/fastp-seq-content-n-plot_Read_1_Before_filtering.txt", + "multiqc/multiqc_data/fastp-seq-content-n-plot_Read_2_After_filtering.txt", + "multiqc/multiqc_data/fastp-seq-content-n-plot_Read_2_Before_filtering.txt", + "multiqc/multiqc_data/fastp-seq-quality-plot_Read_1_After_filtering.txt", + "multiqc/multiqc_data/fastp-seq-quality-plot_Read_1_Before_filtering.txt", + "multiqc/multiqc_data/fastp-seq-quality-plot_Read_2_After_filtering.txt", + "multiqc/multiqc_data/fastp-seq-quality-plot_Read_2_Before_filtering.txt", + "multiqc/multiqc_data/fastp_filtered_reads_plot.txt", + "multiqc/multiqc_data/multiqc.log", + "multiqc/multiqc_data/multiqc_citations.txt", + "multiqc/multiqc_data/multiqc_data.json", + "multiqc/multiqc_data/multiqc_fastp.txt", + "multiqc/multiqc_data/multiqc_general_stats.txt", + "multiqc/multiqc_data/multiqc_software_versions.txt", + "multiqc/multiqc_data/multiqc_sources.txt", + "multiqc/multiqc_plots", + "multiqc/multiqc_plots/pdf", + "multiqc/multiqc_plots/pdf/fastp-seq-content-gc-plot_Read_1_After_filtering.pdf", + "multiqc/multiqc_plots/pdf/fastp-seq-content-gc-plot_Read_1_Before_filtering.pdf", + "multiqc/multiqc_plots/pdf/fastp-seq-content-gc-plot_Read_2_After_filtering.pdf", + "multiqc/multiqc_plots/pdf/fastp-seq-content-gc-plot_Read_2_Before_filtering.pdf", + "multiqc/multiqc_plots/pdf/fastp-seq-content-n-plot_Read_1_After_filtering.pdf", + "multiqc/multiqc_plots/pdf/fastp-seq-content-n-plot_Read_1_Before_filtering.pdf", + "multiqc/multiqc_plots/pdf/fastp-seq-content-n-plot_Read_2_After_filtering.pdf", + "multiqc/multiqc_plots/pdf/fastp-seq-content-n-plot_Read_2_Before_filtering.pdf", + "multiqc/multiqc_plots/pdf/fastp-seq-quality-plot_Read_1_After_filtering.pdf", + "multiqc/multiqc_plots/pdf/fastp-seq-quality-plot_Read_1_Before_filtering.pdf", + "multiqc/multiqc_plots/pdf/fastp-seq-quality-plot_Read_2_After_filtering.pdf", + "multiqc/multiqc_plots/pdf/fastp-seq-quality-plot_Read_2_Before_filtering.pdf", + "multiqc/multiqc_plots/pdf/fastp_filtered_reads_plot-cnt.pdf", + "multiqc/multiqc_plots/pdf/fastp_filtered_reads_plot-pct.pdf", + "multiqc/multiqc_plots/pdf/general_stats_table.pdf", + "multiqc/multiqc_plots/png", + "multiqc/multiqc_plots/png/fastp-seq-content-gc-plot_Read_1_After_filtering.png", + "multiqc/multiqc_plots/png/fastp-seq-content-gc-plot_Read_1_Before_filtering.png", + "multiqc/multiqc_plots/png/fastp-seq-content-gc-plot_Read_2_After_filtering.png", + "multiqc/multiqc_plots/png/fastp-seq-content-gc-plot_Read_2_Before_filtering.png", + "multiqc/multiqc_plots/png/fastp-seq-content-n-plot_Read_1_After_filtering.png", + "multiqc/multiqc_plots/png/fastp-seq-content-n-plot_Read_1_Before_filtering.png", + "multiqc/multiqc_plots/png/fastp-seq-content-n-plot_Read_2_After_filtering.png", + "multiqc/multiqc_plots/png/fastp-seq-content-n-plot_Read_2_Before_filtering.png", + "multiqc/multiqc_plots/png/fastp-seq-quality-plot_Read_1_After_filtering.png", + "multiqc/multiqc_plots/png/fastp-seq-quality-plot_Read_1_Before_filtering.png", + "multiqc/multiqc_plots/png/fastp-seq-quality-plot_Read_2_After_filtering.png", + "multiqc/multiqc_plots/png/fastp-seq-quality-plot_Read_2_Before_filtering.png", + "multiqc/multiqc_plots/png/fastp_filtered_reads_plot-cnt.png", + "multiqc/multiqc_plots/png/fastp_filtered_reads_plot-pct.png", + "multiqc/multiqc_plots/png/general_stats_table.png", + "multiqc/multiqc_plots/svg", + "multiqc/multiqc_plots/svg/fastp-seq-content-gc-plot_Read_1_After_filtering.svg", + "multiqc/multiqc_plots/svg/fastp-seq-content-gc-plot_Read_1_Before_filtering.svg", + "multiqc/multiqc_plots/svg/fastp-seq-content-gc-plot_Read_2_After_filtering.svg", + "multiqc/multiqc_plots/svg/fastp-seq-content-gc-plot_Read_2_Before_filtering.svg", + "multiqc/multiqc_plots/svg/fastp-seq-content-n-plot_Read_1_After_filtering.svg", + "multiqc/multiqc_plots/svg/fastp-seq-content-n-plot_Read_1_Before_filtering.svg", + "multiqc/multiqc_plots/svg/fastp-seq-content-n-plot_Read_2_After_filtering.svg", + "multiqc/multiqc_plots/svg/fastp-seq-content-n-plot_Read_2_Before_filtering.svg", + "multiqc/multiqc_plots/svg/fastp-seq-quality-plot_Read_1_After_filtering.svg", + "multiqc/multiqc_plots/svg/fastp-seq-quality-plot_Read_1_Before_filtering.svg", + "multiqc/multiqc_plots/svg/fastp-seq-quality-plot_Read_2_After_filtering.svg", + "multiqc/multiqc_plots/svg/fastp-seq-quality-plot_Read_2_Before_filtering.svg", + "multiqc/multiqc_plots/svg/fastp_filtered_reads_plot-cnt.svg", + "multiqc/multiqc_plots/svg/fastp_filtered_reads_plot-pct.svg", + "multiqc/multiqc_plots/svg/general_stats_table.svg", + "multiqc/multiqc_report.html", + "pipeline_info", + "pipeline_info/nf_core_pipeline_software_mqc_versions.yml", + "samplesheet", + "samplesheet/samplesheet.csv" + ], + [ + "cellranger-tiny-bcl-simple.lane1_no_adapters.csv:md5,86a945ab9d579c7bc98d43f76a07118b", + "IndexMetricsOut.bin:md5,e2ac28695537336b53a509f48e93ed1f", + "AdapterTrimming.txt:md5,522b8c57ed2a84da31ec3edda9424b60", + "DemultiplexingStats.xml:md5,60cce68e6a27371dc257ca9f65e14cc1", + "FastqSummaryF1L1.txt:md5,876f188644f5e12eca513baeff158306", + "test_sample_S1_L001.fastp.json:md5,e4321caea21d0c44d0d7269065bdb79d", + "test_sample_S1_L001_1.fastp.fastq.gz:md5,b348491a3b1afa096fde514dbdf55215", + "test_sample_S1_L001_1.fastp.fastq.gz.md5:md5,43d7882f3aaae47b56df56da6c802236", + "test_sample_S1_L001_2.fastp.fastq.gz:md5,1c60f1f3958b8b2b0255b9fae6df0b3d", + "test_sample_S1_L001_2.fastp.fastq.gz.md5:md5,01d742cc56639c476b0bac0c094eba4b", + "test_sample_S1_L001_I1_001.fastp.fastq.gz.md5:md5,82e397b4a2418f27269a30f6ca0e349e", + "test_sample_S1_L001_I1_001.fastp.json:md5,b5368b3125c35f7a5dfa2d273cd79c32", + "test_sample_S1_L001_I1_001.fastq.gz:md5,018b0dbd8daf76fb9f6dfa4729ea0453", + "test_sample_S1_L001_R1_001.fastq.gz:md5,df3ddf85d83bd722219c646c7815dbdc", + "test_sample_S1_L001_R2_001.fastq.gz:md5,c8a387b517ff5b7e56b85ccbf882efd2", + "Undetermined_S0_L001_I1_001.fastq.gz:md5,c93946d67bdb1d5b2ab955fd1dc9cb31", + "Undetermined_S0_L001_R1_001.fastq.gz:md5,faa79ce215ae72fdc3375cda066c6757", + "Undetermined_S0_L001_R2_001.fastq.gz:md5,d8955db4dfbf7aee89b6bdc3b7629f8f", + "fastp-seq-content-gc-plot_Read_1_After_filtering.txt:md5,5953425f014393290207576aa56e6d42", + "fastp-seq-content-gc-plot_Read_1_Before_filtering.txt:md5,3c7730e3eeb0e2524b0a84b082c19040", + "fastp-seq-content-gc-plot_Read_2_After_filtering.txt:md5,02ba2b6de08816bb4ae6aa68790290bf", + "fastp-seq-content-gc-plot_Read_2_Before_filtering.txt:md5,02f72985d3e63dd7382ae44615b14a96", + "fastp-seq-content-n-plot_Read_1_After_filtering.txt:md5,377a3c1c7416bcf46ca32fd2582dac6c", + "fastp-seq-content-n-plot_Read_1_Before_filtering.txt:md5,8090c7fcc95f4c5527d6ba2787df6a5c", + "fastp-seq-content-n-plot_Read_2_After_filtering.txt:md5,cb5e811b235ec03db4df0f8872a1ae31", + "fastp-seq-content-n-plot_Read_2_Before_filtering.txt:md5,cb5e811b235ec03db4df0f8872a1ae31", + "fastp-seq-quality-plot_Read_1_After_filtering.txt:md5,4138bccdf99f1a2ccb3cee0fc1552aee", + "fastp-seq-quality-plot_Read_1_Before_filtering.txt:md5,701d4a7b730bbd3e8b457fa2b1264854", + "fastp-seq-quality-plot_Read_2_After_filtering.txt:md5,d6fc359d4e2be31d802b8553bcf5af93", + "fastp-seq-quality-plot_Read_2_Before_filtering.txt:md5,e80f62d45ca21cacbd19f899f768c308", + "fastp_filtered_reads_plot.txt:md5,39d2e637c3e1482821c62c00482c8421", + "multiqc_citations.txt:md5,d35df50e9903a96a2b3bce3c1fbc8ad2" + ] + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.09.2" + }, + "timestamp": "2024-10-15T14:34:23.682439" + } +} diff --git a/tests/pipeline/bases2fastq.nf.test b/tests/pipeline/bases2fastq.nf.test deleted file mode 100644 index 7a92b9d3..00000000 --- a/tests/pipeline/bases2fastq.nf.test +++ /dev/null @@ -1,40 +0,0 @@ -nextflow_pipeline { - - name "Test Workflow main.nf - BASES2FASTQ" - script "main.nf" - profile "test_bases2fastq" - tag "bases2fastq" - tag "pipeline" - - test("Bases2Fastq") { - - when { - params { - outdir = "$outputDir" - } - } - - then { - assertAll( - { assert workflow.success }, - { assert snapshot(UTILS.removeNextflowVersion("$outputDir")).match("software_versions") }, - { assert workflow.trace.succeeded().size() == 8 }, - { assert snapshot( - // FIXME - // path("$outputDir/sim-data/DefaultSample_R1.fastq.gz.md5"), - // path("$outputDir/sim-data/DefaultSample_R2.fastq.gz.md5"), - path("$outputDir/sim-data/Metrics.csv"), - path("$outputDir/sim-data/UnassignedSequences.csv"), - path("$outputDir/sim-data/Samples/DefaultProject/DefaultSample/DefaultSample_R1.fastq.gz"), - path("$outputDir/sim-data/Samples/DefaultProject/DefaultSample/DefaultSample_R2.fastq.gz") - ).match("bases2fastq") }, - { assert new File("$outputDir/sim-data/20230404-Bases2Fastq-Sim_QC.html").exists() }, - { assert new File("$outputDir/sim-data/RunStats.json").exists() }, - { assert new File("$outputDir/sim-data/Samples/DefaultProject/DefaultSample/DefaultSample_stats.json").exists() }, - { assert new File("$outputDir/sim-data/RunManifest.json").exists() } - ) - } - - } - -} diff --git a/tests/pipeline/bases2fastq.nf.test.snap b/tests/pipeline/bases2fastq.nf.test.snap deleted file mode 100644 index fe10d197..00000000 --- a/tests/pipeline/bases2fastq.nf.test.snap +++ /dev/null @@ -1,25 +0,0 @@ -{ - "software_versions": { - "content": [ - "{BASES2FASTQ={bases2fastq=1.8.0.1260801529, use subject to license available at elementbiosciences.com}, FALCO={falco=1.2.1}, FASTP={fastp=0.23.4}, MD5SUM={md5sum=8.3}, UNTAR_FLOWCELL={untar=1.34}, Workflow={nf-core/demultiplex=v1.5.2}}" - ], - "meta": { - "nf-test": "0.9.0", - "nextflow": "23.10.1" - }, - "timestamp": "2024-08-06T15:54:30.10412" - }, - "bases2fastq": { - "content": [ - "Metrics.csv:md5,ad7af77573845924062e2554cc641b16", - "UnassignedSequences.csv:md5,11c1693830ce941b8cfb8d2431a59097", - "DefaultSample_R1.fastq.gz:md5,6c73b924e4eb53b716614aa6fd8b791a", - "DefaultSample_R2.fastq.gz:md5,54e2c0894844e42605b7cd567b1c7dbe" - ], - "meta": { - "nf-test": "0.9.0", - "nextflow": "23.10.1" - }, - "timestamp": "2024-08-06T15:54:30.125104" - } -} diff --git a/tests/pipeline/bcl2fastq.nf.test b/tests/pipeline/bcl2fastq.nf.test deleted file mode 100644 index 312ff522..00000000 --- a/tests/pipeline/bcl2fastq.nf.test +++ /dev/null @@ -1,39 +0,0 @@ -nextflow_pipeline { - - name "Test Workflow main.nf - BCL2FASTQ" - script "main.nf" - profile "test_bcl2fastq" - tag "bcl2fastq" - tag "pipeline" - - test("Bcl2Fastq") { - - when { - params { - outdir = "$outputDir" - } - } - - then { - assertAll( - { assert workflow.success }, - { assert snapshot(UTILS.removeNextflowVersion("$outputDir")).match("software_versions") }, - { assert workflow.trace.succeeded().size() == 6 }, - { assert snapshot( - path("$outputDir/multiqc/multiqc_data/bcl2fastq_lane_counts.txt"), - path("$outputDir/multiqc/multiqc_data/fastp_filtered_reads_plot.txt"), - path("$outputDir/multiqc/multiqc_data/bcl2fastq_sample_counts.txt") - ).match("multiqc") }, - { assert snapshot( - path("$outputDir/220422_M11111_0222_000000000-K9H97/L001/Sample1_S1_L001.fastp.fastq.gz"), - path("$outputDir/220422_M11111_0222_000000000-K9H97/L001/Sample1_S1_L001_R1_001.fastq.gz"), - path("$outputDir/220422_M11111_0222_000000000-K9H97/L001/Sample1_S1_L001_summary.txt"), - path("$outputDir/220422_M11111_0222_000000000-K9H97/L001/Reports/").list(), - path("$outputDir/220422_M11111_0222_000000000-K9H97/L001/Stats/").list() - ).match("bcl2fastq") } - ) - } - - } - -} diff --git a/tests/pipeline/bcl2fastq.nf.test.snap b/tests/pipeline/bcl2fastq.nf.test.snap deleted file mode 100644 index f819eb72..00000000 --- a/tests/pipeline/bcl2fastq.nf.test.snap +++ /dev/null @@ -1,85 +0,0 @@ -{ - "software_versions": { - "content": [ - "{BCL2FASTQ={bcl2fastq=2.20.0.422}, FALCO={falco=1.2.1}, FASTP={fastp=0.23.4}, MD5SUM={md5sum=8.3}, Workflow={nf-core/demultiplex=v1.5.2}}" - ], - "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.4" - }, - "timestamp": "2024-08-08T20:43:41.988053048" - }, - "bcl2fastq": { - "content": [ - "Sample1_S1_L001.fastp.fastq.gz:md5,64639ff33d4b07d62a9079f88cbbd373", - "Sample1_S1_L001_R1_001.fastq.gz:md5,0675fb6365322eaafb33c0f8e862b54b", - "Sample1_S1_L001_summary.txt:md5,510c6b8a26ff8d530950c05b3ca5a1c6", - [ - [ - [ - [ - [ - [ - "lane.html:md5,794e48287f47a9f22dcb6b6d0c22c3eb", - "laneBarcode.html:md5,2bbdae3ee57151eab520c966597d7438" - ], - [ - - ] - ] - ], - [ - [ - [ - "lane.html:md5,f741870307050dcea79a838f5971770f", - "laneBarcode.html:md5,ffe2e863811c76cb9da27d5d124e0611" - ], - [ - "lane.html:md5,cca97e771d3491dbc8cd3fe389595b09", - "laneBarcode.html:md5,cca97e771d3491dbc8cd3fe389595b09" - ] - ], - [ - [ - "lane.html:md5,c383b0768d9978733d3f5d3b91c15af0", - "laneBarcode.html:md5,48842c23b9a2816aec540177df870968" - ], - [ - - ] - ] - ] - ], - "Report.css:md5,eb7d3eb68fc1539f411404987246b59b", - "index.html:md5,5747c407854ae2c358d0ec201ce622d8", - "tree.html:md5,a1b9bf592973ca829ec69ddf888b7e34" - ] - ], - [ - "AdapterTrimming.txt:md5,48ed2b914b1246c0b5d8667525550946", - "ConversionStats.xml:md5,8fe0f57f3f5d256a0762dba75ac62d05", - "DemultiplexingStats.xml:md5,2047ff18f5b9107c084de06e9ff943ad", - "DemuxSummaryF1L1.txt:md5,03e5fd0c1e3079c5f8c7b4d0501b37ff", - "FastqSummaryF1L1.txt:md5,0c6f2d87ee183b84d1051cde9a5643d1", - "Stats.json:md5,8e5f038b8aa9e465599d3575f930e604" - ] - ], - "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.4" - }, - "timestamp": "2024-08-08T20:43:42.035230933" - }, - "multiqc": { - "content": [ - "bcl2fastq_lane_counts.txt:md5,9404ab530f43e442093337dd10c351c5", - "fastp_filtered_reads_plot.txt:md5,fa14a1941e109d4104c33db0e5fe20fc", - "bcl2fastq_sample_counts.txt:md5,93cb0cd1aee1b464f0e640e1c3d0c142" - ], - "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.4" - }, - "timestamp": "2024-08-08T20:43:42.016587995" - } -} diff --git a/tests/pipeline/bclconvert.nf.test b/tests/pipeline/bclconvert.nf.test deleted file mode 100644 index ab3d93d0..00000000 --- a/tests/pipeline/bclconvert.nf.test +++ /dev/null @@ -1,39 +0,0 @@ -nextflow_pipeline { - - name "Test Workflow main.nf - BCLCONVERT" - script "main.nf" - profile "test" - tag "bclconvert" - tag "pipeline" - - test("BCL-CONVERT") { - - when { - params { - outdir = "$outputDir" - } - } - - then { - assertAll( - { assert workflow.success }, - { assert snapshot(UTILS.removeNextflowVersion("$outputDir")).match("software_versions") }, - { assert workflow.trace.succeeded().size() == 6 }, - { assert snapshot( - path("$outputDir/multiqc/multiqc_data/bclconvert_lane_counts.txt"), - path("$outputDir/multiqc/multiqc_data/fastp_filtered_reads_plot.txt"), - path("$outputDir/multiqc/multiqc_data/bclconvert_sample_counts_Counts_per_lane.txt") - ).match("multiqc") }, - { assert snapshot( - path("$outputDir/220422_M11111_0222_000000000-K9H97/L001/Sample1_S1_L001.fastp.fastq.gz"), - path("$outputDir/220422_M11111_0222_000000000-K9H97/L001/Sample1_S1_L001_R1_001.fastq.gz"), - path("$outputDir/220422_M11111_0222_000000000-K9H97/L001/Sample1_S1_L001_summary.txt"), - path("$outputDir/220422_M11111_0222_000000000-K9H97/L001/Undetermined_S0_L001_R1_001.fastq.gz"), - path("$outputDir/220422_M11111_0222_000000000-K9H97/L001/Reports/").list(), - ).match("bclconvert") } - ) - } - - } - -} diff --git a/tests/pipeline/bclconvert.nf.test.snap b/tests/pipeline/bclconvert.nf.test.snap deleted file mode 100644 index 570ef214..00000000 --- a/tests/pipeline/bclconvert.nf.test.snap +++ /dev/null @@ -1,51 +0,0 @@ -{ - "bclconvert": { - "content": [ - "Sample1_S1_L001.fastp.fastq.gz:md5,64639ff33d4b07d62a9079f88cbbd373", - "Sample1_S1_L001_R1_001.fastq.gz:md5,0675fb6365322eaafb33c0f8e862b54b", - "Sample1_S1_L001_summary.txt:md5,510c6b8a26ff8d530950c05b3ca5a1c6", - "Undetermined_S0_L001_R1_001.fastq.gz:md5,d41d8cd98f00b204e9800998ecf8427e", - [ - "Adapter_Cycle_Metrics.csv:md5,5a0c88793b4a0885fe3dda16609b576e", - "Adapter_Metrics.csv:md5,989240b8840b2169ac1061f952c90f6c", - "Demultiplex_Stats.csv:md5,93949a8cd96f907d83e0808c1ec2a04b", - "Demultiplex_Tile_Stats.csv:md5,83120160b0f22a1303fa1db31c19f6e9", - "IndexMetricsOut.bin:md5,9e688c58a5487b8eaf69c9e1005ad0bf", - "Index_Hopping_Counts.csv:md5,1059369e375fd8f8423c0f6c934be978", - "Quality_Metrics.csv:md5,6614accb1bb414fe312b17b81f5521f7", - "Quality_Tile_Metrics.csv:md5,cdc89fd2962bdd4a24f71e186112118a", - "RunInfo.xml:md5,03038959f4dd181c86bc97ae71fe270a", - "SampleSheet.csv:md5,ee5db2e12754e069998b0a96e535238c", - "Top_Unknown_Barcodes.csv:md5,2e2faba761137f228e56bd3428453ccc", - "fastq_list.csv:md5,ae1470cd741e33b87a4ad26f849a50f9" - ] - ], - "meta": { - "nf-test": "0.9.0", - "nextflow": "23.10.1" - }, - "timestamp": "2024-08-07T15:04:02.812091" - }, - "software_versions": { - "content": [ - "{BCLCONVERT={bclconvert=4.3.6}, FALCO={falco=1.2.1}, FASTP={fastp=0.23.4}, MD5SUM={md5sum=8.3}, Workflow={nf-core/demultiplex=v1.5.2}}" - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.3" - }, - "timestamp": "2024-07-25T20:31:51.596302017" - }, - "multiqc": { - "content": [ - "bclconvert_lane_counts.txt:md5,a327047d0d6c7de32eef9535bb159110", - "fastp_filtered_reads_plot.txt:md5,fa14a1941e109d4104c33db0e5fe20fc", - "bclconvert_sample_counts_Counts_per_lane.txt:md5,a7e57ab911ba2cf74ec7bd93b921036d" - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.4" - }, - "timestamp": "2024-10-02T20:50:32.184940324" - } -} diff --git a/tests/pipeline/bclconvert_mini.nf.test b/tests/pipeline/bclconvert_mini.nf.test deleted file mode 100644 index 6f947349..00000000 --- a/tests/pipeline/bclconvert_mini.nf.test +++ /dev/null @@ -1,55 +0,0 @@ -nextflow_pipeline { - - name "Test Workflow main.nf - BCLCONVERT-mini" - script "main.nf" - profile "test_bclconvert" - tag "bclconvert" - tag "pipeline" - - test("BCL-CONVERT-mini") { - - when { - params { - outdir = "$outputDir" - } - } - - then { - assertAll( - { assert workflow.success }, - { assert snapshot(UTILS.removeNextflowVersion("$outputDir")).match("software_versions") }, - { assert workflow.trace.succeeded().size() == 26 }, - { assert snapshot( - path("$outputDir/multiqc/multiqc_data/bclconvert_lane_counts.txt"), - path("$outputDir/multiqc/multiqc_data/fastp_filtered_reads_plot.txt"), - path("$outputDir/multiqc/multiqc_data/bclconvert_sample_counts_Counts_per_lane.txt") - ).match("multiqc") }, - { assert snapshot( - path("$outputDir/miniseq_truseq_smrna/HBRR1_S1_L001.fastp.fastq.gz"), - path("$outputDir/miniseq_truseq_smrna/HBRR1_S1_L001_R1_001.fastq.gz"), - path("$outputDir/miniseq_truseq_smrna/HBRR1_S1_L001_summary.txt"), - path("$outputDir/miniseq_truseq_smrna/HBRR2_S2_L001.fastp.fastq.gz"), - path("$outputDir/miniseq_truseq_smrna/HBRR2_S2_L001_R1_001.fastq.gz"), - path("$outputDir/miniseq_truseq_smrna/HBRR2_S2_L001_summary.txt"), - path("$outputDir/miniseq_truseq_smrna/HBRR3_S3_L001.fastp.fastq.gz"), - path("$outputDir/miniseq_truseq_smrna/HBRR3_S3_L001_R1_001.fastq.gz"), - path("$outputDir/miniseq_truseq_smrna/HBRR3_S3_L001_summary.txt"), - path("$outputDir/miniseq_truseq_smrna/UHRR1_S4_L001.fastp.fastq.gz"), - path("$outputDir/miniseq_truseq_smrna/UHRR1_S4_L001_R1_001.fastq.gz"), - path("$outputDir/miniseq_truseq_smrna/UHRR1_S4_L001_summary.txt"), - path("$outputDir/miniseq_truseq_smrna/UHRR2_S5_L001.fastp.fastq.gz"), - path("$outputDir/miniseq_truseq_smrna/UHRR2_S5_L001_R1_001.fastq.gz"), - path("$outputDir/miniseq_truseq_smrna/UHRR2_S5_L001_summary.txt"), - path("$outputDir/miniseq_truseq_smrna/UHRR3_S6_L001.fastp.fastq.gz"), - path("$outputDir/miniseq_truseq_smrna/UHRR3_S6_L001_R1_001.fastq.gz"), - path("$outputDir/miniseq_truseq_smrna/UHRR3_S6_L001_summary.txt"), - path("$outputDir/miniseq_truseq_smrna/Undetermined_S0_L001_R1_001.fastq.gz"), - path("$outputDir/miniseq_truseq_smrna/Reports/").list(), - path("$outputDir/miniseq_truseq_smrna/InterOp/").list() - ).match("bclconvert") } - ) - } - - } - -} diff --git a/tests/pipeline/bclconvert_mini.nf.test.snap b/tests/pipeline/bclconvert_mini.nf.test.snap deleted file mode 100644 index f837a605..00000000 --- a/tests/pipeline/bclconvert_mini.nf.test.snap +++ /dev/null @@ -1,83 +0,0 @@ -{ - "bclconvert": { - "content": [ - "HBRR1_S1_L001.fastp.fastq.gz:md5,451657490d4816dd5ff904e34ecc7fdf", - "HBRR1_S1_L001_R1_001.fastq.gz:md5,451657490d4816dd5ff904e34ecc7fdf", - "HBRR1_S1_L001_summary.txt:md5,53a5e6bac1e853f23d27d6966e52df81", - "HBRR2_S2_L001.fastp.fastq.gz:md5,3b9e4fc70ebc608b48d1f0027265e9b8", - "HBRR2_S2_L001_R1_001.fastq.gz:md5,3b9e4fc70ebc608b48d1f0027265e9b8", - "HBRR2_S2_L001_summary.txt:md5,f3e0bc27d30d0f6e10ad76be47017881", - "HBRR3_S3_L001.fastp.fastq.gz:md5,a110eefaee1da4d99398500e55919f0c", - "HBRR3_S3_L001_R1_001.fastq.gz:md5,a110eefaee1da4d99398500e55919f0c", - "HBRR3_S3_L001_summary.txt:md5,fbe9c4281a768a826429e328f5eb2a34", - "UHRR1_S4_L001.fastp.fastq.gz:md5,03f215bcb4005804f60acccfe4aaef78", - "UHRR1_S4_L001_R1_001.fastq.gz:md5,b470c82d2002c563c42786060ae364b9", - "UHRR1_S4_L001_summary.txt:md5,c6c342cbcad3fc68343284c24e4a8b4a", - "UHRR2_S5_L001.fastp.fastq.gz:md5,2186d5f37865f970d223953e9a5412ae", - "UHRR2_S5_L001_R1_001.fastq.gz:md5,47c36adf557bf4d37b0a84d055125290", - "UHRR2_S5_L001_summary.txt:md5,121a0aeaf860fae497a27e8eceff3283", - "UHRR3_S6_L001.fastp.fastq.gz:md5,674c4989c2270d88612fcf221e3e0950", - "UHRR3_S6_L001_R1_001.fastq.gz:md5,bdb407e3ded3691479ec25f5f1df3b07", - "UHRR3_S6_L001_summary.txt:md5,d7d5a014b51d64e4da1a113a4ad79eda", - "Undetermined_S0_L001_R1_001.fastq.gz:md5,b0b4daae001636cf033ff760a5ab479d", - [ - "Adapter_Cycle_Metrics.csv:md5,757778bb0ee048463c423dff14133a51", - "Adapter_Metrics.csv:md5,5cbba841c650097f1e759c2b75c7a005", - "Demultiplex_Stats.csv:md5,40c3efd7ffb9d02fcc97028f6ee98c96", - "Demultiplex_Tile_Stats.csv:md5,916e3e488c4ed847249d7d46401a57ff", - "IndexMetricsOut.bin:md5,9a6ad90fd45b3abd2360285feff76509", - "Index_Hopping_Counts.csv:md5,1059369e375fd8f8423c0f6c934be978", - "Quality_Metrics.csv:md5,215e001631d9383f73360975d5726f14", - "Quality_Tile_Metrics.csv:md5,122f967d30318f79f5a7ef59339f8275", - "RunInfo.xml:md5,d3d94b916915b35224ec362c64542190", - "SampleSheet.csv:md5,c32433167a5c56d5c15952c2e7948898", - "Top_Unknown_Barcodes.csv:md5,b5fa3ea9ba12fd35650e36e6c5cbdc99", - "fastq_list.csv:md5,07cbe4173e18cbdef16ee8feb4adaf7d" - ], - [ - "CorrectedIntMetricsOut.bin:md5,4d82e208f18bfd51a5f9275e05d073ba", - "EmpiricalPhasingMetricsOut.bin:md5,0e9d6b71c90661d800b1129a0097c301", - "ErrorMetricsOut.bin:md5,dbc41ced845d7645451c6995e5774c0b", - "EventMetricsOut.bin:md5,5a93a812df6a55e6d7a0f26bdf176e93", - "ExtendedTileMetricsOut.bin:md5,5ffaee26c4ed0074f69d8c62293118f9", - "ExtractionMetricsOut.bin:md5,a4d4c0d3b9afe453fae7ca6118c9346d", - "FWHMGridMetricsOut.bin:md5,80e7c3652f72edbc5f661a1f1b3b28fc", - "ImageMetricsOut.bin:md5,2dddf68f924261ab37f83e8ee750b6f2", - "IndexMetricsOut.bin:md5,e63ea5cfa848feab8a40ba469ff46845", - "PFGridMetricsOut.bin:md5,e65fed6f9594655657521a5359759b01", - "QMetrics2030Out.bin:md5,670b3c089d4d264103a01105d12abbe8", - "QMetricsByLaneOut.bin:md5,b6d8d8ff4144f33a3f4304743db53f97", - "QMetricsOut.bin:md5,13fee543cefb5d5ae1c108ccbb07f0e6", - "RegistrationMetricsOut.bin:md5,b201979275957afbbcea634698afc352", - "TileMetricsOut.bin:md5,0d2aa2c7e39eb33e61d2ed248068ed9d" - ] - ], - "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.4" - }, - "timestamp": "2024-09-30T15:27:18.543806" - }, - "software_versions": { - "content": [ - "{BCLCONVERT={bclconvert=4.3.6}, FALCO={falco=1.2.1}, FASTP={fastp=0.23.4}, MD5SUM={md5sum=8.3}, Workflow={nf-core/demultiplex=v1.5.2}}" - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.4" - }, - "timestamp": "2024-10-03T12:19:24.67962222" - }, - "multiqc": { - "content": [ - "bclconvert_lane_counts.txt:md5,32e8acea6fd6ef76943100329be22fee", - "fastp_filtered_reads_plot.txt:md5,8ab004632691b04b665920977beb8924", - "bclconvert_sample_counts_Counts_per_lane.txt:md5,2eb58439a3eb1eee508bdce0ee340649" - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.4" - }, - "timestamp": "2024-10-03T12:19:24.749587693" - } -} diff --git a/tests/pipeline/fqtk.nf.test b/tests/pipeline/fqtk.nf.test deleted file mode 100644 index 97dbd755..00000000 --- a/tests/pipeline/fqtk.nf.test +++ /dev/null @@ -1,75 +0,0 @@ -nextflow_pipeline { - - name "Test Workflow main.nf - FQTK" - script "main.nf" - profile "test_fqtk" - tag "fqtk" - - test("FQTK") { - - when { - params { - outdir = "$outputDir" - } - } - - then { - assertAll( - { assert workflow.success }, - { assert snapshot(UTILS.removeNextflowVersion("$outputDir")).match("software_versions") }, - { assert workflow.trace.succeeded().size() == 129 }, - { assert snapshot(path("$outputDir/test/demux-metrics.txt")).match("fqtk") }, - { assert new File("$outputDir/test/unmatched_1.fastp.fastq.gz").exists() }, - { assert new File("$outputDir/test/unmatched_2.fastp.fastq.gz").exists() }, - { assert new File("$outputDir/test/s10_1.fastp.fastq.gz").exists() }, - { assert new File("$outputDir/test/s10_2.fastp.fastq.gz").exists() }, - { assert new File("$outputDir/test/s11_1.fastp.fastq.gz").exists() }, - { assert new File("$outputDir/test/s11_2.fastp.fastq.gz").exists() }, - { assert new File("$outputDir/test/s12_1.fastp.fastq.gz").exists() }, - { assert new File("$outputDir/test/s12_2.fastp.fastq.gz").exists() }, - { assert new File("$outputDir/test/s13_1.fastp.fastq.gz").exists() }, - { assert new File("$outputDir/test/s13_2.fastp.fastq.gz").exists() }, - { assert new File("$outputDir/test/s14_1.fastp.fastq.gz").exists() }, - { assert new File("$outputDir/test/s14_2.fastp.fastq.gz").exists() }, - { assert new File("$outputDir/test/s15_1.fastp.fastq.gz").exists() }, - { assert new File("$outputDir/test/s15_2.fastp.fastq.gz").exists() }, - { assert new File("$outputDir/test/s16_1.fastp.fastq.gz").exists() }, - { assert new File("$outputDir/test/s16_2.fastp.fastq.gz").exists() }, - { assert new File("$outputDir/test/s17_1.fastp.fastq.gz").exists() }, - { assert new File("$outputDir/test/s17_2.fastp.fastq.gz").exists() }, - { assert new File("$outputDir/test/s18_1.fastp.fastq.gz").exists() }, - { assert new File("$outputDir/test/s18_2.fastp.fastq.gz").exists() }, - { assert new File("$outputDir/test/s19_1.fastp.fastq.gz").exists() }, - { assert new File("$outputDir/test/s19_2.fastp.fastq.gz").exists() }, - { assert new File("$outputDir/test/s1_1.fastp.fastq.gz").exists() }, - { assert new File("$outputDir/test/s1_2.fastp.fastq.gz").exists() }, - { assert new File("$outputDir/test/s20_1.fastp.fastq.gz").exists() }, - { assert new File("$outputDir/test/s20_2.fastp.fastq.gz").exists() }, - { assert new File("$outputDir/test/s21_1.fastp.fastq.gz").exists() }, - { assert new File("$outputDir/test/s21_2.fastp.fastq.gz").exists() }, - { assert new File("$outputDir/test/s22_1.fastp.fastq.gz").exists() }, - { assert new File("$outputDir/test/s22_2.fastp.fastq.gz").exists() }, - { assert new File("$outputDir/test/s23_1.fastp.fastq.gz").exists() }, - { assert new File("$outputDir/test/s23_2.fastp.fastq.gz").exists() }, - { assert new File("$outputDir/test/s24_1.fastp.fastq.gz").exists() }, - { assert new File("$outputDir/test/s24_2.fastp.fastq.gz").exists() }, - { assert new File("$outputDir/test/s2_1.fastp.fastq.gz").exists() }, - { assert new File("$outputDir/test/s2_2.fastp.fastq.gz").exists() }, - { assert new File("$outputDir/test/s3_1.fastp.fastq.gz").exists() }, - { assert new File("$outputDir/test/s3_2.fastp.fastq.gz").exists() }, - { assert new File("$outputDir/test/s4_1.fastp.fastq.gz").exists() }, - { assert new File("$outputDir/test/s4_2.fastp.fastq.gz").exists() }, - { assert new File("$outputDir/test/s5_1.fastp.fastq.gz").exists() }, - { assert new File("$outputDir/test/s5_2.fastp.fastq.gz").exists() }, - { assert new File("$outputDir/test/s6_1.fastp.fastq.gz").exists() }, - { assert new File("$outputDir/test/s6_2.fastp.fastq.gz").exists() }, - { assert new File("$outputDir/test/s7_1.fastp.fastq.gz").exists() }, - { assert new File("$outputDir/test/s7_2.fastp.fastq.gz").exists() }, - { assert new File("$outputDir/test/s8_1.fastp.fastq.gz").exists() }, - { assert new File("$outputDir/test/s8_2.fastp.fastq.gz").exists() }, - { assert new File("$outputDir/test/s9_1.fastp.fastq.gz").exists() }, - { assert new File("$outputDir/test/s9_2.fastp.fastq.gz").exists() } - ) - } - } -} diff --git a/tests/pipeline/fqtk.nf.test.snap b/tests/pipeline/fqtk.nf.test.snap deleted file mode 100644 index 005b38ff..00000000 --- a/tests/pipeline/fqtk.nf.test.snap +++ /dev/null @@ -1,22 +0,0 @@ -{ - "fqtk": { - "content": [ - "demux-metrics.txt:md5,1d587fa959f9129155314cf531103347" - ], - "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.3" - }, - "timestamp": "2023-10-17T08:06:53+0000" - }, - "software_versions": { - "content": [ - "{CSV2TSV={sed=4.8}, FALCO={falco=1.2.1}, FASTP={fastp=0.23.4}, FQTK={fqtk=0.2.1}, MD5SUM={md5sum=8.3}, UNTAR_FLOWCELL={untar=1.34}, Workflow={nf-core/demultiplex=v1.5.2}}" - ], - "meta": { - "nf-test": "0.9.0", - "nextflow": "23.10.0" - }, - "timestamp": "2024-08-02T19:57:17.122084549" - } -} diff --git a/tests/pipeline/kraken.nf.test b/tests/pipeline/kraken.nf.test deleted file mode 100644 index 0ee43998..00000000 --- a/tests/pipeline/kraken.nf.test +++ /dev/null @@ -1,47 +0,0 @@ -nextflow_pipeline { - - name "Test Workflow main.nf - Kraken" - script "main.nf" - config "../../conf/test_kraken.config" - profile "test" - tag "kraken" - tag "pipeline" - - test("kraken2") { - - when { - params { - input = 'https://raw.githubusercontent.com/nf-core/test-datasets/demultiplex/samplesheet/1.3.0/flowcell_input.csv' - demultiplexer = 'bcl2fastq' - outdir = "$outputDir" - skip_tools = "checkqc,samshee" - kraken_db = 'https://raw.githubusercontent.com/nf-core/test-datasets/modules/data/genomics/sarscov2/genome/db/kraken2.tar.gz' - - } - } - - then { - assertAll( - { assert workflow.success }, - { assert snapshot(UTILS.removeNextflowVersion("$outputDir")).match("software_versions") }, - { assert workflow.trace.succeeded().size() == 9 }, - { assert snapshot( - path("$outputDir/multiqc/multiqc_data/bcl2fastq_lane_counts.txt"), - path("$outputDir/multiqc/multiqc_data/fastp_filtered_reads_plot.txt"), - path("$outputDir/multiqc/multiqc_data/bcl2fastq_sample_counts.txt"), - path("$outputDir/multiqc/multiqc_data/kraken-top-n-plot.txt"), - ).match("multiqc") }, - { assert snapshot( - path("$outputDir/220422_M11111_0222_000000000-K9H97/L001/Sample1_S1_L001.kraken2.report.txt"), - path("$outputDir/220422_M11111_0222_000000000-K9H97/L001/Sample1_S1_L001.fastp.fastq.gz"), - path("$outputDir/220422_M11111_0222_000000000-K9H97/L001/Sample1_S1_L001_R1_001.fastq.gz"), - path("$outputDir/220422_M11111_0222_000000000-K9H97/L001/Sample1_S1_L001_summary.txt"), - path("$outputDir/220422_M11111_0222_000000000-K9H97/L001/Reports/").list(), - path("$outputDir/220422_M11111_0222_000000000-K9H97/L001/Stats/").list(), - ).match("kraken") } - ) - } - - } - -} diff --git a/tests/pipeline/kraken.nf.test.snap b/tests/pipeline/kraken.nf.test.snap deleted file mode 100644 index 45263a04..00000000 --- a/tests/pipeline/kraken.nf.test.snap +++ /dev/null @@ -1,87 +0,0 @@ -{ - "kraken": { - "content": [ - "Sample1_S1_L001.kraken2.report.txt:md5,726f60beda853ebb9134f6a712c4196b", - "Sample1_S1_L001.fastp.fastq.gz:md5,64639ff33d4b07d62a9079f88cbbd373", - "Sample1_S1_L001_R1_001.fastq.gz:md5,0675fb6365322eaafb33c0f8e862b54b", - "Sample1_S1_L001_summary.txt:md5,510c6b8a26ff8d530950c05b3ca5a1c6", - [ - [ - [ - [ - [ - [ - "lane.html:md5,794e48287f47a9f22dcb6b6d0c22c3eb", - "laneBarcode.html:md5,2bbdae3ee57151eab520c966597d7438" - ], - [ - - ] - ] - ], - [ - [ - [ - "lane.html:md5,f741870307050dcea79a838f5971770f", - "laneBarcode.html:md5,ffe2e863811c76cb9da27d5d124e0611" - ], - [ - "lane.html:md5,cca97e771d3491dbc8cd3fe389595b09", - "laneBarcode.html:md5,cca97e771d3491dbc8cd3fe389595b09" - ] - ], - [ - [ - "lane.html:md5,c383b0768d9978733d3f5d3b91c15af0", - "laneBarcode.html:md5,48842c23b9a2816aec540177df870968" - ], - [ - - ] - ] - ] - ], - "Report.css:md5,eb7d3eb68fc1539f411404987246b59b", - "index.html:md5,5747c407854ae2c358d0ec201ce622d8", - "tree.html:md5,a1b9bf592973ca829ec69ddf888b7e34" - ] - ], - [ - "AdapterTrimming.txt:md5,48ed2b914b1246c0b5d8667525550946", - "ConversionStats.xml:md5,8fe0f57f3f5d256a0762dba75ac62d05", - "DemultiplexingStats.xml:md5,2047ff18f5b9107c084de06e9ff943ad", - "DemuxSummaryF1L1.txt:md5,03e5fd0c1e3079c5f8c7b4d0501b37ff", - "FastqSummaryF1L1.txt:md5,0c6f2d87ee183b84d1051cde9a5643d1", - "Stats.json:md5,8e5f038b8aa9e465599d3575f930e604" - ] - ], - "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.4" - }, - "timestamp": "2024-08-09T17:17:23.034777828" - }, - "software_versions": { - "content": [ - "{BCL2FASTQ={bcl2fastq=2.20.0.422}, FALCO={falco=1.2.1}, FASTP={fastp=0.23.4}, KRAKEN2={kraken2=2.1.3, pigz=2.8}, MD5SUM={md5sum=8.3}, Workflow={nf-core/demultiplex=v1.5.2}}" - ], - "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.4" - }, - "timestamp": "2024-08-09T17:17:22.999406989" - }, - "multiqc": { - "content": [ - "bcl2fastq_lane_counts.txt:md5,9404ab530f43e442093337dd10c351c5", - "fastp_filtered_reads_plot.txt:md5,fa14a1941e109d4104c33db0e5fe20fc", - "bcl2fastq_sample_counts.txt:md5,93cb0cd1aee1b464f0e640e1c3d0c142", - "kraken-top-n-plot.txt:md5,add0b89a8b3d1729dac311870959b1e7" - ], - "meta": { - "nf-test": "0.8.4", - "nextflow": "24.04.4" - }, - "timestamp": "2024-10-02T20:52:55.269657852" - } -} diff --git a/tests/pipeline/lib/UTILS.groovy b/tests/pipeline/lib/UTILS.groovy deleted file mode 100644 index deacb586..00000000 --- a/tests/pipeline/lib/UTILS.groovy +++ /dev/null @@ -1,11 +0,0 @@ -// Function to remove Nextflow version from software_versions.yml - -class UTILS { - public static String removeNextflowVersion(outputDir) { - def softwareVersions = path("$outputDir/pipeline_info/nf_core_pipeline_software_mqc_versions.yml").yaml - if (softwareVersions.containsKey("Workflow")) { - softwareVersions.Workflow.remove("Nextflow") - } - return softwareVersions - } -} diff --git a/tests/pipeline/mkfastq.nf.test b/tests/pipeline/mkfastq.nf.test deleted file mode 100644 index 584656b7..00000000 --- a/tests/pipeline/mkfastq.nf.test +++ /dev/null @@ -1,51 +0,0 @@ -nextflow_pipeline { - - name "Test Workflow main.nf - mkfastq" - script "main.nf" - profile "test_mkfastq" - tag "mkfastq" - tag "pipeline" - - test("MKFASTQ") { - - when { - params { - outdir = "$outputDir" - } - } - - then { - assertAll( - { assert workflow.success }, - { assert snapshot(UTILS.removeNextflowVersion("$outputDir")).match("software_versions") }, - { assert workflow.trace.succeeded().size() == 10 }, - // How many directories were produced? - {assert path("${outputDir}").list().size() == 6}, - // How many files were produced? - {assert path("$outputDir/cellranger-tiny-bcl-simple/").list().size() == 2}, - {assert path("$outputDir/multiqc/").list().size() == 3}, - {assert path("$outputDir/pipeline_info/").list().size() == 5}, - // File assertions: Files that should be exactly the same with every pipeline execution. - {assert snapshot( - //Check output files - path("${outputDir}/cellranger-tiny-bcl-simple/L001/test_sample_S1_L001_1.fastp.fastq.gz"), - path("${outputDir}/cellranger-tiny-bcl-simple/L001/test_sample_S1_L001_1.fastp.fastq.gz.md5"), - path("${outputDir}/cellranger-tiny-bcl-simple/L001/test_sample_S1_L001_2.fastp.fastq.gz"), - path("${outputDir}/cellranger-tiny-bcl-simple/L001/test_sample_S1_L001_2.fastp.fastq.gz.md5"), - path("${outputDir}/cellranger-tiny-bcl-simple/L001/test_sample_S1_L001_I1_001.fastp.fastq.gz.md5"), - path("${outputDir}/cellranger-tiny-bcl-simple/L001/test_sample_S1_L001_I1_001.fastq.gz"), - path("${outputDir}/cellranger-tiny-bcl-simple/L001/test_sample_S1_L001_R1_001.fastq.gz"), - path("${outputDir}/cellranger-tiny-bcl-simple/L001/test_sample_S1_L001_R2_001.fastq.gz"), - path("${outputDir}/cellranger-tiny-bcl-simple/L001/undetermined/Undetermined_S0_L001_I1_001.fastq.gz"), - path("${outputDir}/cellranger-tiny-bcl-simple/L001/undetermined/Undetermined_S0_L001_R1_001.fastq.gz"), - path("${outputDir}/cellranger-tiny-bcl-simple/L001/undetermined/Undetermined_S0_L001_R2_001.fastq.gz"), - path("${outputDir}/cellranger-tiny-bcl-simple/L001/test_sample_S1_L001_I1_001.fastp.html").exists(), - path("${outputDir}/cellranger-tiny-bcl-simple/L001/test_sample_S1_L001.fastp.html").exists(), - path("${outputDir}/cellranger-tiny-bcl-simple/L001/test_sample_S1_L001.fastp.json"), - path("${outputDir}/cellranger-tiny-bcl-simple/L001/test_sample_S1_L001_I1_001.fastp.json"), - path("${outputDir}/cellranger-tiny-bcl-simple/InterOp/IndexMetricsOut.bin") - ).match("file_assertions_mkfastq")} - ) - } - } -} diff --git a/tests/pipeline/mkfastq.nf.test.snap b/tests/pipeline/mkfastq.nf.test.snap deleted file mode 100644 index 7e6d7669..00000000 --- a/tests/pipeline/mkfastq.nf.test.snap +++ /dev/null @@ -1,37 +0,0 @@ -{ - "software_versions": { - "content": [ - "{CELLRANGER_MKFASTQ={cellranger=8.0.0}, FASTP={fastp=0.23.4}, MD5SUM={md5sum=8.3}, UNTAR_FLOWCELL={untar=1.34}, Workflow={nf-core/demultiplex=v1.5.2}}" - ], - "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.3" - }, - "timestamp": "2024-08-15T17:36:35.551329" - }, - "file_assertions_mkfastq": { - "content": [ - "test_sample_S1_L001_1.fastp.fastq.gz:md5,b348491a3b1afa096fde514dbdf55215", - "test_sample_S1_L001_1.fastp.fastq.gz.md5:md5,43d7882f3aaae47b56df56da6c802236", - "test_sample_S1_L001_2.fastp.fastq.gz:md5,1c60f1f3958b8b2b0255b9fae6df0b3d", - "test_sample_S1_L001_2.fastp.fastq.gz.md5:md5,01d742cc56639c476b0bac0c094eba4b", - "test_sample_S1_L001_I1_001.fastp.fastq.gz.md5:md5,82e397b4a2418f27269a30f6ca0e349e", - "test_sample_S1_L001_I1_001.fastq.gz:md5,018b0dbd8daf76fb9f6dfa4729ea0453", - "test_sample_S1_L001_R1_001.fastq.gz:md5,df3ddf85d83bd722219c646c7815dbdc", - "test_sample_S1_L001_R2_001.fastq.gz:md5,c8a387b517ff5b7e56b85ccbf882efd2", - "Undetermined_S0_L001_I1_001.fastq.gz:md5,c93946d67bdb1d5b2ab955fd1dc9cb31", - "Undetermined_S0_L001_R1_001.fastq.gz:md5,faa79ce215ae72fdc3375cda066c6757", - "Undetermined_S0_L001_R2_001.fastq.gz:md5,d8955db4dfbf7aee89b6bdc3b7629f8f", - true, - true, - "test_sample_S1_L001.fastp.json:md5,f616058446c5822797048ea6c5d2393d", - "test_sample_S1_L001_I1_001.fastp.json:md5,42cad4ed99a3d577f100017cbe11d711", - "IndexMetricsOut.bin:md5,e2ac28695537336b53a509f48e93ed1f" - ], - "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.3" - }, - "timestamp": "2024-08-15T17:54:45.551098" - } -} diff --git a/tests/pipeline/sgdemux.nf.test b/tests/pipeline/sgdemux.nf.test deleted file mode 100644 index 6539dec2..00000000 --- a/tests/pipeline/sgdemux.nf.test +++ /dev/null @@ -1,83 +0,0 @@ -nextflow_pipeline { - - name "Test Workflow main.nf - Sgdemux" - script "main.nf" - profile "test_sgdemux" - tag "sgdemux" - tag "pipeline" - - test("SGDEMUX") { - - when { - params { - outdir = "$outputDir" - } - } - - then { - assertAll( - { assert workflow.success }, - { assert snapshot(UTILS.removeNextflowVersion("$outputDir")).match("software_versions") }, - { assert workflow.trace.succeeded().size() == 128 }, - { assert snapshot( - path("$outputDir/sim-data/metrics.tsv"), - path("$outputDir/sim-data/per_project_metrics.tsv"), - path("$outputDir/sim-data/per_sample_metrics.tsv"), - path("$outputDir/sim-data/sample_barcode_hop_metrics.tsv") - ).match("sgdemux") }, - { assert new File("$outputDir/sim-data/Undetermined_S25_L001_1.fastp.fastq.gz").exists() }, - { assert new File("$outputDir/sim-data/Undetermined_S25_L001_2.fastp.fastq.gz").exists() }, - { assert new File("$outputDir/sim-data/s10_S10_L001_1.fastp.fastq.gz").exists() }, - { assert new File("$outputDir/sim-data/s10_S10_L001_2.fastp.fastq.gz").exists() }, - { assert new File("$outputDir/sim-data/s11_S11_L001_1.fastp.fastq.gz").exists() }, - { assert new File("$outputDir/sim-data/s11_S11_L001_2.fastp.fastq.gz").exists() }, - { assert new File("$outputDir/sim-data/s12_S12_L001_1.fastp.fastq.gz").exists() }, - { assert new File("$outputDir/sim-data/s12_S12_L001_2.fastp.fastq.gz").exists() }, - { assert new File("$outputDir/sim-data/s13_S13_L001_1.fastp.fastq.gz").exists() }, - { assert new File("$outputDir/sim-data/s13_S13_L001_2.fastp.fastq.gz").exists() }, - { assert new File("$outputDir/sim-data/s14_S14_L001_1.fastp.fastq.gz").exists() }, - { assert new File("$outputDir/sim-data/s14_S14_L001_2.fastp.fastq.gz").exists() }, - { assert new File("$outputDir/sim-data/s15_S15_L001_1.fastp.fastq.gz").exists() }, - { assert new File("$outputDir/sim-data/s15_S15_L001_2.fastp.fastq.gz").exists() }, - { assert new File("$outputDir/sim-data/s16_S16_L001_1.fastp.fastq.gz").exists() }, - { assert new File("$outputDir/sim-data/s16_S16_L001_2.fastp.fastq.gz").exists() }, - { assert new File("$outputDir/sim-data/s17_S17_L001_1.fastp.fastq.gz").exists() }, - { assert new File("$outputDir/sim-data/s17_S17_L001_2.fastp.fastq.gz").exists() }, - { assert new File("$outputDir/sim-data/s18_S18_L001_1.fastp.fastq.gz").exists() }, - { assert new File("$outputDir/sim-data/s18_S18_L001_2.fastp.fastq.gz").exists() }, - { assert new File("$outputDir/sim-data/s19_S19_L001_1.fastp.fastq.gz").exists() }, - { assert new File("$outputDir/sim-data/s19_S19_L001_2.fastp.fastq.gz").exists() }, - { assert new File("$outputDir/sim-data/s1_S1_L001_1.fastp.fastq.gz").exists() }, - { assert new File("$outputDir/sim-data/s1_S1_L001_2.fastp.fastq.gz").exists() }, - { assert new File("$outputDir/sim-data/s20_S20_L001_1.fastp.fastq.gz").exists() }, - { assert new File("$outputDir/sim-data/s20_S20_L001_2.fastp.fastq.gz").exists() }, - { assert new File("$outputDir/sim-data/s21_S21_L001_1.fastp.fastq.gz").exists() }, - { assert new File("$outputDir/sim-data/s21_S21_L001_2.fastp.fastq.gz").exists() }, - { assert new File("$outputDir/sim-data/s22_S22_L001_1.fastp.fastq.gz").exists() }, - { assert new File("$outputDir/sim-data/s22_S22_L001_2.fastp.fastq.gz").exists() }, - { assert new File("$outputDir/sim-data/s23_S23_L001_1.fastp.fastq.gz").exists() }, - { assert new File("$outputDir/sim-data/s23_S23_L001_2.fastp.fastq.gz").exists() }, - { assert new File("$outputDir/sim-data/s24_S24_L001_1.fastp.fastq.gz").exists() }, - { assert new File("$outputDir/sim-data/s24_S24_L001_2.fastp.fastq.gz").exists() }, - { assert new File("$outputDir/sim-data/s2_S2_L001_1.fastp.fastq.gz").exists() }, - { assert new File("$outputDir/sim-data/s2_S2_L001_2.fastp.fastq.gz").exists() }, - { assert new File("$outputDir/sim-data/s3_S3_L001_1.fastp.fastq.gz").exists() }, - { assert new File("$outputDir/sim-data/s3_S3_L001_2.fastp.fastq.gz").exists() }, - { assert new File("$outputDir/sim-data/s4_S4_L001_1.fastp.fastq.gz").exists() }, - { assert new File("$outputDir/sim-data/s4_S4_L001_2.fastp.fastq.gz").exists() }, - { assert new File("$outputDir/sim-data/s5_S5_L001_1.fastp.fastq.gz").exists() }, - { assert new File("$outputDir/sim-data/s5_S5_L001_2.fastp.fastq.gz").exists() }, - { assert new File("$outputDir/sim-data/s6_S6_L001_1.fastp.fastq.gz").exists() }, - { assert new File("$outputDir/sim-data/s6_S6_L001_2.fastp.fastq.gz").exists() }, - { assert new File("$outputDir/sim-data/s7_S7_L001_1.fastp.fastq.gz").exists() }, - { assert new File("$outputDir/sim-data/s7_S7_L001_2.fastp.fastq.gz").exists() }, - { assert new File("$outputDir/sim-data/s8_S8_L001_1.fastp.fastq.gz").exists() }, - { assert new File("$outputDir/sim-data/s8_S8_L001_2.fastp.fastq.gz").exists() }, - { assert new File("$outputDir/sim-data/s9_S9_L001_1.fastp.fastq.gz").exists() }, - { assert new File("$outputDir/sim-data/s9_S9_L001_2.fastp.fastq.gz").exists() } - ) - } - - } - -} diff --git a/tests/pipeline/sgdemux.nf.test.snap b/tests/pipeline/sgdemux.nf.test.snap deleted file mode 100644 index a9bda541..00000000 --- a/tests/pipeline/sgdemux.nf.test.snap +++ /dev/null @@ -1,25 +0,0 @@ -{ - "software_versions": { - "content": [ - "{FALCO={falco=1.2.1}, FASTP={fastp=0.23.4}, MD5SUM={md5sum=8.3}, SGDEMUX={sgdemux=1.1.1}, UNTAR_FLOWCELL={untar=1.34}, Workflow={nf-core/demultiplex=v1.5.2}}" - ], - "meta": { - "nf-test": "0.9.0", - "nextflow": "23.10.0" - }, - "timestamp": "2024-08-02T19:58:24.75171605" - }, - "sgdemux": { - "content": [ - "metrics.tsv:md5,7627e4bd2a56ea551fd74b4a2b5cb4b2", - "per_project_metrics.tsv:md5,7393bc580c8ed8431107ad3dd00a7d2a", - "per_sample_metrics.tsv:md5,fb8ce024ad2508e7b22a4af65fe44358", - "sample_barcode_hop_metrics.tsv:md5,d41d8cd98f00b204e9800998ecf8427e" - ], - "meta": { - "nf-test": "0.9.0", - "nextflow": "23.10.4" - }, - "timestamp": "2023-10-17T08:01:14+0000" - } -} diff --git a/tests/pipeline/skip_tools.nf.test b/tests/pipeline/skip_tools.nf.test deleted file mode 100644 index 4b9521ea..00000000 --- a/tests/pipeline/skip_tools.nf.test +++ /dev/null @@ -1,150 +0,0 @@ -nextflow_pipeline { - - name "Test Workflow main.nf - Skip Tools" - script "main.nf" - profile "test" - tag "skip_trimming" - tag "pipeline" - - - test("Skip Trimming") { - - when { - params { - input = 'https://raw.githubusercontent.com/nf-core/test-datasets/demultiplex/samplesheet/1.3.0/flowcell_input.csv' - demultiplexer = 'bclconvert' - outdir = "$outputDir" - trim_fastq = false - } - } - - then { - assertAll( - { assert workflow.success }, - { assert snapshot(UTILS.removeNextflowVersion("$outputDir")).match("software_versions_skip_trimming") }, - { assert workflow.trace.succeeded().size() == 6 }, - { assert path("$outputDir/multiqc/multiqc_report.html").exists() }, - { assert snapshot( - path("$outputDir/220422_M11111_0222_000000000-K9H97/L001/Sample1_S1_L001_R1_001.fastq.gz"), - path("$outputDir/220422_M11111_0222_000000000-K9H97/L001/Sample1_S1_L001_R1_001.fastq.gz.md5"), - path("$outputDir/220422_M11111_0222_000000000-K9H97/L001/Undetermined_S0_L001_R1_001.fastq.gz"), - path("$outputDir/220422_M11111_0222_000000000-K9H97/L001/Reports/").list(), - ).match("skip_trimming") } - ) - } - - } - - test("Skip Fastp") { - - when { - params { - input = 'https://raw.githubusercontent.com/nf-core/test-datasets/demultiplex/samplesheet/1.3.0/flowcell_input.csv' - demultiplexer = 'bclconvert' - outdir = "$outputDir" - skip_tools = "fastp,samshee" - } - } - - then { - assertAll( - { assert workflow.success }, - { assert snapshot(UTILS.removeNextflowVersion("$outputDir")).match("software_versions_skip_fastp") }, - { assert workflow.trace.succeeded().size() == 5 }, - { assert path("$outputDir/multiqc/multiqc_report.html").exists() }, - { assert snapshot( - path("$outputDir/220422_M11111_0222_000000000-K9H97/L001/Sample1_S1_L001_R1_001.fastq.gz"), - path("$outputDir/220422_M11111_0222_000000000-K9H97/L001/Sample1_S1_L001_R1_001.fastq.gz.md5"), - path("$outputDir/220422_M11111_0222_000000000-K9H97/L001/Undetermined_S0_L001_R1_001.fastq.gz"), - path("$outputDir/220422_M11111_0222_000000000-K9H97/L001/Reports/").list(), - ).match("skip_fastp") } - ) - } - - } - - test("Skip Fastqc") { - - when { - params { - input = 'https://raw.githubusercontent.com/nf-core/test-datasets/demultiplex/samplesheet/1.3.0/flowcell_input.csv' - demultiplexer = 'bclconvert' - outdir = "$outputDir" - skip_tools = "fastqc,samshee" - } - } - - then { - assertAll( - { assert workflow.success }, - { assert snapshot(UTILS.removeNextflowVersion("$outputDir")).match("software_versions_skip_fastqc") }, - { assert workflow.trace.succeeded().size() == 6 }, - { assert path("$outputDir/multiqc/multiqc_report.html").exists() }, - { assert snapshot( - path("$outputDir/220422_M11111_0222_000000000-K9H97/L001/Sample1_S1_L001_R1_001.fastq.gz"), - path("$outputDir/220422_M11111_0222_000000000-K9H97/L001/Sample1_S1_L001.fastp.fastq.gz.md5"), - path("$outputDir/220422_M11111_0222_000000000-K9H97/L001/Undetermined_S0_L001_R1_001.fastq.gz"), - path("$outputDir/220422_M11111_0222_000000000-K9H97/L001/Reports/").list(), - ).match("skip_fastqc") } - ) - } - - } - - test("Skip Fastp & Fastqc") { - - when { - params { - input = 'https://raw.githubusercontent.com/nf-core/test-datasets/demultiplex/samplesheet/1.3.0/flowcell_input.csv' - demultiplexer = 'bclconvert' - outdir = "$outputDir" - skip_tools = "fastp,fastqc,samshee" - } - } - - then { - assertAll( - { assert workflow.success }, - { assert snapshot(UTILS.removeNextflowVersion("$outputDir")).match("software_versions_skip_fastp_fastqc") }, - { assert workflow.trace.succeeded().size() == 5 }, - { assert path("$outputDir/multiqc/multiqc_report.html").exists() }, - { assert snapshot( - path("$outputDir/220422_M11111_0222_000000000-K9H97/L001/Sample1_S1_L001_R1_001.fastq.gz"), - path("$outputDir/220422_M11111_0222_000000000-K9H97/L001/Sample1_S1_L001_R1_001.fastq.gz.md5"), - path("$outputDir/220422_M11111_0222_000000000-K9H97/L001/Undetermined_S0_L001_R1_001.fastq.gz"), - path("$outputDir/220422_M11111_0222_000000000-K9H97/L001/Reports/").list(), - ).match("skip_fastp_fastqc") } - ) - } - - } - - test("Skip MultiQC") { - - when { - params { - input = 'https://raw.githubusercontent.com/nf-core/test-datasets/demultiplex/samplesheet/1.3.0/flowcell_input.csv' - demultiplexer = 'bclconvert' - outdir = "$outputDir" - skip_tools = "multiqc,samshee" - } - } - - then { - assertAll( - { assert workflow.success }, - { assert snapshot(UTILS.removeNextflowVersion("$outputDir")).match("software_versions_skip_multiqc") }, - { assert workflow.trace.succeeded().size() == 5 }, - { assert !path("$outputDir/multiqc/multiqc_report.html").exists() }, - { assert snapshot( - path("$outputDir/220422_M11111_0222_000000000-K9H97/L001/Sample1_S1_L001_R1_001.fastq.gz"), - path("$outputDir/220422_M11111_0222_000000000-K9H97/L001/Sample1_S1_L001.fastp.fastq.gz.md5"), - path("$outputDir/220422_M11111_0222_000000000-K9H97/L001/Undetermined_S0_L001_R1_001.fastq.gz"), - path("$outputDir/220422_M11111_0222_000000000-K9H97/L001/Reports/").list(), - ).match("skip_multiqc") } - ) - } - - } - -} diff --git a/tests/pipeline/skip_tools.nf.test.snap b/tests/pipeline/skip_tools.nf.test.snap deleted file mode 100644 index c30d5dac..00000000 --- a/tests/pipeline/skip_tools.nf.test.snap +++ /dev/null @@ -1,182 +0,0 @@ -{ - "software_versions_skip_trimming": { - "content": [ - "{BCLCONVERT={bclconvert=4.3.6}, FALCO={falco=1.2.1}, FASTP={fastp=0.23.4}, MD5SUM={md5sum=8.3}, Workflow={nf-core/demultiplex=v1.5.2}}" - ], - "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.4" - }, - "timestamp": "2024-08-12T17:21:22.50969783" - }, - "skip_fastqc": { - "content": [ - "Sample1_S1_L001_R1_001.fastq.gz:md5,0675fb6365322eaafb33c0f8e862b54b", - "Sample1_S1_L001.fastp.fastq.gz.md5:md5,c3cd96f3a22fb6afbaa1df324814d54c", - "Undetermined_S0_L001_R1_001.fastq.gz:md5,d41d8cd98f00b204e9800998ecf8427e", - [ - "Adapter_Cycle_Metrics.csv:md5,5a0c88793b4a0885fe3dda16609b576e", - "Adapter_Metrics.csv:md5,989240b8840b2169ac1061f952c90f6c", - "Demultiplex_Stats.csv:md5,93949a8cd96f907d83e0808c1ec2a04b", - "Demultiplex_Tile_Stats.csv:md5,83120160b0f22a1303fa1db31c19f6e9", - "IndexMetricsOut.bin:md5,9e688c58a5487b8eaf69c9e1005ad0bf", - "Index_Hopping_Counts.csv:md5,1059369e375fd8f8423c0f6c934be978", - "Quality_Metrics.csv:md5,6614accb1bb414fe312b17b81f5521f7", - "Quality_Tile_Metrics.csv:md5,cdc89fd2962bdd4a24f71e186112118a", - "RunInfo.xml:md5,03038959f4dd181c86bc97ae71fe270a", - "SampleSheet.csv:md5,ee5db2e12754e069998b0a96e535238c", - "Top_Unknown_Barcodes.csv:md5,2e2faba761137f228e56bd3428453ccc", - "fastq_list.csv:md5,ae1470cd741e33b87a4ad26f849a50f9" - ] - ], - "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.4" - }, - "timestamp": "2024-08-12T17:24:04.288349648" - }, - "skip_fastp": { - "content": [ - "Sample1_S1_L001_R1_001.fastq.gz:md5,0675fb6365322eaafb33c0f8e862b54b", - "Sample1_S1_L001_R1_001.fastq.gz.md5:md5,10295d4e5ca66dae7788bbf24886cded", - "Undetermined_S0_L001_R1_001.fastq.gz:md5,d41d8cd98f00b204e9800998ecf8427e", - [ - "Adapter_Cycle_Metrics.csv:md5,5a0c88793b4a0885fe3dda16609b576e", - "Adapter_Metrics.csv:md5,989240b8840b2169ac1061f952c90f6c", - "Demultiplex_Stats.csv:md5,93949a8cd96f907d83e0808c1ec2a04b", - "Demultiplex_Tile_Stats.csv:md5,83120160b0f22a1303fa1db31c19f6e9", - "IndexMetricsOut.bin:md5,9e688c58a5487b8eaf69c9e1005ad0bf", - "Index_Hopping_Counts.csv:md5,1059369e375fd8f8423c0f6c934be978", - "Quality_Metrics.csv:md5,6614accb1bb414fe312b17b81f5521f7", - "Quality_Tile_Metrics.csv:md5,cdc89fd2962bdd4a24f71e186112118a", - "RunInfo.xml:md5,03038959f4dd181c86bc97ae71fe270a", - "SampleSheet.csv:md5,ee5db2e12754e069998b0a96e535238c", - "Top_Unknown_Barcodes.csv:md5,2e2faba761137f228e56bd3428453ccc", - "fastq_list.csv:md5,ae1470cd741e33b87a4ad26f849a50f9" - ] - ], - "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.4" - }, - "timestamp": "2024-08-12T17:22:17.56007143" - }, - "skip_multiqc": { - "content": [ - "Sample1_S1_L001_R1_001.fastq.gz:md5,0675fb6365322eaafb33c0f8e862b54b", - "Sample1_S1_L001.fastp.fastq.gz.md5:md5,c3cd96f3a22fb6afbaa1df324814d54c", - "Undetermined_S0_L001_R1_001.fastq.gz:md5,d41d8cd98f00b204e9800998ecf8427e", - [ - "Adapter_Cycle_Metrics.csv:md5,5a0c88793b4a0885fe3dda16609b576e", - "Adapter_Metrics.csv:md5,989240b8840b2169ac1061f952c90f6c", - "Demultiplex_Stats.csv:md5,93949a8cd96f907d83e0808c1ec2a04b", - "Demultiplex_Tile_Stats.csv:md5,83120160b0f22a1303fa1db31c19f6e9", - "IndexMetricsOut.bin:md5,9e688c58a5487b8eaf69c9e1005ad0bf", - "Index_Hopping_Counts.csv:md5,1059369e375fd8f8423c0f6c934be978", - "Quality_Metrics.csv:md5,6614accb1bb414fe312b17b81f5521f7", - "Quality_Tile_Metrics.csv:md5,cdc89fd2962bdd4a24f71e186112118a", - "RunInfo.xml:md5,03038959f4dd181c86bc97ae71fe270a", - "SampleSheet.csv:md5,ee5db2e12754e069998b0a96e535238c", - "Top_Unknown_Barcodes.csv:md5,2e2faba761137f228e56bd3428453ccc", - "fastq_list.csv:md5,ae1470cd741e33b87a4ad26f849a50f9" - ] - ], - "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.4" - }, - "timestamp": "2024-08-12T17:27:14.471150173" - }, - "skip_fastp_fastqc": { - "content": [ - "Sample1_S1_L001_R1_001.fastq.gz:md5,0675fb6365322eaafb33c0f8e862b54b", - "Sample1_S1_L001_R1_001.fastq.gz.md5:md5,10295d4e5ca66dae7788bbf24886cded", - "Undetermined_S0_L001_R1_001.fastq.gz:md5,d41d8cd98f00b204e9800998ecf8427e", - [ - "Adapter_Cycle_Metrics.csv:md5,5a0c88793b4a0885fe3dda16609b576e", - "Adapter_Metrics.csv:md5,989240b8840b2169ac1061f952c90f6c", - "Demultiplex_Stats.csv:md5,93949a8cd96f907d83e0808c1ec2a04b", - "Demultiplex_Tile_Stats.csv:md5,83120160b0f22a1303fa1db31c19f6e9", - "IndexMetricsOut.bin:md5,9e688c58a5487b8eaf69c9e1005ad0bf", - "Index_Hopping_Counts.csv:md5,1059369e375fd8f8423c0f6c934be978", - "Quality_Metrics.csv:md5,6614accb1bb414fe312b17b81f5521f7", - "Quality_Tile_Metrics.csv:md5,cdc89fd2962bdd4a24f71e186112118a", - "RunInfo.xml:md5,03038959f4dd181c86bc97ae71fe270a", - "SampleSheet.csv:md5,ee5db2e12754e069998b0a96e535238c", - "Top_Unknown_Barcodes.csv:md5,2e2faba761137f228e56bd3428453ccc", - "fastq_list.csv:md5,ae1470cd741e33b87a4ad26f849a50f9" - ] - ], - "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.4" - }, - "timestamp": "2024-08-12T17:25:09.780834994" - }, - "software_versions_skip_fastqc": { - "content": [ - "{BCLCONVERT={bclconvert=4.3.6}, FALCO={falco=1.2.1}, FASTP={fastp=0.23.4}, MD5SUM={md5sum=8.3}, Workflow={nf-core/demultiplex=v1.5.2}}" - ], - "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.4" - }, - "timestamp": "2024-08-12T17:23:59.039256258" - }, - "software_versions_skip_fastp_fastqc": { - "content": [ - "{BCLCONVERT={bclconvert=4.3.6}, FALCO={falco=1.2.1}, MD5SUM={md5sum=8.3}, Workflow={nf-core/demultiplex=v1.5.2}}" - ], - "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.4" - }, - "timestamp": "2024-08-12T17:25:01.70585844" - }, - "software_versions_skip_multiqc": { - "content": [ - "{BCLCONVERT={bclconvert=4.3.6}, FALCO={falco=1.2.1}, FASTP={fastp=0.23.4}, MD5SUM={md5sum=8.3}, Workflow={nf-core/demultiplex=v1.5.2}}" - ], - "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.4" - }, - "timestamp": "2024-08-12T17:27:03.685153368" - }, - "software_versions_skip_fastp": { - "content": [ - "{BCLCONVERT={bclconvert=4.3.6}, FALCO={falco=1.2.1}, MD5SUM={md5sum=8.3}, Workflow={nf-core/demultiplex=v1.5.2}}" - ], - "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.4" - }, - "timestamp": "2024-08-12T17:22:14.728243247" - }, - "skip_trimming": { - "content": [ - "Sample1_S1_L001_R1_001.fastq.gz:md5,0675fb6365322eaafb33c0f8e862b54b", - "Sample1_S1_L001_R1_001.fastq.gz.md5:md5,10295d4e5ca66dae7788bbf24886cded", - "Undetermined_S0_L001_R1_001.fastq.gz:md5,d41d8cd98f00b204e9800998ecf8427e", - [ - "Adapter_Cycle_Metrics.csv:md5,5a0c88793b4a0885fe3dda16609b576e", - "Adapter_Metrics.csv:md5,989240b8840b2169ac1061f952c90f6c", - "Demultiplex_Stats.csv:md5,93949a8cd96f907d83e0808c1ec2a04b", - "Demultiplex_Tile_Stats.csv:md5,83120160b0f22a1303fa1db31c19f6e9", - "IndexMetricsOut.bin:md5,9e688c58a5487b8eaf69c9e1005ad0bf", - "Index_Hopping_Counts.csv:md5,1059369e375fd8f8423c0f6c934be978", - "Quality_Metrics.csv:md5,6614accb1bb414fe312b17b81f5521f7", - "Quality_Tile_Metrics.csv:md5,cdc89fd2962bdd4a24f71e186112118a", - "RunInfo.xml:md5,03038959f4dd181c86bc97ae71fe270a", - "SampleSheet.csv:md5,ee5db2e12754e069998b0a96e535238c", - "Top_Unknown_Barcodes.csv:md5,2e2faba761137f228e56bd3428453ccc", - "fastq_list.csv:md5,ae1470cd741e33b87a4ad26f849a50f9" - ] - ], - "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.4" - }, - "timestamp": "2024-08-12T17:21:22.530325808" - } -} diff --git a/tests/pipeline/test_pe.nf.test b/tests/pipeline/test_pe.nf.test deleted file mode 100644 index 94a61db6..00000000 --- a/tests/pipeline/test_pe.nf.test +++ /dev/null @@ -1,44 +0,0 @@ -nextflow_pipeline { - - name "Test Workflow main.nf - Test PE" - script "main.nf" - profile "test_pe" - tag "bcl2fastq_pe" - tag "pipeline" - - test("Bcl2Fastq_pe") { - - when { - params { - outdir = "$outputDir" - } - } - - then { - assertAll( - { assert workflow.success }, - { assert snapshot(UTILS.removeNextflowVersion("$outputDir")).match("software_versions") }, - { assert workflow.trace.succeeded().size() == 7 }, - { assert snapshot( - path("$outputDir/multiqc/multiqc_data/bcl2fastq_lane_counts.txt"), - path("$outputDir/multiqc/multiqc_data/fastp_filtered_reads_plot.txt"), - path("$outputDir/multiqc/multiqc_data/bcl2fastq_sample_counts.txt") - - ).match("multiqc") }, - { assert snapshot( - path("$outputDir/PE_Sample.lane1_no_adapters.csv"), - path("$outputDir/PE_Sample/L001/Sample1_S1_L001_1.fastp.fastq.gz"), - path("$outputDir/PE_Sample/L001/Sample1_S1_L001_2.fastp.fastq.gz"), - path("$outputDir/PE_Sample/L001/Sample1_S1_L001_R1_001.fastq.gz"), - path("$outputDir/PE_Sample/L001/Sample1_S1_L001_R2_001.fastq.gz"), - path("$outputDir/PE_Sample/L001/Sample1_S1_L001_1.fastp.fastq.gz_summary.txt"), - path("$outputDir/PE_Sample/L001/Sample1_S1_L001_2.fastp.fastq.gz_summary.txt"), - path("$outputDir/PE_Sample/L001/Reports/").list(), - path("$outputDir/PE_Sample/L001/Stats/").list() - ).match("bcl2fastq_pe") } - ) - } - - } - -} diff --git a/tests/pipeline/test_pe.nf.test.snap b/tests/pipeline/test_pe.nf.test.snap deleted file mode 100644 index d93f5470..00000000 --- a/tests/pipeline/test_pe.nf.test.snap +++ /dev/null @@ -1,89 +0,0 @@ -{ - "bcl2fastq_pe": { - "content": [ - "PE_Sample.lane1_no_adapters.csv:md5,c31cca10b3a1aed8ec68daf779217d91", - "Sample1_S1_L001_1.fastp.fastq.gz:md5,64639ff33d4b07d62a9079f88cbbd373", - "Sample1_S1_L001_2.fastp.fastq.gz:md5,adbc8e47c8e7e902777a01ea3d73b306", - "Sample1_S1_L001_R1_001.fastq.gz:md5,0675fb6365322eaafb33c0f8e862b54b", - "Sample1_S1_L001_R2_001.fastq.gz:md5,146eefcab1eaaef17ffb72672c021368", - "Sample1_S1_L001_1.fastp.fastq.gz_summary.txt:md5,917b542afe3e3f178b994317c955ce02", - "Sample1_S1_L001_2.fastp.fastq.gz_summary.txt:md5,441197ccd90d2b018db631a66d6fbbb3", - [ - [ - [ - [ - [ - [ - "lane.html:md5,eca711b7312a7cf6dd32a6958b2d8812", - "laneBarcode.html:md5,b5f0e5f5730d70513defa8024913b214" - ], - [ - - ] - ] - ], - [ - [ - [ - "lane.html:md5,41ecd9ef68fc4e1cc3177c23d741428e", - "laneBarcode.html:md5,db047476a60b8dc3b83eb6a9ee77b7db" - ], - [ - "lane.html:md5,594f959553519cc6e578e8dca3da2612", - "laneBarcode.html:md5,594f959553519cc6e578e8dca3da2612" - ] - ], - [ - [ - "lane.html:md5,7ea014b0a0c9e9bb1761f291a409f9f0", - "laneBarcode.html:md5,eddae85d4b13d6fb5817df5fbfb756ff" - ], - [ - - ] - ] - ] - ], - "Report.css:md5,eb7d3eb68fc1539f411404987246b59b", - "index.html:md5,5747c407854ae2c358d0ec201ce622d8", - "tree.html:md5,a1b9bf592973ca829ec69ddf888b7e34" - ] - ], - [ - "AdapterTrimming.txt:md5,8009886a4c060bfec6d8e9346feb0988", - "ConversionStats.xml:md5,6e08faa696f3e747ec9752dc56629152", - "DemultiplexingStats.xml:md5,2047ff18f5b9107c084de06e9ff943ad", - "DemuxSummaryF1L1.txt:md5,03e5fd0c1e3079c5f8c7b4d0501b37ff", - "FastqSummaryF1L1.txt:md5,0274549f9541b1ba7828ae6e9c5bcbbd", - "Stats.json:md5,d257fb169519c08b50179fb749d6aafa" - ] - ], - "meta": { - "nf-test": "0.9.0", - "nextflow": "23.10.1" - }, - "timestamp": "2024-08-07T15:19:05.728175" - }, - "software_versions": { - "content": [ - "{BCL2FASTQ={bcl2fastq=2.20.0.422}, FALCO={falco=1.2.1}, FASTP={fastp=0.23.4}, MD5SUM={md5sum=8.3}, Workflow={nf-core/demultiplex=v1.5.2}}" - ], - "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.3" - }, - "timestamp": "2024-07-31T13:03:01.047096473" - }, - "multiqc": { - "content": [ - "bcl2fastq_lane_counts.txt:md5,d6054e1ec3c2e8d33c3fdee5b250dfbc", - "fastp_filtered_reads_plot.txt:md5,136a1d755ba6e790227f80cfcb4c1d62", - "bcl2fastq_sample_counts.txt:md5,93cb0cd1aee1b464f0e640e1c3d0c142" - ], - "meta": { - "nf-test": "0.9.0", - "nextflow": "24.04.4" - }, - "timestamp": "2024-08-01T16:33:58.242361926" - } -} diff --git a/tests/sgdemux.nf.test b/tests/sgdemux.nf.test new file mode 100644 index 00000000..7fa83e77 --- /dev/null +++ b/tests/sgdemux.nf.test @@ -0,0 +1,37 @@ +nextflow_pipeline { + + name "Test Workflow main.nf - Sgdemux" + script "../main.nf" + profile "test_sgdemux" + tag "sgdemux" + tag "pipeline" + + test("SGDEMUX") { + + when { + params { + outdir = "$outputDir" + } + } + + then { + // stable_name: All files + folders in ${params.outdir}/ with a stable name + def stable_name = getAllFilesFromDir(params.outdir, relative: true, includeDir: true, ignore: ['pipeline_info/*.{html,json,txt}']) + // stable_path: All files in ${params.outdir}/ with stable content + def stable_path = getAllFilesFromDir(params.outdir, ignoreFile: 'tests/.nftignore') + assertAll( + { assert workflow.success}, + { assert snapshot( + // Number of successful tasks + workflow.trace.succeeded().size(), + // pipeline versions.yml file for multiqc from which Nextflow version is removed because we tests pipelines on multiple Nextflow versions + removeNextflowVersion("$outputDir/pipeline_info/nf_core_pipeline_software_mqc_versions.yml"), + // All stable path name, with a relative path + stable_name, + // All files with stable contents + stable_path + ).match() } + ) + } + } +} diff --git a/tests/sgdemux.nf.test.snap b/tests/sgdemux.nf.test.snap new file mode 100644 index 00000000..e11ba9ee --- /dev/null +++ b/tests/sgdemux.nf.test.snap @@ -0,0 +1,585 @@ +{ + "SGDEMUX": { + "content": [ + 128, + { + "FALCO": { + "falco": "1.2.1" + }, + "FASTP": { + "fastp": "0.23.4" + }, + "MD5SUM": { + "md5sum": 8.3 + }, + "SGDEMUX": { + "sgdemux": "1.1.1" + }, + "UNTAR_FLOWCELL": { + "untar": 1.34 + }, + "Workflow": { + "nf-core/demultiplex": "v1.5.2" + } + }, + [ + "fastq", + "fastq/Undetermined_S25_L001.samplesheet.csv", + "fastq/s10_S10_L001.samplesheet.csv", + "fastq/s11_S11_L001.samplesheet.csv", + "fastq/s12_S12_L001.samplesheet.csv", + "fastq/s13_S13_L001.samplesheet.csv", + "fastq/s14_S14_L001.samplesheet.csv", + "fastq/s15_S15_L001.samplesheet.csv", + "fastq/s16_S16_L001.samplesheet.csv", + "fastq/s17_S17_L001.samplesheet.csv", + "fastq/s18_S18_L001.samplesheet.csv", + "fastq/s19_S19_L001.samplesheet.csv", + "fastq/s1_S1_L001.samplesheet.csv", + "fastq/s20_S20_L001.samplesheet.csv", + "fastq/s21_S21_L001.samplesheet.csv", + "fastq/s22_S22_L001.samplesheet.csv", + "fastq/s23_S23_L001.samplesheet.csv", + "fastq/s24_S24_L001.samplesheet.csv", + "fastq/s2_S2_L001.samplesheet.csv", + "fastq/s3_S3_L001.samplesheet.csv", + "fastq/s4_S4_L001.samplesheet.csv", + "fastq/s5_S5_L001.samplesheet.csv", + "fastq/s6_S6_L001.samplesheet.csv", + "fastq/s7_S7_L001.samplesheet.csv", + "fastq/s8_S8_L001.samplesheet.csv", + "fastq/s9_S9_L001.samplesheet.csv", + "multiqc", + "multiqc/multiqc_data", + "multiqc/multiqc_data/fastp-seq-content-gc-plot_Read_1_After_filtering.txt", + "multiqc/multiqc_data/fastp-seq-content-gc-plot_Read_1_Before_filtering.txt", + "multiqc/multiqc_data/fastp-seq-content-gc-plot_Read_2_After_filtering.txt", + "multiqc/multiqc_data/fastp-seq-content-gc-plot_Read_2_Before_filtering.txt", + "multiqc/multiqc_data/fastp-seq-content-n-plot_Read_1_After_filtering.txt", + "multiqc/multiqc_data/fastp-seq-content-n-plot_Read_1_Before_filtering.txt", + "multiqc/multiqc_data/fastp-seq-content-n-plot_Read_2_After_filtering.txt", + "multiqc/multiqc_data/fastp-seq-content-n-plot_Read_2_Before_filtering.txt", + "multiqc/multiqc_data/fastp-seq-quality-plot_Read_1_After_filtering.txt", + "multiqc/multiqc_data/fastp-seq-quality-plot_Read_1_Before_filtering.txt", + "multiqc/multiqc_data/fastp-seq-quality-plot_Read_2_After_filtering.txt", + "multiqc/multiqc_data/fastp-seq-quality-plot_Read_2_Before_filtering.txt", + "multiqc/multiqc_data/fastp_filtered_reads_plot.txt", + "multiqc/multiqc_data/fastqc-1-status-check-heatmap.txt", + "multiqc/multiqc_data/fastqc-1_per_base_n_content_plot.txt", + "multiqc/multiqc_data/fastqc-1_per_base_sequence_quality_plot.txt", + "multiqc/multiqc_data/fastqc-1_per_sequence_gc_content_plot_Counts.txt", + "multiqc/multiqc_data/fastqc-1_per_sequence_gc_content_plot_Percentages.txt", + "multiqc/multiqc_data/fastqc-1_per_sequence_quality_scores_plot.txt", + "multiqc/multiqc_data/fastqc-1_sequence_counts_plot.txt", + "multiqc/multiqc_data/fastqc-1_sequence_duplication_levels_plot.txt", + "multiqc/multiqc_data/fastqc-1_top_overrepresented_sequences_table.txt", + "multiqc/multiqc_data/fastqc-2-status-check-heatmap.txt", + "multiqc/multiqc_data/fastqc-2_per_base_n_content_plot.txt", + "multiqc/multiqc_data/fastqc-2_per_base_sequence_quality_plot.txt", + "multiqc/multiqc_data/fastqc-2_per_sequence_gc_content_plot_Counts.txt", + "multiqc/multiqc_data/fastqc-2_per_sequence_gc_content_plot_Percentages.txt", + "multiqc/multiqc_data/fastqc-2_per_sequence_quality_scores_plot.txt", + "multiqc/multiqc_data/fastqc-2_sequence_counts_plot.txt", + "multiqc/multiqc_data/fastqc-2_sequence_duplication_levels_plot.txt", + "multiqc/multiqc_data/fastqc-2_top_overrepresented_sequences_table.txt", + "multiqc/multiqc_data/multiqc.log", + "multiqc/multiqc_data/multiqc_citations.txt", + "multiqc/multiqc_data/multiqc_data.json", + "multiqc/multiqc_data/multiqc_fastp.txt", + "multiqc/multiqc_data/multiqc_fastqc.txt", + "multiqc/multiqc_data/multiqc_fastqc_1.txt", + "multiqc/multiqc_data/multiqc_general_stats.txt", + "multiqc/multiqc_data/multiqc_software_versions.txt", + "multiqc/multiqc_data/multiqc_sources.txt", + "multiqc/multiqc_plots", + "multiqc/multiqc_plots/pdf", + "multiqc/multiqc_plots/pdf/fastp-seq-content-gc-plot_Read_1_After_filtering.pdf", + "multiqc/multiqc_plots/pdf/fastp-seq-content-gc-plot_Read_1_Before_filtering.pdf", + "multiqc/multiqc_plots/pdf/fastp-seq-content-gc-plot_Read_2_After_filtering.pdf", + "multiqc/multiqc_plots/pdf/fastp-seq-content-gc-plot_Read_2_Before_filtering.pdf", + "multiqc/multiqc_plots/pdf/fastp-seq-content-n-plot_Read_1_After_filtering.pdf", + "multiqc/multiqc_plots/pdf/fastp-seq-content-n-plot_Read_1_Before_filtering.pdf", + "multiqc/multiqc_plots/pdf/fastp-seq-content-n-plot_Read_2_After_filtering.pdf", + "multiqc/multiqc_plots/pdf/fastp-seq-content-n-plot_Read_2_Before_filtering.pdf", + "multiqc/multiqc_plots/pdf/fastp-seq-quality-plot_Read_1_After_filtering.pdf", + "multiqc/multiqc_plots/pdf/fastp-seq-quality-plot_Read_1_Before_filtering.pdf", + "multiqc/multiqc_plots/pdf/fastp-seq-quality-plot_Read_2_After_filtering.pdf", + "multiqc/multiqc_plots/pdf/fastp-seq-quality-plot_Read_2_Before_filtering.pdf", + "multiqc/multiqc_plots/pdf/fastp_filtered_reads_plot-cnt.pdf", + "multiqc/multiqc_plots/pdf/fastp_filtered_reads_plot-pct.pdf", + "multiqc/multiqc_plots/pdf/fastqc-1-status-check-heatmap.pdf", + "multiqc/multiqc_plots/pdf/fastqc-1_per_base_n_content_plot.pdf", + "multiqc/multiqc_plots/pdf/fastqc-1_per_base_sequence_quality_plot.pdf", + "multiqc/multiqc_plots/pdf/fastqc-1_per_sequence_gc_content_plot_Counts.pdf", + "multiqc/multiqc_plots/pdf/fastqc-1_per_sequence_gc_content_plot_Percentages.pdf", + "multiqc/multiqc_plots/pdf/fastqc-1_per_sequence_quality_scores_plot.pdf", + "multiqc/multiqc_plots/pdf/fastqc-1_sequence_counts_plot-cnt.pdf", + "multiqc/multiqc_plots/pdf/fastqc-1_sequence_counts_plot-pct.pdf", + "multiqc/multiqc_plots/pdf/fastqc-1_sequence_duplication_levels_plot.pdf", + "multiqc/multiqc_plots/pdf/fastqc-1_top_overrepresented_sequences_table.pdf", + "multiqc/multiqc_plots/pdf/fastqc-2-status-check-heatmap.pdf", + "multiqc/multiqc_plots/pdf/fastqc-2_per_base_n_content_plot.pdf", + "multiqc/multiqc_plots/pdf/fastqc-2_per_base_sequence_quality_plot.pdf", + "multiqc/multiqc_plots/pdf/fastqc-2_per_sequence_gc_content_plot_Counts.pdf", + "multiqc/multiqc_plots/pdf/fastqc-2_per_sequence_gc_content_plot_Percentages.pdf", + "multiqc/multiqc_plots/pdf/fastqc-2_per_sequence_quality_scores_plot.pdf", + "multiqc/multiqc_plots/pdf/fastqc-2_sequence_counts_plot-cnt.pdf", + "multiqc/multiqc_plots/pdf/fastqc-2_sequence_counts_plot-pct.pdf", + "multiqc/multiqc_plots/pdf/fastqc-2_sequence_duplication_levels_plot.pdf", + "multiqc/multiqc_plots/pdf/fastqc-2_top_overrepresented_sequences_table.pdf", + "multiqc/multiqc_plots/pdf/general_stats_table.pdf", + "multiqc/multiqc_plots/png", + "multiqc/multiqc_plots/png/fastp-seq-content-gc-plot_Read_1_After_filtering.png", + "multiqc/multiqc_plots/png/fastp-seq-content-gc-plot_Read_1_Before_filtering.png", + "multiqc/multiqc_plots/png/fastp-seq-content-gc-plot_Read_2_After_filtering.png", + "multiqc/multiqc_plots/png/fastp-seq-content-gc-plot_Read_2_Before_filtering.png", + "multiqc/multiqc_plots/png/fastp-seq-content-n-plot_Read_1_After_filtering.png", + "multiqc/multiqc_plots/png/fastp-seq-content-n-plot_Read_1_Before_filtering.png", + "multiqc/multiqc_plots/png/fastp-seq-content-n-plot_Read_2_After_filtering.png", + "multiqc/multiqc_plots/png/fastp-seq-content-n-plot_Read_2_Before_filtering.png", + "multiqc/multiqc_plots/png/fastp-seq-quality-plot_Read_1_After_filtering.png", + "multiqc/multiqc_plots/png/fastp-seq-quality-plot_Read_1_Before_filtering.png", + "multiqc/multiqc_plots/png/fastp-seq-quality-plot_Read_2_After_filtering.png", + "multiqc/multiqc_plots/png/fastp-seq-quality-plot_Read_2_Before_filtering.png", + "multiqc/multiqc_plots/png/fastp_filtered_reads_plot-cnt.png", + "multiqc/multiqc_plots/png/fastp_filtered_reads_plot-pct.png", + "multiqc/multiqc_plots/png/fastqc-1-status-check-heatmap.png", + "multiqc/multiqc_plots/png/fastqc-1_per_base_n_content_plot.png", + "multiqc/multiqc_plots/png/fastqc-1_per_base_sequence_quality_plot.png", + "multiqc/multiqc_plots/png/fastqc-1_per_sequence_gc_content_plot_Counts.png", + "multiqc/multiqc_plots/png/fastqc-1_per_sequence_gc_content_plot_Percentages.png", + "multiqc/multiqc_plots/png/fastqc-1_per_sequence_quality_scores_plot.png", + "multiqc/multiqc_plots/png/fastqc-1_sequence_counts_plot-cnt.png", + "multiqc/multiqc_plots/png/fastqc-1_sequence_counts_plot-pct.png", + "multiqc/multiqc_plots/png/fastqc-1_sequence_duplication_levels_plot.png", + "multiqc/multiqc_plots/png/fastqc-1_top_overrepresented_sequences_table.png", + "multiqc/multiqc_plots/png/fastqc-2-status-check-heatmap.png", + "multiqc/multiqc_plots/png/fastqc-2_per_base_n_content_plot.png", + "multiqc/multiqc_plots/png/fastqc-2_per_base_sequence_quality_plot.png", + "multiqc/multiqc_plots/png/fastqc-2_per_sequence_gc_content_plot_Counts.png", + "multiqc/multiqc_plots/png/fastqc-2_per_sequence_gc_content_plot_Percentages.png", + "multiqc/multiqc_plots/png/fastqc-2_per_sequence_quality_scores_plot.png", + "multiqc/multiqc_plots/png/fastqc-2_sequence_counts_plot-cnt.png", + "multiqc/multiqc_plots/png/fastqc-2_sequence_counts_plot-pct.png", + "multiqc/multiqc_plots/png/fastqc-2_sequence_duplication_levels_plot.png", + "multiqc/multiqc_plots/png/fastqc-2_top_overrepresented_sequences_table.png", + "multiqc/multiqc_plots/png/general_stats_table.png", + "multiqc/multiqc_plots/svg", + "multiqc/multiqc_plots/svg/fastp-seq-content-gc-plot_Read_1_After_filtering.svg", + "multiqc/multiqc_plots/svg/fastp-seq-content-gc-plot_Read_1_Before_filtering.svg", + "multiqc/multiqc_plots/svg/fastp-seq-content-gc-plot_Read_2_After_filtering.svg", + "multiqc/multiqc_plots/svg/fastp-seq-content-gc-plot_Read_2_Before_filtering.svg", + "multiqc/multiqc_plots/svg/fastp-seq-content-n-plot_Read_1_After_filtering.svg", + "multiqc/multiqc_plots/svg/fastp-seq-content-n-plot_Read_1_Before_filtering.svg", + "multiqc/multiqc_plots/svg/fastp-seq-content-n-plot_Read_2_After_filtering.svg", + "multiqc/multiqc_plots/svg/fastp-seq-content-n-plot_Read_2_Before_filtering.svg", + "multiqc/multiqc_plots/svg/fastp-seq-quality-plot_Read_1_After_filtering.svg", + "multiqc/multiqc_plots/svg/fastp-seq-quality-plot_Read_1_Before_filtering.svg", + "multiqc/multiqc_plots/svg/fastp-seq-quality-plot_Read_2_After_filtering.svg", + "multiqc/multiqc_plots/svg/fastp-seq-quality-plot_Read_2_Before_filtering.svg", + "multiqc/multiqc_plots/svg/fastp_filtered_reads_plot-cnt.svg", + "multiqc/multiqc_plots/svg/fastp_filtered_reads_plot-pct.svg", + "multiqc/multiqc_plots/svg/fastqc-1-status-check-heatmap.svg", + "multiqc/multiqc_plots/svg/fastqc-1_per_base_n_content_plot.svg", + "multiqc/multiqc_plots/svg/fastqc-1_per_base_sequence_quality_plot.svg", + "multiqc/multiqc_plots/svg/fastqc-1_per_sequence_gc_content_plot_Counts.svg", + "multiqc/multiqc_plots/svg/fastqc-1_per_sequence_gc_content_plot_Percentages.svg", + "multiqc/multiqc_plots/svg/fastqc-1_per_sequence_quality_scores_plot.svg", + "multiqc/multiqc_plots/svg/fastqc-1_sequence_counts_plot-cnt.svg", + "multiqc/multiqc_plots/svg/fastqc-1_sequence_counts_plot-pct.svg", + "multiqc/multiqc_plots/svg/fastqc-1_sequence_duplication_levels_plot.svg", + "multiqc/multiqc_plots/svg/fastqc-1_top_overrepresented_sequences_table.svg", + "multiqc/multiqc_plots/svg/fastqc-2-status-check-heatmap.svg", + "multiqc/multiqc_plots/svg/fastqc-2_per_base_n_content_plot.svg", + "multiqc/multiqc_plots/svg/fastqc-2_per_base_sequence_quality_plot.svg", + "multiqc/multiqc_plots/svg/fastqc-2_per_sequence_gc_content_plot_Counts.svg", + "multiqc/multiqc_plots/svg/fastqc-2_per_sequence_gc_content_plot_Percentages.svg", + "multiqc/multiqc_plots/svg/fastqc-2_per_sequence_quality_scores_plot.svg", + "multiqc/multiqc_plots/svg/fastqc-2_sequence_counts_plot-cnt.svg", + "multiqc/multiqc_plots/svg/fastqc-2_sequence_counts_plot-pct.svg", + "multiqc/multiqc_plots/svg/fastqc-2_sequence_duplication_levels_plot.svg", + "multiqc/multiqc_plots/svg/fastqc-2_top_overrepresented_sequences_table.svg", + "multiqc/multiqc_plots/svg/general_stats_table.svg", + "multiqc/multiqc_report.html", + "pipeline_info", + "pipeline_info/nf_core_pipeline_software_mqc_versions.yml", + "samplesheet", + "samplesheet/samplesheet.csv", + "sim-data", + "sim-data.csv", + "sim-data/Undetermined_S25_L001.fastp.html", + "sim-data/Undetermined_S25_L001.fastp.json", + "sim-data/Undetermined_S25_L001_1.fastp.fastq.gz", + "sim-data/Undetermined_S25_L001_1.fastp.fastq.gz.md5", + "sim-data/Undetermined_S25_L001_1.fastp.fastq.gz_fastqc_data.txt", + "sim-data/Undetermined_S25_L001_1.fastp.fastq.gz_fastqc_report.html", + "sim-data/Undetermined_S25_L001_1.fastp.fastq.gz_summary.txt", + "sim-data/Undetermined_S25_L001_2.fastp.fastq.gz", + "sim-data/Undetermined_S25_L001_2.fastp.fastq.gz.md5", + "sim-data/Undetermined_S25_L001_2.fastp.fastq.gz_fastqc_data.txt", + "sim-data/Undetermined_S25_L001_2.fastp.fastq.gz_fastqc_report.html", + "sim-data/Undetermined_S25_L001_2.fastp.fastq.gz_summary.txt", + "sim-data/metrics.tsv", + "sim-data/most_frequent_unmatched.tsv", + "sim-data/per_project_metrics.tsv", + "sim-data/per_sample_metrics.tsv", + "sim-data/s10_S10_L001.fastp.html", + "sim-data/s10_S10_L001.fastp.json", + "sim-data/s10_S10_L001_1.fastp.fastq.gz", + "sim-data/s10_S10_L001_1.fastp.fastq.gz.md5", + "sim-data/s10_S10_L001_1.fastp.fastq.gz_fastqc_data.txt", + "sim-data/s10_S10_L001_1.fastp.fastq.gz_fastqc_report.html", + "sim-data/s10_S10_L001_1.fastp.fastq.gz_summary.txt", + "sim-data/s10_S10_L001_2.fastp.fastq.gz", + "sim-data/s10_S10_L001_2.fastp.fastq.gz.md5", + "sim-data/s10_S10_L001_2.fastp.fastq.gz_fastqc_data.txt", + "sim-data/s10_S10_L001_2.fastp.fastq.gz_fastqc_report.html", + "sim-data/s10_S10_L001_2.fastp.fastq.gz_summary.txt", + "sim-data/s11_S11_L001.fastp.html", + "sim-data/s11_S11_L001.fastp.json", + "sim-data/s11_S11_L001_1.fastp.fastq.gz", + "sim-data/s11_S11_L001_1.fastp.fastq.gz.md5", + "sim-data/s11_S11_L001_1.fastp.fastq.gz_fastqc_data.txt", + "sim-data/s11_S11_L001_1.fastp.fastq.gz_fastqc_report.html", + "sim-data/s11_S11_L001_1.fastp.fastq.gz_summary.txt", + "sim-data/s11_S11_L001_2.fastp.fastq.gz", + "sim-data/s11_S11_L001_2.fastp.fastq.gz.md5", + "sim-data/s11_S11_L001_2.fastp.fastq.gz_fastqc_data.txt", + "sim-data/s11_S11_L001_2.fastp.fastq.gz_fastqc_report.html", + "sim-data/s11_S11_L001_2.fastp.fastq.gz_summary.txt", + "sim-data/s12_S12_L001.fastp.html", + "sim-data/s12_S12_L001.fastp.json", + "sim-data/s12_S12_L001_1.fastp.fastq.gz", + "sim-data/s12_S12_L001_1.fastp.fastq.gz.md5", + "sim-data/s12_S12_L001_1.fastp.fastq.gz_fastqc_data.txt", + "sim-data/s12_S12_L001_1.fastp.fastq.gz_fastqc_report.html", + "sim-data/s12_S12_L001_1.fastp.fastq.gz_summary.txt", + "sim-data/s12_S12_L001_2.fastp.fastq.gz", + "sim-data/s12_S12_L001_2.fastp.fastq.gz.md5", + "sim-data/s12_S12_L001_2.fastp.fastq.gz_fastqc_data.txt", + "sim-data/s12_S12_L001_2.fastp.fastq.gz_fastqc_report.html", + "sim-data/s12_S12_L001_2.fastp.fastq.gz_summary.txt", + "sim-data/s13_S13_L001.fastp.html", + "sim-data/s13_S13_L001.fastp.json", + "sim-data/s13_S13_L001_1.fastp.fastq.gz", + "sim-data/s13_S13_L001_1.fastp.fastq.gz.md5", + "sim-data/s13_S13_L001_1.fastp.fastq.gz_fastqc_data.txt", + "sim-data/s13_S13_L001_1.fastp.fastq.gz_fastqc_report.html", + "sim-data/s13_S13_L001_1.fastp.fastq.gz_summary.txt", + "sim-data/s13_S13_L001_2.fastp.fastq.gz", + "sim-data/s13_S13_L001_2.fastp.fastq.gz.md5", + "sim-data/s13_S13_L001_2.fastp.fastq.gz_fastqc_data.txt", + "sim-data/s13_S13_L001_2.fastp.fastq.gz_fastqc_report.html", + "sim-data/s13_S13_L001_2.fastp.fastq.gz_summary.txt", + "sim-data/s14_S14_L001.fastp.html", + "sim-data/s14_S14_L001.fastp.json", + "sim-data/s14_S14_L001_1.fastp.fastq.gz", + "sim-data/s14_S14_L001_1.fastp.fastq.gz.md5", + "sim-data/s14_S14_L001_1.fastp.fastq.gz_fastqc_data.txt", + "sim-data/s14_S14_L001_1.fastp.fastq.gz_fastqc_report.html", + "sim-data/s14_S14_L001_1.fastp.fastq.gz_summary.txt", + "sim-data/s14_S14_L001_2.fastp.fastq.gz", + "sim-data/s14_S14_L001_2.fastp.fastq.gz.md5", + "sim-data/s14_S14_L001_2.fastp.fastq.gz_fastqc_data.txt", + "sim-data/s14_S14_L001_2.fastp.fastq.gz_fastqc_report.html", + "sim-data/s14_S14_L001_2.fastp.fastq.gz_summary.txt", + "sim-data/s15_S15_L001.fastp.html", + "sim-data/s15_S15_L001.fastp.json", + "sim-data/s15_S15_L001_1.fastp.fastq.gz", + "sim-data/s15_S15_L001_1.fastp.fastq.gz.md5", + "sim-data/s15_S15_L001_1.fastp.fastq.gz_fastqc_data.txt", + "sim-data/s15_S15_L001_1.fastp.fastq.gz_fastqc_report.html", + "sim-data/s15_S15_L001_1.fastp.fastq.gz_summary.txt", + "sim-data/s15_S15_L001_2.fastp.fastq.gz", + "sim-data/s15_S15_L001_2.fastp.fastq.gz.md5", + "sim-data/s15_S15_L001_2.fastp.fastq.gz_fastqc_data.txt", + "sim-data/s15_S15_L001_2.fastp.fastq.gz_fastqc_report.html", + "sim-data/s15_S15_L001_2.fastp.fastq.gz_summary.txt", + "sim-data/s16_S16_L001.fastp.html", + "sim-data/s16_S16_L001.fastp.json", + "sim-data/s16_S16_L001_1.fastp.fastq.gz", + "sim-data/s16_S16_L001_1.fastp.fastq.gz.md5", + "sim-data/s16_S16_L001_1.fastp.fastq.gz_fastqc_data.txt", + "sim-data/s16_S16_L001_1.fastp.fastq.gz_fastqc_report.html", + "sim-data/s16_S16_L001_1.fastp.fastq.gz_summary.txt", + "sim-data/s16_S16_L001_2.fastp.fastq.gz", + "sim-data/s16_S16_L001_2.fastp.fastq.gz.md5", + "sim-data/s16_S16_L001_2.fastp.fastq.gz_fastqc_data.txt", + "sim-data/s16_S16_L001_2.fastp.fastq.gz_fastqc_report.html", + "sim-data/s16_S16_L001_2.fastp.fastq.gz_summary.txt", + "sim-data/s17_S17_L001.fastp.html", + "sim-data/s17_S17_L001.fastp.json", + "sim-data/s17_S17_L001_1.fastp.fastq.gz", + "sim-data/s17_S17_L001_1.fastp.fastq.gz.md5", + "sim-data/s17_S17_L001_1.fastp.fastq.gz_fastqc_data.txt", + "sim-data/s17_S17_L001_1.fastp.fastq.gz_fastqc_report.html", + "sim-data/s17_S17_L001_1.fastp.fastq.gz_summary.txt", + "sim-data/s17_S17_L001_2.fastp.fastq.gz", + "sim-data/s17_S17_L001_2.fastp.fastq.gz.md5", + "sim-data/s17_S17_L001_2.fastp.fastq.gz_fastqc_data.txt", + "sim-data/s17_S17_L001_2.fastp.fastq.gz_fastqc_report.html", + "sim-data/s17_S17_L001_2.fastp.fastq.gz_summary.txt", + "sim-data/s18_S18_L001.fastp.html", + "sim-data/s18_S18_L001.fastp.json", + "sim-data/s18_S18_L001_1.fastp.fastq.gz", + "sim-data/s18_S18_L001_1.fastp.fastq.gz.md5", + "sim-data/s18_S18_L001_1.fastp.fastq.gz_fastqc_data.txt", + "sim-data/s18_S18_L001_1.fastp.fastq.gz_fastqc_report.html", + "sim-data/s18_S18_L001_1.fastp.fastq.gz_summary.txt", + "sim-data/s18_S18_L001_2.fastp.fastq.gz", + "sim-data/s18_S18_L001_2.fastp.fastq.gz.md5", + "sim-data/s18_S18_L001_2.fastp.fastq.gz_fastqc_data.txt", + "sim-data/s18_S18_L001_2.fastp.fastq.gz_fastqc_report.html", + "sim-data/s18_S18_L001_2.fastp.fastq.gz_summary.txt", + "sim-data/s19_S19_L001.fastp.html", + "sim-data/s19_S19_L001.fastp.json", + "sim-data/s19_S19_L001_1.fastp.fastq.gz", + "sim-data/s19_S19_L001_1.fastp.fastq.gz.md5", + "sim-data/s19_S19_L001_1.fastp.fastq.gz_fastqc_data.txt", + "sim-data/s19_S19_L001_1.fastp.fastq.gz_fastqc_report.html", + "sim-data/s19_S19_L001_1.fastp.fastq.gz_summary.txt", + "sim-data/s19_S19_L001_2.fastp.fastq.gz", + "sim-data/s19_S19_L001_2.fastp.fastq.gz.md5", + "sim-data/s19_S19_L001_2.fastp.fastq.gz_fastqc_data.txt", + "sim-data/s19_S19_L001_2.fastp.fastq.gz_fastqc_report.html", + "sim-data/s19_S19_L001_2.fastp.fastq.gz_summary.txt", + "sim-data/s1_S1_L001.fastp.html", + "sim-data/s1_S1_L001.fastp.json", + "sim-data/s1_S1_L001_1.fastp.fastq.gz", + "sim-data/s1_S1_L001_1.fastp.fastq.gz.md5", + "sim-data/s1_S1_L001_1.fastp.fastq.gz_fastqc_data.txt", + "sim-data/s1_S1_L001_1.fastp.fastq.gz_fastqc_report.html", + "sim-data/s1_S1_L001_1.fastp.fastq.gz_summary.txt", + "sim-data/s1_S1_L001_2.fastp.fastq.gz", + "sim-data/s1_S1_L001_2.fastp.fastq.gz.md5", + "sim-data/s1_S1_L001_2.fastp.fastq.gz_fastqc_data.txt", + "sim-data/s1_S1_L001_2.fastp.fastq.gz_fastqc_report.html", + "sim-data/s1_S1_L001_2.fastp.fastq.gz_summary.txt", + "sim-data/s20_S20_L001.fastp.html", + "sim-data/s20_S20_L001.fastp.json", + "sim-data/s20_S20_L001_1.fastp.fastq.gz", + "sim-data/s20_S20_L001_1.fastp.fastq.gz.md5", + "sim-data/s20_S20_L001_1.fastp.fastq.gz_fastqc_data.txt", + "sim-data/s20_S20_L001_1.fastp.fastq.gz_fastqc_report.html", + "sim-data/s20_S20_L001_1.fastp.fastq.gz_summary.txt", + "sim-data/s20_S20_L001_2.fastp.fastq.gz", + "sim-data/s20_S20_L001_2.fastp.fastq.gz.md5", + "sim-data/s20_S20_L001_2.fastp.fastq.gz_fastqc_data.txt", + "sim-data/s20_S20_L001_2.fastp.fastq.gz_fastqc_report.html", + "sim-data/s20_S20_L001_2.fastp.fastq.gz_summary.txt", + "sim-data/s21_S21_L001.fastp.html", + "sim-data/s21_S21_L001.fastp.json", + "sim-data/s21_S21_L001_1.fastp.fastq.gz", + "sim-data/s21_S21_L001_1.fastp.fastq.gz.md5", + "sim-data/s21_S21_L001_1.fastp.fastq.gz_fastqc_data.txt", + "sim-data/s21_S21_L001_1.fastp.fastq.gz_fastqc_report.html", + "sim-data/s21_S21_L001_1.fastp.fastq.gz_summary.txt", + "sim-data/s21_S21_L001_2.fastp.fastq.gz", + "sim-data/s21_S21_L001_2.fastp.fastq.gz.md5", + "sim-data/s21_S21_L001_2.fastp.fastq.gz_fastqc_data.txt", + "sim-data/s21_S21_L001_2.fastp.fastq.gz_fastqc_report.html", + "sim-data/s21_S21_L001_2.fastp.fastq.gz_summary.txt", + "sim-data/s22_S22_L001.fastp.html", + "sim-data/s22_S22_L001.fastp.json", + "sim-data/s22_S22_L001_1.fastp.fastq.gz", + "sim-data/s22_S22_L001_1.fastp.fastq.gz.md5", + "sim-data/s22_S22_L001_1.fastp.fastq.gz_fastqc_data.txt", + "sim-data/s22_S22_L001_1.fastp.fastq.gz_fastqc_report.html", + "sim-data/s22_S22_L001_1.fastp.fastq.gz_summary.txt", + "sim-data/s22_S22_L001_2.fastp.fastq.gz", + "sim-data/s22_S22_L001_2.fastp.fastq.gz.md5", + "sim-data/s22_S22_L001_2.fastp.fastq.gz_fastqc_data.txt", + "sim-data/s22_S22_L001_2.fastp.fastq.gz_fastqc_report.html", + "sim-data/s22_S22_L001_2.fastp.fastq.gz_summary.txt", + "sim-data/s23_S23_L001.fastp.html", + "sim-data/s23_S23_L001.fastp.json", + "sim-data/s23_S23_L001_1.fastp.fastq.gz", + "sim-data/s23_S23_L001_1.fastp.fastq.gz.md5", + "sim-data/s23_S23_L001_1.fastp.fastq.gz_fastqc_data.txt", + "sim-data/s23_S23_L001_1.fastp.fastq.gz_fastqc_report.html", + "sim-data/s23_S23_L001_1.fastp.fastq.gz_summary.txt", + "sim-data/s23_S23_L001_2.fastp.fastq.gz", + "sim-data/s23_S23_L001_2.fastp.fastq.gz.md5", + "sim-data/s23_S23_L001_2.fastp.fastq.gz_fastqc_data.txt", + "sim-data/s23_S23_L001_2.fastp.fastq.gz_fastqc_report.html", + "sim-data/s23_S23_L001_2.fastp.fastq.gz_summary.txt", + "sim-data/s24_S24_L001.fastp.html", + "sim-data/s24_S24_L001.fastp.json", + "sim-data/s24_S24_L001_1.fastp.fastq.gz", + "sim-data/s24_S24_L001_1.fastp.fastq.gz.md5", + "sim-data/s24_S24_L001_1.fastp.fastq.gz_fastqc_data.txt", + "sim-data/s24_S24_L001_1.fastp.fastq.gz_fastqc_report.html", + "sim-data/s24_S24_L001_1.fastp.fastq.gz_summary.txt", + "sim-data/s24_S24_L001_2.fastp.fastq.gz", + "sim-data/s24_S24_L001_2.fastp.fastq.gz.md5", + "sim-data/s24_S24_L001_2.fastp.fastq.gz_fastqc_data.txt", + "sim-data/s24_S24_L001_2.fastp.fastq.gz_fastqc_report.html", + "sim-data/s24_S24_L001_2.fastp.fastq.gz_summary.txt", + "sim-data/s2_S2_L001.fastp.html", + "sim-data/s2_S2_L001.fastp.json", + "sim-data/s2_S2_L001_1.fastp.fastq.gz", + "sim-data/s2_S2_L001_1.fastp.fastq.gz.md5", + "sim-data/s2_S2_L001_1.fastp.fastq.gz_fastqc_data.txt", + "sim-data/s2_S2_L001_1.fastp.fastq.gz_fastqc_report.html", + "sim-data/s2_S2_L001_1.fastp.fastq.gz_summary.txt", + "sim-data/s2_S2_L001_2.fastp.fastq.gz", + "sim-data/s2_S2_L001_2.fastp.fastq.gz.md5", + "sim-data/s2_S2_L001_2.fastp.fastq.gz_fastqc_data.txt", + "sim-data/s2_S2_L001_2.fastp.fastq.gz_fastqc_report.html", + "sim-data/s2_S2_L001_2.fastp.fastq.gz_summary.txt", + "sim-data/s3_S3_L001.fastp.html", + "sim-data/s3_S3_L001.fastp.json", + "sim-data/s3_S3_L001_1.fastp.fastq.gz", + "sim-data/s3_S3_L001_1.fastp.fastq.gz.md5", + "sim-data/s3_S3_L001_1.fastp.fastq.gz_fastqc_data.txt", + "sim-data/s3_S3_L001_1.fastp.fastq.gz_fastqc_report.html", + "sim-data/s3_S3_L001_1.fastp.fastq.gz_summary.txt", + "sim-data/s3_S3_L001_2.fastp.fastq.gz", + "sim-data/s3_S3_L001_2.fastp.fastq.gz.md5", + "sim-data/s3_S3_L001_2.fastp.fastq.gz_fastqc_data.txt", + "sim-data/s3_S3_L001_2.fastp.fastq.gz_fastqc_report.html", + "sim-data/s3_S3_L001_2.fastp.fastq.gz_summary.txt", + "sim-data/s4_S4_L001.fastp.html", + "sim-data/s4_S4_L001.fastp.json", + "sim-data/s4_S4_L001_1.fastp.fastq.gz", + "sim-data/s4_S4_L001_1.fastp.fastq.gz.md5", + "sim-data/s4_S4_L001_1.fastp.fastq.gz_fastqc_data.txt", + "sim-data/s4_S4_L001_1.fastp.fastq.gz_fastqc_report.html", + "sim-data/s4_S4_L001_1.fastp.fastq.gz_summary.txt", + "sim-data/s4_S4_L001_2.fastp.fastq.gz", + "sim-data/s4_S4_L001_2.fastp.fastq.gz.md5", + "sim-data/s4_S4_L001_2.fastp.fastq.gz_fastqc_data.txt", + "sim-data/s4_S4_L001_2.fastp.fastq.gz_fastqc_report.html", + "sim-data/s4_S4_L001_2.fastp.fastq.gz_summary.txt", + "sim-data/s5_S5_L001.fastp.html", + "sim-data/s5_S5_L001.fastp.json", + "sim-data/s5_S5_L001_1.fastp.fastq.gz", + "sim-data/s5_S5_L001_1.fastp.fastq.gz.md5", + "sim-data/s5_S5_L001_1.fastp.fastq.gz_fastqc_data.txt", + "sim-data/s5_S5_L001_1.fastp.fastq.gz_fastqc_report.html", + "sim-data/s5_S5_L001_1.fastp.fastq.gz_summary.txt", + "sim-data/s5_S5_L001_2.fastp.fastq.gz", + "sim-data/s5_S5_L001_2.fastp.fastq.gz.md5", + "sim-data/s5_S5_L001_2.fastp.fastq.gz_fastqc_data.txt", + "sim-data/s5_S5_L001_2.fastp.fastq.gz_fastqc_report.html", + "sim-data/s5_S5_L001_2.fastp.fastq.gz_summary.txt", + "sim-data/s6_S6_L001.fastp.html", + "sim-data/s6_S6_L001.fastp.json", + "sim-data/s6_S6_L001_1.fastp.fastq.gz", + "sim-data/s6_S6_L001_1.fastp.fastq.gz.md5", + "sim-data/s6_S6_L001_1.fastp.fastq.gz_fastqc_data.txt", + "sim-data/s6_S6_L001_1.fastp.fastq.gz_fastqc_report.html", + "sim-data/s6_S6_L001_1.fastp.fastq.gz_summary.txt", + "sim-data/s6_S6_L001_2.fastp.fastq.gz", + "sim-data/s6_S6_L001_2.fastp.fastq.gz.md5", + "sim-data/s6_S6_L001_2.fastp.fastq.gz_fastqc_data.txt", + "sim-data/s6_S6_L001_2.fastp.fastq.gz_fastqc_report.html", + "sim-data/s6_S6_L001_2.fastp.fastq.gz_summary.txt", + "sim-data/s7_S7_L001.fastp.html", + "sim-data/s7_S7_L001.fastp.json", + "sim-data/s7_S7_L001_1.fastp.fastq.gz", + "sim-data/s7_S7_L001_1.fastp.fastq.gz.md5", + "sim-data/s7_S7_L001_1.fastp.fastq.gz_fastqc_data.txt", + "sim-data/s7_S7_L001_1.fastp.fastq.gz_fastqc_report.html", + "sim-data/s7_S7_L001_1.fastp.fastq.gz_summary.txt", + "sim-data/s7_S7_L001_2.fastp.fastq.gz", + "sim-data/s7_S7_L001_2.fastp.fastq.gz.md5", + "sim-data/s7_S7_L001_2.fastp.fastq.gz_fastqc_data.txt", + "sim-data/s7_S7_L001_2.fastp.fastq.gz_fastqc_report.html", + "sim-data/s7_S7_L001_2.fastp.fastq.gz_summary.txt", + "sim-data/s8_S8_L001.fastp.html", + "sim-data/s8_S8_L001.fastp.json", + "sim-data/s8_S8_L001_1.fastp.fastq.gz", + "sim-data/s8_S8_L001_1.fastp.fastq.gz.md5", + "sim-data/s8_S8_L001_1.fastp.fastq.gz_fastqc_data.txt", + "sim-data/s8_S8_L001_1.fastp.fastq.gz_fastqc_report.html", + "sim-data/s8_S8_L001_1.fastp.fastq.gz_summary.txt", + "sim-data/s8_S8_L001_2.fastp.fastq.gz", + "sim-data/s8_S8_L001_2.fastp.fastq.gz.md5", + "sim-data/s8_S8_L001_2.fastp.fastq.gz_fastqc_data.txt", + "sim-data/s8_S8_L001_2.fastp.fastq.gz_fastqc_report.html", + "sim-data/s8_S8_L001_2.fastp.fastq.gz_summary.txt", + "sim-data/s9_S9_L001.fastp.html", + "sim-data/s9_S9_L001.fastp.json", + "sim-data/s9_S9_L001_1.fastp.fastq.gz", + "sim-data/s9_S9_L001_1.fastp.fastq.gz.md5", + "sim-data/s9_S9_L001_1.fastp.fastq.gz_fastqc_data.txt", + "sim-data/s9_S9_L001_1.fastp.fastq.gz_fastqc_report.html", + "sim-data/s9_S9_L001_1.fastp.fastq.gz_summary.txt", + "sim-data/s9_S9_L001_2.fastp.fastq.gz", + "sim-data/s9_S9_L001_2.fastp.fastq.gz.md5", + "sim-data/s9_S9_L001_2.fastp.fastq.gz_fastqc_data.txt", + "sim-data/s9_S9_L001_2.fastp.fastq.gz_fastqc_report.html", + "sim-data/s9_S9_L001_2.fastp.fastq.gz_summary.txt", + "sim-data/sample_barcode_hop_metrics.tsv" + ], + [ + "fastp-seq-content-gc-plot_Read_1_After_filtering.txt:md5,f574676225613f374b561ef8d4779f33", + "fastp-seq-content-gc-plot_Read_1_Before_filtering.txt:md5,f574676225613f374b561ef8d4779f33", + "fastp-seq-content-gc-plot_Read_2_After_filtering.txt:md5,c5c2bfa3d096ebeef6823d147fa652fb", + "fastp-seq-content-gc-plot_Read_2_Before_filtering.txt:md5,c5c2bfa3d096ebeef6823d147fa652fb", + "fastp-seq-content-n-plot_Read_1_After_filtering.txt:md5,d2c7fc0c344909e4823099492d72e209", + "fastp-seq-content-n-plot_Read_1_Before_filtering.txt:md5,d2c7fc0c344909e4823099492d72e209", + "fastp-seq-content-n-plot_Read_2_After_filtering.txt:md5,d2c7fc0c344909e4823099492d72e209", + "fastp-seq-content-n-plot_Read_2_Before_filtering.txt:md5,d2c7fc0c344909e4823099492d72e209", + "fastp-seq-quality-plot_Read_1_After_filtering.txt:md5,b5e3d7a8aca6895859654a4115b38708", + "fastp-seq-quality-plot_Read_1_Before_filtering.txt:md5,b5e3d7a8aca6895859654a4115b38708", + "fastp-seq-quality-plot_Read_2_After_filtering.txt:md5,b5e3d7a8aca6895859654a4115b38708", + "fastp-seq-quality-plot_Read_2_Before_filtering.txt:md5,b5e3d7a8aca6895859654a4115b38708", + "fastp_filtered_reads_plot.txt:md5,0e60fe7db5d84497e03d814a9818e4c4", + "fastqc-1_per_base_n_content_plot.txt:md5,c0d889e3447bb580a91c26d58367ea3d", + "fastqc-1_per_base_sequence_quality_plot.txt:md5,fc98fee907d0942dc1e0a2c046e697fc", + "fastqc-1_per_sequence_gc_content_plot_Counts.txt:md5,d76e3dbdcdcbb0c5dc60912c275be5e1", + "fastqc-1_per_sequence_gc_content_plot_Percentages.txt:md5,727231c2c86c657e506296c2fda2025d", + "fastqc-1_per_sequence_quality_scores_plot.txt:md5,89cb687875c238d4920f01401635edd4", + "fastqc-1_sequence_counts_plot.txt:md5,020f9eacc4ddf1eef1f4187a3cf0122e", + "fastqc-1_sequence_duplication_levels_plot.txt:md5,3c42607c5bda6eb3d39f45982f1c8e53", + "fastqc-1_top_overrepresented_sequences_table.txt:md5,d41d8cd98f00b204e9800998ecf8427e", + "fastqc-2_per_base_n_content_plot.txt:md5,dee7d9c094c60dc3a67c4da1954303f2", + "fastqc-2_per_base_sequence_quality_plot.txt:md5,5d63f6647b7589d04bf2f2f9db88f584", + "fastqc-2_per_sequence_gc_content_plot_Counts.txt:md5,ae1a7e984622d704f03cb658d5f160f5", + "fastqc-2_per_sequence_gc_content_plot_Percentages.txt:md5,7ade5018e5188777fddc82e35b06ef3f", + "fastqc-2_per_sequence_quality_scores_plot.txt:md5,5d1d91faa379b3551b27a9b5c39ce5b0", + "fastqc-2_sequence_counts_plot.txt:md5,1d5fa5876e4261235b9fa8650ee3ff7f", + "fastqc-2_sequence_duplication_levels_plot.txt:md5,a524a5e16ed509a3615ea05aa6d36bd0", + "fastqc-2_top_overrepresented_sequences_table.txt:md5,d41d8cd98f00b204e9800998ecf8427e", + "multiqc_citations.txt:md5,d35df50e9903a96a2b3bce3c1fbc8ad2", + "sim-data.csv:md5,a5ea0ad63c5df73b5fc2436dd8d9dbfe", + "Undetermined_S25_L001.fastp.json:md5,577922aa75bb6ab549ed7699ae45becc", + "metrics.tsv:md5,7627e4bd2a56ea551fd74b4a2b5cb4b2", + "per_project_metrics.tsv:md5,7393bc580c8ed8431107ad3dd00a7d2a", + "per_sample_metrics.tsv:md5,fb8ce024ad2508e7b22a4af65fe44358", + "s10_S10_L001.fastp.json:md5,80d48c6afeade19ad0d7abf001cd95c5", + "s11_S11_L001.fastp.json:md5,69c21db3faf4208f655d0188c64b2368", + "s12_S12_L001.fastp.json:md5,6c79234c342d223124a5ebedf05160c0", + "s13_S13_L001.fastp.json:md5,158cd7b4e8fad3d8a94589b302b83f72", + "s14_S14_L001.fastp.json:md5,afd266c7c3ec51f1a12dc8bc78a72679", + "s15_S15_L001.fastp.json:md5,ad5562b2e1dae32e7e0f2cf9b513ffc0", + "s16_S16_L001.fastp.json:md5,cb64e853c84f114a9656e3447d64ddec", + "s17_S17_L001.fastp.json:md5,9d0fb23f4f0f2f2ad884c9b0c2e63b4b", + "s18_S18_L001.fastp.json:md5,3dc0e57ad9b6e43bb5ae899271168760", + "s19_S19_L001.fastp.json:md5,4bf894d2ea823cfaa9815ade88052247", + "s1_S1_L001.fastp.json:md5,0dee4ce864b6a67bea6978c0da10324a", + "s20_S20_L001.fastp.json:md5,a68d9f92ae4d7aec288a66333f4a47a6", + "s21_S21_L001.fastp.json:md5,39b0ff239f397b3401e68a33f2cd3b9c", + "s22_S22_L001.fastp.json:md5,b53166d2c855f23743d0f97490f19188", + "s23_S23_L001.fastp.json:md5,708c0041dc1dfc697f728c04c6641b10", + "s24_S24_L001.fastp.json:md5,795c7967006f2118b5e03de8f2f725fa", + "s2_S2_L001.fastp.json:md5,b6bf8ddbc93f1902eca96b2648ee3b4c", + "s3_S3_L001.fastp.json:md5,128aaded1b45ae930d1930f9123216db", + "s4_S4_L001.fastp.json:md5,bfc777692caeef686a843bc437e95c62", + "s5_S5_L001.fastp.json:md5,6134ea1b573fcb10db241b23d45d0f7f", + "s6_S6_L001.fastp.json:md5,d469259e79944977e78398650bc044aa", + "s7_S7_L001.fastp.json:md5,7eb2472f134e22ea1923da56ff7fcd5a", + "s8_S8_L001.fastp.json:md5,5bfcfe29a43c0d0ba8fac7fc9f084f04", + "s9_S9_L001.fastp.json:md5,709a327e837b44dc186c3407b91ab9c4", + "sample_barcode_hop_metrics.tsv:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.04.4" + }, + "timestamp": "2024-10-15T16:07:45.042862" + } +} diff --git a/tests/skip_tools.nf.test b/tests/skip_tools.nf.test new file mode 100644 index 00000000..938abc67 --- /dev/null +++ b/tests/skip_tools.nf.test @@ -0,0 +1,169 @@ +nextflow_pipeline { + + name "Test Workflow main.nf - Skip Tools" + script "../main.nf" + profile "test" + tag "skip_trimming" + tag "pipeline" + + + test("Skip Trimming") { + + when { + params { + input = 'https://raw.githubusercontent.com/nf-core/test-datasets/demultiplex/samplesheet/1.3.0/flowcell_input.csv' + demultiplexer = 'bclconvert' + outdir = "$outputDir" + trim_fastq = false + } + } + + then { + // stable_name: All files + folders in ${params.outdir}/ with a stable name + def stable_name = getAllFilesFromDir(params.outdir, relative: true, includeDir: true, ignore: ['pipeline_info/*.{html,json,txt}']) + // stable_path: All files in ${params.outdir}/ with stable content + def stable_path = getAllFilesFromDir(params.outdir, ignoreFile: 'tests/.nftignore') + assertAll( + { assert workflow.success}, + { assert snapshot( + // Number of successful tasks + workflow.trace.succeeded().size(), + // pipeline versions.yml file for multiqc from which Nextflow version is removed because we tests pipelines on multiple Nextflow versions + removeNextflowVersion("$outputDir/pipeline_info/nf_core_pipeline_software_mqc_versions.yml"), + // All stable path name, with a relative path + stable_name, + // All files with stable contents + stable_path + ).match() } + ) + } + } + + test("Skip Fastp") { + + when { + params { + input = 'https://raw.githubusercontent.com/nf-core/test-datasets/demultiplex/samplesheet/1.3.0/flowcell_input.csv' + demultiplexer = 'bclconvert' + outdir = "$outputDir" + skip_tools = "fastp,samshee" + } + } + + then { + // stable_name: All files + folders in ${params.outdir}/ with a stable name + def stable_name = getAllFilesFromDir(params.outdir, relative: true, includeDir: true, ignore: ['pipeline_info/*.{html,json,txt}']) + // stable_path: All files in ${params.outdir}/ with stable content + def stable_path = getAllFilesFromDir(params.outdir, ignoreFile: 'tests/.nftignore') + assertAll( + { assert workflow.success}, + { assert snapshot( + // Number of successful tasks + workflow.trace.succeeded().size(), + // pipeline versions.yml file for multiqc from which Nextflow version is removed because we tests pipelines on multiple Nextflow versions + removeNextflowVersion("$outputDir/pipeline_info/nf_core_pipeline_software_mqc_versions.yml"), + // All stable path name, with a relative path + stable_name, + // All files with stable contents + stable_path + ).match() } + ) + } + } + + test("Skip Fastqc") { + + when { + params { + input = 'https://raw.githubusercontent.com/nf-core/test-datasets/demultiplex/samplesheet/1.3.0/flowcell_input.csv' + demultiplexer = 'bclconvert' + outdir = "$outputDir" + skip_tools = "fastqc,samshee" + } + } + + then { + // stable_name: All files + folders in ${params.outdir}/ with a stable name + def stable_name = getAllFilesFromDir(params.outdir, relative: true, includeDir: true, ignore: ['pipeline_info/*.{html,json,txt}']) + // stable_path: All files in ${params.outdir}/ with stable content + def stable_path = getAllFilesFromDir(params.outdir, ignoreFile: 'tests/.nftignore') + assertAll( + { assert workflow.success}, + { assert snapshot( + // Number of successful tasks + workflow.trace.succeeded().size(), + // pipeline versions.yml file for multiqc from which Nextflow version is removed because we tests pipelines on multiple Nextflow versions + removeNextflowVersion("$outputDir/pipeline_info/nf_core_pipeline_software_mqc_versions.yml"), + // All stable path name, with a relative path + stable_name, + // All files with stable contents + stable_path + ).match() } + ) + } + } + + test("Skip Fastp & Fastqc") { + + when { + params { + input = 'https://raw.githubusercontent.com/nf-core/test-datasets/demultiplex/samplesheet/1.3.0/flowcell_input.csv' + demultiplexer = 'bclconvert' + outdir = "$outputDir" + skip_tools = "fastp,fastqc,samshee" + } + } + + then { + // stable_name: All files + folders in ${params.outdir}/ with a stable name + def stable_name = getAllFilesFromDir(params.outdir, relative: true, includeDir: true, ignore: ['pipeline_info/*.{html,json,txt}']) + // stable_path: All files in ${params.outdir}/ with stable content + def stable_path = getAllFilesFromDir(params.outdir, ignoreFile: 'tests/.nftignore') + assertAll( + { assert workflow.success}, + { assert snapshot( + // Number of successful tasks + workflow.trace.succeeded().size(), + // pipeline versions.yml file for multiqc from which Nextflow version is removed because we tests pipelines on multiple Nextflow versions + removeNextflowVersion("$outputDir/pipeline_info/nf_core_pipeline_software_mqc_versions.yml"), + // All stable path name, with a relative path + stable_name, + // All files with stable contents + stable_path + ).match() } + ) + } + } + + test("Skip MultiQC") { + + when { + params { + input = 'https://raw.githubusercontent.com/nf-core/test-datasets/demultiplex/samplesheet/1.3.0/flowcell_input.csv' + demultiplexer = 'bclconvert' + outdir = "$outputDir" + skip_tools = "multiqc,samshee" + } + } + + then { + // stable_name: All files + folders in ${params.outdir}/ with a stable name + def stable_name = getAllFilesFromDir(params.outdir, relative: true, includeDir: true, ignore: ['pipeline_info/*.{html,json,txt}']) + // stable_path: All files in ${params.outdir}/ with stable content + def stable_path = getAllFilesFromDir(params.outdir, ignoreFile: 'tests/.nftignore') + assertAll( + { assert workflow.success}, + { assert snapshot( + // Number of successful tasks + workflow.trace.succeeded().size(), + // pipeline versions.yml file for multiqc from which Nextflow version is removed because we tests pipelines on multiple Nextflow versions + removeNextflowVersion("$outputDir/pipeline_info/nf_core_pipeline_software_mqc_versions.yml"), + // All stable path name, with a relative path + stable_name, + // All files with stable contents + stable_path + ).match() } + ) + } + } +} diff --git a/tests/skip_tools.nf.test.snap b/tests/skip_tools.nf.test.snap new file mode 100644 index 00000000..a7b0d626 --- /dev/null +++ b/tests/skip_tools.nf.test.snap @@ -0,0 +1,955 @@ +{ + "Skip Fastp": { + "content": [ + 5, + { + "BCLCONVERT": { + "bclconvert": "4.3.6" + }, + "FALCO": { + "falco": "1.2.1" + }, + "MD5SUM": { + "md5sum": 8.3 + }, + "Workflow": { + "nf-core/demultiplex": "v1.5.2" + } + }, + [ + "220422_M11111_0222_000000000-K9H97", + "220422_M11111_0222_000000000-K9H97.lane1_no_adapters.csv", + "220422_M11111_0222_000000000-K9H97/InterOp", + "220422_M11111_0222_000000000-K9H97/InterOp/ControlMetricsOut.bin", + "220422_M11111_0222_000000000-K9H97/InterOp/CorrectedIntMetricsOut.bin", + "220422_M11111_0222_000000000-K9H97/InterOp/ErrorMetricsOut.bin", + "220422_M11111_0222_000000000-K9H97/InterOp/ExtractionMetricsOut.bin", + "220422_M11111_0222_000000000-K9H97/InterOp/IndexMetricsOut.bin", + "220422_M11111_0222_000000000-K9H97/InterOp/QMetricsOut.bin", + "220422_M11111_0222_000000000-K9H97/InterOp/TileMetricsOut.bin", + "220422_M11111_0222_000000000-K9H97/L001", + "220422_M11111_0222_000000000-K9H97/L001/Reports", + "220422_M11111_0222_000000000-K9H97/L001/Reports/Adapter_Cycle_Metrics.csv", + "220422_M11111_0222_000000000-K9H97/L001/Reports/Adapter_Metrics.csv", + "220422_M11111_0222_000000000-K9H97/L001/Reports/Demultiplex_Stats.csv", + "220422_M11111_0222_000000000-K9H97/L001/Reports/Demultiplex_Tile_Stats.csv", + "220422_M11111_0222_000000000-K9H97/L001/Reports/IndexMetricsOut.bin", + "220422_M11111_0222_000000000-K9H97/L001/Reports/Index_Hopping_Counts.csv", + "220422_M11111_0222_000000000-K9H97/L001/Reports/Quality_Metrics.csv", + "220422_M11111_0222_000000000-K9H97/L001/Reports/Quality_Tile_Metrics.csv", + "220422_M11111_0222_000000000-K9H97/L001/Reports/RunInfo.xml", + "220422_M11111_0222_000000000-K9H97/L001/Reports/SampleSheet.csv", + "220422_M11111_0222_000000000-K9H97/L001/Reports/Top_Unknown_Barcodes.csv", + "220422_M11111_0222_000000000-K9H97/L001/Reports/fastq_list.csv", + "220422_M11111_0222_000000000-K9H97/L001/Sample1_S1_L001_R1_001.fastq.gz", + "220422_M11111_0222_000000000-K9H97/L001/Sample1_S1_L001_R1_001.fastq.gz.md5", + "220422_M11111_0222_000000000-K9H97/L001/Sample1_S1_L001_fastqc_data.txt", + "220422_M11111_0222_000000000-K9H97/L001/Sample1_S1_L001_report.html", + "220422_M11111_0222_000000000-K9H97/L001/Sample1_S1_L001_summary.txt", + "220422_M11111_0222_000000000-K9H97/L001/Undetermined_S0_L001_R1_001.fastq.gz", + "fastq", + "fastq/Sample1_S1_L001.samplesheet.csv", + "multiqc", + "multiqc/multiqc_data", + "multiqc/multiqc_data/bclconvert-lane-stats-table.txt", + "multiqc/multiqc_data/bclconvert-sample-stats-table.txt", + "multiqc/multiqc_data/bclconvert_lane_counts.txt", + "multiqc/multiqc_data/bclconvert_sample_counts_Counts_per_lane.txt", + "multiqc/multiqc_data/bclconvert_sample_counts_Index_mismatches.txt", + "multiqc/multiqc_data/fastqc-status-check-heatmap.txt", + "multiqc/multiqc_data/fastqc_per_base_n_content_plot.txt", + "multiqc/multiqc_data/fastqc_per_base_sequence_quality_plot.txt", + "multiqc/multiqc_data/fastqc_per_sequence_gc_content_plot_Counts.txt", + "multiqc/multiqc_data/fastqc_per_sequence_gc_content_plot_Percentages.txt", + "multiqc/multiqc_data/fastqc_per_sequence_quality_scores_plot.txt", + "multiqc/multiqc_data/fastqc_sequence_counts_plot.txt", + "multiqc/multiqc_data/fastqc_sequence_duplication_levels_plot.txt", + "multiqc/multiqc_data/fastqc_top_overrepresented_sequences_table.txt", + "multiqc/multiqc_data/multiqc.log", + "multiqc/multiqc_data/multiqc_bclconvert_bylane.txt", + "multiqc/multiqc_data/multiqc_bclconvert_bysample.txt", + "multiqc/multiqc_data/multiqc_citations.txt", + "multiqc/multiqc_data/multiqc_data.json", + "multiqc/multiqc_data/multiqc_fastqc.txt", + "multiqc/multiqc_data/multiqc_general_stats.txt", + "multiqc/multiqc_data/multiqc_software_versions.txt", + "multiqc/multiqc_data/multiqc_sources.txt", + "multiqc/multiqc_plots", + "multiqc/multiqc_plots/pdf", + "multiqc/multiqc_plots/pdf/bclconvert-lane-stats-table.pdf", + "multiqc/multiqc_plots/pdf/bclconvert-sample-stats-table.pdf", + "multiqc/multiqc_plots/pdf/bclconvert_lane_counts-cnt.pdf", + "multiqc/multiqc_plots/pdf/bclconvert_lane_counts-pct.pdf", + "multiqc/multiqc_plots/pdf/bclconvert_sample_counts_Counts_per_lane-cnt.pdf", + "multiqc/multiqc_plots/pdf/bclconvert_sample_counts_Counts_per_lane-pct.pdf", + "multiqc/multiqc_plots/pdf/bclconvert_sample_counts_Index_mismatches-cnt.pdf", + "multiqc/multiqc_plots/pdf/bclconvert_sample_counts_Index_mismatches-pct.pdf", + "multiqc/multiqc_plots/pdf/fastqc-status-check-heatmap.pdf", + "multiqc/multiqc_plots/pdf/fastqc_per_base_n_content_plot.pdf", + "multiqc/multiqc_plots/pdf/fastqc_per_base_sequence_quality_plot.pdf", + "multiqc/multiqc_plots/pdf/fastqc_per_sequence_gc_content_plot_Counts.pdf", + "multiqc/multiqc_plots/pdf/fastqc_per_sequence_gc_content_plot_Percentages.pdf", + "multiqc/multiqc_plots/pdf/fastqc_per_sequence_quality_scores_plot.pdf", + "multiqc/multiqc_plots/pdf/fastqc_sequence_counts_plot-cnt.pdf", + "multiqc/multiqc_plots/pdf/fastqc_sequence_counts_plot-pct.pdf", + "multiqc/multiqc_plots/pdf/fastqc_sequence_duplication_levels_plot.pdf", + "multiqc/multiqc_plots/pdf/fastqc_top_overrepresented_sequences_table.pdf", + "multiqc/multiqc_plots/pdf/general_stats_table.pdf", + "multiqc/multiqc_plots/png", + "multiqc/multiqc_plots/png/bclconvert-lane-stats-table.png", + "multiqc/multiqc_plots/png/bclconvert-sample-stats-table.png", + "multiqc/multiqc_plots/png/bclconvert_lane_counts-cnt.png", + "multiqc/multiqc_plots/png/bclconvert_lane_counts-pct.png", + "multiqc/multiqc_plots/png/bclconvert_sample_counts_Counts_per_lane-cnt.png", + "multiqc/multiqc_plots/png/bclconvert_sample_counts_Counts_per_lane-pct.png", + "multiqc/multiqc_plots/png/bclconvert_sample_counts_Index_mismatches-cnt.png", + "multiqc/multiqc_plots/png/bclconvert_sample_counts_Index_mismatches-pct.png", + "multiqc/multiqc_plots/png/fastqc-status-check-heatmap.png", + "multiqc/multiqc_plots/png/fastqc_per_base_n_content_plot.png", + "multiqc/multiqc_plots/png/fastqc_per_base_sequence_quality_plot.png", + "multiqc/multiqc_plots/png/fastqc_per_sequence_gc_content_plot_Counts.png", + "multiqc/multiqc_plots/png/fastqc_per_sequence_gc_content_plot_Percentages.png", + "multiqc/multiqc_plots/png/fastqc_per_sequence_quality_scores_plot.png", + "multiqc/multiqc_plots/png/fastqc_sequence_counts_plot-cnt.png", + "multiqc/multiqc_plots/png/fastqc_sequence_counts_plot-pct.png", + "multiqc/multiqc_plots/png/fastqc_sequence_duplication_levels_plot.png", + "multiqc/multiqc_plots/png/fastqc_top_overrepresented_sequences_table.png", + "multiqc/multiqc_plots/png/general_stats_table.png", + "multiqc/multiqc_plots/svg", + "multiqc/multiqc_plots/svg/bclconvert-lane-stats-table.svg", + "multiqc/multiqc_plots/svg/bclconvert-sample-stats-table.svg", + "multiqc/multiqc_plots/svg/bclconvert_lane_counts-cnt.svg", + "multiqc/multiqc_plots/svg/bclconvert_lane_counts-pct.svg", + "multiqc/multiqc_plots/svg/bclconvert_sample_counts_Counts_per_lane-cnt.svg", + "multiqc/multiqc_plots/svg/bclconvert_sample_counts_Counts_per_lane-pct.svg", + "multiqc/multiqc_plots/svg/bclconvert_sample_counts_Index_mismatches-cnt.svg", + "multiqc/multiqc_plots/svg/bclconvert_sample_counts_Index_mismatches-pct.svg", + "multiqc/multiqc_plots/svg/fastqc-status-check-heatmap.svg", + "multiqc/multiqc_plots/svg/fastqc_per_base_n_content_plot.svg", + "multiqc/multiqc_plots/svg/fastqc_per_base_sequence_quality_plot.svg", + "multiqc/multiqc_plots/svg/fastqc_per_sequence_gc_content_plot_Counts.svg", + "multiqc/multiqc_plots/svg/fastqc_per_sequence_gc_content_plot_Percentages.svg", + "multiqc/multiqc_plots/svg/fastqc_per_sequence_quality_scores_plot.svg", + "multiqc/multiqc_plots/svg/fastqc_sequence_counts_plot-cnt.svg", + "multiqc/multiqc_plots/svg/fastqc_sequence_counts_plot-pct.svg", + "multiqc/multiqc_plots/svg/fastqc_sequence_duplication_levels_plot.svg", + "multiqc/multiqc_plots/svg/fastqc_top_overrepresented_sequences_table.svg", + "multiqc/multiqc_plots/svg/general_stats_table.svg", + "multiqc/multiqc_report.html", + "pipeline_info", + "pipeline_info/nf_core_pipeline_software_mqc_versions.yml", + "samplesheet", + "samplesheet/samplesheet.csv" + ], + [ + "220422_M11111_0222_000000000-K9H97.lane1_no_adapters.csv:md5,ee5db2e12754e069998b0a96e535238c", + "ControlMetricsOut.bin:md5,6d77b38d0793a6e1ce1e85706e488953", + "CorrectedIntMetricsOut.bin:md5,2bbf84d3be72734addaa2fe794711434", + "ErrorMetricsOut.bin:md5,38c88def138e9bb832539911affdb286", + "ExtractionMetricsOut.bin:md5,7497c3178837eea8f09350b5cd252e99", + "IndexMetricsOut.bin:md5,d41d8cd98f00b204e9800998ecf8427e", + "QMetricsOut.bin:md5,7e9f198d53ebdfbb699a5f94cf1ed51c", + "TileMetricsOut.bin:md5,83891751ec1c91a425a524b476b6ca3c", + "Adapter_Cycle_Metrics.csv:md5,5a0c88793b4a0885fe3dda16609b576e", + "Adapter_Metrics.csv:md5,989240b8840b2169ac1061f952c90f6c", + "Demultiplex_Stats.csv:md5,93949a8cd96f907d83e0808c1ec2a04b", + "Demultiplex_Tile_Stats.csv:md5,83120160b0f22a1303fa1db31c19f6e9", + "IndexMetricsOut.bin:md5,9e688c58a5487b8eaf69c9e1005ad0bf", + "Index_Hopping_Counts.csv:md5,1059369e375fd8f8423c0f6c934be978", + "Quality_Metrics.csv:md5,6614accb1bb414fe312b17b81f5521f7", + "Quality_Tile_Metrics.csv:md5,cdc89fd2962bdd4a24f71e186112118a", + "RunInfo.xml:md5,03038959f4dd181c86bc97ae71fe270a", + "SampleSheet.csv:md5,ee5db2e12754e069998b0a96e535238c", + "Top_Unknown_Barcodes.csv:md5,2e2faba761137f228e56bd3428453ccc", + "fastq_list.csv:md5,ae1470cd741e33b87a4ad26f849a50f9", + "Sample1_S1_L001_R1_001.fastq.gz:md5,0675fb6365322eaafb33c0f8e862b54b", + "Sample1_S1_L001_R1_001.fastq.gz.md5:md5,10295d4e5ca66dae7788bbf24886cded", + "Sample1_S1_L001_fastqc_data.txt:md5,dc27b3ffca4e60d28ab31bba42bdb551", + "Sample1_S1_L001_summary.txt:md5,37bccdcaa1e1fe1022adebf2abad9121", + "Undetermined_S0_L001_R1_001.fastq.gz:md5,d41d8cd98f00b204e9800998ecf8427e", + "bclconvert-lane-stats-table.txt:md5,8bff7b728d3ad67405d4742d0aa2088e", + "bclconvert-sample-stats-table.txt:md5,a6edf6b192981bd296c1eba968e4333c", + "bclconvert_lane_counts.txt:md5,a327047d0d6c7de32eef9535bb159110", + "bclconvert_sample_counts_Counts_per_lane.txt:md5,a7e57ab911ba2cf74ec7bd93b921036d", + "bclconvert_sample_counts_Index_mismatches.txt:md5,06c29164e83815c79a2b1541a4a6294e", + "fastqc_per_base_n_content_plot.txt:md5,bc2bc3f88871a2fddf04d8b499fd4e70", + "fastqc_per_base_sequence_quality_plot.txt:md5,0d82022063896dabc7ac5beb83a4bc54", + "fastqc_per_sequence_gc_content_plot_Counts.txt:md5,92e5327c241881220d4cd69b8fd29e4a", + "fastqc_per_sequence_gc_content_plot_Percentages.txt:md5,af54f2d676305871a656e22542eb4406", + "fastqc_per_sequence_quality_scores_plot.txt:md5,4bddb539b536979f004777303a749f06", + "fastqc_sequence_counts_plot.txt:md5,32328f3e3421124466497ebebf458450", + "fastqc_sequence_duplication_levels_plot.txt:md5,a3bf17370e71c501f610c5fc6b2ec292", + "multiqc_bclconvert_bylane.txt:md5,2f779a97f3a5429454f62059a19856e6", + "multiqc_bclconvert_bysample.txt:md5,6a1ababe7d8242995ba5c5f78699cd63", + "multiqc_citations.txt:md5,4c806e63a283ec1b7e78cdae3a923d4f" + ] + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.09.2" + }, + "timestamp": "2024-10-15T11:16:29.215413" + }, + "Skip Trimming": { + "content": [ + 6, + { + "BCLCONVERT": { + "bclconvert": "4.3.6" + }, + "FALCO": { + "falco": "1.2.1" + }, + "FASTP": { + "fastp": "0.23.4" + }, + "MD5SUM": { + "md5sum": 8.3 + }, + "Workflow": { + "nf-core/demultiplex": "v1.5.2" + } + }, + [ + "220422_M11111_0222_000000000-K9H97", + "220422_M11111_0222_000000000-K9H97.lane1_no_adapters.csv", + "220422_M11111_0222_000000000-K9H97/InterOp", + "220422_M11111_0222_000000000-K9H97/InterOp/ControlMetricsOut.bin", + "220422_M11111_0222_000000000-K9H97/InterOp/CorrectedIntMetricsOut.bin", + "220422_M11111_0222_000000000-K9H97/InterOp/ErrorMetricsOut.bin", + "220422_M11111_0222_000000000-K9H97/InterOp/ExtractionMetricsOut.bin", + "220422_M11111_0222_000000000-K9H97/InterOp/IndexMetricsOut.bin", + "220422_M11111_0222_000000000-K9H97/InterOp/QMetricsOut.bin", + "220422_M11111_0222_000000000-K9H97/InterOp/TileMetricsOut.bin", + "220422_M11111_0222_000000000-K9H97/L001", + "220422_M11111_0222_000000000-K9H97/L001/Reports", + "220422_M11111_0222_000000000-K9H97/L001/Reports/Adapter_Cycle_Metrics.csv", + "220422_M11111_0222_000000000-K9H97/L001/Reports/Adapter_Metrics.csv", + "220422_M11111_0222_000000000-K9H97/L001/Reports/Demultiplex_Stats.csv", + "220422_M11111_0222_000000000-K9H97/L001/Reports/Demultiplex_Tile_Stats.csv", + "220422_M11111_0222_000000000-K9H97/L001/Reports/IndexMetricsOut.bin", + "220422_M11111_0222_000000000-K9H97/L001/Reports/Index_Hopping_Counts.csv", + "220422_M11111_0222_000000000-K9H97/L001/Reports/Quality_Metrics.csv", + "220422_M11111_0222_000000000-K9H97/L001/Reports/Quality_Tile_Metrics.csv", + "220422_M11111_0222_000000000-K9H97/L001/Reports/RunInfo.xml", + "220422_M11111_0222_000000000-K9H97/L001/Reports/SampleSheet.csv", + "220422_M11111_0222_000000000-K9H97/L001/Reports/Top_Unknown_Barcodes.csv", + "220422_M11111_0222_000000000-K9H97/L001/Reports/fastq_list.csv", + "220422_M11111_0222_000000000-K9H97/L001/Sample1_S1_L001.fastp.html", + "220422_M11111_0222_000000000-K9H97/L001/Sample1_S1_L001.fastp.json", + "220422_M11111_0222_000000000-K9H97/L001/Sample1_S1_L001_R1_001.fastq.gz", + "220422_M11111_0222_000000000-K9H97/L001/Sample1_S1_L001_R1_001.fastq.gz.md5", + "220422_M11111_0222_000000000-K9H97/L001/Sample1_S1_L001_fastqc_data.txt", + "220422_M11111_0222_000000000-K9H97/L001/Sample1_S1_L001_report.html", + "220422_M11111_0222_000000000-K9H97/L001/Sample1_S1_L001_summary.txt", + "220422_M11111_0222_000000000-K9H97/L001/Undetermined_S0_L001_R1_001.fastq.gz", + "fastq", + "fastq/Sample1_S1_L001.samplesheet.csv", + "multiqc", + "multiqc/multiqc_data", + "multiqc/multiqc_data/bclconvert-lane-stats-table.txt", + "multiqc/multiqc_data/bclconvert-sample-stats-table.txt", + "multiqc/multiqc_data/bclconvert_lane_counts.txt", + "multiqc/multiqc_data/bclconvert_sample_counts_Counts_per_lane.txt", + "multiqc/multiqc_data/bclconvert_sample_counts_Index_mismatches.txt", + "multiqc/multiqc_data/fastp-seq-content-gc-plot_Read_1_After_filtering.txt", + "multiqc/multiqc_data/fastp-seq-content-gc-plot_Read_1_Before_filtering.txt", + "multiqc/multiqc_data/fastp-seq-content-n-plot_Read_1_After_filtering.txt", + "multiqc/multiqc_data/fastp-seq-content-n-plot_Read_1_Before_filtering.txt", + "multiqc/multiqc_data/fastp-seq-quality-plot_Read_1_After_filtering.txt", + "multiqc/multiqc_data/fastp-seq-quality-plot_Read_1_Before_filtering.txt", + "multiqc/multiqc_data/fastp_filtered_reads_plot.txt", + "multiqc/multiqc_data/fastqc-status-check-heatmap.txt", + "multiqc/multiqc_data/fastqc_per_base_n_content_plot.txt", + "multiqc/multiqc_data/fastqc_per_base_sequence_quality_plot.txt", + "multiqc/multiqc_data/fastqc_per_sequence_gc_content_plot_Counts.txt", + "multiqc/multiqc_data/fastqc_per_sequence_gc_content_plot_Percentages.txt", + "multiqc/multiqc_data/fastqc_per_sequence_quality_scores_plot.txt", + "multiqc/multiqc_data/fastqc_sequence_counts_plot.txt", + "multiqc/multiqc_data/fastqc_sequence_duplication_levels_plot.txt", + "multiqc/multiqc_data/fastqc_top_overrepresented_sequences_table.txt", + "multiqc/multiqc_data/multiqc.log", + "multiqc/multiqc_data/multiqc_bclconvert_bylane.txt", + "multiqc/multiqc_data/multiqc_bclconvert_bysample.txt", + "multiqc/multiqc_data/multiqc_citations.txt", + "multiqc/multiqc_data/multiqc_data.json", + "multiqc/multiqc_data/multiqc_fastp.txt", + "multiqc/multiqc_data/multiqc_fastqc.txt", + "multiqc/multiqc_data/multiqc_general_stats.txt", + "multiqc/multiqc_data/multiqc_software_versions.txt", + "multiqc/multiqc_data/multiqc_sources.txt", + "multiqc/multiqc_plots", + "multiqc/multiqc_plots/pdf", + "multiqc/multiqc_plots/pdf/bclconvert-lane-stats-table.pdf", + "multiqc/multiqc_plots/pdf/bclconvert-sample-stats-table.pdf", + "multiqc/multiqc_plots/pdf/bclconvert_lane_counts-cnt.pdf", + "multiqc/multiqc_plots/pdf/bclconvert_lane_counts-pct.pdf", + "multiqc/multiqc_plots/pdf/bclconvert_sample_counts_Counts_per_lane-cnt.pdf", + "multiqc/multiqc_plots/pdf/bclconvert_sample_counts_Counts_per_lane-pct.pdf", + "multiqc/multiqc_plots/pdf/bclconvert_sample_counts_Index_mismatches-cnt.pdf", + "multiqc/multiqc_plots/pdf/bclconvert_sample_counts_Index_mismatches-pct.pdf", + "multiqc/multiqc_plots/pdf/fastp-seq-content-gc-plot_Read_1_After_filtering.pdf", + "multiqc/multiqc_plots/pdf/fastp-seq-content-gc-plot_Read_1_Before_filtering.pdf", + "multiqc/multiqc_plots/pdf/fastp-seq-content-n-plot_Read_1_After_filtering.pdf", + "multiqc/multiqc_plots/pdf/fastp-seq-content-n-plot_Read_1_Before_filtering.pdf", + "multiqc/multiqc_plots/pdf/fastp-seq-quality-plot_Read_1_After_filtering.pdf", + "multiqc/multiqc_plots/pdf/fastp-seq-quality-plot_Read_1_Before_filtering.pdf", + "multiqc/multiqc_plots/pdf/fastp_filtered_reads_plot-cnt.pdf", + "multiqc/multiqc_plots/pdf/fastp_filtered_reads_plot-pct.pdf", + "multiqc/multiqc_plots/pdf/fastqc-status-check-heatmap.pdf", + "multiqc/multiqc_plots/pdf/fastqc_per_base_n_content_plot.pdf", + "multiqc/multiqc_plots/pdf/fastqc_per_base_sequence_quality_plot.pdf", + "multiqc/multiqc_plots/pdf/fastqc_per_sequence_gc_content_plot_Counts.pdf", + "multiqc/multiqc_plots/pdf/fastqc_per_sequence_gc_content_plot_Percentages.pdf", + "multiqc/multiqc_plots/pdf/fastqc_per_sequence_quality_scores_plot.pdf", + "multiqc/multiqc_plots/pdf/fastqc_sequence_counts_plot-cnt.pdf", + "multiqc/multiqc_plots/pdf/fastqc_sequence_counts_plot-pct.pdf", + "multiqc/multiqc_plots/pdf/fastqc_sequence_duplication_levels_plot.pdf", + "multiqc/multiqc_plots/pdf/fastqc_top_overrepresented_sequences_table.pdf", + "multiqc/multiqc_plots/pdf/general_stats_table.pdf", + "multiqc/multiqc_plots/png", + "multiqc/multiqc_plots/png/bclconvert-lane-stats-table.png", + "multiqc/multiqc_plots/png/bclconvert-sample-stats-table.png", + "multiqc/multiqc_plots/png/bclconvert_lane_counts-cnt.png", + "multiqc/multiqc_plots/png/bclconvert_lane_counts-pct.png", + "multiqc/multiqc_plots/png/bclconvert_sample_counts_Counts_per_lane-cnt.png", + "multiqc/multiqc_plots/png/bclconvert_sample_counts_Counts_per_lane-pct.png", + "multiqc/multiqc_plots/png/bclconvert_sample_counts_Index_mismatches-cnt.png", + "multiqc/multiqc_plots/png/bclconvert_sample_counts_Index_mismatches-pct.png", + "multiqc/multiqc_plots/png/fastp-seq-content-gc-plot_Read_1_After_filtering.png", + "multiqc/multiqc_plots/png/fastp-seq-content-gc-plot_Read_1_Before_filtering.png", + "multiqc/multiqc_plots/png/fastp-seq-content-n-plot_Read_1_After_filtering.png", + "multiqc/multiqc_plots/png/fastp-seq-content-n-plot_Read_1_Before_filtering.png", + "multiqc/multiqc_plots/png/fastp-seq-quality-plot_Read_1_After_filtering.png", + "multiqc/multiqc_plots/png/fastp-seq-quality-plot_Read_1_Before_filtering.png", + "multiqc/multiqc_plots/png/fastp_filtered_reads_plot-cnt.png", + "multiqc/multiqc_plots/png/fastp_filtered_reads_plot-pct.png", + "multiqc/multiqc_plots/png/fastqc-status-check-heatmap.png", + "multiqc/multiqc_plots/png/fastqc_per_base_n_content_plot.png", + "multiqc/multiqc_plots/png/fastqc_per_base_sequence_quality_plot.png", + "multiqc/multiqc_plots/png/fastqc_per_sequence_gc_content_plot_Counts.png", + "multiqc/multiqc_plots/png/fastqc_per_sequence_gc_content_plot_Percentages.png", + "multiqc/multiqc_plots/png/fastqc_per_sequence_quality_scores_plot.png", + "multiqc/multiqc_plots/png/fastqc_sequence_counts_plot-cnt.png", + "multiqc/multiqc_plots/png/fastqc_sequence_counts_plot-pct.png", + "multiqc/multiqc_plots/png/fastqc_sequence_duplication_levels_plot.png", + "multiqc/multiqc_plots/png/fastqc_top_overrepresented_sequences_table.png", + "multiqc/multiqc_plots/png/general_stats_table.png", + "multiqc/multiqc_plots/svg", + "multiqc/multiqc_plots/svg/bclconvert-lane-stats-table.svg", + "multiqc/multiqc_plots/svg/bclconvert-sample-stats-table.svg", + "multiqc/multiqc_plots/svg/bclconvert_lane_counts-cnt.svg", + "multiqc/multiqc_plots/svg/bclconvert_lane_counts-pct.svg", + "multiqc/multiqc_plots/svg/bclconvert_sample_counts_Counts_per_lane-cnt.svg", + "multiqc/multiqc_plots/svg/bclconvert_sample_counts_Counts_per_lane-pct.svg", + "multiqc/multiqc_plots/svg/bclconvert_sample_counts_Index_mismatches-cnt.svg", + "multiqc/multiqc_plots/svg/bclconvert_sample_counts_Index_mismatches-pct.svg", + "multiqc/multiqc_plots/svg/fastp-seq-content-gc-plot_Read_1_After_filtering.svg", + "multiqc/multiqc_plots/svg/fastp-seq-content-gc-plot_Read_1_Before_filtering.svg", + "multiqc/multiqc_plots/svg/fastp-seq-content-n-plot_Read_1_After_filtering.svg", + "multiqc/multiqc_plots/svg/fastp-seq-content-n-plot_Read_1_Before_filtering.svg", + "multiqc/multiqc_plots/svg/fastp-seq-quality-plot_Read_1_After_filtering.svg", + "multiqc/multiqc_plots/svg/fastp-seq-quality-plot_Read_1_Before_filtering.svg", + "multiqc/multiqc_plots/svg/fastp_filtered_reads_plot-cnt.svg", + "multiqc/multiqc_plots/svg/fastp_filtered_reads_plot-pct.svg", + "multiqc/multiqc_plots/svg/fastqc-status-check-heatmap.svg", + "multiqc/multiqc_plots/svg/fastqc_per_base_n_content_plot.svg", + "multiqc/multiqc_plots/svg/fastqc_per_base_sequence_quality_plot.svg", + "multiqc/multiqc_plots/svg/fastqc_per_sequence_gc_content_plot_Counts.svg", + "multiqc/multiqc_plots/svg/fastqc_per_sequence_gc_content_plot_Percentages.svg", + "multiqc/multiqc_plots/svg/fastqc_per_sequence_quality_scores_plot.svg", + "multiqc/multiqc_plots/svg/fastqc_sequence_counts_plot-cnt.svg", + "multiqc/multiqc_plots/svg/fastqc_sequence_counts_plot-pct.svg", + "multiqc/multiqc_plots/svg/fastqc_sequence_duplication_levels_plot.svg", + "multiqc/multiqc_plots/svg/fastqc_top_overrepresented_sequences_table.svg", + "multiqc/multiqc_plots/svg/general_stats_table.svg", + "multiqc/multiqc_report.html", + "pipeline_info", + "pipeline_info/nf_core_pipeline_software_mqc_versions.yml", + "samplesheet", + "samplesheet/samplesheet.csv" + ], + [ + "220422_M11111_0222_000000000-K9H97.lane1_no_adapters.csv:md5,ee5db2e12754e069998b0a96e535238c", + "ControlMetricsOut.bin:md5,6d77b38d0793a6e1ce1e85706e488953", + "CorrectedIntMetricsOut.bin:md5,2bbf84d3be72734addaa2fe794711434", + "ErrorMetricsOut.bin:md5,38c88def138e9bb832539911affdb286", + "ExtractionMetricsOut.bin:md5,7497c3178837eea8f09350b5cd252e99", + "IndexMetricsOut.bin:md5,d41d8cd98f00b204e9800998ecf8427e", + "QMetricsOut.bin:md5,7e9f198d53ebdfbb699a5f94cf1ed51c", + "TileMetricsOut.bin:md5,83891751ec1c91a425a524b476b6ca3c", + "Adapter_Cycle_Metrics.csv:md5,5a0c88793b4a0885fe3dda16609b576e", + "Adapter_Metrics.csv:md5,989240b8840b2169ac1061f952c90f6c", + "Demultiplex_Stats.csv:md5,93949a8cd96f907d83e0808c1ec2a04b", + "Demultiplex_Tile_Stats.csv:md5,83120160b0f22a1303fa1db31c19f6e9", + "IndexMetricsOut.bin:md5,9e688c58a5487b8eaf69c9e1005ad0bf", + "Index_Hopping_Counts.csv:md5,1059369e375fd8f8423c0f6c934be978", + "Quality_Metrics.csv:md5,6614accb1bb414fe312b17b81f5521f7", + "Quality_Tile_Metrics.csv:md5,cdc89fd2962bdd4a24f71e186112118a", + "RunInfo.xml:md5,03038959f4dd181c86bc97ae71fe270a", + "SampleSheet.csv:md5,ee5db2e12754e069998b0a96e535238c", + "Top_Unknown_Barcodes.csv:md5,2e2faba761137f228e56bd3428453ccc", + "fastq_list.csv:md5,ae1470cd741e33b87a4ad26f849a50f9", + "Sample1_S1_L001.fastp.json:md5,d9d2d702f3c64412a04cd0768863b1ab", + "Sample1_S1_L001_R1_001.fastq.gz:md5,0675fb6365322eaafb33c0f8e862b54b", + "Sample1_S1_L001_R1_001.fastq.gz.md5:md5,10295d4e5ca66dae7788bbf24886cded", + "Sample1_S1_L001_fastqc_data.txt:md5,dc27b3ffca4e60d28ab31bba42bdb551", + "Sample1_S1_L001_summary.txt:md5,37bccdcaa1e1fe1022adebf2abad9121", + "Undetermined_S0_L001_R1_001.fastq.gz:md5,d41d8cd98f00b204e9800998ecf8427e", + "bclconvert-lane-stats-table.txt:md5,8bff7b728d3ad67405d4742d0aa2088e", + "bclconvert-sample-stats-table.txt:md5,a6edf6b192981bd296c1eba968e4333c", + "bclconvert_lane_counts.txt:md5,a327047d0d6c7de32eef9535bb159110", + "bclconvert_sample_counts_Counts_per_lane.txt:md5,a7e57ab911ba2cf74ec7bd93b921036d", + "bclconvert_sample_counts_Index_mismatches.txt:md5,06c29164e83815c79a2b1541a4a6294e", + "fastp-seq-content-gc-plot_Read_1_After_filtering.txt:md5,8105d4ce1d752e1f8a26e4291e8d9c6c", + "fastp-seq-content-gc-plot_Read_1_Before_filtering.txt:md5,0ac68e41c4de8ca35a1cd6ee7c6cb3f3", + "fastp-seq-content-n-plot_Read_1_After_filtering.txt:md5,1ec69a9fd0d46a39dfb59e377733e98b", + "fastp-seq-content-n-plot_Read_1_Before_filtering.txt:md5,1ec69a9fd0d46a39dfb59e377733e98b", + "fastp-seq-quality-plot_Read_1_After_filtering.txt:md5,1701b40c23dca068210f5410788e3be1", + "fastp-seq-quality-plot_Read_1_Before_filtering.txt:md5,35de9aebdc467b1bbc9fd1f40d3aece4", + "fastp_filtered_reads_plot.txt:md5,fa14a1941e109d4104c33db0e5fe20fc", + "fastqc_per_base_n_content_plot.txt:md5,bc2bc3f88871a2fddf04d8b499fd4e70", + "fastqc_per_base_sequence_quality_plot.txt:md5,0d82022063896dabc7ac5beb83a4bc54", + "fastqc_per_sequence_gc_content_plot_Counts.txt:md5,92e5327c241881220d4cd69b8fd29e4a", + "fastqc_per_sequence_gc_content_plot_Percentages.txt:md5,af54f2d676305871a656e22542eb4406", + "fastqc_per_sequence_quality_scores_plot.txt:md5,4bddb539b536979f004777303a749f06", + "fastqc_sequence_counts_plot.txt:md5,32328f3e3421124466497ebebf458450", + "fastqc_sequence_duplication_levels_plot.txt:md5,a3bf17370e71c501f610c5fc6b2ec292", + "multiqc_bclconvert_bylane.txt:md5,2f779a97f3a5429454f62059a19856e6", + "multiqc_bclconvert_bysample.txt:md5,6a1ababe7d8242995ba5c5f78699cd63", + "multiqc_citations.txt:md5,d35df50e9903a96a2b3bce3c1fbc8ad2" + ] + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.09.2" + }, + "timestamp": "2024-10-15T14:36:31.319794" + }, + "Skip MultiQC": { + "content": [ + 5, + { + "BCLCONVERT": { + "bclconvert": "4.3.6" + }, + "FALCO": { + "falco": "1.2.1" + }, + "FASTP": { + "fastp": "0.23.4" + }, + "MD5SUM": { + "md5sum": 8.3 + }, + "Workflow": { + "nf-core/demultiplex": "v1.5.2" + } + }, + [ + "220422_M11111_0222_000000000-K9H97", + "220422_M11111_0222_000000000-K9H97.lane1_no_adapters.csv", + "220422_M11111_0222_000000000-K9H97/InterOp", + "220422_M11111_0222_000000000-K9H97/InterOp/ControlMetricsOut.bin", + "220422_M11111_0222_000000000-K9H97/InterOp/CorrectedIntMetricsOut.bin", + "220422_M11111_0222_000000000-K9H97/InterOp/ErrorMetricsOut.bin", + "220422_M11111_0222_000000000-K9H97/InterOp/ExtractionMetricsOut.bin", + "220422_M11111_0222_000000000-K9H97/InterOp/IndexMetricsOut.bin", + "220422_M11111_0222_000000000-K9H97/InterOp/QMetricsOut.bin", + "220422_M11111_0222_000000000-K9H97/InterOp/TileMetricsOut.bin", + "220422_M11111_0222_000000000-K9H97/L001", + "220422_M11111_0222_000000000-K9H97/L001/Reports", + "220422_M11111_0222_000000000-K9H97/L001/Reports/Adapter_Cycle_Metrics.csv", + "220422_M11111_0222_000000000-K9H97/L001/Reports/Adapter_Metrics.csv", + "220422_M11111_0222_000000000-K9H97/L001/Reports/Demultiplex_Stats.csv", + "220422_M11111_0222_000000000-K9H97/L001/Reports/Demultiplex_Tile_Stats.csv", + "220422_M11111_0222_000000000-K9H97/L001/Reports/IndexMetricsOut.bin", + "220422_M11111_0222_000000000-K9H97/L001/Reports/Index_Hopping_Counts.csv", + "220422_M11111_0222_000000000-K9H97/L001/Reports/Quality_Metrics.csv", + "220422_M11111_0222_000000000-K9H97/L001/Reports/Quality_Tile_Metrics.csv", + "220422_M11111_0222_000000000-K9H97/L001/Reports/RunInfo.xml", + "220422_M11111_0222_000000000-K9H97/L001/Reports/SampleSheet.csv", + "220422_M11111_0222_000000000-K9H97/L001/Reports/Top_Unknown_Barcodes.csv", + "220422_M11111_0222_000000000-K9H97/L001/Reports/fastq_list.csv", + "220422_M11111_0222_000000000-K9H97/L001/Sample1_S1_L001.fastp.fastq.gz", + "220422_M11111_0222_000000000-K9H97/L001/Sample1_S1_L001.fastp.fastq.gz.md5", + "220422_M11111_0222_000000000-K9H97/L001/Sample1_S1_L001.fastp.html", + "220422_M11111_0222_000000000-K9H97/L001/Sample1_S1_L001.fastp.json", + "220422_M11111_0222_000000000-K9H97/L001/Sample1_S1_L001_R1_001.fastq.gz", + "220422_M11111_0222_000000000-K9H97/L001/Sample1_S1_L001_fastqc_data.txt", + "220422_M11111_0222_000000000-K9H97/L001/Sample1_S1_L001_report.html", + "220422_M11111_0222_000000000-K9H97/L001/Sample1_S1_L001_summary.txt", + "220422_M11111_0222_000000000-K9H97/L001/Undetermined_S0_L001_R1_001.fastq.gz", + "fastq", + "fastq/Sample1_S1_L001.samplesheet.csv", + "pipeline_info", + "pipeline_info/nf_core_pipeline_software_mqc_versions.yml", + "samplesheet", + "samplesheet/samplesheet.csv" + ], + [ + "220422_M11111_0222_000000000-K9H97.lane1_no_adapters.csv:md5,ee5db2e12754e069998b0a96e535238c", + "ControlMetricsOut.bin:md5,6d77b38d0793a6e1ce1e85706e488953", + "CorrectedIntMetricsOut.bin:md5,2bbf84d3be72734addaa2fe794711434", + "ErrorMetricsOut.bin:md5,38c88def138e9bb832539911affdb286", + "ExtractionMetricsOut.bin:md5,7497c3178837eea8f09350b5cd252e99", + "IndexMetricsOut.bin:md5,d41d8cd98f00b204e9800998ecf8427e", + "QMetricsOut.bin:md5,7e9f198d53ebdfbb699a5f94cf1ed51c", + "TileMetricsOut.bin:md5,83891751ec1c91a425a524b476b6ca3c", + "Adapter_Cycle_Metrics.csv:md5,5a0c88793b4a0885fe3dda16609b576e", + "Adapter_Metrics.csv:md5,989240b8840b2169ac1061f952c90f6c", + "Demultiplex_Stats.csv:md5,93949a8cd96f907d83e0808c1ec2a04b", + "Demultiplex_Tile_Stats.csv:md5,83120160b0f22a1303fa1db31c19f6e9", + "IndexMetricsOut.bin:md5,9e688c58a5487b8eaf69c9e1005ad0bf", + "Index_Hopping_Counts.csv:md5,1059369e375fd8f8423c0f6c934be978", + "Quality_Metrics.csv:md5,6614accb1bb414fe312b17b81f5521f7", + "Quality_Tile_Metrics.csv:md5,cdc89fd2962bdd4a24f71e186112118a", + "RunInfo.xml:md5,03038959f4dd181c86bc97ae71fe270a", + "SampleSheet.csv:md5,ee5db2e12754e069998b0a96e535238c", + "Top_Unknown_Barcodes.csv:md5,2e2faba761137f228e56bd3428453ccc", + "fastq_list.csv:md5,ae1470cd741e33b87a4ad26f849a50f9", + "Sample1_S1_L001.fastp.fastq.gz:md5,64639ff33d4b07d62a9079f88cbbd373", + "Sample1_S1_L001.fastp.fastq.gz.md5:md5,c3cd96f3a22fb6afbaa1df324814d54c", + "Sample1_S1_L001.fastp.json:md5,d9d2d702f3c64412a04cd0768863b1ab", + "Sample1_S1_L001_R1_001.fastq.gz:md5,0675fb6365322eaafb33c0f8e862b54b", + "Sample1_S1_L001_fastqc_data.txt:md5,0adf4e2617f55fabba0663583c1f65b7", + "Sample1_S1_L001_summary.txt:md5,510c6b8a26ff8d530950c05b3ca5a1c6", + "Undetermined_S0_L001_R1_001.fastq.gz:md5,d41d8cd98f00b204e9800998ecf8427e" + ] + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.09.2" + }, + "timestamp": "2024-10-15T11:20:29.598072" + }, + "Skip Fastp & Fastqc": { + "content": [ + 5, + { + "BCLCONVERT": { + "bclconvert": "4.3.6" + }, + "FALCO": { + "falco": "1.2.1" + }, + "MD5SUM": { + "md5sum": 8.3 + }, + "Workflow": { + "nf-core/demultiplex": "v1.5.2" + } + }, + [ + "220422_M11111_0222_000000000-K9H97", + "220422_M11111_0222_000000000-K9H97.lane1_no_adapters.csv", + "220422_M11111_0222_000000000-K9H97/InterOp", + "220422_M11111_0222_000000000-K9H97/InterOp/ControlMetricsOut.bin", + "220422_M11111_0222_000000000-K9H97/InterOp/CorrectedIntMetricsOut.bin", + "220422_M11111_0222_000000000-K9H97/InterOp/ErrorMetricsOut.bin", + "220422_M11111_0222_000000000-K9H97/InterOp/ExtractionMetricsOut.bin", + "220422_M11111_0222_000000000-K9H97/InterOp/IndexMetricsOut.bin", + "220422_M11111_0222_000000000-K9H97/InterOp/QMetricsOut.bin", + "220422_M11111_0222_000000000-K9H97/InterOp/TileMetricsOut.bin", + "220422_M11111_0222_000000000-K9H97/L001", + "220422_M11111_0222_000000000-K9H97/L001/Reports", + "220422_M11111_0222_000000000-K9H97/L001/Reports/Adapter_Cycle_Metrics.csv", + "220422_M11111_0222_000000000-K9H97/L001/Reports/Adapter_Metrics.csv", + "220422_M11111_0222_000000000-K9H97/L001/Reports/Demultiplex_Stats.csv", + "220422_M11111_0222_000000000-K9H97/L001/Reports/Demultiplex_Tile_Stats.csv", + "220422_M11111_0222_000000000-K9H97/L001/Reports/IndexMetricsOut.bin", + "220422_M11111_0222_000000000-K9H97/L001/Reports/Index_Hopping_Counts.csv", + "220422_M11111_0222_000000000-K9H97/L001/Reports/Quality_Metrics.csv", + "220422_M11111_0222_000000000-K9H97/L001/Reports/Quality_Tile_Metrics.csv", + "220422_M11111_0222_000000000-K9H97/L001/Reports/RunInfo.xml", + "220422_M11111_0222_000000000-K9H97/L001/Reports/SampleSheet.csv", + "220422_M11111_0222_000000000-K9H97/L001/Reports/Top_Unknown_Barcodes.csv", + "220422_M11111_0222_000000000-K9H97/L001/Reports/fastq_list.csv", + "220422_M11111_0222_000000000-K9H97/L001/Sample1_S1_L001_R1_001.fastq.gz", + "220422_M11111_0222_000000000-K9H97/L001/Sample1_S1_L001_R1_001.fastq.gz.md5", + "220422_M11111_0222_000000000-K9H97/L001/Sample1_S1_L001_fastqc_data.txt", + "220422_M11111_0222_000000000-K9H97/L001/Sample1_S1_L001_report.html", + "220422_M11111_0222_000000000-K9H97/L001/Sample1_S1_L001_summary.txt", + "220422_M11111_0222_000000000-K9H97/L001/Undetermined_S0_L001_R1_001.fastq.gz", + "fastq", + "fastq/Sample1_S1_L001.samplesheet.csv", + "multiqc", + "multiqc/multiqc_data", + "multiqc/multiqc_data/bclconvert-lane-stats-table.txt", + "multiqc/multiqc_data/bclconvert-sample-stats-table.txt", + "multiqc/multiqc_data/bclconvert_lane_counts.txt", + "multiqc/multiqc_data/bclconvert_sample_counts_Counts_per_lane.txt", + "multiqc/multiqc_data/bclconvert_sample_counts_Index_mismatches.txt", + "multiqc/multiqc_data/fastqc-status-check-heatmap.txt", + "multiqc/multiqc_data/fastqc_per_base_n_content_plot.txt", + "multiqc/multiqc_data/fastqc_per_base_sequence_quality_plot.txt", + "multiqc/multiqc_data/fastqc_per_sequence_gc_content_plot_Counts.txt", + "multiqc/multiqc_data/fastqc_per_sequence_gc_content_plot_Percentages.txt", + "multiqc/multiqc_data/fastqc_per_sequence_quality_scores_plot.txt", + "multiqc/multiqc_data/fastqc_sequence_counts_plot.txt", + "multiqc/multiqc_data/fastqc_sequence_duplication_levels_plot.txt", + "multiqc/multiqc_data/fastqc_top_overrepresented_sequences_table.txt", + "multiqc/multiqc_data/multiqc.log", + "multiqc/multiqc_data/multiqc_bclconvert_bylane.txt", + "multiqc/multiqc_data/multiqc_bclconvert_bysample.txt", + "multiqc/multiqc_data/multiqc_citations.txt", + "multiqc/multiqc_data/multiqc_data.json", + "multiqc/multiqc_data/multiqc_fastqc.txt", + "multiqc/multiqc_data/multiqc_general_stats.txt", + "multiqc/multiqc_data/multiqc_software_versions.txt", + "multiqc/multiqc_data/multiqc_sources.txt", + "multiqc/multiqc_plots", + "multiqc/multiqc_plots/pdf", + "multiqc/multiqc_plots/pdf/bclconvert-lane-stats-table.pdf", + "multiqc/multiqc_plots/pdf/bclconvert-sample-stats-table.pdf", + "multiqc/multiqc_plots/pdf/bclconvert_lane_counts-cnt.pdf", + "multiqc/multiqc_plots/pdf/bclconvert_lane_counts-pct.pdf", + "multiqc/multiqc_plots/pdf/bclconvert_sample_counts_Counts_per_lane-cnt.pdf", + "multiqc/multiqc_plots/pdf/bclconvert_sample_counts_Counts_per_lane-pct.pdf", + "multiqc/multiqc_plots/pdf/bclconvert_sample_counts_Index_mismatches-cnt.pdf", + "multiqc/multiqc_plots/pdf/bclconvert_sample_counts_Index_mismatches-pct.pdf", + "multiqc/multiqc_plots/pdf/fastqc-status-check-heatmap.pdf", + "multiqc/multiqc_plots/pdf/fastqc_per_base_n_content_plot.pdf", + "multiqc/multiqc_plots/pdf/fastqc_per_base_sequence_quality_plot.pdf", + "multiqc/multiqc_plots/pdf/fastqc_per_sequence_gc_content_plot_Counts.pdf", + "multiqc/multiqc_plots/pdf/fastqc_per_sequence_gc_content_plot_Percentages.pdf", + "multiqc/multiqc_plots/pdf/fastqc_per_sequence_quality_scores_plot.pdf", + "multiqc/multiqc_plots/pdf/fastqc_sequence_counts_plot-cnt.pdf", + "multiqc/multiqc_plots/pdf/fastqc_sequence_counts_plot-pct.pdf", + "multiqc/multiqc_plots/pdf/fastqc_sequence_duplication_levels_plot.pdf", + "multiqc/multiqc_plots/pdf/fastqc_top_overrepresented_sequences_table.pdf", + "multiqc/multiqc_plots/pdf/general_stats_table.pdf", + "multiqc/multiqc_plots/png", + "multiqc/multiqc_plots/png/bclconvert-lane-stats-table.png", + "multiqc/multiqc_plots/png/bclconvert-sample-stats-table.png", + "multiqc/multiqc_plots/png/bclconvert_lane_counts-cnt.png", + "multiqc/multiqc_plots/png/bclconvert_lane_counts-pct.png", + "multiqc/multiqc_plots/png/bclconvert_sample_counts_Counts_per_lane-cnt.png", + "multiqc/multiqc_plots/png/bclconvert_sample_counts_Counts_per_lane-pct.png", + "multiqc/multiqc_plots/png/bclconvert_sample_counts_Index_mismatches-cnt.png", + "multiqc/multiqc_plots/png/bclconvert_sample_counts_Index_mismatches-pct.png", + "multiqc/multiqc_plots/png/fastqc-status-check-heatmap.png", + "multiqc/multiqc_plots/png/fastqc_per_base_n_content_plot.png", + "multiqc/multiqc_plots/png/fastqc_per_base_sequence_quality_plot.png", + "multiqc/multiqc_plots/png/fastqc_per_sequence_gc_content_plot_Counts.png", + "multiqc/multiqc_plots/png/fastqc_per_sequence_gc_content_plot_Percentages.png", + "multiqc/multiqc_plots/png/fastqc_per_sequence_quality_scores_plot.png", + "multiqc/multiqc_plots/png/fastqc_sequence_counts_plot-cnt.png", + "multiqc/multiqc_plots/png/fastqc_sequence_counts_plot-pct.png", + "multiqc/multiqc_plots/png/fastqc_sequence_duplication_levels_plot.png", + "multiqc/multiqc_plots/png/fastqc_top_overrepresented_sequences_table.png", + "multiqc/multiqc_plots/png/general_stats_table.png", + "multiqc/multiqc_plots/svg", + "multiqc/multiqc_plots/svg/bclconvert-lane-stats-table.svg", + "multiqc/multiqc_plots/svg/bclconvert-sample-stats-table.svg", + "multiqc/multiqc_plots/svg/bclconvert_lane_counts-cnt.svg", + "multiqc/multiqc_plots/svg/bclconvert_lane_counts-pct.svg", + "multiqc/multiqc_plots/svg/bclconvert_sample_counts_Counts_per_lane-cnt.svg", + "multiqc/multiqc_plots/svg/bclconvert_sample_counts_Counts_per_lane-pct.svg", + "multiqc/multiqc_plots/svg/bclconvert_sample_counts_Index_mismatches-cnt.svg", + "multiqc/multiqc_plots/svg/bclconvert_sample_counts_Index_mismatches-pct.svg", + "multiqc/multiqc_plots/svg/fastqc-status-check-heatmap.svg", + "multiqc/multiqc_plots/svg/fastqc_per_base_n_content_plot.svg", + "multiqc/multiqc_plots/svg/fastqc_per_base_sequence_quality_plot.svg", + "multiqc/multiqc_plots/svg/fastqc_per_sequence_gc_content_plot_Counts.svg", + "multiqc/multiqc_plots/svg/fastqc_per_sequence_gc_content_plot_Percentages.svg", + "multiqc/multiqc_plots/svg/fastqc_per_sequence_quality_scores_plot.svg", + "multiqc/multiqc_plots/svg/fastqc_sequence_counts_plot-cnt.svg", + "multiqc/multiqc_plots/svg/fastqc_sequence_counts_plot-pct.svg", + "multiqc/multiqc_plots/svg/fastqc_sequence_duplication_levels_plot.svg", + "multiqc/multiqc_plots/svg/fastqc_top_overrepresented_sequences_table.svg", + "multiqc/multiqc_plots/svg/general_stats_table.svg", + "multiqc/multiqc_report.html", + "pipeline_info", + "pipeline_info/nf_core_pipeline_software_mqc_versions.yml", + "samplesheet", + "samplesheet/samplesheet.csv" + ], + [ + "220422_M11111_0222_000000000-K9H97.lane1_no_adapters.csv:md5,ee5db2e12754e069998b0a96e535238c", + "ControlMetricsOut.bin:md5,6d77b38d0793a6e1ce1e85706e488953", + "CorrectedIntMetricsOut.bin:md5,2bbf84d3be72734addaa2fe794711434", + "ErrorMetricsOut.bin:md5,38c88def138e9bb832539911affdb286", + "ExtractionMetricsOut.bin:md5,7497c3178837eea8f09350b5cd252e99", + "IndexMetricsOut.bin:md5,d41d8cd98f00b204e9800998ecf8427e", + "QMetricsOut.bin:md5,7e9f198d53ebdfbb699a5f94cf1ed51c", + "TileMetricsOut.bin:md5,83891751ec1c91a425a524b476b6ca3c", + "Adapter_Cycle_Metrics.csv:md5,5a0c88793b4a0885fe3dda16609b576e", + "Adapter_Metrics.csv:md5,989240b8840b2169ac1061f952c90f6c", + "Demultiplex_Stats.csv:md5,93949a8cd96f907d83e0808c1ec2a04b", + "Demultiplex_Tile_Stats.csv:md5,83120160b0f22a1303fa1db31c19f6e9", + "IndexMetricsOut.bin:md5,9e688c58a5487b8eaf69c9e1005ad0bf", + "Index_Hopping_Counts.csv:md5,1059369e375fd8f8423c0f6c934be978", + "Quality_Metrics.csv:md5,6614accb1bb414fe312b17b81f5521f7", + "Quality_Tile_Metrics.csv:md5,cdc89fd2962bdd4a24f71e186112118a", + "RunInfo.xml:md5,03038959f4dd181c86bc97ae71fe270a", + "SampleSheet.csv:md5,ee5db2e12754e069998b0a96e535238c", + "Top_Unknown_Barcodes.csv:md5,2e2faba761137f228e56bd3428453ccc", + "fastq_list.csv:md5,ae1470cd741e33b87a4ad26f849a50f9", + "Sample1_S1_L001_R1_001.fastq.gz:md5,0675fb6365322eaafb33c0f8e862b54b", + "Sample1_S1_L001_R1_001.fastq.gz.md5:md5,10295d4e5ca66dae7788bbf24886cded", + "Sample1_S1_L001_fastqc_data.txt:md5,dc27b3ffca4e60d28ab31bba42bdb551", + "Sample1_S1_L001_summary.txt:md5,37bccdcaa1e1fe1022adebf2abad9121", + "Undetermined_S0_L001_R1_001.fastq.gz:md5,d41d8cd98f00b204e9800998ecf8427e", + "bclconvert-lane-stats-table.txt:md5,8bff7b728d3ad67405d4742d0aa2088e", + "bclconvert-sample-stats-table.txt:md5,a6edf6b192981bd296c1eba968e4333c", + "bclconvert_lane_counts.txt:md5,a327047d0d6c7de32eef9535bb159110", + "bclconvert_sample_counts_Counts_per_lane.txt:md5,a7e57ab911ba2cf74ec7bd93b921036d", + "bclconvert_sample_counts_Index_mismatches.txt:md5,06c29164e83815c79a2b1541a4a6294e", + "fastqc_per_base_n_content_plot.txt:md5,bc2bc3f88871a2fddf04d8b499fd4e70", + "fastqc_per_base_sequence_quality_plot.txt:md5,0d82022063896dabc7ac5beb83a4bc54", + "fastqc_per_sequence_gc_content_plot_Counts.txt:md5,92e5327c241881220d4cd69b8fd29e4a", + "fastqc_per_sequence_gc_content_plot_Percentages.txt:md5,af54f2d676305871a656e22542eb4406", + "fastqc_per_sequence_quality_scores_plot.txt:md5,4bddb539b536979f004777303a749f06", + "fastqc_sequence_counts_plot.txt:md5,32328f3e3421124466497ebebf458450", + "fastqc_sequence_duplication_levels_plot.txt:md5,a3bf17370e71c501f610c5fc6b2ec292", + "multiqc_bclconvert_bylane.txt:md5,2f779a97f3a5429454f62059a19856e6", + "multiqc_bclconvert_bysample.txt:md5,6a1ababe7d8242995ba5c5f78699cd63", + "multiqc_citations.txt:md5,4c806e63a283ec1b7e78cdae3a923d4f" + ] + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.09.2" + }, + "timestamp": "2024-10-15T11:19:11.741332" + }, + "Skip Fastqc": { + "content": [ + 6, + { + "BCLCONVERT": { + "bclconvert": "4.3.6" + }, + "FALCO": { + "falco": "1.2.1" + }, + "FASTP": { + "fastp": "0.23.4" + }, + "MD5SUM": { + "md5sum": 8.3 + }, + "Workflow": { + "nf-core/demultiplex": "v1.5.2" + } + }, + [ + "220422_M11111_0222_000000000-K9H97", + "220422_M11111_0222_000000000-K9H97.lane1_no_adapters.csv", + "220422_M11111_0222_000000000-K9H97/InterOp", + "220422_M11111_0222_000000000-K9H97/InterOp/ControlMetricsOut.bin", + "220422_M11111_0222_000000000-K9H97/InterOp/CorrectedIntMetricsOut.bin", + "220422_M11111_0222_000000000-K9H97/InterOp/ErrorMetricsOut.bin", + "220422_M11111_0222_000000000-K9H97/InterOp/ExtractionMetricsOut.bin", + "220422_M11111_0222_000000000-K9H97/InterOp/IndexMetricsOut.bin", + "220422_M11111_0222_000000000-K9H97/InterOp/QMetricsOut.bin", + "220422_M11111_0222_000000000-K9H97/InterOp/TileMetricsOut.bin", + "220422_M11111_0222_000000000-K9H97/L001", + "220422_M11111_0222_000000000-K9H97/L001/Reports", + "220422_M11111_0222_000000000-K9H97/L001/Reports/Adapter_Cycle_Metrics.csv", + "220422_M11111_0222_000000000-K9H97/L001/Reports/Adapter_Metrics.csv", + "220422_M11111_0222_000000000-K9H97/L001/Reports/Demultiplex_Stats.csv", + "220422_M11111_0222_000000000-K9H97/L001/Reports/Demultiplex_Tile_Stats.csv", + "220422_M11111_0222_000000000-K9H97/L001/Reports/IndexMetricsOut.bin", + "220422_M11111_0222_000000000-K9H97/L001/Reports/Index_Hopping_Counts.csv", + "220422_M11111_0222_000000000-K9H97/L001/Reports/Quality_Metrics.csv", + "220422_M11111_0222_000000000-K9H97/L001/Reports/Quality_Tile_Metrics.csv", + "220422_M11111_0222_000000000-K9H97/L001/Reports/RunInfo.xml", + "220422_M11111_0222_000000000-K9H97/L001/Reports/SampleSheet.csv", + "220422_M11111_0222_000000000-K9H97/L001/Reports/Top_Unknown_Barcodes.csv", + "220422_M11111_0222_000000000-K9H97/L001/Reports/fastq_list.csv", + "220422_M11111_0222_000000000-K9H97/L001/Sample1_S1_L001.fastp.fastq.gz", + "220422_M11111_0222_000000000-K9H97/L001/Sample1_S1_L001.fastp.fastq.gz.md5", + "220422_M11111_0222_000000000-K9H97/L001/Sample1_S1_L001.fastp.html", + "220422_M11111_0222_000000000-K9H97/L001/Sample1_S1_L001.fastp.json", + "220422_M11111_0222_000000000-K9H97/L001/Sample1_S1_L001_R1_001.fastq.gz", + "220422_M11111_0222_000000000-K9H97/L001/Sample1_S1_L001_fastqc_data.txt", + "220422_M11111_0222_000000000-K9H97/L001/Sample1_S1_L001_report.html", + "220422_M11111_0222_000000000-K9H97/L001/Sample1_S1_L001_summary.txt", + "220422_M11111_0222_000000000-K9H97/L001/Undetermined_S0_L001_R1_001.fastq.gz", + "fastq", + "fastq/Sample1_S1_L001.samplesheet.csv", + "multiqc", + "multiqc/multiqc_data", + "multiqc/multiqc_data/bclconvert-lane-stats-table.txt", + "multiqc/multiqc_data/bclconvert-sample-stats-table.txt", + "multiqc/multiqc_data/bclconvert_lane_counts.txt", + "multiqc/multiqc_data/bclconvert_sample_counts_Counts_per_lane.txt", + "multiqc/multiqc_data/bclconvert_sample_counts_Index_mismatches.txt", + "multiqc/multiqc_data/fastp-seq-content-gc-plot_Read_1_After_filtering.txt", + "multiqc/multiqc_data/fastp-seq-content-gc-plot_Read_1_Before_filtering.txt", + "multiqc/multiqc_data/fastp-seq-content-n-plot_Read_1_After_filtering.txt", + "multiqc/multiqc_data/fastp-seq-content-n-plot_Read_1_Before_filtering.txt", + "multiqc/multiqc_data/fastp-seq-quality-plot_Read_1_After_filtering.txt", + "multiqc/multiqc_data/fastp-seq-quality-plot_Read_1_Before_filtering.txt", + "multiqc/multiqc_data/fastp_filtered_reads_plot.txt", + "multiqc/multiqc_data/fastqc-status-check-heatmap.txt", + "multiqc/multiqc_data/fastqc_per_base_n_content_plot.txt", + "multiqc/multiqc_data/fastqc_per_base_sequence_quality_plot.txt", + "multiqc/multiqc_data/fastqc_per_sequence_gc_content_plot_Counts.txt", + "multiqc/multiqc_data/fastqc_per_sequence_gc_content_plot_Percentages.txt", + "multiqc/multiqc_data/fastqc_per_sequence_quality_scores_plot.txt", + "multiqc/multiqc_data/fastqc_sequence_counts_plot.txt", + "multiqc/multiqc_data/fastqc_sequence_duplication_levels_plot.txt", + "multiqc/multiqc_data/fastqc_top_overrepresented_sequences_table.txt", + "multiqc/multiqc_data/multiqc.log", + "multiqc/multiqc_data/multiqc_bclconvert_bylane.txt", + "multiqc/multiqc_data/multiqc_bclconvert_bysample.txt", + "multiqc/multiqc_data/multiqc_citations.txt", + "multiqc/multiqc_data/multiqc_data.json", + "multiqc/multiqc_data/multiqc_fastp.txt", + "multiqc/multiqc_data/multiqc_fastqc.txt", + "multiqc/multiqc_data/multiqc_general_stats.txt", + "multiqc/multiqc_data/multiqc_software_versions.txt", + "multiqc/multiqc_data/multiqc_sources.txt", + "multiqc/multiqc_plots", + "multiqc/multiqc_plots/pdf", + "multiqc/multiqc_plots/pdf/bclconvert-lane-stats-table.pdf", + "multiqc/multiqc_plots/pdf/bclconvert-sample-stats-table.pdf", + "multiqc/multiqc_plots/pdf/bclconvert_lane_counts-cnt.pdf", + "multiqc/multiqc_plots/pdf/bclconvert_lane_counts-pct.pdf", + "multiqc/multiqc_plots/pdf/bclconvert_sample_counts_Counts_per_lane-cnt.pdf", + "multiqc/multiqc_plots/pdf/bclconvert_sample_counts_Counts_per_lane-pct.pdf", + "multiqc/multiqc_plots/pdf/bclconvert_sample_counts_Index_mismatches-cnt.pdf", + "multiqc/multiqc_plots/pdf/bclconvert_sample_counts_Index_mismatches-pct.pdf", + "multiqc/multiqc_plots/pdf/fastp-seq-content-gc-plot_Read_1_After_filtering.pdf", + "multiqc/multiqc_plots/pdf/fastp-seq-content-gc-plot_Read_1_Before_filtering.pdf", + "multiqc/multiqc_plots/pdf/fastp-seq-content-n-plot_Read_1_After_filtering.pdf", + "multiqc/multiqc_plots/pdf/fastp-seq-content-n-plot_Read_1_Before_filtering.pdf", + "multiqc/multiqc_plots/pdf/fastp-seq-quality-plot_Read_1_After_filtering.pdf", + "multiqc/multiqc_plots/pdf/fastp-seq-quality-plot_Read_1_Before_filtering.pdf", + "multiqc/multiqc_plots/pdf/fastp_filtered_reads_plot-cnt.pdf", + "multiqc/multiqc_plots/pdf/fastp_filtered_reads_plot-pct.pdf", + "multiqc/multiqc_plots/pdf/fastqc-status-check-heatmap.pdf", + "multiqc/multiqc_plots/pdf/fastqc_per_base_n_content_plot.pdf", + "multiqc/multiqc_plots/pdf/fastqc_per_base_sequence_quality_plot.pdf", + "multiqc/multiqc_plots/pdf/fastqc_per_sequence_gc_content_plot_Counts.pdf", + "multiqc/multiqc_plots/pdf/fastqc_per_sequence_gc_content_plot_Percentages.pdf", + "multiqc/multiqc_plots/pdf/fastqc_per_sequence_quality_scores_plot.pdf", + "multiqc/multiqc_plots/pdf/fastqc_sequence_counts_plot-cnt.pdf", + "multiqc/multiqc_plots/pdf/fastqc_sequence_counts_plot-pct.pdf", + "multiqc/multiqc_plots/pdf/fastqc_sequence_duplication_levels_plot.pdf", + "multiqc/multiqc_plots/pdf/fastqc_top_overrepresented_sequences_table.pdf", + "multiqc/multiqc_plots/pdf/general_stats_table.pdf", + "multiqc/multiqc_plots/png", + "multiqc/multiqc_plots/png/bclconvert-lane-stats-table.png", + "multiqc/multiqc_plots/png/bclconvert-sample-stats-table.png", + "multiqc/multiqc_plots/png/bclconvert_lane_counts-cnt.png", + "multiqc/multiqc_plots/png/bclconvert_lane_counts-pct.png", + "multiqc/multiqc_plots/png/bclconvert_sample_counts_Counts_per_lane-cnt.png", + "multiqc/multiqc_plots/png/bclconvert_sample_counts_Counts_per_lane-pct.png", + "multiqc/multiqc_plots/png/bclconvert_sample_counts_Index_mismatches-cnt.png", + "multiqc/multiqc_plots/png/bclconvert_sample_counts_Index_mismatches-pct.png", + "multiqc/multiqc_plots/png/fastp-seq-content-gc-plot_Read_1_After_filtering.png", + "multiqc/multiqc_plots/png/fastp-seq-content-gc-plot_Read_1_Before_filtering.png", + "multiqc/multiqc_plots/png/fastp-seq-content-n-plot_Read_1_After_filtering.png", + "multiqc/multiqc_plots/png/fastp-seq-content-n-plot_Read_1_Before_filtering.png", + "multiqc/multiqc_plots/png/fastp-seq-quality-plot_Read_1_After_filtering.png", + "multiqc/multiqc_plots/png/fastp-seq-quality-plot_Read_1_Before_filtering.png", + "multiqc/multiqc_plots/png/fastp_filtered_reads_plot-cnt.png", + "multiqc/multiqc_plots/png/fastp_filtered_reads_plot-pct.png", + "multiqc/multiqc_plots/png/fastqc-status-check-heatmap.png", + "multiqc/multiqc_plots/png/fastqc_per_base_n_content_plot.png", + "multiqc/multiqc_plots/png/fastqc_per_base_sequence_quality_plot.png", + "multiqc/multiqc_plots/png/fastqc_per_sequence_gc_content_plot_Counts.png", + "multiqc/multiqc_plots/png/fastqc_per_sequence_gc_content_plot_Percentages.png", + "multiqc/multiqc_plots/png/fastqc_per_sequence_quality_scores_plot.png", + "multiqc/multiqc_plots/png/fastqc_sequence_counts_plot-cnt.png", + "multiqc/multiqc_plots/png/fastqc_sequence_counts_plot-pct.png", + "multiqc/multiqc_plots/png/fastqc_sequence_duplication_levels_plot.png", + "multiqc/multiqc_plots/png/fastqc_top_overrepresented_sequences_table.png", + "multiqc/multiqc_plots/png/general_stats_table.png", + "multiqc/multiqc_plots/svg", + "multiqc/multiqc_plots/svg/bclconvert-lane-stats-table.svg", + "multiqc/multiqc_plots/svg/bclconvert-sample-stats-table.svg", + "multiqc/multiqc_plots/svg/bclconvert_lane_counts-cnt.svg", + "multiqc/multiqc_plots/svg/bclconvert_lane_counts-pct.svg", + "multiqc/multiqc_plots/svg/bclconvert_sample_counts_Counts_per_lane-cnt.svg", + "multiqc/multiqc_plots/svg/bclconvert_sample_counts_Counts_per_lane-pct.svg", + "multiqc/multiqc_plots/svg/bclconvert_sample_counts_Index_mismatches-cnt.svg", + "multiqc/multiqc_plots/svg/bclconvert_sample_counts_Index_mismatches-pct.svg", + "multiqc/multiqc_plots/svg/fastp-seq-content-gc-plot_Read_1_After_filtering.svg", + "multiqc/multiqc_plots/svg/fastp-seq-content-gc-plot_Read_1_Before_filtering.svg", + "multiqc/multiqc_plots/svg/fastp-seq-content-n-plot_Read_1_After_filtering.svg", + "multiqc/multiqc_plots/svg/fastp-seq-content-n-plot_Read_1_Before_filtering.svg", + "multiqc/multiqc_plots/svg/fastp-seq-quality-plot_Read_1_After_filtering.svg", + "multiqc/multiqc_plots/svg/fastp-seq-quality-plot_Read_1_Before_filtering.svg", + "multiqc/multiqc_plots/svg/fastp_filtered_reads_plot-cnt.svg", + "multiqc/multiqc_plots/svg/fastp_filtered_reads_plot-pct.svg", + "multiqc/multiqc_plots/svg/fastqc-status-check-heatmap.svg", + "multiqc/multiqc_plots/svg/fastqc_per_base_n_content_plot.svg", + "multiqc/multiqc_plots/svg/fastqc_per_base_sequence_quality_plot.svg", + "multiqc/multiqc_plots/svg/fastqc_per_sequence_gc_content_plot_Counts.svg", + "multiqc/multiqc_plots/svg/fastqc_per_sequence_gc_content_plot_Percentages.svg", + "multiqc/multiqc_plots/svg/fastqc_per_sequence_quality_scores_plot.svg", + "multiqc/multiqc_plots/svg/fastqc_sequence_counts_plot-cnt.svg", + "multiqc/multiqc_plots/svg/fastqc_sequence_counts_plot-pct.svg", + "multiqc/multiqc_plots/svg/fastqc_sequence_duplication_levels_plot.svg", + "multiqc/multiqc_plots/svg/fastqc_top_overrepresented_sequences_table.svg", + "multiqc/multiqc_plots/svg/general_stats_table.svg", + "multiqc/multiqc_report.html", + "pipeline_info", + "pipeline_info/nf_core_pipeline_software_mqc_versions.yml", + "samplesheet", + "samplesheet/samplesheet.csv" + ], + [ + "220422_M11111_0222_000000000-K9H97.lane1_no_adapters.csv:md5,ee5db2e12754e069998b0a96e535238c", + "ControlMetricsOut.bin:md5,6d77b38d0793a6e1ce1e85706e488953", + "CorrectedIntMetricsOut.bin:md5,2bbf84d3be72734addaa2fe794711434", + "ErrorMetricsOut.bin:md5,38c88def138e9bb832539911affdb286", + "ExtractionMetricsOut.bin:md5,7497c3178837eea8f09350b5cd252e99", + "IndexMetricsOut.bin:md5,d41d8cd98f00b204e9800998ecf8427e", + "QMetricsOut.bin:md5,7e9f198d53ebdfbb699a5f94cf1ed51c", + "TileMetricsOut.bin:md5,83891751ec1c91a425a524b476b6ca3c", + "Adapter_Cycle_Metrics.csv:md5,5a0c88793b4a0885fe3dda16609b576e", + "Adapter_Metrics.csv:md5,989240b8840b2169ac1061f952c90f6c", + "Demultiplex_Stats.csv:md5,93949a8cd96f907d83e0808c1ec2a04b", + "Demultiplex_Tile_Stats.csv:md5,83120160b0f22a1303fa1db31c19f6e9", + "IndexMetricsOut.bin:md5,9e688c58a5487b8eaf69c9e1005ad0bf", + "Index_Hopping_Counts.csv:md5,1059369e375fd8f8423c0f6c934be978", + "Quality_Metrics.csv:md5,6614accb1bb414fe312b17b81f5521f7", + "Quality_Tile_Metrics.csv:md5,cdc89fd2962bdd4a24f71e186112118a", + "RunInfo.xml:md5,03038959f4dd181c86bc97ae71fe270a", + "SampleSheet.csv:md5,ee5db2e12754e069998b0a96e535238c", + "Top_Unknown_Barcodes.csv:md5,2e2faba761137f228e56bd3428453ccc", + "fastq_list.csv:md5,ae1470cd741e33b87a4ad26f849a50f9", + "Sample1_S1_L001.fastp.fastq.gz:md5,64639ff33d4b07d62a9079f88cbbd373", + "Sample1_S1_L001.fastp.fastq.gz.md5:md5,c3cd96f3a22fb6afbaa1df324814d54c", + "Sample1_S1_L001.fastp.json:md5,d9d2d702f3c64412a04cd0768863b1ab", + "Sample1_S1_L001_R1_001.fastq.gz:md5,0675fb6365322eaafb33c0f8e862b54b", + "Sample1_S1_L001_fastqc_data.txt:md5,0adf4e2617f55fabba0663583c1f65b7", + "Sample1_S1_L001_summary.txt:md5,510c6b8a26ff8d530950c05b3ca5a1c6", + "Undetermined_S0_L001_R1_001.fastq.gz:md5,d41d8cd98f00b204e9800998ecf8427e", + "bclconvert-lane-stats-table.txt:md5,8bff7b728d3ad67405d4742d0aa2088e", + "bclconvert-sample-stats-table.txt:md5,a6edf6b192981bd296c1eba968e4333c", + "bclconvert_lane_counts.txt:md5,a327047d0d6c7de32eef9535bb159110", + "bclconvert_sample_counts_Counts_per_lane.txt:md5,a7e57ab911ba2cf74ec7bd93b921036d", + "bclconvert_sample_counts_Index_mismatches.txt:md5,06c29164e83815c79a2b1541a4a6294e", + "fastp-seq-content-gc-plot_Read_1_After_filtering.txt:md5,8105d4ce1d752e1f8a26e4291e8d9c6c", + "fastp-seq-content-gc-plot_Read_1_Before_filtering.txt:md5,0ac68e41c4de8ca35a1cd6ee7c6cb3f3", + "fastp-seq-content-n-plot_Read_1_After_filtering.txt:md5,1ec69a9fd0d46a39dfb59e377733e98b", + "fastp-seq-content-n-plot_Read_1_Before_filtering.txt:md5,1ec69a9fd0d46a39dfb59e377733e98b", + "fastp-seq-quality-plot_Read_1_After_filtering.txt:md5,1701b40c23dca068210f5410788e3be1", + "fastp-seq-quality-plot_Read_1_Before_filtering.txt:md5,35de9aebdc467b1bbc9fd1f40d3aece4", + "fastp_filtered_reads_plot.txt:md5,fa14a1941e109d4104c33db0e5fe20fc", + "fastqc_per_base_n_content_plot.txt:md5,d7db99124db8f53d82c51c779ce77463", + "fastqc_per_base_sequence_quality_plot.txt:md5,31c51bbd7d4dbb32107efa95c8a58ee5", + "fastqc_per_sequence_gc_content_plot_Counts.txt:md5,842eaa1c62a8e6676b4b07226bda998b", + "fastqc_per_sequence_gc_content_plot_Percentages.txt:md5,b231390d458d0bfdf4fa1360a776e03c", + "fastqc_per_sequence_quality_scores_plot.txt:md5,edbe64e0545cb866af73a649349d2a42", + "fastqc_sequence_counts_plot.txt:md5,662c69090978601ca7d39504b1ac736b", + "fastqc_sequence_duplication_levels_plot.txt:md5,cc02a5151984c0a9fdf8316bfb05088b", + "multiqc_bclconvert_bylane.txt:md5,2f779a97f3a5429454f62059a19856e6", + "multiqc_bclconvert_bysample.txt:md5,6a1ababe7d8242995ba5c5f78699cd63", + "multiqc_citations.txt:md5,d35df50e9903a96a2b3bce3c1fbc8ad2" + ] + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.09.2" + }, + "timestamp": "2024-10-15T14:38:35.728344" + } +} diff --git a/tests/test_pe.nf.test b/tests/test_pe.nf.test new file mode 100644 index 00000000..9382ea56 --- /dev/null +++ b/tests/test_pe.nf.test @@ -0,0 +1,37 @@ +nextflow_pipeline { + + name "Test Workflow main.nf - Test PE" + script "../main.nf" + profile "test_pe" + tag "bcl2fastq_pe" + tag "pipeline" + + test("Bcl2Fastq_pe") { + + when { + params { + outdir = "$outputDir" + } + } + + then { + // stable_name: All files + folders in ${params.outdir}/ with a stable name + def stable_name = getAllFilesFromDir(params.outdir, relative: true, includeDir: true, ignore: ['pipeline_info/*.{html,json,txt}']) + // stable_path: All files in ${params.outdir}/ with stable content + def stable_path = getAllFilesFromDir(params.outdir, ignoreFile: 'tests/.nftignore') + assertAll( + { assert workflow.success}, + { assert snapshot( + // Number of successful tasks + workflow.trace.succeeded().size(), + // pipeline versions.yml file for multiqc from which Nextflow version is removed because we tests pipelines on multiple Nextflow versions + removeNextflowVersion("$outputDir/pipeline_info/nf_core_pipeline_software_mqc_versions.yml"), + // All stable path name, with a relative path + stable_name, + // All files with stable contents + stable_path + ).match() } + ) + } + } +} diff --git a/tests/test_pe.nf.test.snap b/tests/test_pe.nf.test.snap new file mode 100644 index 00000000..4e4248e6 --- /dev/null +++ b/tests/test_pe.nf.test.snap @@ -0,0 +1,327 @@ +{ + "Bcl2Fastq_pe": { + "content": [ + 7, + { + "BCL2FASTQ": { + "bcl2fastq": "2.20.0.422" + }, + "FALCO": { + "falco": "1.2.1" + }, + "FASTP": { + "fastp": "0.23.4" + }, + "MD5SUM": { + "md5sum": 8.3 + }, + "Workflow": { + "nf-core/demultiplex": "v1.5.2" + } + }, + [ + "PE_Sample", + "PE_Sample.lane1_no_adapters.csv", + "PE_Sample/InterOp", + "PE_Sample/InterOp/IndexMetricsOut.bin", + "PE_Sample/L001", + "PE_Sample/L001/Reports", + "PE_Sample/L001/Reports/html", + "PE_Sample/L001/Reports/html/000000000-K9H97", + "PE_Sample/L001/Reports/html/000000000-K9H97/all", + "PE_Sample/L001/Reports/html/000000000-K9H97/all/all", + "PE_Sample/L001/Reports/html/000000000-K9H97/all/all/all", + "PE_Sample/L001/Reports/html/000000000-K9H97/all/all/all/lane.html", + "PE_Sample/L001/Reports/html/000000000-K9H97/all/all/all/laneBarcode.html", + "PE_Sample/L001/Reports/html/000000000-K9H97/all/all/unknown", + "PE_Sample/L001/Reports/html/000000000-K9H97/default", + "PE_Sample/L001/Reports/html/000000000-K9H97/default/Sample1", + "PE_Sample/L001/Reports/html/000000000-K9H97/default/Sample1/all", + "PE_Sample/L001/Reports/html/000000000-K9H97/default/Sample1/all/lane.html", + "PE_Sample/L001/Reports/html/000000000-K9H97/default/Sample1/all/laneBarcode.html", + "PE_Sample/L001/Reports/html/000000000-K9H97/default/Sample1/unknown", + "PE_Sample/L001/Reports/html/000000000-K9H97/default/Sample1/unknown/lane.html", + "PE_Sample/L001/Reports/html/000000000-K9H97/default/Sample1/unknown/laneBarcode.html", + "PE_Sample/L001/Reports/html/000000000-K9H97/default/all", + "PE_Sample/L001/Reports/html/000000000-K9H97/default/all/all", + "PE_Sample/L001/Reports/html/000000000-K9H97/default/all/all/lane.html", + "PE_Sample/L001/Reports/html/000000000-K9H97/default/all/all/laneBarcode.html", + "PE_Sample/L001/Reports/html/000000000-K9H97/default/all/unknown", + "PE_Sample/L001/Reports/html/Report.css", + "PE_Sample/L001/Reports/html/index.html", + "PE_Sample/L001/Reports/html/tree.html", + "PE_Sample/L001/Sample1_S1_L001.fastp.html", + "PE_Sample/L001/Sample1_S1_L001.fastp.json", + "PE_Sample/L001/Sample1_S1_L001_1.fastp.fastq.gz", + "PE_Sample/L001/Sample1_S1_L001_1.fastp.fastq.gz.md5", + "PE_Sample/L001/Sample1_S1_L001_1.fastp.fastq.gz_fastqc_data.txt", + "PE_Sample/L001/Sample1_S1_L001_1.fastp.fastq.gz_fastqc_report.html", + "PE_Sample/L001/Sample1_S1_L001_1.fastp.fastq.gz_summary.txt", + "PE_Sample/L001/Sample1_S1_L001_2.fastp.fastq.gz", + "PE_Sample/L001/Sample1_S1_L001_2.fastp.fastq.gz.md5", + "PE_Sample/L001/Sample1_S1_L001_2.fastp.fastq.gz_fastqc_data.txt", + "PE_Sample/L001/Sample1_S1_L001_2.fastp.fastq.gz_fastqc_report.html", + "PE_Sample/L001/Sample1_S1_L001_2.fastp.fastq.gz_summary.txt", + "PE_Sample/L001/Sample1_S1_L001_R1_001.fastq.gz", + "PE_Sample/L001/Sample1_S1_L001_R2_001.fastq.gz", + "PE_Sample/L001/Stats", + "PE_Sample/L001/Stats/AdapterTrimming.txt", + "PE_Sample/L001/Stats/ConversionStats.xml", + "PE_Sample/L001/Stats/DemultiplexingStats.xml", + "PE_Sample/L001/Stats/DemuxSummaryF1L1.txt", + "PE_Sample/L001/Stats/FastqSummaryF1L1.txt", + "PE_Sample/L001/Stats/Stats.json", + "fastq", + "fastq/Sample1_S1_L001.samplesheet.csv", + "multiqc", + "multiqc/multiqc_data", + "multiqc/multiqc_data/bcl2fastq-lane-stats-table.txt", + "multiqc/multiqc_data/bcl2fastq_lane_counts.txt", + "multiqc/multiqc_data/bcl2fastq_sample_counts.txt", + "multiqc/multiqc_data/bcl2fastq_undetermined.txt", + "multiqc/multiqc_data/fastp-insert-size-plot.txt", + "multiqc/multiqc_data/fastp-seq-content-gc-plot_Read_1_After_filtering.txt", + "multiqc/multiqc_data/fastp-seq-content-gc-plot_Read_1_Before_filtering.txt", + "multiqc/multiqc_data/fastp-seq-content-gc-plot_Read_2_After_filtering.txt", + "multiqc/multiqc_data/fastp-seq-content-gc-plot_Read_2_Before_filtering.txt", + "multiqc/multiqc_data/fastp-seq-content-n-plot_Read_1_After_filtering.txt", + "multiqc/multiqc_data/fastp-seq-content-n-plot_Read_1_Before_filtering.txt", + "multiqc/multiqc_data/fastp-seq-content-n-plot_Read_2_After_filtering.txt", + "multiqc/multiqc_data/fastp-seq-content-n-plot_Read_2_Before_filtering.txt", + "multiqc/multiqc_data/fastp-seq-quality-plot_Read_1_After_filtering.txt", + "multiqc/multiqc_data/fastp-seq-quality-plot_Read_1_Before_filtering.txt", + "multiqc/multiqc_data/fastp-seq-quality-plot_Read_2_After_filtering.txt", + "multiqc/multiqc_data/fastp-seq-quality-plot_Read_2_Before_filtering.txt", + "multiqc/multiqc_data/fastp_filtered_reads_plot.txt", + "multiqc/multiqc_data/fastqc-1-status-check-heatmap.txt", + "multiqc/multiqc_data/fastqc-1_per_base_n_content_plot.txt", + "multiqc/multiqc_data/fastqc-1_per_base_sequence_quality_plot.txt", + "multiqc/multiqc_data/fastqc-1_per_sequence_gc_content_plot_Counts.txt", + "multiqc/multiqc_data/fastqc-1_per_sequence_gc_content_plot_Percentages.txt", + "multiqc/multiqc_data/fastqc-1_per_sequence_quality_scores_plot.txt", + "multiqc/multiqc_data/fastqc-1_sequence_counts_plot.txt", + "multiqc/multiqc_data/fastqc-1_sequence_duplication_levels_plot.txt", + "multiqc/multiqc_data/fastqc-1_top_overrepresented_sequences_table.txt", + "multiqc/multiqc_data/fastqc-2-status-check-heatmap.txt", + "multiqc/multiqc_data/fastqc-2_per_base_n_content_plot.txt", + "multiqc/multiqc_data/fastqc-2_per_base_sequence_quality_plot.txt", + "multiqc/multiqc_data/fastqc-2_per_sequence_gc_content_plot_Counts.txt", + "multiqc/multiqc_data/fastqc-2_per_sequence_gc_content_plot_Percentages.txt", + "multiqc/multiqc_data/fastqc-2_per_sequence_quality_scores_plot.txt", + "multiqc/multiqc_data/fastqc-2_sequence_counts_plot.txt", + "multiqc/multiqc_data/fastqc-2_sequence_duplication_levels_plot.txt", + "multiqc/multiqc_data/fastqc-2_top_overrepresented_sequences_table.txt", + "multiqc/multiqc_data/multiqc.log", + "multiqc/multiqc_data/multiqc_bcl2fastq_bylane.txt", + "multiqc/multiqc_data/multiqc_bcl2fastq_bysample.txt", + "multiqc/multiqc_data/multiqc_citations.txt", + "multiqc/multiqc_data/multiqc_data.json", + "multiqc/multiqc_data/multiqc_fastp.txt", + "multiqc/multiqc_data/multiqc_fastqc.txt", + "multiqc/multiqc_data/multiqc_fastqc_1.txt", + "multiqc/multiqc_data/multiqc_general_stats.txt", + "multiqc/multiqc_data/multiqc_software_versions.txt", + "multiqc/multiqc_data/multiqc_sources.txt", + "multiqc/multiqc_plots", + "multiqc/multiqc_plots/pdf", + "multiqc/multiqc_plots/pdf/bcl2fastq-lane-stats-table.pdf", + "multiqc/multiqc_plots/pdf/bcl2fastq_lane_counts-cnt.pdf", + "multiqc/multiqc_plots/pdf/bcl2fastq_lane_counts-pct.pdf", + "multiqc/multiqc_plots/pdf/bcl2fastq_sample_counts-cnt.pdf", + "multiqc/multiqc_plots/pdf/bcl2fastq_sample_counts-pct.pdf", + "multiqc/multiqc_plots/pdf/bcl2fastq_undetermined-cnt.pdf", + "multiqc/multiqc_plots/pdf/bcl2fastq_undetermined-pct.pdf", + "multiqc/multiqc_plots/pdf/fastp-insert-size-plot.pdf", + "multiqc/multiqc_plots/pdf/fastp-seq-content-gc-plot_Read_1_After_filtering.pdf", + "multiqc/multiqc_plots/pdf/fastp-seq-content-gc-plot_Read_1_Before_filtering.pdf", + "multiqc/multiqc_plots/pdf/fastp-seq-content-gc-plot_Read_2_After_filtering.pdf", + "multiqc/multiqc_plots/pdf/fastp-seq-content-gc-plot_Read_2_Before_filtering.pdf", + "multiqc/multiqc_plots/pdf/fastp-seq-content-n-plot_Read_1_After_filtering.pdf", + "multiqc/multiqc_plots/pdf/fastp-seq-content-n-plot_Read_1_Before_filtering.pdf", + "multiqc/multiqc_plots/pdf/fastp-seq-content-n-plot_Read_2_After_filtering.pdf", + "multiqc/multiqc_plots/pdf/fastp-seq-content-n-plot_Read_2_Before_filtering.pdf", + "multiqc/multiqc_plots/pdf/fastp-seq-quality-plot_Read_1_After_filtering.pdf", + "multiqc/multiqc_plots/pdf/fastp-seq-quality-plot_Read_1_Before_filtering.pdf", + "multiqc/multiqc_plots/pdf/fastp-seq-quality-plot_Read_2_After_filtering.pdf", + "multiqc/multiqc_plots/pdf/fastp-seq-quality-plot_Read_2_Before_filtering.pdf", + "multiqc/multiqc_plots/pdf/fastp_filtered_reads_plot-cnt.pdf", + "multiqc/multiqc_plots/pdf/fastp_filtered_reads_plot-pct.pdf", + "multiqc/multiqc_plots/pdf/fastqc-1-status-check-heatmap.pdf", + "multiqc/multiqc_plots/pdf/fastqc-1_per_base_n_content_plot.pdf", + "multiqc/multiqc_plots/pdf/fastqc-1_per_base_sequence_quality_plot.pdf", + "multiqc/multiqc_plots/pdf/fastqc-1_per_sequence_gc_content_plot_Counts.pdf", + "multiqc/multiqc_plots/pdf/fastqc-1_per_sequence_gc_content_plot_Percentages.pdf", + "multiqc/multiqc_plots/pdf/fastqc-1_per_sequence_quality_scores_plot.pdf", + "multiqc/multiqc_plots/pdf/fastqc-1_sequence_counts_plot-cnt.pdf", + "multiqc/multiqc_plots/pdf/fastqc-1_sequence_counts_plot-pct.pdf", + "multiqc/multiqc_plots/pdf/fastqc-1_sequence_duplication_levels_plot.pdf", + "multiqc/multiqc_plots/pdf/fastqc-1_top_overrepresented_sequences_table.pdf", + "multiqc/multiqc_plots/pdf/fastqc-2-status-check-heatmap.pdf", + "multiqc/multiqc_plots/pdf/fastqc-2_per_base_n_content_plot.pdf", + "multiqc/multiqc_plots/pdf/fastqc-2_per_base_sequence_quality_plot.pdf", + "multiqc/multiqc_plots/pdf/fastqc-2_per_sequence_gc_content_plot_Counts.pdf", + "multiqc/multiqc_plots/pdf/fastqc-2_per_sequence_gc_content_plot_Percentages.pdf", + "multiqc/multiqc_plots/pdf/fastqc-2_per_sequence_quality_scores_plot.pdf", + "multiqc/multiqc_plots/pdf/fastqc-2_sequence_counts_plot-cnt.pdf", + "multiqc/multiqc_plots/pdf/fastqc-2_sequence_counts_plot-pct.pdf", + "multiqc/multiqc_plots/pdf/fastqc-2_sequence_duplication_levels_plot.pdf", + "multiqc/multiqc_plots/pdf/fastqc-2_top_overrepresented_sequences_table.pdf", + "multiqc/multiqc_plots/pdf/general_stats_table.pdf", + "multiqc/multiqc_plots/png", + "multiqc/multiqc_plots/png/bcl2fastq-lane-stats-table.png", + "multiqc/multiqc_plots/png/bcl2fastq_lane_counts-cnt.png", + "multiqc/multiqc_plots/png/bcl2fastq_lane_counts-pct.png", + "multiqc/multiqc_plots/png/bcl2fastq_sample_counts-cnt.png", + "multiqc/multiqc_plots/png/bcl2fastq_sample_counts-pct.png", + "multiqc/multiqc_plots/png/bcl2fastq_undetermined-cnt.png", + "multiqc/multiqc_plots/png/bcl2fastq_undetermined-pct.png", + "multiqc/multiqc_plots/png/fastp-insert-size-plot.png", + "multiqc/multiqc_plots/png/fastp-seq-content-gc-plot_Read_1_After_filtering.png", + "multiqc/multiqc_plots/png/fastp-seq-content-gc-plot_Read_1_Before_filtering.png", + "multiqc/multiqc_plots/png/fastp-seq-content-gc-plot_Read_2_After_filtering.png", + "multiqc/multiqc_plots/png/fastp-seq-content-gc-plot_Read_2_Before_filtering.png", + "multiqc/multiqc_plots/png/fastp-seq-content-n-plot_Read_1_After_filtering.png", + "multiqc/multiqc_plots/png/fastp-seq-content-n-plot_Read_1_Before_filtering.png", + "multiqc/multiqc_plots/png/fastp-seq-content-n-plot_Read_2_After_filtering.png", + "multiqc/multiqc_plots/png/fastp-seq-content-n-plot_Read_2_Before_filtering.png", + "multiqc/multiqc_plots/png/fastp-seq-quality-plot_Read_1_After_filtering.png", + "multiqc/multiqc_plots/png/fastp-seq-quality-plot_Read_1_Before_filtering.png", + "multiqc/multiqc_plots/png/fastp-seq-quality-plot_Read_2_After_filtering.png", + "multiqc/multiqc_plots/png/fastp-seq-quality-plot_Read_2_Before_filtering.png", + "multiqc/multiqc_plots/png/fastp_filtered_reads_plot-cnt.png", + "multiqc/multiqc_plots/png/fastp_filtered_reads_plot-pct.png", + "multiqc/multiqc_plots/png/fastqc-1-status-check-heatmap.png", + "multiqc/multiqc_plots/png/fastqc-1_per_base_n_content_plot.png", + "multiqc/multiqc_plots/png/fastqc-1_per_base_sequence_quality_plot.png", + "multiqc/multiqc_plots/png/fastqc-1_per_sequence_gc_content_plot_Counts.png", + "multiqc/multiqc_plots/png/fastqc-1_per_sequence_gc_content_plot_Percentages.png", + "multiqc/multiqc_plots/png/fastqc-1_per_sequence_quality_scores_plot.png", + "multiqc/multiqc_plots/png/fastqc-1_sequence_counts_plot-cnt.png", + "multiqc/multiqc_plots/png/fastqc-1_sequence_counts_plot-pct.png", + "multiqc/multiqc_plots/png/fastqc-1_sequence_duplication_levels_plot.png", + "multiqc/multiqc_plots/png/fastqc-1_top_overrepresented_sequences_table.png", + "multiqc/multiqc_plots/png/fastqc-2-status-check-heatmap.png", + "multiqc/multiqc_plots/png/fastqc-2_per_base_n_content_plot.png", + "multiqc/multiqc_plots/png/fastqc-2_per_base_sequence_quality_plot.png", + "multiqc/multiqc_plots/png/fastqc-2_per_sequence_gc_content_plot_Counts.png", + "multiqc/multiqc_plots/png/fastqc-2_per_sequence_gc_content_plot_Percentages.png", + "multiqc/multiqc_plots/png/fastqc-2_per_sequence_quality_scores_plot.png", + "multiqc/multiqc_plots/png/fastqc-2_sequence_counts_plot-cnt.png", + "multiqc/multiqc_plots/png/fastqc-2_sequence_counts_plot-pct.png", + "multiqc/multiqc_plots/png/fastqc-2_sequence_duplication_levels_plot.png", + "multiqc/multiqc_plots/png/fastqc-2_top_overrepresented_sequences_table.png", + "multiqc/multiqc_plots/png/general_stats_table.png", + "multiqc/multiqc_plots/svg", + "multiqc/multiqc_plots/svg/bcl2fastq-lane-stats-table.svg", + "multiqc/multiqc_plots/svg/bcl2fastq_lane_counts-cnt.svg", + "multiqc/multiqc_plots/svg/bcl2fastq_lane_counts-pct.svg", + "multiqc/multiqc_plots/svg/bcl2fastq_sample_counts-cnt.svg", + "multiqc/multiqc_plots/svg/bcl2fastq_sample_counts-pct.svg", + "multiqc/multiqc_plots/svg/bcl2fastq_undetermined-cnt.svg", + "multiqc/multiqc_plots/svg/bcl2fastq_undetermined-pct.svg", + "multiqc/multiqc_plots/svg/fastp-insert-size-plot.svg", + "multiqc/multiqc_plots/svg/fastp-seq-content-gc-plot_Read_1_After_filtering.svg", + "multiqc/multiqc_plots/svg/fastp-seq-content-gc-plot_Read_1_Before_filtering.svg", + "multiqc/multiqc_plots/svg/fastp-seq-content-gc-plot_Read_2_After_filtering.svg", + "multiqc/multiqc_plots/svg/fastp-seq-content-gc-plot_Read_2_Before_filtering.svg", + "multiqc/multiqc_plots/svg/fastp-seq-content-n-plot_Read_1_After_filtering.svg", + "multiqc/multiqc_plots/svg/fastp-seq-content-n-plot_Read_1_Before_filtering.svg", + "multiqc/multiqc_plots/svg/fastp-seq-content-n-plot_Read_2_After_filtering.svg", + "multiqc/multiqc_plots/svg/fastp-seq-content-n-plot_Read_2_Before_filtering.svg", + "multiqc/multiqc_plots/svg/fastp-seq-quality-plot_Read_1_After_filtering.svg", + "multiqc/multiqc_plots/svg/fastp-seq-quality-plot_Read_1_Before_filtering.svg", + "multiqc/multiqc_plots/svg/fastp-seq-quality-plot_Read_2_After_filtering.svg", + "multiqc/multiqc_plots/svg/fastp-seq-quality-plot_Read_2_Before_filtering.svg", + "multiqc/multiqc_plots/svg/fastp_filtered_reads_plot-cnt.svg", + "multiqc/multiqc_plots/svg/fastp_filtered_reads_plot-pct.svg", + "multiqc/multiqc_plots/svg/fastqc-1-status-check-heatmap.svg", + "multiqc/multiqc_plots/svg/fastqc-1_per_base_n_content_plot.svg", + "multiqc/multiqc_plots/svg/fastqc-1_per_base_sequence_quality_plot.svg", + "multiqc/multiqc_plots/svg/fastqc-1_per_sequence_gc_content_plot_Counts.svg", + "multiqc/multiqc_plots/svg/fastqc-1_per_sequence_gc_content_plot_Percentages.svg", + "multiqc/multiqc_plots/svg/fastqc-1_per_sequence_quality_scores_plot.svg", + "multiqc/multiqc_plots/svg/fastqc-1_sequence_counts_plot-cnt.svg", + "multiqc/multiqc_plots/svg/fastqc-1_sequence_counts_plot-pct.svg", + "multiqc/multiqc_plots/svg/fastqc-1_sequence_duplication_levels_plot.svg", + "multiqc/multiqc_plots/svg/fastqc-1_top_overrepresented_sequences_table.svg", + "multiqc/multiqc_plots/svg/fastqc-2-status-check-heatmap.svg", + "multiqc/multiqc_plots/svg/fastqc-2_per_base_n_content_plot.svg", + "multiqc/multiqc_plots/svg/fastqc-2_per_base_sequence_quality_plot.svg", + "multiqc/multiqc_plots/svg/fastqc-2_per_sequence_gc_content_plot_Counts.svg", + "multiqc/multiqc_plots/svg/fastqc-2_per_sequence_gc_content_plot_Percentages.svg", + "multiqc/multiqc_plots/svg/fastqc-2_per_sequence_quality_scores_plot.svg", + "multiqc/multiqc_plots/svg/fastqc-2_sequence_counts_plot-cnt.svg", + "multiqc/multiqc_plots/svg/fastqc-2_sequence_counts_plot-pct.svg", + "multiqc/multiqc_plots/svg/fastqc-2_sequence_duplication_levels_plot.svg", + "multiqc/multiqc_plots/svg/fastqc-2_top_overrepresented_sequences_table.svg", + "multiqc/multiqc_plots/svg/general_stats_table.svg", + "multiqc/multiqc_report.html", + "pipeline_info", + "pipeline_info/nf_core_pipeline_software_mqc_versions.yml", + "samplesheet", + "samplesheet/samplesheet.csv" + ], + [ + "PE_Sample.lane1_no_adapters.csv:md5,c31cca10b3a1aed8ec68daf779217d91", + "IndexMetricsOut.bin:md5,9e688c58a5487b8eaf69c9e1005ad0bf", + "Report.css:md5,eb7d3eb68fc1539f411404987246b59b", + "index.html:md5,5747c407854ae2c358d0ec201ce622d8", + "tree.html:md5,a1b9bf592973ca829ec69ddf888b7e34", + "Sample1_S1_L001.fastp.json:md5,ad6e2f9b58a9d677f4eaa50353e6071d", + "Sample1_S1_L001_1.fastp.fastq.gz:md5,64639ff33d4b07d62a9079f88cbbd373", + "Sample1_S1_L001_1.fastp.fastq.gz.md5:md5,d9e351a8a996e158aec1be44440edec0", + "Sample1_S1_L001_1.fastp.fastq.gz_fastqc_data.txt:md5,2de491ae04c8eb50d4a6a5759ade8322", + "Sample1_S1_L001_1.fastp.fastq.gz_summary.txt:md5,917b542afe3e3f178b994317c955ce02", + "Sample1_S1_L001_2.fastp.fastq.gz:md5,adbc8e47c8e7e902777a01ea3d73b306", + "Sample1_S1_L001_2.fastp.fastq.gz.md5:md5,bb896815f6a2b678fe3451b80ed8c653", + "Sample1_S1_L001_2.fastp.fastq.gz_fastqc_data.txt:md5,88cc69dd5e9eb06d6045c8d9e9a98af3", + "Sample1_S1_L001_2.fastp.fastq.gz_summary.txt:md5,441197ccd90d2b018db631a66d6fbbb3", + "Sample1_S1_L001_R1_001.fastq.gz:md5,0675fb6365322eaafb33c0f8e862b54b", + "Sample1_S1_L001_R2_001.fastq.gz:md5,146eefcab1eaaef17ffb72672c021368", + "AdapterTrimming.txt:md5,8009886a4c060bfec6d8e9346feb0988", + "DemultiplexingStats.xml:md5,2047ff18f5b9107c084de06e9ff943ad", + "FastqSummaryF1L1.txt:md5,0274549f9541b1ba7828ae6e9c5bcbbd", + "bcl2fastq-lane-stats-table.txt:md5,0c16ec8dd4fdf53afcb6af57272ad92d", + "bcl2fastq_lane_counts.txt:md5,d6054e1ec3c2e8d33c3fdee5b250dfbc", + "bcl2fastq_sample_counts.txt:md5,93cb0cd1aee1b464f0e640e1c3d0c142", + "fastp-insert-size-plot.txt:md5,16f66543e78b50ef96e1ef15d0f46087", + "fastp-seq-content-gc-plot_Read_1_After_filtering.txt:md5,8105d4ce1d752e1f8a26e4291e8d9c6c", + "fastp-seq-content-gc-plot_Read_1_Before_filtering.txt:md5,0ac68e41c4de8ca35a1cd6ee7c6cb3f3", + "fastp-seq-content-gc-plot_Read_2_After_filtering.txt:md5,9d3b2d8218d60f475e1059fe77bc0792", + "fastp-seq-content-gc-plot_Read_2_Before_filtering.txt:md5,08cf2f62762c6b2a17c53299d63bb482", + "fastp-seq-content-n-plot_Read_1_After_filtering.txt:md5,1ec69a9fd0d46a39dfb59e377733e98b", + "fastp-seq-content-n-plot_Read_1_Before_filtering.txt:md5,1ec69a9fd0d46a39dfb59e377733e98b", + "fastp-seq-content-n-plot_Read_2_After_filtering.txt:md5,1ec69a9fd0d46a39dfb59e377733e98b", + "fastp-seq-content-n-plot_Read_2_Before_filtering.txt:md5,1ec69a9fd0d46a39dfb59e377733e98b", + "fastp-seq-quality-plot_Read_1_After_filtering.txt:md5,1701b40c23dca068210f5410788e3be1", + "fastp-seq-quality-plot_Read_1_Before_filtering.txt:md5,35de9aebdc467b1bbc9fd1f40d3aece4", + "fastp-seq-quality-plot_Read_2_After_filtering.txt:md5,feb0492fc4a011f49b0ae771af00fad2", + "fastp-seq-quality-plot_Read_2_Before_filtering.txt:md5,ced1654945cd8c6a85dbe3353959e4b1", + "fastp_filtered_reads_plot.txt:md5,136a1d755ba6e790227f80cfcb4c1d62", + "fastqc-1_per_base_n_content_plot.txt:md5,2c2e1e7e982151328380d462bf3da96a", + "fastqc-1_per_base_sequence_quality_plot.txt:md5,16c2db072409c63e9e72cc8b8efd7c1d", + "fastqc-1_per_sequence_gc_content_plot_Counts.txt:md5,9e2aa8732545bf8544e03e8451d5d200", + "fastqc-1_per_sequence_gc_content_plot_Percentages.txt:md5,2dc5206a46e9b07e971384413ce814c4", + "fastqc-1_per_sequence_quality_scores_plot.txt:md5,17187938a14b3380211306d823bcb3f8", + "fastqc-1_sequence_counts_plot.txt:md5,5ab45b6a9e87a73e919c9f27d686bf8d", + "fastqc-1_sequence_duplication_levels_plot.txt:md5,47853398841fe7f3f8e2c930b8674247", + "fastqc-1_top_overrepresented_sequences_table.txt:md5,d41d8cd98f00b204e9800998ecf8427e", + "fastqc-2_per_base_n_content_plot.txt:md5,ecb4ae5f410a79977f13f53743e61d88", + "fastqc-2_per_base_sequence_quality_plot.txt:md5,dbefa9916514fc5161c358579fbf6abd", + "fastqc-2_per_sequence_gc_content_plot_Counts.txt:md5,f1efe8f47e924cadd8a9f64b63b53d4d", + "fastqc-2_per_sequence_gc_content_plot_Percentages.txt:md5,9082529ef49895ae7cad91915745dd0d", + "fastqc-2_per_sequence_quality_scores_plot.txt:md5,9e268b16fcd8a42e771dca575a70e592", + "fastqc-2_sequence_counts_plot.txt:md5,266ea49ebc560e003e3dd1b9f4a21e0d", + "fastqc-2_sequence_duplication_levels_plot.txt:md5,02c6dcf1a65b7b3a21d8deaf70c8f3ca", + "fastqc-2_top_overrepresented_sequences_table.txt:md5,d41d8cd98f00b204e9800998ecf8427e", + "multiqc_bcl2fastq_bysample.txt:md5,bc5b6bbdcd75ead5a552cef09fc9aaec", + "multiqc_citations.txt:md5,d35df50e9903a96a2b3bce3c1fbc8ad2" + ] + ], + "meta": { + "nf-test": "0.9.0", + "nextflow": "24.09.2" + }, + "timestamp": "2024-10-15T14:42:45.369275" + } +} diff --git a/workflows/demultiplex.nf b/workflows/demultiplex.nf index eae296d4..7595afd1 100644 --- a/workflows/demultiplex.nf +++ b/workflows/demultiplex.nf @@ -17,7 +17,6 @@ include { SINGULAR_DEMULTIPLEX } from '../subworkflows/local/singular_demul include { RUNDIR_CHECKQC } from '../subworkflows/local/rundir_checkqc/main' include { FASTQ_TO_SAMPLESHEET } from '../modules/local/fastq_to_samplesheet/main' - // // MODULE: Installed directly from nf-core/modules // @@ -36,7 +35,7 @@ include { SAMSHEE } from '../modules/local/samshee/main' // // FUNCTION // -include { paramsSummaryMap } from 'plugin/nf-validation' +include { paramsSummaryMap } from 'plugin/nf-schema' include { paramsSummaryMultiqc } from '../subworkflows/nf-core/utils_nfcore_pipeline' include { softwareVersionsToYAML } from '../subworkflows/nf-core/utils_nfcore_pipeline' include { methodsDescriptionText } from '../subworkflows/local/utils_nfcore_demultiplex_pipeline' @@ -61,7 +60,6 @@ workflow DEMULTIPLEX { kraken_db = params.kraken_db // path downstream_pipeline = params.downstream_pipeline // string: rnaseq, atacseq, taxprofiler - // Channel inputs ch_versions = Channel.empty() ch_multiqc_files = Channel.empty() @@ -79,11 +77,11 @@ workflow DEMULTIPLEX { .map { file -> //build meta again from file name def meta_id = (file =~ /.*\/(.*?)(\.lane|_no_adapters)/)[0][1] //extracts everything from the last "/" until ".lane" or "_no_adapters" def meta_lane = (file.getName().contains('.lane')) ? (file =~ /\.lane(\d+)/)[0][1].toInteger() : null //extracts number after ".lane" until next "_", must be int to match lane value from meta - [[id: meta_id, lane: meta_lane],file] + [ [id: meta_id, lane: meta_lane], file ] } ch_samplesheet_new = ch_samplesheet .join( ch_samplesheet_no_adapter, failOnMismatch: true ) - .map{ meta,samplesheet,flowcell,lane,new_samplesheet -> [meta,new_samplesheet,flowcell,lane] } + .map{ meta, samplesheet, flowcell, lane, new_samplesheet -> [meta, new_samplesheet, flowcell, lane] } ch_samplesheet = ch_samplesheet_new } else { ch_samplesheet @@ -95,7 +93,7 @@ workflow DEMULTIPLEX { // RUN samplesheet_validator samshee if (!("samshee" in skip_tools) && (params.demultiplexer in ["bcl2fastq", "bclconvert", "mkfastq"])){ SAMSHEE ( - ch_samplesheet.map{ meta, samplesheet, flowcell, lane -> [meta,samplesheet] }, + ch_samplesheet.map{ meta, samplesheet, flowcell, lane -> [ meta, samplesheet ] }, ch_validator_schema ) ch_versions = ch_versions.mix(SAMSHEE.out.versions) @@ -297,7 +295,7 @@ workflow DEMULTIPLEX { softwareVersionsToYAML(ch_versions) .collectFile( storeDir: "${params.outdir}/pipeline_info", - name: 'nf_core_pipeline_software_mqc_versions.yml', + name: 'nf_core_' + 'pipeline_software_' + 'mqc_' + 'versions.yml', sort: true, newLine: true ).set { ch_collated_versions }